Here are a few simple lines that you can put in your .emacs file. They associate .fms files
with Lisp (actually, this example assumes SLIME is being used) and bind the key sequence "\C-c\C-o" to run the
FOMUS command-line program.
Example 2.7. Emacs Init Lines 1
;; fomus extension--editing works well enough in lisp mode
(add-to-list 'auto-mode-alist '("\\.fms$" . lisp-mode))
;; save buffers & invoke fomus
(setq fomus-args "")
(defun run-fomus ()
(interactive)
(save-some-buffers)
(let ((a (read-from-minibuffer "FOMUS arguments: " fomus-args)))
(setq fomus-args a)
(shell-command (format "fomus %s %S" a buffer-file-name))))
;; add slime mode hook
(defun custom-slime-mode-hook ()
(local-set-key "\C-c\C-o" 'run-fomus))
(add-hook 'slime-mode-hook 'custom-slime-mode-hook)
Another option would be to use SLIME's SLIME-INTERACTIVE-EVAL function instead of
SHELL-COMMAND:
Example 2.8. Emacs Init Lines 2
;; save buffers and invoke fomus in the default Lisp
(setq fomus-args "")
(defun run-fomus ()
(interactive)
(save-some-buffers)
(let ((a (read-from-minibuffer "FOMUS arguments: " fomus-args)))
(setq fomus-args a)
(slime-interactive-eval (format "(fomus %S %s)" buffer-file-name a))))