diff options
author | Pierre Courtieu <Pierre.Courtieu@cnam.fr> | 2016-07-22 18:34:09 +0200 |
---|---|---|
committer | Pierre Courtieu <Pierre.Courtieu@cnam.fr> | 2016-07-22 18:34:09 +0200 |
commit | 68b82cd171404f0b5ecd5fc699d0931d5a03345c (patch) | |
tree | 3ed9b37a9a367edfc962f0b84aaa3c7ec6b96095 /coq/coq-syntax.el | |
parent | c302c243bbb31c22c239ebc6574db61b5b16145a (diff) |
Adding the option to highlight susual symbols.
This may look ugly to the majority, so I let it off by default.
I find it helpfull to have structuring symbols bold.
Diffstat (limited to 'coq/coq-syntax.el')
-rw-r--r-- | coq/coq-syntax.el | 53 |
1 files changed, 35 insertions, 18 deletions
diff --git a/coq/coq-syntax.el b/coq/coq-syntax.el index 920fb439..8b09818b 100644 --- a/coq/coq-syntax.el +++ b/coq/coq-syntax.el @@ -1115,6 +1115,7 @@ It is used: (defvar coq-symbol-binders "∀\\|∃\\|λ") + ;; From JF Monin: (defvar coq-reserved (append @@ -1186,9 +1187,17 @@ It is used: "++>" "@" "->" - ".") + "." + "∧" + "∨" + "→" + "\\/" + "/\\" + "->") "Punctuation Symbols used by Coq.") +(defvar coq-symbols-regexp (regexp-opt coq-symbols)) + ;; ----- regular expressions (defvar coq-error-regexp "^\\(Error:\\|Discarding pattern\\|Syntax error:\\|System Error:\\|User Error:\\|User error:\\|Anomaly[:.]\\|Toplevel input[,]\\)" "A regexp indicating that the Coq process has identified an error.") @@ -1210,29 +1219,37 @@ It is used: :type 'boolean :group 'coq) +(defcustom coq-symbol-highlight-enable nil + "Activates partial bound variable highlighting" + :type 'boolean + :group 'coq) + (defconst coq-lambda-regexp "\\(?:\\_<fun\\_>\\|λ\\)") (defconst coq-forall-regexp "\\(?:\\_<forall\\_>\\|∀\\)") (defconst coq-exists-regexp "\\(?:\\_<exists\\_>\\|∃\\)") (defvar coq-font-lock-terms - (cons - (cons coq-symbol-binders 'coq-symbol-binder-face) - (if coq-variable-highlight-enable - (list - ;; lambda binders - (list (coq-first-abstr-regexp coq-lambda-regexp "\\(?:=>\\|:\\|,\\)") 1 'font-lock-variable-name-face) - ;; forall binder - (list (coq-first-abstr-regexp coq-forall-regexp "\\(?:,\\|:\\)") 1 'font-lock-variable-name-face) - (list (coq-first-abstr-regexp coq-exists-regexp "\\(?:,\\|:\\)") 1 'font-lock-variable-name-face) - ;; (list "\\<forall\\>" - ;; (list 0 font-lock-type-face) - ;; (list (concat "[^ :]\\s-*\\(" coq-ids "\\)\\s-*") nil nil - ;; (list 0 font-lock-variable-name-face))) - ;; parenthesized binders - (list (coq-first-abstr-regexp "(" ":[ a-zA-Z]") 1 'font-lock-variable-name-face) - (list (coq-first-abstr-regexp "{" ":[ a-zA-Z]") 1 'font-lock-variable-name-face) - ))) + (append + (list ;; flattened by append above + (cons coq-symbol-binders 'coq-symbol-binder-face)) + (when coq-symbol-highlight-enable + (list (cons coq-symbols-regexp 'coq-symbol-face))) + (when coq-variable-highlight-enable + (list + ;; lambda binders + (list (coq-first-abstr-regexp coq-lambda-regexp "\\(?:=>\\|:\\|,\\)") 1 'font-lock-variable-name-face) + ;; forall binder + (list (coq-first-abstr-regexp coq-forall-regexp "\\(?:,\\|:\\)") 1 'font-lock-variable-name-face) + (list (coq-first-abstr-regexp coq-exists-regexp "\\(?:,\\|:\\)") 1 'font-lock-variable-name-face) + ;; (list "\\<forall\\>" + ;; (list 0 font-lock-type-face) + ;; (list (concat "[^ :]\\s-*\\(" coq-ids "\\)\\s-*") nil nil + ;; (list 0 font-lock-variable-name-face))) + ;; parenthesized binders + (list (coq-first-abstr-regexp "(" ":[ a-zA-Z]") 1 'font-lock-variable-name-face) + (list (coq-first-abstr-regexp "{" ":[ a-zA-Z]") 1 'font-lock-variable-name-face) + ))) "*Font-lock table for Coq terms.") |