|
@@ -28,7 +28,7 @@
|
|
"Face used for displaying SysRPL names."
|
|
"Face used for displaying SysRPL names."
|
|
:group 'rpl)
|
|
:group 'rpl)
|
|
|
|
|
|
-(defvar sysrpl-syntax-table
|
|
|
|
|
|
+(defvar sysrpl-mode-syntax-table
|
|
(let ((table (make-syntax-table prog-mode-syntax-table)))
|
|
(let ((table (make-syntax-table prog-mode-syntax-table)))
|
|
(modify-syntax-entry ?: "w" table)
|
|
(modify-syntax-entry ?: "w" table)
|
|
(modify-syntax-entry ?! "w" table)
|
|
(modify-syntax-entry ?! "w" table)
|
|
@@ -43,6 +43,7 @@
|
|
(modify-syntax-entry ?_ "w" table)
|
|
(modify-syntax-entry ?_ "w" table)
|
|
(modify-syntax-entry ?= "w" table)
|
|
(modify-syntax-entry ?= "w" table)
|
|
(modify-syntax-entry ?+ "w" table)
|
|
(modify-syntax-entry ?+ "w" table)
|
|
|
|
+ (modify-syntax-entry ?* "w" table)
|
|
(modify-syntax-entry ?/ "w" table)
|
|
(modify-syntax-entry ?/ "w" table)
|
|
(modify-syntax-entry ?< "w" table)
|
|
(modify-syntax-entry ?< "w" table)
|
|
(modify-syntax-entry ?> "w" table)
|
|
(modify-syntax-entry ?> "w" table)
|
|
@@ -50,20 +51,16 @@
|
|
table)
|
|
table)
|
|
"The SysRPL syntax table.")
|
|
"The SysRPL syntax table.")
|
|
|
|
|
|
-(defun sysrpl-make-keywords-regexp (calculator)
|
|
|
|
- (cl-assert (keywordp calculator))
|
|
|
|
- (concat "\\<" (regexp-opt (rpl-sysrpl-names calculator)) "\\>"))
|
|
|
|
-
|
|
|
|
-(defvar sysrpl-keywords-regexp
|
|
|
|
- ;; !!! TODO Unfortunately does not work because Emacs complains that
|
|
|
|
- ;; !!! the regular expression is too large (?!?)
|
|
|
|
- (sysrpl-make-keywords-regexp rpl-sysrpl-default-calculator)
|
|
|
|
- "Regular expression for SysRPL keywords.")
|
|
|
|
-
|
|
|
|
(defvar sysrpl-keyword-face 'sysrpl-name)
|
|
(defvar sysrpl-keyword-face 'sysrpl-name)
|
|
|
|
|
|
|
|
+(defun sysrpl-font-lock-compile-keywords (names)
|
|
|
|
+ "Construct a list of keyword matcher clauses suitable for ``font-lock-keywords''."
|
|
|
|
+ (mapcar (lambda (str) (list (concat "\\<" (regexp-quote str) "\\>")
|
|
|
|
+ (list 0 'sysrpl-keyword-face)))
|
|
|
|
+ names))
|
|
|
|
+
|
|
(defvar sysrpl-font-lock-keywords
|
|
(defvar sysrpl-font-lock-keywords
|
|
- (list (cons sysrpl-keywords-regexp 'sysrpl-keyword-face)))
|
|
|
|
|
|
+ (sysrpl-font-lock-compile-keywords (rpl-sysrpl-names rpl-sysrpl-default-calculator)))
|
|
|
|
|
|
(defvar sysrpl-selected-calculator rpl-sysrpl-default-calculator
|
|
(defvar sysrpl-selected-calculator rpl-sysrpl-default-calculator
|
|
"Currently selected calculator model.")
|
|
"Currently selected calculator model.")
|
|
@@ -72,25 +69,29 @@
|
|
"Set the currently selected calculator model to be the 38G."
|
|
"Set the currently selected calculator model to be the 38G."
|
|
(interactive)
|
|
(interactive)
|
|
(setq sysrpl-selected-calculator :38G)
|
|
(setq sysrpl-selected-calculator :38G)
|
|
- (setq sysrpl-keywords-regexp (sysrpl-make-keywords-regexp :38G)))
|
|
|
|
|
|
+ (setq sysrpl-font-lock-keywords (sysrpl-font-lock-compile-keywords (rpl-sysrpl-names :38G)))
|
|
|
|
+ (sysrpl-mode))
|
|
|
|
|
|
(defun sysrpl-select-39g ()
|
|
(defun sysrpl-select-39g ()
|
|
"Set the currently selected calculator model to be the 39G."
|
|
"Set the currently selected calculator model to be the 39G."
|
|
(interactive)
|
|
(interactive)
|
|
(setq sysrpl-selected-calculator :39G)
|
|
(setq sysrpl-selected-calculator :39G)
|
|
- (setq sysrpl-keywords-regexp (sysrpl-make-keywords-regexp :39G)))
|
|
|
|
|
|
+ (setq sysrpl-font-lock-keywords (sysrpl-font-lock-compile-keywords (rpl-sysrpl-names :39G)))
|
|
|
|
+ (sysrpl-mode))
|
|
|
|
|
|
(defun sysrpl-select-48g ()
|
|
(defun sysrpl-select-48g ()
|
|
"Set the currently selected calculator model to be the 48G."
|
|
"Set the currently selected calculator model to be the 48G."
|
|
(interactive)
|
|
(interactive)
|
|
(setq sysrpl-selected-calculator :48G)
|
|
(setq sysrpl-selected-calculator :48G)
|
|
- (setq sysrpl-keywords-regexp (sysrpl-make-keywords-regexp :48G)))
|
|
|
|
|
|
+ (setq sysrpl-font-lock-keywords (sysrpl-font-lock-compile-keywords (rpl-sysrpl-names :48G)))
|
|
|
|
+ (sysrpl-mode))
|
|
|
|
|
|
(defun sysrpl-select-49g ()
|
|
(defun sysrpl-select-49g ()
|
|
"Set the currently selected calculator model to be the 49G."
|
|
"Set the currently selected calculator model to be the 49G."
|
|
(interactive)
|
|
(interactive)
|
|
(setq sysrpl-selected-calculator :49G)
|
|
(setq sysrpl-selected-calculator :49G)
|
|
- (setq sysrpl-keywords-regexp (sysrpl-make-keywords-regexp :49G)))
|
|
|
|
|
|
+ (setq sysrpl-font-lock-keywords (sysrpl-font-lock-compile-keywords (rpl-sysrpl-names :49G)))
|
|
|
|
+ (sysrpl-mode))
|
|
|
|
|
|
(defvar sysrpl-mode-map
|
|
(defvar sysrpl-mode-map
|
|
(let ((map (make-sparse-keymap))
|
|
(let ((map (make-sparse-keymap))
|