diff --git a/extra/fuel/authors.txt b/extra/fuel/authors.txt index ecfb757fd2..43ae04c322 100644 --- a/extra/fuel/authors.txt +++ b/extra/fuel/authors.txt @@ -1,2 +1 @@ Jose Antonio Ortega Ruiz -Eduardo Cavazos diff --git a/misc/fuel/README b/misc/fuel/README index 678bd25365..41dabe564e 100644 --- a/misc/fuel/README +++ b/misc/fuel/README @@ -41,6 +41,12 @@ beast. To start the listener, try M-x run-factor. + By default, FUEL will try to use the binary and image files in the + factor installation directory. You can customize them with: + + (setq fuel-listener-factor-binary ) + (setq fuel-listener-factor-image ) + Many aspects of the environment can be customized: M-x customize-group fuel will show you how many. diff --git a/misc/fuel/factor-mode.el b/misc/fuel/factor-mode.el index 4164e14c5e..ba9be2edd3 100644 --- a/misc/fuel/factor-mode.el +++ b/misc/fuel/factor-mode.el @@ -144,8 +144,7 @@ code in the buffer." (cond ((or (fuel-syntax--at-end-of-def) (fuel-syntax--at-setter-line)) (fuel-syntax--decreased-indentation)) - ((and (fuel-syntax--at-begin-of-def) - (not (fuel-syntax--at-using))) + ((fuel-syntax--at-begin-of-indent-def) (fuel-syntax--increased-indentation)) (t (current-indentation))))) diff --git a/misc/fuel/fu.el b/misc/fuel/fu.el index e78502a6ee..95365964ab 100644 --- a/misc/fuel/fu.el +++ b/misc/fuel/fu.el @@ -8,7 +8,11 @@ ;;; Code: -(add-to-list 'load-path (file-name-directory load-file-name)) +(setq fuel-factor-fuel-dir (file-name-directory load-file-name)) + +(setq fuel-factor-root-dir (expand-file-name "../../" fuel-factor-fuel-dir)) + +(add-to-list 'load-path fuel-factor-fuel-dir) (add-to-list 'auto-mode-alist '("\\.factor\\'" . factor-mode)) (autoload 'factor-mode "factor-mode.el" diff --git a/misc/fuel/fuel-debug-uses.el b/misc/fuel/fuel-debug-uses.el index d37cf7b58d..af4f2ae60b 100644 --- a/misc/fuel/fuel-debug-uses.el +++ b/misc/fuel/fuel-debug-uses.el @@ -72,7 +72,7 @@ (defvar fuel-debug--uses-restarts nil)) (defsubst fuel-debug--uses-insert-title () - (insert "Infering USING: stanza for " fuel-debug--uses-file ".\n\n")) + (insert "Inferring USING: stanza for " fuel-debug--uses-file ".\n\n")) (defun fuel-debug--uses-prepare (file) (fuel--with-popup (fuel-debug--uses-buffer) @@ -173,7 +173,7 @@ map)) (defconst fuel-debug--uses-header-regex - (format "^%s.*$" (regexp-opt '("Infering USING: stanza for " + (format "^%s.*$" (regexp-opt '("Inferring USING: stanza for " "Current USING: is already fine!" "Current vocabulary list:" "Correct vocabulary list:" diff --git a/misc/fuel/fuel-font-lock.el b/misc/fuel/fuel-font-lock.el index b12be1eac7..7b129eef2a 100644 --- a/misc/fuel/fuel-font-lock.el +++ b/misc/fuel/fuel-font-lock.el @@ -72,10 +72,10 @@ ;;; Font lock: (defconst fuel-font-lock--font-lock-keywords - `((,fuel-syntax--parsing-words-regex . 'factor-font-lock-parsing-word) + `((,fuel-syntax--stack-effect-regex . 'factor-font-lock-stack-effect) + (,fuel-syntax--parsing-words-regex . 'factor-font-lock-parsing-word) (,fuel-syntax--brace-words-regex 1 'factor-font-lock-parsing-word) ("\\(P\\|SBUF\\)\"" 1 'factor-font-lock-parsing-word) - (,fuel-syntax--stack-effect-regex . 'factor-font-lock-stack-effect) (,fuel-syntax--vocab-ref-regexp 2 'factor-font-lock-vocabulary-name) (,fuel-syntax--declaration-words-regex . 'factor-font-lock-declaration) (,fuel-syntax--word-definition-regex 2 'factor-font-lock-word) diff --git a/misc/fuel/fuel-listener.el b/misc/fuel/fuel-listener.el index 3ad1b77978..66034225f1 100644 --- a/misc/fuel/fuel-listener.el +++ b/misc/fuel/fuel-listener.el @@ -30,12 +30,14 @@ "Interacting with a Factor listener inside Emacs." :group 'fuel) -(defcustom fuel-listener-factor-binary "~/factor/factor" +(defcustom fuel-listener-factor-binary + (expand-file-name "factor" fuel-factor-root-dir) "Full path to the factor executable to use when starting a listener." :type '(file :must-match t) :group 'fuel-listener) -(defcustom fuel-listener-factor-image "~/factor/factor.image" +(defcustom fuel-listener-factor-image + (expand-file-name "factor.image" fuel-factor-root-dir) "Full path to the factor image to use when starting a listener." :type '(file :must-match t) :group 'fuel-listener) diff --git a/misc/fuel/fuel-syntax.el b/misc/fuel/fuel-syntax.el index 6b93787a50..be7293f181 100644 --- a/misc/fuel/fuel-syntax.el +++ b/misc/fuel/fuel-syntax.el @@ -132,16 +132,28 @@ (defconst fuel-syntax--sub-vocab-regex "^<\\([^ \n]+\\) *$") +(defconst fuel-syntax--indent-def-starts '("" ":" + "FROM" + "INTERSECTION:" + "M" "MACRO" "MACRO:" + "MEMO" "MEMO:" "METHOD" + "PREDICATE" "PRIMITIVE" + "UNION")) + +(defconst fuel-syntax--no-indent-def-starts '("SINGLETONS" + "SYMBOLS" + "TUPLE" + "VARS")) + +(defconst fuel-syntax--indent-def-start-regex + (format "^\\(%s:\\) " (regexp-opt fuel-syntax--indent-def-starts))) + +(defconst fuel-syntax--no-indent-def-start-regex + (format "^\\(%s:\\) " (regexp-opt fuel-syntax--no-indent-def-starts))) + (defconst fuel-syntax--definition-start-regex - (format "^\\(%s:\\) " (regexp-opt '("" ":" - "FROM" - "INTERSECTION:" - "MACRO" "MACRO:" "M" "MEMO" "MEMO:" "METHOD" - "PREDICATE" "PRIMITIVE" - "SINGLETONS" "SYMBOLS" - "TUPLE" - "UNION" - "VARS")))) + (format "^\\(%s:\\) " (regexp-opt (append fuel-syntax--no-indent-def-starts + fuel-syntax--indent-def-starts)))) (defconst fuel-syntax--definition-end-regex (format "\\(\\(^\\| +\\);\\( *%s\\)*\\($\\| +\\)\\)" @@ -256,6 +268,9 @@ (defsubst fuel-syntax--at-begin-of-def () (looking-at fuel-syntax--begin-of-def-regex)) +(defsubst fuel-syntax--at-begin-of-indent-def () + (looking-at fuel-syntax--indent-def-start-regex)) + (defsubst fuel-syntax--at-end-of-def () (looking-at fuel-syntax--end-of-def-regex))