branch: externals/phps-mode
commit 2c3239aefbdcf144b70536c89449ee2ea5306a09
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Adding new failing tests for indentation
---
phps-mode-functions.el | 3 ---
phps-mode-lexer.el | 12 ++++++++++--
phps-mode-test-functions.el | 14 +++++++++++++-
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/phps-mode-functions.el b/phps-mode-functions.el
index 0583e55..2693b4e 100644
--- a/phps-mode-functions.el
+++ b/phps-mode-functions.el
@@ -345,7 +345,6 @@
(when phps-mode-functions-verbose
(message "Process line ending. nesting: %s-%s,
line-number: %s-%s, indent: %s.%s, token: %s" nesting-start nesting-end
token-start-line-number token-end-line-number column-level-start tuning-level
token))
-
;; (message "new line %s or last token at %s, %s %s.%s
(%s - %s) = %s %s %s %s %s [%s %s] %s %s %s" token-start-line-number token
next-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
in-assignment-level in-class-declaration-level)
;; Put indent-level to hash-table
@@ -458,8 +457,6 @@
phps-mode-idle-interval)
;; (message "Enqueued incremental lexer")
- ;; Reset line indents
- (setq phps-mode-functions-lines-indent nil)
(run-with-idle-timer phps-mode-idle-interval nil
#'phps-mode-lexer-run-incremental))
;; When point of change is not set or when start of new changes precedes
old change - update the point
diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index 8eb1905..f13d8d0 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -1256,16 +1256,24 @@ ANY_CHAR'
))
-;; TODO Need to store lexer state and stack at each changing point of buffer
to be able to rewind lexer
(defun phps-mode-lexer-setup (start end)
"Just prepare other lexers for lexing region START to END."
;; (message "phps-mode-lexer-setup %s %s" start end)
(when (and (eq start 1)
end)
(delete-all-overlays)
- (when (boundp 'phps-mode-lexer-buffer-changes--start)
+
+ ;; Rest buffer changes flag
+ (when (and (boundp 'phps-mode-lexer-buffer-changes--start)
+ phps-mode-lexer-buffer-changes--start)
(setq phps-mode-lexer-buffer-changes--start nil))
+ ;; Reset line indents
+ (when (and (boundp 'phps-mode-functions-lines-indent)
+ phps-mode-functions-lines-indent)
+ (setq phps-mode-functions-lines-indent nil))
+
+
(setq phps-mode-lexer-states nil)
(phps-mode-lexer-BEGIN phps-mode-lexer-ST_INITIAL)))
diff --git a/phps-mode-test-functions.el b/phps-mode-test-functions.el
index 2ccd757..fa7439a 100644
--- a/phps-mode-test-functions.el
+++ b/phps-mode-test-functions.el
@@ -198,10 +198,22 @@
(phps-mode-test-with-buffer
"<?php\nif (true) {\n if ($configuration::load(\n
self::getParameter(self::PARAMETER_CONFIGURATION_INTERNAL_FILENAME),\n
self::getParameter(self::PARAMETER_CONFIGURATION_EXTERNAL_FILENAME),\n
self::getParameter(self::PARAMETER_STRUCTURE_INTERNAL_FILENAME),\n
self::getParameter(self::PARAMETER_STRUCTURE_EXTERNAL_FILENAME)\n )) {\n
echo 'was here';\n }\n}\n"
- "If expression spanning multiple lines 2"
+ "If expression spanning multiple lines 3"
;; (message "Tokens: %s" phps-mode-lexer-tokens)
(should (equal '((1 (0 0)) (2 (0 0)) (3 (1 0)) (4 (2 0)) (5 (2 0)) (6 (2
0)) (7 (2 0)) (8 (1 0)) (9 (2 0)) (10 (1 0)) (11 (0 0)))
(phps-mode-test-functions--hash-to-list
(phps-mode-functions-get-lines-indent)))))
+ (phps-mode-test-with-buffer
+ "<?php\nif (myFunction(\n true)\n) {\n echo 'was here';\n}\n"
+ "If expression spanning multiple lines 4"
+ ;; (message "Tokens: %s" phps-mode-lexer-tokens)
+ (should (equal '((1 (0 0)) (2 (0 0)) (3 (1 0)) (4 (0 0)) (5 (1 0)) (6 (0
0))) (phps-mode-test-functions--hash-to-list
(phps-mode-functions-get-lines-indent)))))
+
+ (phps-mode-test-with-buffer
+ "<?php\nif (true) {\n if (myFunction(\n true)\n ) {\n
echo 'was here';\n }\n}\n"
+ "Nested if expression spanning multiple lines 5"
+ ;; (message "Tokens: %s" phps-mode-lexer-tokens)
+ (should (equal '((1 (0 0)) (2 (0 0)) (3 (1 0)) (4 (2 0)) (5 (1 0)) (6 (2
0)) (7 (1 0)) (8 (0 0))) (phps-mode-test-functions--hash-to-list
(phps-mode-functions-get-lines-indent)))))
+
)