FUEL: correct font-locking of nested stack effect declarations.

The new matcher function isn't "fooled" by stack effect declarations
like: ( ... seq quot: ( ... elt index -- ... ) i -- ... )
db4
Björn Lindqvist 2013-12-01 14:37:23 +01:00 committed by John Benediktsson
parent d5568986b2
commit 084e3e98f1
1 changed files with 12 additions and 2 deletions

View File

@ -192,6 +192,17 @@ source/docs/tests file. When set to false, you'll be asked only once."
;; Utility regexp used by other regexps to match a Factor symbol name
(setq-local symbol "\\(\\(?:\\sw\\|\\s_\\)+\\)")
;; Used to font-lock stack effect declarations with may be nested.
(defun factor-match-brackets (limit)
(let ((start (point)))
(when (re-search-forward "[ \n]([ \n]" limit t)
(backward-char 2)
(let ((bracket-start (point)))
(forward-sexp)
(let ((bracket-stop (point)))
(goto-char bracket-start)
(re-search-forward ".+" bracket-stop 'mv))))))
;; Excludes parsing words that are handled by other regexps
(defconst factor-parsing-words
'(":" "::" ";" "&:" "<<" "<PRIVATE" ">>"
@ -506,8 +517,7 @@ source/docs/tests file. When set to false, you'll be asked only once."
(1 'factor-font-lock-type-in-stack-effect nil t)
(2 'factor-font-lock-stack-effect nil t)
(3 'factor-font-lock-stack-effect nil t)))
(,factor-stack-effect-regex . 'factor-font-lock-stack-effect)
(factor-match-brackets . 'factor-font-lock-stack-effect)
(,factor-constructor-regex . 'factor-font-lock-constructor)
(,factor-setter-regex . 'factor-font-lock-setter-word)
(,factor-getter-regex . 'factor-font-lock-getter-word)