annotate octave-mode.el @ 1249:86fc40576f22

[project @ 1995-04-11 01:03:08 by jwe]
author jwe
date Tue, 11 Apr 1995 01:03:57 +0000
parents 9c27e323492f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
1 ;; octave-mode.el - major mode for editing Octave source with GNU Emacs
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
2 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
3 ;; This major mode for GNU Emacs provides support for editing Octave
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
4 ;; source files. It automatically indents for block structures, line
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
5 ;; continuations (e.g., ...), and comments. The usual paren matching
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
6 ;; support is included. Indenting for continued matrix expressions is
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
7 ;; currently not supported. Perhaps it will be in the future. Auto-fill
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
8 ;; mode seems to actually work! For convient use add something like the
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
9 ;; following to your .emacs start-up file:
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
10 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
11 ;; (autoload 'octave-mode "octave-mode" "Enter Octave-mode." t)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
12 ;; (setq auto-mode-alist (cons '("\\.m$" . octave-mode) auto-mode-alist))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
13 ;; (setq octave-mode-hook '(lambda () (setq fill-column 74)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
14 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
15 ;; Enjoy.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
16 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
17 ;; Last modified Sun Mar 7 17:55:20 1993.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
18 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
19 ;; This file was modified by John W. Eaton (jwe@che.utexas.edu) from
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
20 ;; the file matlab-mode.el which is:
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
21 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
22 ;; Copyright (C) 1991 Matthew R. Wette.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
23 ;; Everyone is granted permission to copy, modify and redistribute this
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
24 ;; file provided:
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
25 ;; 1. All copies contain this copyright notice.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
26 ;; 2. All modified copies shall carry a prominant notice stating who
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
27 ;; made the last modification and the date of such modification.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
28 ;; 3. No charge is made for this software or works derived from it.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
29 ;; This clause shall not be construed as constraining other software
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
30 ;; distributed on the same medium as this software, nor is a
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
31 ;; distribution fee considered a charge.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
32 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
33 ;; Version 1.01, dated 25Jan91
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
34 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
35 ;; 25Jan91 by Matt Wette, mwette@csi.jpl.nasa.gov
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
36 ;; Got indentation of matrix expression to work, I think. Also,
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
37 ;; added tabs to comment start regular-expression.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
38 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
39 ;; 14Jan91 by Matt Wette, mwette@csi.jpl.nasa.gov
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
40 ;; Added functions (ml-unbal-matexp ml-matexp-indent) for matrix
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
41 ;; expressions.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
42 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
43 ;; 07Jan91 by Matt Wette, mwette@csi.jpl.nasa.gov
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
44 ;; Many changes. Seems to work reasonably well. Still would like
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
45 ;; to add some support for filling in comments and handle continued
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
46 ;; matrix expressions. Released as Version 1.0.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
47 ;;
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
48 ;; 04Jan91 by Matt Wette, mwette@csi.jpl.nasa.gov
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
49 ;; Created. Used eiffel.el as a guide.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
50
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
51
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
52 ;; Constants used in all Octave-mode buffers.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
53 (defconst octave-indent-level 2
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
54 "*The indentation in Octave-mode.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
55
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
56 (defconst octave-comment-column 40
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
57 "*The goal comment column in Octave-mode buffers.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
58
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
59
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
60 ;; Syntax Table
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
61 (defvar octave-mode-syntax-table nil
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
62 "Syntax table used in Octave-mode buffers.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
63
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
64 (if octave-mode-syntax-table
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
65 ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
66 (setq octave-mode-syntax-table (make-syntax-table))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
67 (modify-syntax-entry ?\\ "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
68 (modify-syntax-entry ?/ "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
69 (modify-syntax-entry ?* "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
70 (modify-syntax-entry ?+ "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
71 (modify-syntax-entry ?- "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
72 (modify-syntax-entry ?= "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
73 (modify-syntax-entry ?< "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
74 (modify-syntax-entry ?> "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
75 (modify-syntax-entry ?& "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
76 (modify-syntax-entry ?| "." octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
77 (modify-syntax-entry ?\' "\"" octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
78 (modify-syntax-entry ?# "<" octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
79 (modify-syntax-entry ?% "<" octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
80 (modify-syntax-entry ?\n ">" octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
81 (set-syntax-table octave-mode-syntax-table))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
82
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
83
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
84 ;; Abbrev Table
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
85 (defvar octave-mode-abbrev-table nil
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
86 "Abbrev table used in Octave-mode buffers.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
87
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
88 (define-abbrev-table 'octave-mode-abbrev-table ())
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
89
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
90
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
91 ;; Mode Map
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
92 (defvar octave-mode-map ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
93 "Keymap used in octave-mode.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
94
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
95 (if octave-mode-map
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
96 ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
97 (setq octave-mode-map (make-sparse-keymap))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
98 (define-key octave-mode-map "\r" 'octave-return)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
99 (define-key octave-mode-map "\t" 'octave-indent-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
100 (define-key octave-mode-map "\M-;" 'octave-comment)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
101 (define-key octave-mode-map "\C-ct" 'octave-line-type)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
102 (define-key octave-mode-map "\C-ci" 'octave-indent-type)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
103 (define-key octave-mode-map "\M-\r" 'newline))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
104
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
105
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
106 ;; Octave Mode
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
107 (defun octave-mode ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
108 "Major mode for editing Octave source files. Version 1.0, 23 Feb 1993.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
109 Will run octave-mode-hook if it is non-nil. Auto-fill-mode seems to work.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
110 Filling does not work (yet).
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
111 Special Key Bindings:
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
112 \\{octave-mode-map}
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
113 Variables:
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
114 octave-indent-level Level to indent blocks.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
115 octave-comment-column Goal column for on-line comments.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
116 fill-column Column used in auto-fill (default=70).
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
117 Commands:
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
118 octave-mode Enter Octave major mode.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
119 octave-return Handle return with indenting.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
120 octave-indent-line Indent line for structure.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
121 octave-comment Add comment to current line.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
122 octave-comment-indent Compute indent for comment.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
123 octave-line-type Tell current line type (for debugging).
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
124 octave-indent-type Tell last indent type (for debugging).
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
125 To add automatic support put something like the following in your .emacs file:
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
126 \(autoload 'octave-mode \"octave-mode\" \"Enter Octave-mode.\" t\)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
127 \(setq auto-mode-alist \(cons '\(\"\\\\.m$\" . octave-mode\) \
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
128 auto-mode-alist\)\)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
129 \(setq octave-mode-hook '\(lambda \(\) \(setq fill-column 74\)\)\)"
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
130 (interactive)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
131 (kill-all-local-variables)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
132 (use-local-map octave-mode-map)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
133 (setq major-mode 'octave-mode)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
134 (setq mode-name "Octave")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
135 (setq local-abbrev-table octave-mode-abbrev-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
136 (set-syntax-table octave-mode-syntax-table)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
137 (make-local-variable 'paragraph-start)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
138 (setq paragraph-start (concat "^$\\|" page-delimiter))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
139 (make-local-variable 'paragraph-separate)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
140 (setq paragraph-separate paragraph-start)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
141 (make-local-variable 'paragraph-ignore-fill-prefix)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
142 (setq paragraph-ignore-fill-prefix t)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
143 (make-local-variable 'indent-line-function)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
144 (setq indent-line-function 'octave-indent-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
145 (make-local-variable 'comment-start-skip)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
146 (setq comment-start-skip "[%#][ \t]*")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
147 (make-local-variable 'comment-column)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
148 (setq comment-column 'octave-comment-column)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
149 (make-local-variable 'comment-indent-hook)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
150 (setq comment-indent-hook 'octave-comment-indent)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
151 (make-local-variable 'fill-column)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
152 (setq fill-column default-fill-column)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
153 (run-hooks 'octave-mode-hook))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
154
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
155
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
156 (defun octave-return ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
157 "Handle carriage return in Octave-mode."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
158 (interactive)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
159 (if (oct-block-end-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
160 (octave-indent-line))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
161 (newline)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
162 (octave-indent-line))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
163
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
164 (defun octave-comment ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
165 "Add a comment to the following line, or format if one already exists."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
166 (interactive)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
167 (cond
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
168 ((oct-empty-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
169 (octave-indent-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
170 (insert "# "))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
171 ((oct-comment-line))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
172 (t
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
173 (end-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
174 (re-search-backward "[^ \t^]" 0 t)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
175 (forward-char)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
176 (delete-horizontal-space)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
177 (if (< (current-column) octave-comment-column)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
178 (indent-to octave-comment-column)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
179 (insert " "))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
180 (insert "# "))))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
181
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
182 (defun octave-comment-indent ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
183 "Indent a comment line in Octave-mode."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
184 (oct-calc-indent))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
185
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
186 (defun octave-indent-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
187 "Indent a line in Octave-mode."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
188 (interactive)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
189 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
190 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
191 (delete-horizontal-space)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
192 (indent-to (oct-calc-indent)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
193 (skip-chars-forward " \t"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
194
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
195 (defun octave-line-type ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
196 "Display type of current line. Used in debugging."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
197 (interactive)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
198 (cond
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
199 ((oct-empty-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
200 (message "octave-line-type: empty-line"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
201 ((oct-comment-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
202 (message "octave-line-type: comment-line"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
203 ((oct-continuation-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
204 (message "octave-line-type: continuation-line"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
205 ((oct-block-beg-end-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
206 (message "octave-line-type: block-beg-end-line"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
207 ((oct-block-beg-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
208 (message "octave-line-type: block-beg-line"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
209 ((oct-block-end-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
210 (message "octave-line-type: block-end-line"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
211 (t
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
212 (message "octave-line-type: other"))))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
213
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
214 (defun octave-indent-type ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
215 "Display type of current or previous nonempty line. Used in debugging."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
216 (interactive)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
217 (message (concat "octave-ident-type: " oct-last-indent-type)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
218
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
219 (defun octave-fill-region (from to &optional justify-flag)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
220 "Fill the region of comments.
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
221 Prefix arg (non-nil third arg, if called from program)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
222 means justify as well."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
223 (interactive "r\nP")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
224 (messages "octave-fill-region not implemented yet."))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
225
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
226 (defvar oct-last-indent-type "unknown"
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
227 "String to tell line type.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
228
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
229 (defun oct-calc-indent ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
230 "Return the appropriate indentation for this line as an int."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
231 (let ((indent 0))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
232 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
233 (forward-line -1) ; compute indent based on previous
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
234 (if (oct-empty-line) ; non-empty line
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
235 (re-search-backward "[^ \t\n]" 0 t))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
236 (cond
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
237 ((oct-empty-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
238 (setq oct-last-indent-type "empty"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
239 ((oct-comment-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
240 (setq oct-last-indent-type "comment"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
241 ((oct-continuation-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
242 (setq oct-last-indent-type "continuation")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
243 (setq indent (* 2 octave-indent-level)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
244 ((oct-block-beg-end-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
245 (setq oct-last-indent-type "block begin-end"))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
246 ((oct-block-beg-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
247 (setq oct-last-indent-type "block begin")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
248 (setq indent octave-indent-level))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
249 ((oct-unbal-matexp-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
250 (setq oct-last-indent-type "unbalanced-matrix-expression")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
251 (setq indent (oct-calc-matexp-indent)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
252 (t
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
253 (setq oct-last-indent-type "other")))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
254 (setq indent (+ indent (current-indentation)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
255 (if (= 0 (forward-line -1))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
256 (if (oct-continuation-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
257 (setq indent (- indent (* 2 octave-indent-level))))))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
258 (if (oct-block-end-line) (setq indent (- indent octave-indent-level)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
259 (if (< indent 0) (setq indent 0))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
260 indent))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
261
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
262
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
263 (defun oct-empty-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
264 "Returns t if current line is empty."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
265 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
266 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
267 (looking-at "^[ \t]*$")))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
268
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
269 (defun oct-comment-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
270 "Returns t if current line is an Octave comment line."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
271 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
272 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
273 (skip-chars-forward " \t")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
274 (looking-at "[%#]")))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
275
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
276 (defun oct-continuation-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
277 "Returns t if current line ends in ... and optional comment."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
278 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
279 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
280 (re-search-forward "\\.\\.\\.+[ \t]*\\(%.*\\)?$" (oct-eoln-point) t)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
281
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
282 (defun oct-eoln-point ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
283 "Returns point for end-of-line in Octave-mode."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
284 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
285 (end-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
286 (point)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
287
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
288 (defun oct-block-beg-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
289 "Returns t if line contains beginning of Octave block."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
290 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
291 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
292 (looking-at (concat "\\([^%#\n]*[ \t]\\)?" oct-block-beg-kw))))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
293
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
294 (defconst oct-block-beg-kw "\\(for\\|while\\|if\\|else\\|elseif\\|function\\)"
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
295 "Regular expression for keywords which begin blocks in Octave-mode.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
296
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
297 (defun oct-block-end-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
298 "Returns t if line contains end of Octave block."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
299 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
300 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
301 (looking-at (concat "\\([^%#\n]*[ \t]\\)?" oct-block-end-kw))))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
302
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
303 (defconst oct-block-end-kw "\\(end\\|endfor\\|endwhile\\|endif\\|endfunction\\|else\\|elseif\\)"
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
304 "Regular expression for keywords which end blocks.")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
305
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
306 (defun oct-block-beg-end-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
307 "Returns t if line contains matching block begin-end in Octave-mode."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
308 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
309 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
310 (looking-at (concat
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
311 "\\([^%#\n]*[ \t]\\)?" oct-block-beg-kw
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
312 "." "\\([^%#\n]*[ \t]\\)?" oct-block-end-kw))))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
313
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
314 (defun oct-unbal-matexp-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
315 (if (= (oct-calc-matexp-indent) 0)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
316 ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
317 t))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
318
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
319 (defun oct-calc-matexp-indent ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
320 (let ((indent 0))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
321 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
322 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
323 (while (< (point) (oct-eoln-point))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
324 (cond
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
325 ((looking-at "\\[")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
326 (setq indent (+ indent octave-indent-level)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
327 ((looking-at "\\]")
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
328 (setq indent (- indent octave-indent-level))))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
329 (forward-char)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
330 (* 2 indent)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
331
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
332 (defun oct-comment-on-line ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
333 "Returns t if current line contains a comment."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
334 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
335 (beginning-of-line)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
336 (looking-at "[^\n]*[%#]")))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
337
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
338 (defun oct-in-comment ()
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
339 "Returns t if point is in a comment."
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
340 (save-excursion
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
341 (and (/= (point) (point-max)) (forward-char))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
342 (search-backward "[%#]" (save-excursion (beginning-of-line) (point)) t)))
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
343
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
344 (provide 'octave-mode)
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
345
9c27e323492f [project @ 1993-08-08 01:29:13 by jwe]
jwe
parents:
diff changeset
346 ;; --- last line of octave-mode.el ---