branch: externals/phps-mode
commit cb882aa5812bc03c5dbff3eeaf4e9e5f814db8df
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Improved maintainability of syntax-coloring rules
---
phps-mode-syntax-color.el | 172 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 169 insertions(+), 3 deletions(-)
diff --git a/phps-mode-syntax-color.el b/phps-mode-syntax-color.el
index 8e194d7164..88658b6284 100644
--- a/phps-mode-syntax-color.el
+++ b/phps-mode-syntax-color.el
@@ -11,14 +11,180 @@
(defvar
phps-mode-syntax-color--token-font-face
- #s(hash-table size 151 test equal rehash-size 1.5 rehash-threshold 0.8125
data (T_ERROR font-lock-warning-face T_OPEN_TAG font-lock-constant-face
T_OPEN_TAG_WITH_ECHO font-lock-constant-face T_CLOSE_TAG
font-lock-constant-face T_START_HEREDOC font-lock-constant-face T_END_HEREDOC
font-lock-constant-face T_ELLIPSIS font-lock-constant-face T_COALESCE
font-lock-constant-face T_DOUBLE_ARROW font-lock-constant-face T_INC
font-lock-constant-face T_DEC font-lock-constant-face T_IS_IDENTICAL f [...]
- "Syntax color table for tokens")
+ nil
+ "Syntax color table for tokens.")
(defvar
phps-mode-syntax-color--token-for-bookkeeping-p
- #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125
data (T_VARIABLE t T_STRING t))
+ nil
"Flags whether token is used for bookkeeping or not.")
+(eval-when-compile
+ (setq
+ phps-mode-syntax-color--token-font-face
+ (make-hash-table :test 'equal))
+ (defun phps-mode-syntax-color--add-token-color (token font-lock)
+ (puthash token font-lock phps-mode-syntax-color--token-font-face))
+
+ (phps-mode-syntax-color--add-token-color 'END 'font-lock-doc-face)
+ (phps-mode-syntax-color--add-token-color 'T_ABSTRACT 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color
'T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color
'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_AND_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_ARRAY 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ARRAY_CAST
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_AS 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ATTRIBUTE 'font-lock-doc-face)
+ (phps-mode-syntax-color--add-token-color 'T_BOOLEAN_AND
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_BOOLEAN_OR
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_BOOLEAN_XOR
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_BOOL_CAST
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_BREAK 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CALLABLE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CASE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CATCH 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CLASS 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CLASS_C 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_CLONE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CLOSE_TAG
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_COALESCE
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_COALESCE_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_COMMENT 'font-lock-doc-face)
+ (phps-mode-syntax-color--add-token-color 'T_CONCAT_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_CONST 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CONSTANT_ENCAPSED_STRING
'font-lock-string-face)
+ (phps-mode-syntax-color--add-token-color 'T_CONTINUE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_CURLY_OPEN
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_DEC 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_DECLARE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_DEFAULT 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_DIR 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_DIV_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_DNUMBER 'font-lock-string-face)
+ (phps-mode-syntax-color--add-token-color 'T_DO 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_DOC_COMMENT 'font-lock-doc-face)
+ (phps-mode-syntax-color--add-token-color 'T_DOLLAR_OPEN_CURLY_BRACES
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_DOUBLE_ARROW
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_DOUBLE_CAST
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_ECHO 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ELLIPSIS
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_ELSE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ELSEIF 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_EMPTY 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENCAPSED_AND_WHITESPACE
'font-lock-string-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENDDECLARE
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENDFOR 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENDFOREACH
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENDIF 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENDSWITCH
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENDWHILE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_END_HEREDOC
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_ENUM 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_ERROR 'font-lock-warning-face)
+ (phps-mode-syntax-color--add-token-color 'T_EVAL 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_EXIT 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_EXTENDS 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_FILE 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_FINAL 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_FINALLY 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_FN 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_FOR 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_FOREACH 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_FUNCTION 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_FUNC_C 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_GLOBAL 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_GOTO 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_HALT_COMPILER
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_IF 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_IMPLEMENTS
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_INC 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_INCLUDE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_INCLUDE_ONCE
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_INLINE_HTML
'font-lock-preprocessor-face)
+ (phps-mode-syntax-color--add-token-color 'T_INSTANCEOF
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_INSTEADOF
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_INTERFACE
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_INT_CAST
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_ISSET 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_IS_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_IS_GREATER_OR_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_IS_IDENTICAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_IS_NOT_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_IS_NOT_IDENTICAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_IS_SMALLER_OR_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_LINE 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_LIST 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_LNUMBER 'font-lock-string-face)
+ (phps-mode-syntax-color--add-token-color 'T_LOGICAL_AND
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_LOGICAL_OR
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_LOGICAL_XOR
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_MATCH 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_METHOD_C
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_MINUS_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_MOD_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_MUL_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_NAMESPACE
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_NAME_FULLY_QUALIFIED
'font-lock-variable-name-face)
+ (phps-mode-syntax-color--add-token-color 'T_NAME_QUALIFIED
'font-lock-variable-name-face)
+ (phps-mode-syntax-color--add-token-color 'T_NAME_RELATIVE
'font-lock-variable-name-face)
+ (phps-mode-syntax-color--add-token-color 'T_NEW 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_NS_C 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_NS_SEPARATOR
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_NULLSAFE_OBJECT_OPERATOR
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_NUM_STRING
'font-lock-string-face)
+ (phps-mode-syntax-color--add-token-color 'T_OBJECT_CAST
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_OBJECT_OPERATOR
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_OPEN_TAG
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_OPEN_TAG_WITH_ECHO
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_OR_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_PAAMAYIM_NEKUDOTAYIM
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_PLUS_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_POW 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_POW_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_PRINT 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_PRIVATE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_PROTECTED
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_PUBLIC 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_READONLY 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_REQUIRE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_REQUIRE_ONCE
'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_RETURN 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_SL 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_SL_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_SPACESHIP
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_SR 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_SR_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_START_HEREDOC
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_STATIC 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_STRING 'font-lock-string-face)
+ (phps-mode-syntax-color--add-token-color 'T_STRING_CAST
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_STRING_VARNAME
'font-lock-variable-name-face)
+ (phps-mode-syntax-color--add-token-color 'T_SWITCH 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_THROW 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_TRAIT 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_TRAIT_C 'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_TRY 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_UNSET 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_UNSET_CAST
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_USE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_VAR 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_VARIABLE
'font-lock-variable-name-face)
+ (phps-mode-syntax-color--add-token-color 'T_WHILE 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_XOR_EQUAL
'font-lock-constant-face)
+ (phps-mode-syntax-color--add-token-color 'T_YIELD 'font-lock-keyword-face)
+ (phps-mode-syntax-color--add-token-color 'T_YIELD_FROM
'font-lock-keyword-face)
+
+ (setq
+ phps-mode-syntax-color--token-for-bookkeeping-p
+ (make-hash-table :test 'equal))
+ (defun phps-mode-syntax-color--add-token-for-bookkeeping (token)
+ (puthash token t phps-mode-syntax-color--token-for-bookkeeping-p))
+
+ (phps-mode-syntax-color--add-token-for-bookkeeping 'T_STRING)
+ (phps-mode-syntax-color--add-token-for-bookkeeping 'T_VARIABLE)
+
+ )
+
(provide 'phps-mode-syntax-color)
;;; phps-mode-syntax-color.el ends here