* progmodes/octave.el (octave-begin-keywords, octave-end-keywords)

(octave-reserved-words, octave-smie-bnf-table)
(octave-smie-rules): Add new keywords from Octave 3.6.4.
This commit is contained in:
Leo Liu 2013-05-11 15:39:59 +08:00
parent 9dbdb67ed9
commit 6980b0cabf
2 changed files with 25 additions and 6 deletions

View file

@ -5,6 +5,9 @@
out of more syntactic contructs since moving to smie.
(octave-indent-comment): New function.
(octave-mode): Use it in smie-indent-functions. (Bug#14350)
(octave-begin-keywords, octave-end-keywords)
(octave-reserved-words, octave-smie-bnf-table)
(octave-smie-rules): Add new keywords from Octave 3.6.4.
2013-05-11 Glenn Morris <rgm@gnu.org>

View file

@ -68,20 +68,22 @@ Used in `octave-mode' and `inferior-octave-mode' buffers.")
"Regexp to match the start of an Octave comment up to its body.")
(defvar octave-begin-keywords
'("do" "for" "function" "if" "switch" "try" "unwind_protect" "while"))
'("classdef" "do" "enumeration" "events" "for" "function" "if" "methods"
"parfor" "properties" "switch" "try" "unwind_protect" "while"))
(defvar octave-else-keywords
'("case" "catch" "else" "elseif" "otherwise" "unwind_protect_cleanup"))
(defvar octave-end-keywords
'("endfor" "endfunction" "endif" "endswitch" "end_try_catch"
'("endclassdef" "endenumeration" "endevents" "endfor" "endfunction" "endif"
"endmethods" "endparfor" "endproperties" "endswitch" "end_try_catch"
"end_unwind_protect" "endwhile" "until" "end"))
(defvar octave-reserved-words
(append octave-begin-keywords
octave-else-keywords
octave-end-keywords
'("break" "continue" "end" "global" "persistent" "return"))
'("break" "continue" "global" "persistent" "return"))
"Reserved words in Octave.")
(defvar octave-function-header-regexp
@ -303,6 +305,8 @@ Non-nil means always go to the next Octave code line after sending."
("unwind_protect" exp "unwind_protect_cleanup" exp "end")
("for" exp "endfor")
("for" exp "end")
("parfor" exp "endparfor")
("parfor" exp "end")
("do" exp "until" atom)
("while" exp "endwhile")
("while" exp "end")
@ -316,7 +320,17 @@ Non-nil means always go to the next Octave code line after sending."
("switch" exp "case" exp "case" exp "otherwise" exp "endswitch")
("switch" exp "case" exp "case" exp "otherwise" exp "end")
("function" exp "endfunction")
("function" exp "end"))
("function" exp "end")
("enumeration" exp "endenumeration")
("enumeration" exp "end")
("events" exp "endevents")
("events" exp "end")
("methods" exp "endmethods")
("methods" exp "end")
("properties" exp "endproperties")
("properties" exp "end")
("classdef" exp "endclassdef")
("classdef" exp "end"))
;; (fundesc (atom "=" atom))
))
@ -406,8 +420,10 @@ Non-nil means always go to the next Octave code line after sending."
;; aligns it with "switch".
(`(:before . "case") (if (not (smie-rule-sibling-p)) octave-block-offset))
(`(:after . ";")
(if (smie-rule-parent-p "function" "if" "while" "else" "elseif" "for"
"otherwise" "case" "try" "catch" "unwind_protect"
(if (smie-rule-parent-p "classdef" "events" "enumeration" "function" "if"
"while" "else" "elseif" "for" "parfor"
"properties" "methods" "otherwise" "case"
"try" "catch" "unwind_protect"
"unwind_protect_cleanup")
(smie-rule-parent octave-block-offset)
;; For (invalid) code between switch and case.