From b54f978b830973cd20565c1cb98a5e04be9c4535 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Fri, 3 May 2013 12:47:08 +0800 Subject: [PATCH] * progmodes/octave.el (octave-font-lock-keywords): Do not dehighlight 'end' in comments or strings. --- lisp/ChangeLog | 5 +++++ lisp/progmodes/octave.el | 38 +++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 86202e98a33..28501787b94 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-05-03 Leo Liu + + * progmodes/octave.el (octave-font-lock-keywords): Do not + dehighlight 'end' in comments or strings. + 2013-05-02 Leo Liu * progmodes/octave.el (octave-mode-syntax-table): Correct syntax diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el index 695ad1c4ffd..1bd5a104c64 100644 --- a/lisp/progmodes/octave.el +++ b/lisp/progmodes/octave.el @@ -100,30 +100,34 @@ parenthetical grouping.") (list ;; Fontify all builtin keywords. (cons (concat "\\_<\\(" - (regexp-opt (append octave-reserved-words + (regexp-opt (append octave-reserved-words octave-text-functions)) - "\\)\\_>") - 'font-lock-keyword-face) + "\\)\\_>") + 'font-lock-keyword-face) ;; Note: 'end' also serves as the last index in an indexing expression. ;; Ref: http://www.mathworks.com/help/matlab/ref/end.html - '("\\_" (0 (save-excursion - (condition-case nil - (progn - (goto-char (match-beginning 0)) - (backward-up-list) - (unless (memq (char-after) '(?\( ?\[ ?\{)) - font-lock-keyword-face)) - (error font-lock-keyword-face))) - t)) + '((lambda (limit) + (while (re-search-forward "\\_" limit 'move) + (let ((beg (match-beginning 0)) + (end (match-end 0))) + (unless (octave-in-string-or-comment-p) + (unwind-protect + (progn + (goto-char beg) + (backward-up-list) + (when (memq (char-after) '(?\( ?\[ ?\{)) + (put-text-property beg end 'face nil))) + (goto-char end))))) + nil)) ;; Fontify all builtin operators. (cons "\\(&\\||\\|<=\\|>=\\|==\\|<\\|>\\|!=\\|!\\)" - (if (boundp 'font-lock-builtin-face) - 'font-lock-builtin-face - 'font-lock-preprocessor-face)) + (if (boundp 'font-lock-builtin-face) + 'font-lock-builtin-face + 'font-lock-preprocessor-face)) ;; Fontify all function declarations. (list octave-function-header-regexp - '(1 font-lock-keyword-face) - '(3 font-lock-function-name-face nil t))) + '(1 font-lock-keyword-face) + '(3 font-lock-function-name-face nil t))) "Additional Octave expressions to highlight.") (defun octave-syntax-propertize-function (start end) -- 2.39.2