[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 2efd7d7 367/405: Started on function to move
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode 2efd7d7 367/405: Started on function to move line-indent index |
Date: |
Sat, 13 Jul 2019 10:00:52 -0400 (EDT) |
branch: externals/phps-mode
commit 2efd7d724a4041f87c9c77d1425561e0704ba596
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
Started on function to move line-indent index
---
phps-mode-functions.el | 20 +++++++++++++++++++-
phps-mode-test-functions.el | 2 +-
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/phps-mode-functions.el b/phps-mode-functions.el
index 3385c41..16c7340 100644
--- a/phps-mode-functions.el
+++ b/phps-mode-functions.el
@@ -69,6 +69,21 @@
(phps-mode-functions--process-current-buffer)
(setq phps-mode-functions-processed-buffer t)))
+;; TODO Fix this function
+(defun phps-mode-functions-move-lines-indent (start-line-number diff)
+ "Move line-indent index from START-LINE-NUMBER with DIFF amount."
+ (let ((lines-indent (phps-mode-functions-get-lines-indent))
+ (line-number (+ start-line-number diff)))
+ (when lines-indent
+ (let ((line-indent (gethash line-number
phps-mode-functions-lines-indent)))
+ (while line-indent
+ (when (not (= line-number start-line-number))
+ (puthash (1- line-number) line-indent lines-indent)
+ )
+ (setq line-number (1+ line-number))
+ (setq line-indent (gethash line-number lines-indent)))
+ (setq phps-mode-functions-lines-indent lines-indent)))))
+
(defun phps-mode-functions-get-lines-indent ()
"Return lines indent, process buffer if not done already."
(phps-mode-functions-process-current-buffer)
@@ -814,7 +829,8 @@
;; (message "Running advice")
(let ((old-pos (point))
(new-pos)
- (looking-at-whitespace (looking-at-p "[\ \n\t\r]*\n")))
+ (looking-at-whitespace (looking-at-p "[\ \n\t\r]*\n"))
+ (old-line-number (line-number-at-pos)))
;; Temporarily disable change detection to not trigger incremental
lexer
(setq phps-mode-functions-allow-after-change nil)
@@ -829,6 +845,8 @@
(when (> diff 0)
(phps-mode-lexer-move-tokens old-pos diff)
(phps-mode-lexer-move-states old-pos diff)
+ (phps-mode-functions-move-lines-indent old-line-number 1)
+ ;; TODO Move imenu-index?
;; (message "Old pos %s, new pos: %s, diff: %s" old-pos
new-pos diff)
)))
;; (message "Not looking at white-space")
diff --git a/phps-mode-test-functions.el b/phps-mode-test-functions.el
index 5feb51e..e843588 100644
--- a/phps-mode-test-functions.el
+++ b/phps-mode-test-functions.el
@@ -882,7 +882,7 @@
(message "Tokens %s" (phps-mode-lexer-get-tokens))
(should (equal (phps-mode-lexer-get-tokens)
'(should (equal (phps-mode-lexer-get-tokens)
- '((T_OPEN_TAG 1 . 7) (T_IF 7 . 9) ("(" 10 . 11) (T_STRING 11
. 15) (")" 15 . 16) (":" 16 . 17) (T_VARIABLE 22 . 26) ("=" 27 . 28)
(T_CONSTANT_ENCAPSED_STRING 29 . 34) (";" 34 . 35) (T_VARIABLE 40 . 45) ("=" 46
. 47) (T_CONSTANT_ENCAPSED_STRING 48 . 53) (";" 53 . 54) (T_ENDIF 55 . 60) (";"
60 . 61))))))
+ '((T_OPEN_TAG 1 . 7) (T_IF 7 . 9) ("(" 10 . 11) (T_STRING 11
. 15) (")" 15 . 16) (":" 16 . 17) (T_VARIABLE 22 . 26) ("=" 27 . 28)
(T_CONSTANT_ENCAPSED_STRING 29 . 34) (";" 34 . 35) (T_VARIABLE 40 . 45) ("=" 46
. 47) (T_CONSTANT_ENCAPSED_STRING 48 . 53) (";" 53 . 54) (T_ENDIF 60 . 65) (";"
65 . 66) (END_PARSE 68 . 68))))))
)
)
- [elpa] externals/phps-mode 812dc49 353/405: Removed TODO item, (continued)
- [elpa] externals/phps-mode 812dc49 353/405: Removed TODO item, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 834275b 354/405: Fixed indentation calculation of nested alternative control structures, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 62f1fc5 348/405: Added another failing indentation test for return expressions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 071acc0 349/405: Added support for multi-line return indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 46d0575 373/405: Passes all tests for adding newline and indenting without affect lexer, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 71858d1 374/405: Removed side-effect of END_PARSE token being added to tokens after processing buffer, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 228b657 380/405: Updated README with license logo and Travis CI build status, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 6308e3e 366/405: Removed debug notice, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode bd90dc9 370/405: Removed debug output, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 38bd348 361/405: More work on advice, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 2efd7d7 367/405: Started on function to move line-indent index,
Stefan Monnier <=
- [elpa] externals/phps-mode 5bc592a 368/405: More work on moving indent indexes, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode bc1f50f 365/405: Fixed byte-compilation in functions unit-test, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 654ef5f 377/405: Added another state test for newline, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode fe80a3a 369/405: Passes test for moving line-indents down, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 07ed24d 376/405: Added states test as well, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 92e53e8 363/405: Passes test for pressing newline before white-spaces just moves meta-data, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f2ff34a 378/405: Added TODO items for making changes inside tokens and not triggered a full re-lexing, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode d416443 371/405: Added more test for moving line-indent index, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 22f75ba 362/405: Advice is running again in unit test, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 4592bce 385/405: Only running newline heuristic when rest of line is whitespace, Stefan Monnier, 2019/07/13