aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Aspinall2000-03-10 09:12:12 +0000
committerDavid Aspinall2000-03-10 09:12:12 +0000
commit8ad9ea2b6cdb784ef354e3cee37d40cbba51779e (patch)
tree791ee89a7b80b4b1177e4f56727bbf72e7cd5f70
parentc981d4ef45ebb36160de5630b75f60ab1e9b5000 (diff)
Added mechanism for setting font-lock-keywords uniformly from
proof-script-font-lock-keywords, and modifying syntax table with proof-script-modify-syntax-table, etc.
-rw-r--r--generic/proof-easy-config.el23
1 files changed, 20 insertions, 3 deletions
diff --git a/generic/proof-easy-config.el b/generic/proof-easy-config.el
index 81ec4f26..3405d3c4 100644
--- a/generic/proof-easy-config.el
+++ b/generic/proof-easy-config.el
@@ -16,7 +16,7 @@
'(("" "script" proof-mode (proof-config-done))
("shell" "shell" proof-shell-mode (proof-shell-config-done))
("response" "resp" proof-response-mode (proof-response-config-done))
- ("goals" "goals" pbp-mode (proof-goals-config-done)))
+ ("goals" "goals" pbp-mode (proof-goals-config-done)))
"A list of (PREFIXSYM SUFFIXNAME PARENT MODEBODY) for derived modes.")
(defun proof-easy-config-define-derived-modes ()
@@ -30,9 +30,26 @@
(hyphen (if (string-equal prefixsym "") "" "-"))
(mode (intern (concat modert hyphen "mode")))
(modename (concat proof-assistant " " suffixnm))
- (varname (intern (concat "proof-mode-for-" suffixnm))))
+ (varname (intern (concat "proof-mode-for-" suffixnm)))
+ ;; FIXME: declare these variables in proof-config:
+ ;; proof-script-font-lock-keywords, etc.
+ ;; proof-script-syntax-table-entries, etc.
+ ;; FIXME: in future versions, use these settings in *-config-done
+ ;; to simplify elisp code elsewhere.
+ (fntlcks (intern (concat "proof-" suffixnm "-font-lock-keywords")))
+ (modsyn (intern (concat "proof-" suffixnm "-syntax-table-entries")))
+ (fullbody (append
+ (if (boundp fntlcks)
+ (list `(setq font-lock-keywords ,fntlcks)))
+ (if (boundp modsyn)
+ (list `(let ((syn ,modsyn))
+ (while syn
+ (modify-syntax-entry
+ (car syn) (cadr syn))
+ (setq syn (cddr syn))))))
+ body)))
(eval
- `(define-derived-mode ,mode ,parent ,modename nil ,@body))
+ `(define-derived-mode ,mode ,parent ,modename nil ,@fullbody))
;; Set proof-mode-for-script and friends
;; NB: top-level, so we don't need proof-pre-shell-start-hook.
(set varname mode))))