diff --git a/misc/fuel/fuel-font-lock.el b/misc/fuel/fuel-font-lock.el index 4b3607b96d..86ae94fe8a 100644 --- a/misc/fuel/fuel-font-lock.el +++ b/misc/fuel/fuel-font-lock.el @@ -79,11 +79,15 @@ (save-excursion (goto-char (nth 8 state)) (beginning-of-line) - (cond ((looking-at "USING: ") 'factor-font-lock-vocabulary-name) + (cond ((looking-at "USING: ") + 'factor-font-lock-vocabulary-name) ((looking-at "\\(TUPLE\\|SYMBOLS\\|VARS\\): ") 'factor-font-lock-symbol) + ((looking-at "C-ENUM:\\( \\|\n\\)") + 'factor-font-lock-constant) (t 'default)))) - ((char-equal c ?U) 'factor-font-lock-parsing-word) + ((or (char-equal c ?U) (char-equal c ?C)) + 'factor-font-lock-parsing-word) ((char-equal c ?\() 'factor-font-lock-stack-effect) ((char-equal c ?\") 'factor-font-lock-string) (t 'factor-font-lock-comment))))) @@ -91,6 +95,8 @@ (defconst fuel-font-lock--font-lock-keywords `((,fuel-syntax--stack-effect-regex . 'factor-font-lock-stack-effect) (,fuel-syntax--brace-words-regex 1 'factor-font-lock-parsing-word) + (,fuel-syntax--alien-function-regex (1 'factor-font-lock-type-name) + (2 'factor-font-lock-word)) (,fuel-syntax--vocab-ref-regexp 2 'factor-font-lock-vocabulary-name) (,fuel-syntax--constructor-decl-regex (1 'factor-font-lock-word) (2 'factor-font-lock-type-name) @@ -119,7 +125,7 @@ (,fuel-syntax--getter-regex . 'factor-font-lock-getter-word) (,fuel-syntax--symbol-definition-regex 2 'factor-font-lock-symbol) (,fuel-syntax--bad-string-regex . 'factor-font-lock-invalid-syntax) - ("\\(P\\|SBUF\\)\"" 1 'factor-font-lock-parsing-word) + ("\\_<\\(P\\|SBUF\\|DLL\\)\"" 1 'factor-font-lock-parsing-word) (,fuel-syntax--parsing-words-regex . 'factor-font-lock-parsing-word))) (defun fuel-font-lock--font-lock-setup (&optional keywords no-syntax) diff --git a/misc/fuel/fuel-syntax.el b/misc/fuel/fuel-syntax.el index 6f33eb2993..a095e70256 100644 --- a/misc/fuel/fuel-syntax.el +++ b/misc/fuel/fuel-syntax.el @@ -43,16 +43,17 @@ ;;; Regexps galore: (defconst fuel-syntax--parsing-words - '(":" "::" ";" "<<" ">" - "ABOUT:" "ALIAS:" "ARTICLE:" + '(":" "::" ";" "&:" "<<" ">" + "ABOUT:" "ALIAS:" "ALIEN:" "ARTICLE:" "B" "BIN:" - "C:" "C-STRUCT:" "C-UNION:" "CHAR:" "CONSTANT:" "call-next-method" + "C:" "C-ENUM:" "C-STRUCT:" "C-UNION:" "CHAR:" "CONSTANT:" "call-next-method" "DEFER:" "ERROR:" "EXCLUDE:" - "f" "FORGET:" "FROM:" + "f" "FORGET:" "FROM:" "FUNCTION:" "GENERIC#" "GENERIC:" "HELP:" "HEX:" "HOOK:" "IN:" "initial:" "INSTANCE:" "INTERSECTION:" + "LIBRARY:" "M:" "MACRO:" "MACRO::" "MAIN:" "MATH:" "MEMO:" "MEMO:" "METHOD:" "MIXIN:" "OCT:" "POSTPONE:" "PREDICATE:" "PRIMITIVE:" "PRIVATE>" "PROVIDE:" @@ -117,10 +118,11 @@ '("IN:" "USE:" "FROM:" "EXCLUDE:" "QUALIFIED:" "QUALIFIED-WITH:"))) (defconst fuel-syntax--int-constant-def-regex - (fuel-syntax--second-word-regex '("CHAR:" "BIN:" "HEX:" "OCT:"))) + (fuel-syntax--second-word-regex '("ALIEN:" "CHAR:" "BIN:" "HEX:" "OCT:"))) (defconst fuel-syntax--type-definition-regex - (fuel-syntax--second-word-regex '("MIXIN:" "TUPLE:" "SINGLETON:" "UNION:"))) + (fuel-syntax--second-word-regex + '("C-STRUCT:" "C-UNION:" "MIXIN:" "TUPLE:" "SINGLETON:" "UNION:"))) (defconst fuel-syntax--tuple-decl-regex "^TUPLE: +\\([^ \n]+\\) +< +\\([^ \n]+\\)\\_>") @@ -131,7 +133,7 @@ (defconst fuel-syntax--setter-regex "\\_<>>.+?\\_>") (defconst fuel-syntax--symbol-definition-regex - (fuel-syntax--second-word-regex '("SYMBOL:" "VAR:"))) + (fuel-syntax--second-word-regex '("&:" "SYMBOL:" "VAR:"))) (defconst fuel-syntax--stack-effect-regex "\\( ( .* )\\)\\|\\( (( .* ))\\)") @@ -144,8 +146,12 @@ (defconst fuel-syntax--sub-vocab-regex "^<\\([^ \n]+\\) *$") +(defconst fuel-syntax--alien-function-regex + "\\_" "b")) (" \\((\\) \\([^\n]*\\) \\()\\)\\( \\|\n\\)" (1 "b")) ;; Strings + ("\\( \\|^\\)\\(DLL\\|P\\|SBUF\\)\\(\"\\)[^\n\r\f]*\\(\"\\)\\( \\|\n\\)" + (3 "\"") (4 "\"")) ("\\( \\|^\\)\\(\"\\)[^\n\r\f]*\\(\"\\)\\( \\|\n\\)" (2 "\"") (3 "\"")) ("\\_<<\\(\"\\)\\_>" (1 "\\_>" (1 ">b")) ;; Multiline constructs ("\\_<\\(U\\)SING: \\(;\\)" (1 "b")) ("\\_b")) + ("\\_\\)" (2 "