FUEL: Font lock and indent support for alien parsing words.
parent
f64303a3c8
commit
40382f9c5f
|
@ -79,11 +79,15 @@
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (nth 8 state))
|
(goto-char (nth 8 state))
|
||||||
(beginning-of-line)
|
(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\\): ")
|
((looking-at "\\(TUPLE\\|SYMBOLS\\|VARS\\): ")
|
||||||
'factor-font-lock-symbol)
|
'factor-font-lock-symbol)
|
||||||
|
((looking-at "C-ENUM:\\( \\|\n\\)")
|
||||||
|
'factor-font-lock-constant)
|
||||||
(t 'default))))
|
(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-stack-effect)
|
||||||
((char-equal c ?\") 'factor-font-lock-string)
|
((char-equal c ?\") 'factor-font-lock-string)
|
||||||
(t 'factor-font-lock-comment)))))
|
(t 'factor-font-lock-comment)))))
|
||||||
|
@ -91,6 +95,8 @@
|
||||||
(defconst fuel-font-lock--font-lock-keywords
|
(defconst fuel-font-lock--font-lock-keywords
|
||||||
`((,fuel-syntax--stack-effect-regex . 'factor-font-lock-stack-effect)
|
`((,fuel-syntax--stack-effect-regex . 'factor-font-lock-stack-effect)
|
||||||
(,fuel-syntax--brace-words-regex 1 'factor-font-lock-parsing-word)
|
(,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--vocab-ref-regexp 2 'factor-font-lock-vocabulary-name)
|
||||||
(,fuel-syntax--constructor-decl-regex (1 'factor-font-lock-word)
|
(,fuel-syntax--constructor-decl-regex (1 'factor-font-lock-word)
|
||||||
(2 'factor-font-lock-type-name)
|
(2 'factor-font-lock-type-name)
|
||||||
|
@ -119,7 +125,7 @@
|
||||||
(,fuel-syntax--getter-regex . 'factor-font-lock-getter-word)
|
(,fuel-syntax--getter-regex . 'factor-font-lock-getter-word)
|
||||||
(,fuel-syntax--symbol-definition-regex 2 'factor-font-lock-symbol)
|
(,fuel-syntax--symbol-definition-regex 2 'factor-font-lock-symbol)
|
||||||
(,fuel-syntax--bad-string-regex . 'factor-font-lock-invalid-syntax)
|
(,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)))
|
(,fuel-syntax--parsing-words-regex . 'factor-font-lock-parsing-word)))
|
||||||
|
|
||||||
(defun fuel-font-lock--font-lock-setup (&optional keywords no-syntax)
|
(defun fuel-font-lock--font-lock-setup (&optional keywords no-syntax)
|
||||||
|
|
|
@ -43,16 +43,17 @@
|
||||||
;;; Regexps galore:
|
;;; Regexps galore:
|
||||||
|
|
||||||
(defconst fuel-syntax--parsing-words
|
(defconst fuel-syntax--parsing-words
|
||||||
'(":" "::" ";" "<<" "<PRIVATE" ">>"
|
'(":" "::" ";" "&:" "<<" "<PRIVATE" ">>"
|
||||||
"ABOUT:" "ALIAS:" "ARTICLE:"
|
"ABOUT:" "ALIAS:" "ALIEN:" "ARTICLE:"
|
||||||
"B" "BIN:"
|
"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:"
|
"DEFER:"
|
||||||
"ERROR:" "EXCLUDE:"
|
"ERROR:" "EXCLUDE:"
|
||||||
"f" "FORGET:" "FROM:"
|
"f" "FORGET:" "FROM:" "FUNCTION:"
|
||||||
"GENERIC#" "GENERIC:"
|
"GENERIC#" "GENERIC:"
|
||||||
"HELP:" "HEX:" "HOOK:"
|
"HELP:" "HEX:" "HOOK:"
|
||||||
"IN:" "initial:" "INSTANCE:" "INTERSECTION:"
|
"IN:" "initial:" "INSTANCE:" "INTERSECTION:"
|
||||||
|
"LIBRARY:"
|
||||||
"M:" "MACRO:" "MACRO::" "MAIN:" "MATH:" "MEMO:" "MEMO:" "METHOD:" "MIXIN:"
|
"M:" "MACRO:" "MACRO::" "MAIN:" "MATH:" "MEMO:" "MEMO:" "METHOD:" "MIXIN:"
|
||||||
"OCT:"
|
"OCT:"
|
||||||
"POSTPONE:" "PREDICATE:" "PRIMITIVE:" "PRIVATE>" "PROVIDE:"
|
"POSTPONE:" "PREDICATE:" "PRIMITIVE:" "PRIVATE>" "PROVIDE:"
|
||||||
|
@ -117,10 +118,11 @@
|
||||||
'("IN:" "USE:" "FROM:" "EXCLUDE:" "QUALIFIED:" "QUALIFIED-WITH:")))
|
'("IN:" "USE:" "FROM:" "EXCLUDE:" "QUALIFIED:" "QUALIFIED-WITH:")))
|
||||||
|
|
||||||
(defconst fuel-syntax--int-constant-def-regex
|
(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
|
(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
|
(defconst fuel-syntax--tuple-decl-regex
|
||||||
"^TUPLE: +\\([^ \n]+\\) +< +\\([^ \n]+\\)\\_>")
|
"^TUPLE: +\\([^ \n]+\\) +< +\\([^ \n]+\\)\\_>")
|
||||||
|
@ -131,7 +133,7 @@
|
||||||
(defconst fuel-syntax--setter-regex "\\_<>>.+?\\_>")
|
(defconst fuel-syntax--setter-regex "\\_<>>.+?\\_>")
|
||||||
|
|
||||||
(defconst fuel-syntax--symbol-definition-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
|
(defconst fuel-syntax--stack-effect-regex
|
||||||
"\\( ( .* )\\)\\|\\( (( .* ))\\)")
|
"\\( ( .* )\\)\\|\\( (( .* ))\\)")
|
||||||
|
@ -144,8 +146,12 @@
|
||||||
|
|
||||||
(defconst fuel-syntax--sub-vocab-regex "^<\\([^ \n]+\\) *$")
|
(defconst fuel-syntax--sub-vocab-regex "^<\\([^ \n]+\\) *$")
|
||||||
|
|
||||||
|
(defconst fuel-syntax--alien-function-regex
|
||||||
|
"\\_<FUNCTION: \\(\\w+\\) \\(\\w+\\)")
|
||||||
|
|
||||||
(defconst fuel-syntax--indent-def-starts '("" ":"
|
(defconst fuel-syntax--indent-def-starts '("" ":"
|
||||||
"FROM"
|
"C-ENUM" "C-STRUCT" "C-UNION"
|
||||||
|
"FROM" "FUNCTION:"
|
||||||
"INTERSECTION:"
|
"INTERSECTION:"
|
||||||
"M" "MACRO" "MACRO:"
|
"M" "MACRO" "MACRO:"
|
||||||
"MEMO" "MEMO:" "METHOD"
|
"MEMO" "MEMO:" "METHOD"
|
||||||
|
@ -158,7 +164,7 @@
|
||||||
"VARS"))
|
"VARS"))
|
||||||
|
|
||||||
(defconst fuel-syntax--indent-def-start-regex
|
(defconst fuel-syntax--indent-def-start-regex
|
||||||
(format "^\\(%s:\\) " (regexp-opt fuel-syntax--indent-def-starts)))
|
(format "^\\(%s:\\)\\( \\|\n\\)" (regexp-opt fuel-syntax--indent-def-starts)))
|
||||||
|
|
||||||
(defconst fuel-syntax--no-indent-def-start-regex
|
(defconst fuel-syntax--no-indent-def-start-regex
|
||||||
(format "^\\(%s:\\) " (regexp-opt fuel-syntax--no-indent-def-starts)))
|
(format "^\\(%s:\\) " (regexp-opt fuel-syntax--no-indent-def-starts)))
|
||||||
|
@ -181,6 +187,7 @@
|
||||||
"GENERIC:" "GENERIC#"
|
"GENERIC:" "GENERIC#"
|
||||||
"HELP:" "HEX:" "HOOK:"
|
"HELP:" "HEX:" "HOOK:"
|
||||||
"IN:" "INSTANCE:"
|
"IN:" "INSTANCE:"
|
||||||
|
"LIBRARY:"
|
||||||
"MAIN:" "MATH:" "MIXIN:"
|
"MAIN:" "MATH:" "MIXIN:"
|
||||||
"OCT:"
|
"OCT:"
|
||||||
"POSTPONE:" "PRIVATE>" "<PRIVATE"
|
"POSTPONE:" "PRIVATE>" "<PRIVATE"
|
||||||
|
@ -247,12 +254,16 @@
|
||||||
(" \\((\\)( \\([^\n]*\\) )\\()\\)\\( \\|\n\\)" (1 "<b") (2 "w") (3 ">b"))
|
(" \\((\\)( \\([^\n]*\\) )\\()\\)\\( \\|\n\\)" (1 "<b") (2 "w") (3 ">b"))
|
||||||
(" \\((\\) \\([^\n]*\\) \\()\\)\\( \\|\n\\)" (1 "<b") (2 "w") (3 ">b"))
|
(" \\((\\) \\([^\n]*\\) \\()\\)\\( \\|\n\\)" (1 "<b") (2 "w") (3 ">b"))
|
||||||
;; Strings
|
;; Strings
|
||||||
|
("\\( \\|^\\)\\(DLL\\|P\\|SBUF\\)\\(\"\\)[^\n\r\f]*\\(\"\\)\\( \\|\n\\)"
|
||||||
|
(3 "\"") (4 "\""))
|
||||||
("\\( \\|^\\)\\(\"\\)[^\n\r\f]*\\(\"\\)\\( \\|\n\\)" (2 "\"") (3 "\""))
|
("\\( \\|^\\)\\(\"\\)[^\n\r\f]*\\(\"\\)\\( \\|\n\\)" (2 "\"") (3 "\""))
|
||||||
("\\_<<\\(\"\\)\\_>" (1 "<b"))
|
("\\_<<\\(\"\\)\\_>" (1 "<b"))
|
||||||
("\\_<\\(\"\\)>\\_>" (1 ">b"))
|
("\\_<\\(\"\\)>\\_>" (1 ">b"))
|
||||||
;; Multiline constructs
|
;; Multiline constructs
|
||||||
("\\_<\\(U\\)SING: \\(;\\)" (1 "<b") (2 ">b"))
|
("\\_<\\(U\\)SING: \\(;\\)" (1 "<b") (2 ">b"))
|
||||||
("\\_<USING:\\( \\)" (1 "<b"))
|
("\\_<USING:\\( \\)" (1 "<b"))
|
||||||
|
("\\_<\\(C\\)-ENUM: \\(;\\)" (1 "<b") (2 ">b"))
|
||||||
|
("\\_<C-ENUM:\\( \\|\n\\)" (1 "<b"))
|
||||||
("\\_<TUPLE: +\\w+? +< +\\w+? *\\( \\|\n\\)\\([^;]\\|$\\)" (1 "<b"))
|
("\\_<TUPLE: +\\w+? +< +\\w+? *\\( \\|\n\\)\\([^;]\\|$\\)" (1 "<b"))
|
||||||
("\\_<\\(TUPLE\\|SYMBOLS\\|VARS\\): +\\w+? *\\( \\|\n\\)\\([^;<\n]\\|\\_>\\)"
|
("\\_<\\(TUPLE\\|SYMBOLS\\|VARS\\): +\\w+? *\\( \\|\n\\)\\([^;<\n]\\|\\_>\\)"
|
||||||
(2 "<b"))
|
(2 "<b"))
|
||||||
|
|
Loading…
Reference in New Issue