emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/phps-mode c6aa633 118/405: More work on keeping track o


From: Stefan Monnier
Subject: [elpa] externals/phps-mode c6aa633 118/405: More work on keeping track of alternative control structures
Date: Sat, 13 Jul 2019 09:59:56 -0400 (EDT)

branch: externals/phps-mode
commit c6aa633d70a7b8f766907737364257fea933f65a
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>

    More work on keeping track of alternative control structures
---
 phps-mode-functions.el | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/phps-mode-functions.el b/phps-mode-functions.el
index 930f7cb..c58cd6a 100644
--- a/phps-mode-functions.el
+++ b/phps-mode-functions.el
@@ -224,7 +224,8 @@
             (end-token-number nil)
             (line-in-doc-comment nil)
             (found-line-tokens nil)
-            (after-special-control-structure nil))
+            (after-special-control-structure nil)
+            (round-brace-level 0))
         (catch 'stop-iteration
           (dolist (item phps-mode-lexer-tokens)
             (let ((token (car item))
@@ -306,19 +307,25 @@
                           (equal token 'T_ENDSWITCH))
                   (setq end-alternative-control-structure-level (- 
end-alternative-control-structure-level 1))))
 
+              ;; Keep track of general round brace level
+              (when (string= token "(")
+                (setq round-brace-level (+ round-brace-level 1)))
+              (when (string= token ")")
+                (setq round-brace-level (- round-brace-level 1)))
+
                 ;; Are we after a special control structure
                 ;; and does round bracket level match initial round bracket 
level
                 ;; and is token not a round bracket
-                (when (and after-special-control-structure
-                           (= after-special-control-structure 
start-round-bracket-level)
-                           (not (string= token ")"))
-                           (not (string= token "(")))
-                  (if (not (string= token "{"))
-                      (progn
-                        (message "After special control structure %s in buffer 
%s" token (buffer-substring-no-properties (point-min) (point-max))))
-                    ;; (message "Not after special control structure %s in 
buffer %s" token (buffer-substring-no-properties (point-min) (point-max)))
-                    )
-                  (setq after-special-control-structure nil))
+              (when (and after-special-control-structure
+                         (= after-special-control-structure round-brace-level)
+                         (not (string= token ")"))
+                         (not (string= token "(")))
+                (if (not (string= token "{"))
+                    (progn
+                      (message "After special control structure %s in buffer: 
%s tokens: %s token-start: %s" token (buffer-substring-no-properties 
(point-min) (point-max)) phps-mode-lexer-tokens token-start))
+                  ;; (message "Not after special control structure %s in 
buffer %s" token (buffer-substring-no-properties (point-min) (point-max)))
+                  )
+                (setq after-special-control-structure nil))
 
               ;; Does the token support inline and alternative syntax?
               (when (or
@@ -330,7 +337,7 @@
                      (equal token 'T_ELSE)
                      (equal token 'T_ELSEIF))
                 ;; (message "Found special control structure %s %s" token 
start-round-bracket-level)
-                (setq after-special-control-structure 
start-round-bracket-level))
+                (setq after-special-control-structure round-brace-level))
 
 
               )))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]