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

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

[elpa] externals/phps-mode d18fddc 175/405: Fixed bug with indentation f


From: Stefan Monnier
Subject: [elpa] externals/phps-mode d18fddc 175/405: Fixed bug with indentation for indented doc-comments
Date: Sat, 13 Jul 2019 10:00:07 -0400 (EDT)

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

    Fixed bug with indentation for indented doc-comments
---
 phps-mode-functions.el | 44 ++++++++++++++++++++++++++++++++------------
 1 file changed, 32 insertions(+), 12 deletions(-)

diff --git a/phps-mode-functions.el b/phps-mode-functions.el
index 72e268c..f475749 100644
--- a/phps-mode-functions.el
+++ b/phps-mode-functions.el
@@ -79,7 +79,9 @@
               (in-assignment-level 0)
               (in-assignment-started-this-line nil)
               (in-class-declaration nil)
-              (in-class-declaration-level 0))
+              (in-class-declaration-level 0)
+              (last-token-start-line-number 0)
+              (last-token-end-line-number 0))
 
           ;; Iterate through all buffer tokens from beginning to end
           (dolist (item phps-mode-lexer-tokens)
@@ -131,14 +133,16 @@
                     (when (> last-line-number 0)
                       (puthash last-line-number `(,column-level ,tuning-level) 
line-indents))
 
-                    (when (> token-end-line-number token-start-line-number)
-                      ;; (message "Token %s starts at %s and ends at %s" token 
token-start-line-number token-end-line-number)
-                      (when (equal token 'T_DOC_COMMENT)
+                    ;; Does last token span several lines?
+                    (when (> last-token-end-line-number 
last-token-start-line-number)
+                      ;; (message "Token %s starts at %s and ends at %s indent 
%s %s" last-token last-token-start-line-number last-token-end-line-number 
column-level tuning-level)
+                      (when (equal last-token 'T_DOC_COMMENT)
                         (setq tuning-level 1))
 
-                      (let ((token-line-number-diff (1- (- 
token-end-line-number token-start-line-number))))
+                      (let ((token-line-number-diff (1- (- 
last-token-end-line-number last-token-start-line-number))))
                         (while (>= token-line-number-diff 0)
-                          (puthash (- token-end-line-number 
token-line-number-diff) `(,column-level ,tuning-level) line-indents)
+                          (puthash (- last-token-end-line-number 
token-line-number-diff) `(,column-level ,tuning-level) line-indents)
+                          ;; (message "Saved line %s indent %s %s" (- 
last-token-end-line-number token-line-number-diff) column-level tuning-level)
                           (setq token-line-number-diff (1- 
token-line-number-diff))))
                       (setq tuning-level 0))
 
@@ -171,14 +175,14 @@
                       (setq in-class-declaration-level 0)
                       (setq in-assignment-started-this-line nil)))
                 (setq first-token-on-line nil)
-                (when (> token-end-line-number token-start-line-number)
+                (when (> last-token-end-line-number 
last-token-start-line-number)
                   ;; (message "Token not first on line %s starts at %s and 
ends at %s" token token-start-line-number token-end-line-number)
-                  (when (equal token 'T_DOC_COMMENT)
+                  (when (equal last-token 'T_DOC_COMMENT)
                     (setq tuning-level 1))
 
-                  (let ((token-line-number-diff (1- (- token-end-line-number 
token-start-line-number))))
+                  (let ((token-line-number-diff (1- (- 
last-token-end-line-number last-token-start-line-number))))
                     (while (>= token-line-number-diff 0)
-                      (puthash (- token-end-line-number 
token-line-number-diff) `(,column-level ,tuning-level) line-indents)
+                      (puthash (- last-token-end-line-number 
token-line-number-diff) `(,column-level ,tuning-level) line-indents)
                       (setq token-line-number-diff (1- 
token-line-number-diff))))
                   (setq tuning-level 0)))
 
@@ -371,7 +375,9 @@
                 (setq last-line-number token-start-line-number))
 
               (setq token-number (1+ token-number))
-              (setq last-token token)))
+              (setq last-token token)
+              (setq last-token-start-line-number token-start-line-number)
+              (setq last-token-end-line-number token-end-line-number)))
 
           ;; Process line if last token was first on new line
           (when last-token-was-first-on-new-line
@@ -401,7 +407,21 @@
             ;; (message "last token at %s %s.%s (%s - %s) = %s %s %s %s %s [%s 
%s] %s %s" last-token column-level tuning-level nesting-start nesting-end 
round-bracket-level square-bracket-level curly-bracket-level 
alternative-control-structure-level inline-control-structure-level 
first-token-is-nesting-decrease first-token-is-nesting-increase 
in-assignment-level in-class-declaration-level)
 
             ;; Put indent-level to hash-table
-            (puthash last-line-number `(,column-level ,tuning-level) 
line-indents))
+            (puthash last-line-number `(,column-level ,tuning-level) 
line-indents)
+
+            ;; Does last token span several lines?
+            (when (> last-token-end-line-number last-token-start-line-number)
+              ;; (message "Token %s starts at %s and ends at %s indent %s %s" 
last-token last-token-start-line-number last-token-end-line-number column-level 
tuning-level)
+              (when (equal last-token 'T_DOC_COMMENT)
+                (setq tuning-level 1))
+
+              (let ((token-line-number-diff (1- (- last-token-end-line-number 
last-token-start-line-number))))
+                (while (>= token-line-number-diff 0)
+                  (puthash (- last-token-end-line-number 
token-line-number-diff) `(,column-level ,tuning-level) line-indents)
+                  ;; (message "Saved line %s indent %s %s" (- 
last-token-end-line-number token-line-number-diff) column-level tuning-level)
+                  (setq token-line-number-diff (1- token-line-number-diff))))
+              (setq tuning-level 0))
+            )
 
           line-indents))
     nil))



reply via email to

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