From befeff625d2036be72d8d9a3b891925d0fd7b549 Mon Sep 17 00:00:00 2001 From: "Jose A. Ortega Ruiz" Date: Mon, 19 Jan 2009 03:39:53 +0100 Subject: [PATCH] FUEL: Ignore paren chars in \, POSTPONE: and stack effects. --- misc/fuel/fuel-font-lock.el | 18 +++++++++++------- misc/fuel/fuel-syntax.el | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/misc/fuel/fuel-font-lock.el b/misc/fuel/fuel-font-lock.el index fe20024fcd..4db9eee92c 100644 --- a/misc/fuel/fuel-font-lock.el +++ b/misc/fuel/fuel-font-lock.el @@ -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)) diff --git a/misc/fuel/fuel-syntax.el b/misc/fuel/fuel-syntax.el index 8d2948af58..82df3e07d8 100644 --- a/misc/fuel/fuel-syntax.el +++ b/misc/fuel/fuel-syntax.el @@ -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")) ;; Strings ("\\_<\\(\"\\)\\([^\n\r\f\"]\\|\\\\\"\\)*\\(\"\\)\\_>" (1 "\"") (3 "\"")) ("\\_<<\\(\"\\)\\_>" (1 "\""))