branch: externals/phps-mode
commit cb882aa5812bc03c5dbff3eeaf4e9e5f814db8df
Author: Christian Johansson <christ...@cvj.se>
Commit: Christian Johansson <christ...@cvj.se>

    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

Reply via email to