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

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

[elpa] externals/phps-mode e30ac0c 083/405: Started implementation of mo


From: Stefan Monnier
Subject: [elpa] externals/phps-mode e30ac0c 083/405: Started implementation of moving lexer and state position when
Date: Sat, 13 Jul 2019 09:59:48 -0400 (EDT)

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

    Started implementation of moving lexer and state position when
    indenting to save time
---
 phps-functions.el | 27 +++++++++++++++++----------
 phps-lexer.el     |  2 +-
 2 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/phps-functions.el b/phps-functions.el
index 9e5c2d5..3312a9b 100644
--- a/phps-functions.el
+++ b/phps-functions.el
@@ -40,7 +40,7 @@
   "Start of buffer changes, nil if none.")
 
 ;; TODO Also format white-space inside the line, i.e. after function 
declarations?
-;; TODO Support inline function indentation
+;; TODO Support inline function indentations
 (defun phps-mode/indent-line ()
   "Indent line."
   (let ((data (phps-mode/get-point-data)))
@@ -121,9 +121,12 @@
             (let ((indent-sum (+ (* indent-level tab-width) indent-adjust))
                   current-indentation (current-indentation))
 
+              (when (null current-indentation)
+                (setq current-indentation 0))
+
               ;; Only continue if current indentation is wrong
               (when (not (equal indent-sum current-indentation))
-                (let ((indent-diff (- current-indentation indent-sum)))
+                (let ((indent-diff (- indent-sum current-indentation)))
                   ;; (message "Indenting to %s current column %s" indent-sum 
(current-indentation))
                   ;; (message "inside scripting, start: %s, end: %s, indenting 
to column %s " start end indent-level)
 
@@ -131,16 +134,20 @@
 
                   ;; TODO When indent is changed the trailing tokens just need 
to adjust their token positions, this will improve speed of indent-region a lot
                   ;; TODO Lexer states need to be moved as well
-
                   (let ((line-start (line-beginning-position)))
-
-                    ;; Set point of change if it's not set or if it's larger 
than current point
-                    (when (or (not phps-mode/buffer-changes--start)
-                              (< line-start phps-mode/buffer-changes--start))
-                      ;; (message "Setting changes start from %s to %s" 
phps-mode/buffer-changes--start start)
-                      (setq phps-mode/buffer-changes--start line-start))
+                    (phps-mode/move-lexer-tokens line-start indent-diff)
+                    (phps-mode/move-lexer-states line-start indent-diff)
+                    (message "Moving tokens and states %s, %s to %s" 
indent-diff current-indentation indent-sum)
                     
-                    (phps-mode/run-incremental-lex)))))))))))
+                    ;; ;; Set point of change if it's not set or if it's 
larger than current point
+                    ;; (when (or (not phps-mode/buffer-changes--start)
+                    ;;           (< line-start 
phps-mode/buffer-changes--start))
+                    ;;   ;; (message "Setting changes start from %s to %s" 
phps-mode/buffer-changes--start start)
+                    ;;   (setq phps-mode/buffer-changes--start line-start))
+                    
+                    ;; (phps-mode/run-incremental-lex)
+
+                    ))))))))))
 
 ;; TODO Implement this?
 (defun phps-mode/indent-region ()
diff --git a/phps-lexer.el b/phps-lexer.el
index 0478323..33bb126 100644
--- a/phps-lexer.el
+++ b/phps-lexer.el
@@ -1302,7 +1302,7 @@ ANY_CHAR'
 
     new-states))
 
-(defun phps-mode/lexer-move-lexer-tokens (start diff)
+(defun phps-mode/move-lexer-tokens (start diff)
   "Update tokens with moved lexer tokens after or equal to START with 
modification DIFF."
   (setq phps-mode/lexer-tokens (phps-mode/get-moved-lexer-tokens 
phps-mode/lexer-tokens start diff)))
 



reply via email to

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