]> gitweb.factorcode.org Git - factor.git/blobdiff - misc/fuel/fuel-mode.el
fuel: Incorporate refresh-and-test-all
[factor.git] / misc / fuel / fuel-mode.el
index ecee020b546a1fac3d88717512f191f3327458f8..86c454bbe0699cc2c407bb5db1240636af8a6c91 100644 (file)
@@ -1,4 +1,4 @@
-;;; fuel-mode.el -- Minor mode enabling FUEL niceties
+;;; fuel-mode.el --- Major mode for editing Factor programs. -*- lexical-binding: t -*-
 
 ;; Copyright (C) 2008, 2009, 2010 Jose Antonio Ortega Ruiz
 ;; See http://factorcode.org/license.txt for BSD license.
@@ -7,13 +7,14 @@
 ;; Keywords: languages, fuel, factor
 ;; Start date: Sat Dec 06, 2008 00:52
 
-;;; Comentary:
+;;; Commentary:
 
-;; Enhancements to vanilla factor-mode (notably, listener interaction)
-;; enabled by means of a minor mode.
+;; A major mode (factor-mode) for editing Factor programs and a minor mode
+;; (fuel-mode) for interacting with a running Factor image.
 
 ;;; Code:
 
+(require 'fuel-base)
 (require 'fuel-listener)
 (require 'fuel-completion)
 (require 'fuel-debug)
 (require 'fuel-refactor)
 (require 'fuel-stack)
 (require 'fuel-autodoc)
-(require 'fuel-font-lock)
+(require 'fuel-autohelp)
 (require 'fuel-edit)
-(require 'fuel-syntax)
 (require 'fuel-menu)
-(require 'fuel-base)
 
 \f
 ;;; Customization:
 
+;;;###autoload
 (defgroup fuel-mode nil
   "Mode enabling FUEL's ultimate abilities."
   :group 'fuel)
   :group 'fuel-autodoc
   :type 'boolean)
 
+(defcustom fuel-mode-autohelp-p nil
+  "Whether `fuel-autohelp-mode' gets enabled by default in factor buffers."
+  :group 'fuel-mode
+  :group 'fuel-autohelp
+  :type 'boolean)
+
 (defcustom fuel-mode-stack-p nil
   "Whether `fuel-stack-mode' gets enabled by default in factor buffers."
   :group 'fuel-mode
 \f
 ;;; User commands
 
-(defun fuel-mode--read-file (arg)
-  (let* ((file (or (and arg (read-file-name "File: " nil (buffer-file-name) t))
-                   (buffer-file-name)))
-         (file (expand-file-name file))
-         (buffer (find-file-noselect file)))
-    (when (and  buffer
-                (buffer-modified-p buffer)
-                (y-or-n-p "Save file? "))
-      (save-buffer buffer))
-    (cons file buffer)))
-
 (defun fuel-run-file (&optional arg)
   "Sends the current file to Factor for compilation.
 With prefix argument, ask for the file to run."
@@ -93,14 +88,14 @@ buffer in case of errors."
                               "[\f\n\r\v]+"
                               t))
          (cmd `(:fuel (,(mapcar (lambda (l) `(:factor ,l)) lines))))
-         (cv (fuel-syntax--current-vocab)))
+         (cv (factor-current-vocab)))
     (fuel-debug--prepare-compilation (buffer-file-name)
                                      (format "Evaluating:\n\n%s" rstr))
     (fuel-debug--display-retort
      (fuel-eval--send/wait cmd 10000)
      (format "%s%s"
              (if cv (format "IN: %s " cv) "")
-             (fuel--shorten-region begin end 70))
+             (fuel-shorten-region begin end 70))
      arg)))
 
 (defun fuel-eval-extended-region (begin end &optional arg)
@@ -125,19 +120,10 @@ buffer in case of errors."
       (unless (< begin end) (error "No evaluable definition around point"))
       (fuel-eval-region begin end arg))))
 
-(defun fuel-update-usings (&optional arg)
-  "Asks factor for the vocabularies needed by this file,
-optionally updating the its USING: line.
-With prefix argument, ask for the file name."
-  (interactive "P")
-  (let ((file (car (fuel-mode--read-file arg))))
-    (when file (fuel-debug--uses-for-file file))))
-
 (defun fuel-load-usings ()
   "Loads all vocabularies in the current buffer's USING: from.
 Useful to activate autodoc help messages in a vocabulary not yet
-loaded. See documentation for `fuel-autodoc-eval-using-form-p'
-for details."
+loaded."
   (interactive)
   (message "Loading all vocabularies in USING: form ...")
   (let ((err (fuel-eval--retort-error
@@ -148,13 +134,13 @@ for details."
 \f
 ;;; Minor mode definition:
 
-(make-variable-buffer-local
- (defvar fuel-mode-string " F"
-   "Modeline indicator for fuel-mode"))
+(defvar-local fuel-mode-string " F"
+  "Modeline indicator for fuel-mode")
 
 (defvar fuel-mode-map (make-sparse-keymap)
   "Key map for fuel-mode")
 
+;;;###autoload
 (define-minor-mode fuel-mode
   "Toggle Fuel's mode.
 With no argument, this command toggles the mode.
@@ -172,6 +158,9 @@ interacting with a factor listener is at your disposal.
   (setq fuel-autodoc-mode-string "/A")
   (when fuel-mode-autodoc-p (fuel-autodoc-mode fuel-mode))
 
+  (setq fuel-autohelp-mode-string "/H")
+  (when fuel-mode-autohelp-p (fuel-autohelp-mode fuel-mode))
+
   (setq fuel-stack-mode-string "/S")
   (when fuel-mode-stack-p (fuel-stack-mode fuel-mode))
 
@@ -193,25 +182,23 @@ interacting with a factor listener is at your disposal.
    fuel-eval-definition)
   ("Eval extended region" ("\C-\M-r" "\C-c\C-e\C-e" "\C-c\C-ee")
    fuel-eval-extended-region :enable mark-active)
-  ("Eval region" ("\C-c\C-r" "\C-c\C-e\C-r" "\C-c\C-er")
+  ("Eval region" ("\C-c\C-e\C-r" "\C-c\C-er")
    fuel-eval-region :enable mark-active)
   --
-  ("Edit word at point" ("\M-." "\C-c\C-e\C-d" "\C-c\C-ed")
-   fuel-edit-word-at-point :enable (symbol-at-point))
-  ("Edit word..." ("\C-c\C-e\C-w" "\C-c\C-ew") fuel-edit-word)
+  ("Edit word or vocab at point..." ("\M-." "\C-c\C-e\C-d" "\C-c\C-ed")
+   fuel-edit-word-at-point)
   ("Edit vocab..." ("\C-c\C-e\C-v" "\C-c\C-ev") fuel-edit-vocabulary)
   ("Jump back" "\M-," fuel-edit-pop-edit-word-stack)
   --
   ("Help on word" ("\C-c\C-d\C-d" "\C-c\C-dd") fuel-help)
-  ("Short help on word" ("\C-c\C-d\C-s" "\C-c\C-ds") fuel-help)
   ("Apropos..." ("\C-c\C-d\C-p" "\C-c\C-dp") fuel-apropos)
   ("Show stack effect" ("\C-c\C-d\C-e" "\C-c\C-de") fuel-stack-effect-sexp)
   --
-  ("Show all words" ("\C-c\C-d\C-v" "\C-c\C-dv") fuel-show-file-words)
-  ("Word callers" "\C-c\M-<" fuel-show-callers :enable (symbol-at-point))
-  ("Word callees" "\C-c\M->" fuel-show-callees :enable (symbol-at-point))
-  (mode "Autodoc mode" ("\C-c\C-d\C-a" "\C-c\C-da") fuel-autodoc-mode)
-  --
+  (menu "Crossref"
+        ("Show all words" ("\C-c\C-d\C-v" "\C-c\C-dv") fuel-show-file-words)
+        ("Word callers" "\C-c\M-<" fuel-show-callers :enable (symbol-at-point))
+        ("Word callees" "\C-c\M->" fuel-show-callees :enable (symbol-at-point))
+        (mode "Autodoc mode" ("\C-c\C-d\C-a" "\C-c\C-da") fuel-autodoc-mode))
   (menu "Refactor"
         ("Rename word" ("\C-c\C-x\C-w" "\C-c\C-xw") fuel-refactor-rename-word)
         ("Inline word" ("\C-c\C-x\C-i" "\C-c\C-xi") fuel-refactor-inline-word)
@@ -226,15 +213,24 @@ interacting with a factor listener is at your disposal.
         --
         ("Extract article" ("\C-c\C-x\C-a" "\C-c\C-xa")
          fuel-refactor-extract-article))
+  (menu "Scaffold"
+        ("New vocab" ("\C-c\C-c\C-v") fuel-scaffold-vocab)
+        ("Tests for vocab" ("\C-c\C-c\C-t") fuel-scaffold-tests)
+        ("Help for vocab" ("\C-c\C-c\C-h") fuel-scaffold-help)
+        ("Tags for vocab" ("\C-c\C-c\C-g") fuel-scaffold-tags)
+        ("Summary for vocab" ("\C-c\C-c\C-s") fuel-scaffold-summary)
+        ("Authors for vocab" ("\C-c\C-c\C-a") fuel-scaffold-authors)
+        ("Platforms for vocab" ("\C-c\C-c\C-p") fuel-scaffold-platforms))
   --
   ("Load used vocabs" ("\C-c\C-e\C-l" "\C-c\C-el") fuel-load-usings)
   ("Run file" ("\C-c\C-k" "\C-c\C-l" "\C-c\C-e\C-k") fuel-run-file)
   ("Run unit tests" "\C-c\C-t" fuel-test-vocab)
   ("Refresh vocabs" "\C-c\C-r" fuel-refresh-all)
+  ("Refresh vocabs and test" "\C-c\M-r" fuel-refresh-and-test-all)
   --
   (menu "Switch to"
         ("Listener" "\C-c\C-z" run-factor)
-        ("Related Factor file" "\C-c\C-o" factor-mode-visit-other-file)
+        ("Related Factor file" "\C-c\C-o" factor-visit-other-file)
         ("Other Factor buffer" "\C-c\C-s" fuel-switch-to-buffer)
         ("Other Factor buffer other window" "\C-x4s"
          fuel-switch-to-buffer-other-window)
@@ -243,4 +239,5 @@ interacting with a factor listener is at your disposal.
 
 \f
 (provide 'fuel-mode)
+
 ;;; fuel-mode.el ends here