branch: externals/phps-mode commit ced201df9844b22c358ca77d1c60131d57998038 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Updated syntax colouring for namespace, class, function and constant names --- phps-mode-functions.el | 8 ++++---- phps-mode-lexer.el | 38 +++++++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/phps-mode-functions.el b/phps-mode-functions.el index b3ae09b..d902626 100644 --- a/phps-mode-functions.el +++ b/phps-mode-functions.el @@ -755,7 +755,7 @@ ))))))) -(defun phps-mode-functions-after-change (start stop _length) +(defun phps-mode-functions-after-change (start _stop _length) "Track buffer change from START to STOP with length LENGTH." (when (string= major-mode "phps-mode") @@ -763,17 +763,17 @@ (when (and (not phps-mode-functions-buffer-changes-start) (boundp 'phps-mode-idle-interval) phps-mode-idle-interval) - (message "Enqueued incremental lexer") + ;; (message "Enqueued incremental lexer") (run-with-idle-timer phps-mode-idle-interval nil #'phps-mode-lexer-run-incremental)) ;; When point of change is not set or when start of new changes precedes old change - update the point (when (or (not phps-mode-functions-buffer-changes-start) (< start phps-mode-functions-buffer-changes-start)) (setq phps-mode-functions-buffer-changes-start start) - (message "Setting start of changes to: %s-%s" phps-mode-functions-buffer-changes-start stop)) + ;; (message "Setting start of changes to: %s-%s" phps-mode-functions-buffer-changes-start stop)) ;; (message "phps-mode-functions-after-change %s %s %s" start stop length) - )) + ))) (defun phps-mode-functions-imenu-create-index () "Get Imenu for current buffer." diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el index 1a52fae..ab461da 100644 --- a/phps-mode-lexer.el +++ b/phps-mode-lexer.el @@ -131,6 +131,9 @@ (defconst phps-mode-lexer-ST_VAR_OFFSET 9 "Flag whether we are looking for variable offset or not.") +(defvar phps-mode-lexer-COLOR_SYNTAX-previous-token nil + "Store previous token for color-syntax.") + ;; REGULAR EXPRESSIONS @@ -208,17 +211,29 @@ "Syntax coloring for TOKEN from START to END." ;; Syntax coloring ;; see https://www.gnu.org/software/emacs/manual/html_node/elisp/Faces-for-Font-Lock.html#Faces-for-Font-Lock + ;; (message "Color token %s %s %s" token start end) (cond + ((and + phps-mode-lexer-COLOR_SYNTAX-previous-token + (string= phps-mode-lexer-COLOR_SYNTAX-previous-token 'T_CONST) + (string= token 'T_STRING)) + (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-constant-face)) + + ((and + phps-mode-lexer-COLOR_SYNTAX-previous-token + (or (string= phps-mode-lexer-COLOR_SYNTAX-previous-token 'T_NAMESPACE) + (string= phps-mode-lexer-COLOR_SYNTAX-previous-token 'T_CLASS) + (string= phps-mode-lexer-COLOR_SYNTAX-previous-token 'T_FUNCTION)) + (string= token 'T_STRING)) + (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-function-name-face)) + ((or (string= token 'T_STRING) (string= token 'T_VARIABLE) (string= token 'T_STRING_VARNAME)) (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-variable-name-face)) - ((or (string= token 'T_FUNCTION)) - (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-function-name-face)) - ((string= token 'T_INLINE_HTML) (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-comment-delimiter-face)) @@ -238,10 +253,6 @@ (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-string-face)) ((or - (string= token 'T_CONST)) - (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-constant-face)) - - ((or (string= token "?") (string= token "!") (string= token "<") @@ -276,6 +287,8 @@ (string= token 'T_WHILE) (string= token 'T_ENDWHILE) (string= token 'T_DO) + (string= token 'T_FUNCTION) + (string= token 'T_CONST) (string= token 'T_FOREACH) (string= token 'T_ENDFOREACH) (string= token 'T_FOR) @@ -391,7 +404,9 @@ ((string= token 'T_ERROR) (overlay-put (make-overlay start end) 'font-lock-face 'font-lock-warning-face)) - )) + ) + + (setq phps-mode-lexer-COLOR_SYNTAX-previous-token token)) (defun phps-mode-lexer-RETURN_TOKEN (token start end) "Push TOKEN to list with START and END." @@ -1597,7 +1612,8 @@ (defun phps-mode-lexer-setup (start end) "Just prepare other lexers for lexing region START to END." - (message "phps-mode-lexer-setup %s %s" start end) + ;; (message "phps-mode-lexer-setup %s %s" start end) + (setq phps-mode-lexer-COLOR_SYNTAX-previous-token nil) ;; Flag that buffer has not been processed (when (and (boundp 'phps-mode-functions-processed-buffer) @@ -1615,7 +1631,7 @@ (defun phps-mode-lexer-run () "Run lexer." (interactive) - (message "Running lexer") + ;; (message "Running lexer") (setq phps-mode-lexer-tokens (semantic-lex-buffer))) (defun phps-mode-lexer-move-states (start diff) @@ -1666,7 +1682,7 @@ (defun phps-mode-lexer-run-incremental () "Run incremental lexer based on `(phps-mode-functions-get-buffer-changes-start)'." - (message "Running incremental lexer") + ;; (message "Running incremental lexer") (when (and (phps-mode-functions-get-buffer-changes-start) phps-mode-lexer-states) (let ((state nil)