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