Mercurial > emacs
changeset 17151:0663a5ce936c
(octave-abbrev-table): Add abbrevs for switch,
case, otherwise, and endswitch.
(octave-begin-keywords): Add switch.
(octave-else-keywords): Add case and otherwise.
(octave-end-keywords): Add endswitch.
(octave-block-match-alist): Add an entry for switch syntax.
(calculate-octave-indent): Add support for switch syntax.
(octave-block-end-offset): New function.
(octave-comment-indent): Fix typo.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Wed, 12 Mar 1997 00:35:32 +0000 |
parents | a44a34757937 |
children | 3c55ec545afb |
files | lisp/progmodes/octave-mod.el |
diffstat | 1 files changed, 26 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/octave-mod.el Wed Mar 12 00:34:25 1997 +0000 +++ b/lisp/progmodes/octave-mod.el Wed Mar 12 00:35:32 1997 +0000 @@ -55,6 +55,7 @@ (define-abbrev-table 'octave-abbrev-table ()) (define-abbrev octave-abbrev-table "`a" "all_va_args" nil) (define-abbrev octave-abbrev-table "`b" "break" nil) + (define-abbrev octave-abbrev-table "`cs" "case" nil) (define-abbrev octave-abbrev-table "`ca" "catch" nil) (define-abbrev octave-abbrev-table "`c" "continue" nil) (define-abbrev octave-abbrev-table "`el" "else" nil) @@ -64,6 +65,7 @@ (define-abbrev octave-abbrev-table "`ef" "endfor" nil) (define-abbrev octave-abbrev-table "`efu" "endfunction" nil) (define-abbrev octave-abbrev-table "`ei" "endif" nil) + (define-abbrev octave-abbrev-table "`es" "endswitch" nil) (define-abbrev octave-abbrev-table "`ew" "endwhile" nil) (define-abbrev octave-abbrev-table "`f" "for" nil) (define-abbrev octave-abbrev-table "`fu" "function" nil) @@ -71,8 +73,10 @@ (define-abbrev octave-abbrev-table "`gp" "gplot" nil) (define-abbrev octave-abbrev-table "`gs" "gsplot" nil) (define-abbrev octave-abbrev-table "`if" "if ()" nil) + (define-abbrev octave-abbrev-table "`o" "otherwise" nil) (define-abbrev octave-abbrev-table "`rp" "replot" nil) (define-abbrev octave-abbrev-table "`r" "return" nil) + (define-abbrev octave-abbrev-table "`s" "switch" nil) (define-abbrev octave-abbrev-table "`t" "try" nil) (define-abbrev octave-abbrev-table "`up" "unwind_protect" nil) (define-abbrev octave-abbrev-table "`upc" "unwind_protect_cleanup" nil) @@ -88,15 +92,17 @@ "Regexp to match the start of an Octave comment up to its body.") (defvar octave-begin-keywords - '("for" "function" "if" "try" "unwind_protect" "while")) + '("for" "function" "if" "switch" "try" "unwind_protect" "while")) (defvar octave-else-keywords - '("catch" "else" "elseif" "unwind_protect_cleanup")) + '("case" "catch" "else" "elseif" "otherwise" "unwind_protect_cleanup")) (defvar octave-end-keywords - '("end" "endfor" "endfunction" "endif" "end_try_catch" + '("end" "endfor" "endfunction" "endif" "endswitch" "end_try_catch" "end_unwind_protect" "endwhile")) (defvar octave-reserved-words - (append octave-begin-keywords octave-else-keywords octave-end-keywords + (append octave-begin-keywords + octave-else-keywords + octave-end-keywords '("all_va_args" "break" "continue" "global" "gplot" "gsplot" "replot" "return")) "Reserved words in Octave.") @@ -319,6 +325,7 @@ '(("for" . ("end" "endfor")) ("function" . ("end" "endfunction")) ("if" . ("else" "elseif" "end" "endif")) + ("switch" . ("case" "end" "endswitch" "otherwise")) ("try" . ("catch" "end" "end_try_catch")) ("unwind_protect" . ("unwind_protect_cleanup" "end" "end_unwind_protect")) @@ -618,6 +625,8 @@ (while (< (point) eol) (if (octave-not-in-string-or-comment-p) (cond + ((looking-at "\\<switch\\>") + (setq icol (+ icol (* 2 octave-block-offset)))) ((looking-at octave-block-begin-regexp) (setq icol (+ icol octave-block-offset))) ((looking-at octave-block-else-regexp) @@ -625,30 +634,39 @@ (setq icol (+ icol octave-block-offset)))) ((looking-at octave-block-end-regexp) (if (not (= bot (point))) - (setq icol (- icol octave-block-offset)))))) + (setq icol (- icol + (octave-block-end-offset))))))) (forward-char))) (if is-continuation-line (setq icol (+ icol octave-continuation-offset))))))) (save-excursion (back-to-indentation) (cond - ((and (or (looking-at octave-block-else-regexp) - (looking-at octave-block-end-regexp)) + ((and (looking-at octave-block-else-regexp) (octave-not-in-string-or-comment-p)) (setq icol (- icol octave-block-offset))) + ((and (looking-at octave-block-end-regexp) + (octave-not-in-string-or-comment-p)) + (setq icol (- icol (octave-block-end-offset)))) ((looking-at "\\s<\\s<\\s<\\S<") (setq icol (list 0 icol))) ((looking-at "\\s<\\S<") (setq icol (list comment-column icol))))) icol)) +(defun octave-block-end-offset () + (save-excursion + (octave-backward-up-block 1) + (* octave-block-offset + (if (string-match (match-string 0) "switch") 2 1)))) + (defun octave-comment-indent () (if (looking-at "\\s<\\s<\\s<") 0 (if (looking-at "\\s<\\s<") (calculate-octave-indent) (skip-syntax-backward " ") - (max (if (bolp) 0 (+ (current-column))) + (max (if (bolp) 0 (+ 1 (current-column))) comment-column)))) (defun octave-indent-for-comment ()