diff --git a/misc/fuel/README b/misc/fuel/README index 0411e0709b..ccaa7a676a 100644 --- a/misc/fuel/README +++ b/misc/fuel/README @@ -99,6 +99,7 @@ beast. |-----------------+------------------------------------------------------------| | C-cz | switch to listener (run-factor) | | C-co | cycle between code, tests and docs files | + | C-ct | run the unit tests for a vocabulary | | C-cr | switch to listener and refresh all loaded vocabs | | C-cs | switch to other factor buffer (fuel-switch-to-buffer) | | C-x4s | switch to other factor buffer in other window | diff --git a/misc/fuel/fuel-completion.el b/misc/fuel/fuel-completion.el index c21d25901f..8d78225273 100644 --- a/misc/fuel/fuel-completion.el +++ b/misc/fuel/fuel-completion.el @@ -190,13 +190,13 @@ terminates a current completion." (defvar fuel-completion--vocab-history nil) -(defun fuel-completion--read-vocab (refresh) +(defun fuel-completion--read-vocab (refresh &optional init-input) (let ((minibuffer-local-completion-map fuel-completion--minibuffer-map) (vocabs (fuel-completion--vocabs refresh)) (prompt "Vocabulary name: ")) (if vocabs - (completing-read prompt vocabs nil nil nil fuel-completion--vocab-history) - (read-string prompt nil fuel-completion--vocab-history)))) + (completing-read prompt vocabs nil nil init-input fuel-completion--vocab-history) + (read-string prompt init-input fuel-completion--vocab-history)))) (defun fuel-completion--complete-symbol () "Complete the symbol at point. diff --git a/misc/fuel/fuel-listener.el b/misc/fuel/fuel-listener.el index 1d23571a0a..d5fec4bf5f 100644 --- a/misc/fuel/fuel-listener.el +++ b/misc/fuel/fuel-listener.el @@ -192,6 +192,13 @@ With prefix, you're teletransported to the listener's buffer." (comint-send-string nil "\"Refreshing loaded vocabs...\" write nl flush") (comint-send-string nil " refresh-all \"Done!\" write nl flush\n"))) +(defun fuel-test-vocab (vocab) + "Run the unit tests for the specified vocabulary." + (interactive (list (fuel-completion--read-vocab nil (fuel-syntax--current-vocab)))) + (comint-send-string (fuel-listener--process) + (concat "\"" vocab "\" reload nl flush\n" + "\"" vocab "\" test nl flush\n"))) + ;;; Completion support diff --git a/misc/fuel/fuel-mode.el b/misc/fuel/fuel-mode.el index 282ef3240f..6f42b4efc4 100644 --- a/misc/fuel/fuel-mode.el +++ b/misc/fuel/fuel-mode.el @@ -191,6 +191,7 @@ interacting with a factor listener is at your disposal. (fuel-mode--key-1 ?k 'fuel-run-file) (fuel-mode--key-1 ?l 'fuel-run-file) (fuel-mode--key-1 ?r 'fuel-refresh-all) +(fuel-mode--key-1 ?t 'fuel-test-vocab) (fuel-mode--key-1 ?z 'run-factor) (fuel-mode--key-1 ?s 'fuel-switch-to-buffer) (define-key fuel-mode-map "\C-x4s" 'fuel-switch-to-buffer-other-window) diff --git a/misc/fuel/fuel-syntax.el b/misc/fuel/fuel-syntax.el index 635bf0ea82..c22d03bdc5 100644 --- a/misc/fuel/fuel-syntax.el +++ b/misc/fuel/fuel-syntax.el @@ -50,7 +50,8 @@ "DEFER:" "EBNF:" ";EBNF" "ERROR:" "EXCLUDE:" "f" "FORGET:" "FROM:" "FUNCTION:" - "GENERIC#" "GENERIC:" + "GAME:" "GENERIC#" "GENERIC:" + "GLSL-SHADER:" "GLSL-PROGRAM:" "HELP:" "HEX:" "HOOK:" "IN:" "initial:" "INSTANCE:" "INTERSECTION:" "LIBRARY:" @@ -60,10 +61,10 @@ "POSTPONE:" "PREDICATE:" "PRIMITIVE:" "PRIVATE>" "PROVIDE:" "QUALIFIED-WITH:" "QUALIFIED:" "read-only" "RENAME:" "REQUIRE:" "REQUIRES:" - "SINGLETON:" "SINGLETONS:" "SLOT:" "SYMBOL:" "SYMBOLS:" "SYNTAX:" - "TUPLE:" "t" "t?" "TYPEDEF:" - "UNION:" "USE:" "USING:" - "VARS:")) + "SINGLETON:" "SINGLETONS:" "SLOT:" "STRING:" "SYMBOL:" "SYMBOLS:" "SYNTAX:" + "TUPLE:" "t" "t?" "TYPEDEF:" "TYPED:" "TYPED::" + "UNIFORM-TUPLE:" "UNION:" "USE:" "USING:" + "VARS:" "VERTEX-FORMAT:")) (defconst fuel-syntax--parsing-words-regex (regexp-opt fuel-syntax--parsing-words 'words)) @@ -110,7 +111,7 @@ (format "\\_<\\(%s\\)?: +\\_<\\(\\w+\\)\\_>" (regexp-opt '(":" "GENERIC" "DEFER" "HOOK" "MAIN" "MATH" "POSTPONE" - "SYMBOL" "SYNTAX" "RENAME")))) + "SYMBOL" "SYNTAX" "TYPED" "RENAME")))) (defconst fuel-syntax--alias-definition-regex "^ALIAS: +\\(\\_<.+?\\_>\\) +\\(\\_<.+?\\_>\\)") @@ -159,8 +160,11 @@ "MEMO" "MEMO:" "METHOD" "SYNTAX" "PREDICATE" "PRIMITIVE" - "STRUCT" "TAG" "TUPLE" "UNION-STRUCT" - "UNION")) + "STRUCT" "TAG" "TUPLE" + "TYPED" "TYPED:" + "UNIFORM-TUPLE" + "UNION-STRUCT" "UNION" + "VERTEX-FORMAT")) (defconst fuel-syntax--no-indent-def-starts '("ARTICLE" "HELP" @@ -185,7 +189,7 @@ "CONSTANT:" "C:" "DEFER:" "FORGET:" - "GENERIC:" "GENERIC#" + "GAME:" "GENERIC:" "GENERIC#" "GLSL-PROGRAM:" "HEX:" "HOOK:" "IN:" "INSTANCE:" "LIBRARY:"