branch: externals/phps-mode
commit 46a82560bd5645599bc5b1d3fc2b5f22054c95f6
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Starting implementation of tracking alternative control structure level
---
phps-mode-functions.el | 36 ++++++++++++++++++++++++++++++++----
1 file changed, 32 insertions(+), 4 deletions(-)
diff --git a/phps-mode-functions.el b/phps-mode-functions.el
index 2a450dd..8999b45 100644
--- a/phps-mode-functions.el
+++ b/phps-mode-functions.el
@@ -223,7 +223,7 @@
(end-token-number nil)
(line-in-doc-comment nil)
(found-line-tokens nil)
- (_after-special-control-structure nil))
+ (after-special-control-structure nil))
(catch 'stop-iteration
(dolist (item phps-mode-lexer-tokens)
(let ((token (car item))
@@ -236,6 +236,17 @@
;; (message "Stopping iteration at: %s %s" start position)
(throw 'stop-iteration nil))
+ ;; Does the token support inline and alternative syntax?
+ (when (or
+ (equal token 'T_IF)
+ (equal token 'T_WHILE)
+ (equal token 'T_FOR)
+ (equal token 'T_FOREACH)
+ (equal token 'T_SWITCH)
+ (equal token 'T_ELSE)
+ (equal token 'T_ELSEIF))
+ (setq after-special-control-structure
start-round-bracket-level))
+
;; Did we find any token on this line?
(when (and (not found-line-tokens)
(>= token-start line-beginning)
@@ -247,6 +258,7 @@
(when (null start-token-number)
(setq start-token-number -1))
(setq start-token-number (+ start-token-number 1))
+
(pcase token
('T_OPEN_TAG (setq start-in-scripting t))
('T_OPEN_TAG_WITH_ECHO (setq start-in-scripting t))
@@ -259,7 +271,15 @@
("]" (setq start-square-bracket-level (-
start-square-bracket-level 1)))
("(" (setq start-round-bracket-level (+
start-round-bracket-level 1)))
(")" (setq start-round-bracket-level (-
start-round-bracket-level 1)))
- (_)))
+ (_))
+
+ ;; Did we encounter end of alternative control structure?
+ (when (or (equal token 'T_ENDIF)
+ (equal token 'T_ENDWHILE)
+ (equal token 'T_ENDFOR)
+ (equal token 'T_ENDFOREACH)
+ (equal token 'T_ENDSWITCH))
+ (setq start-alternative-control-structure-level (-
start-alternative-control-structure-level 1))))
;; Are we at the final line and inside a doc-comment that ends
after it?
(when (and (< token-start line-beginning)
@@ -284,8 +304,16 @@
("]" (setq end-square-bracket-level (-
end-square-bracket-level 1)))
("(" (setq end-round-bracket-level (+
end-round-bracket-level 1)))
(")" (setq end-round-bracket-level (-
end-round-bracket-level 1)))
- (_)))
-
+ (_))
+
+ ;; Did we encounter end of alternative control structure?
+ (when (or (equal token 'T_ENDIF)
+ (equal token 'T_ENDWHILE)
+ (equal token 'T_ENDFOR)
+ (equal token 'T_ENDFOREACH)
+ (equal token 'T_ENDSWITCH))
+ (setq end-alternative-control-structure-level (-
end-alternative-control-structure-level 1))))
+
)))
(when (not found-line-tokens)
(setq start-token-number nil)