FUEL: Ignore paren chars in \, POSTPONE: and stack effects.

db4
Jose A. Ortega Ruiz 2009-01-19 03:39:53 +01:00
parent 66f5694462
commit befeff625d
2 changed files with 13 additions and 8 deletions

View File

@ -84,6 +84,8 @@
(t 'default))))
((char-equal (char-after (nth 8 state)) ?U)
'factor-font-lock-parsing-word)
((char-equal (char-after (nth 8 state)) ?\()
'factor-font-lock-stack-effect)
(t 'factor-font-lock-comment)))
(defconst fuel-font-lock--font-lock-keywords
@ -135,16 +137,18 @@
;;; Fontify strings as Factor code:
(defvar fuel-font-lock--font-lock-buffer
(let ((buffer (get-buffer-create " *fuel font lock*")))
(set-buffer buffer)
(set-syntax-table fuel-syntax--syntax-table)
(fuel-font-lock--font-lock-setup)
buffer))
(defun fuel-font-lock--font-lock-buffer ()
(let ((name " *fuel font lock*"))
(or (get-buffer name)
(let ((buffer (get-buffer-create name)))
(set-buffer buffer)
(set-syntax-table fuel-syntax--syntax-table)
(fuel-font-lock--font-lock-setup)
buffer))))
(defun fuel-font-lock--factor-str (str)
(save-current-buffer
(set-buffer fuel-font-lock--font-lock-buffer)
(set-buffer (fuel-font-lock--font-lock-buffer))
(erase-buffer)
(insert str)
(let ((font-lock-verbose nil)) (font-lock-fontify-buffer))

View File

@ -240,10 +240,11 @@
(defconst fuel-syntax--syntactic-keywords
`(;; CHARs:
("CHAR: \\(.\\)\\( \\|$\\)" (1 "w"))
("\\(CHAR:\\|POSTPONE:\\|\\\\\\) \\(.\\)\\( \\|$\\)" (2 "w"))
;; Comments:
("\\_<\\(#?!\\) .*\\(\n\\|$\\)" (1 "<") (2 ">"))
("\\_<\\(#?!\\)\\(\n\\|$\\)" (1 "<") (2 ">"))
("\\_<\\((\\) \\([^)\n]*?\\) \\()\\)\\_>" (1 "<b") (2 "w") (3 ">b"))
;; Strings
("\\_<\\(\"\\)\\([^\n\r\f\"]\\|\\\\\"\\)*\\(\"\\)\\_>" (1 "\"") (3 "\""))
("\\_<<\\(\"\\)\\_>" (1 "\""))