[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 43c13b4 295/405: Started on new algorithm for
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode 43c13b4 295/405: Started on new algorithm for concatenation indentation |
Date: |
Sat, 13 Jul 2019 10:00:35 -0400 (EDT) |
branch: externals/phps-mode
commit 43c13b4e827833febc3277ebe7d51c54e9ed74ee
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
Started on new algorithm for concatenation indentation
---
phps-mode-functions.el | 35 +++++++++++++++++++++++------------
phps-mode-lexer.el | 3 ++-
phps-mode-test-functions.el | 2 +-
3 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/phps-mode-functions.el b/phps-mode-functions.el
index 89a5501..5d5d2b7 100644
--- a/phps-mode-functions.el
+++ b/phps-mode-functions.el
@@ -95,7 +95,10 @@
(round-bracket-level 0)
(square-bracket-level 0)
(alternative-control-structure-level 0)
- (concatenation-level 0)
+ (in-concatenation nil)
+ (in-concatenation-round-bracket-level nil)
+ (in-concatenation-square-bracket-level nil)
+ (in-concatenation-level 0)
(column-level 0)
(column-level-start 0)
(tuning-level 0)
@@ -397,15 +400,23 @@
(setq first-token-is-nesting-decrease t))
(setq after-extra-special-control-structure nil))
- ;; Keep track of concatenations
- (when (> next-token-start-line-number token-end-line-number)
- (if (or (string= token ".")
- (string= next-token "."))
- (progn
- (when phps-mode-functions-verbose
- (message "\nFound ending dot, indenting next line
with one.\n"))
- (setq concatenation-level 1))
- (setq concatenation-level 0)))
+ ;; Keep track of concatenation
+ (if in-concatenation
+ (when (or (string= token ";")
+ (and (string= token ")")
+ (<= round-bracket-level
in-concatenation-round-bracket-level))
+ (and (string= token"]")
+ (<= square-bracket-level
in-concatenation-square-bracket-level)))
+ (setq in-concatenation nil)
+ (setq in-concatenation-level 0))
+ (when (and (> next-token-start-line-number
token-end-line-number)
+ (or (string= token ".")
+ (string= next-token ".")))
+ ;; (message "Started assignment")
+ (setq in-concatenation t)
+ (setq in-concatenation-round-bracket-level
round-bracket-level)
+ (setq in-concatenation-square-bracket-level
square-bracket-level)
+ (setq in-concatenation-level 1)))
;; Did we reach a semicolon inside a inline block? Close the
inline block
(when (and in-inline-control-structure
@@ -487,7 +498,7 @@
(message "Processing token: %s" token))
;; Calculate nesting
- (setq nesting-end (+ round-bracket-level square-bracket-level
curly-bracket-level alternative-control-structure-level in-assignment-level
in-class-declaration-level concatenation-level))
+ (setq nesting-end (+ round-bracket-level square-bracket-level
curly-bracket-level alternative-control-structure-level in-assignment-level
in-class-declaration-level in-concatenation-level))
;; Keep track of whether we are inside a HEREDOC or NOWDOC
(when (equal token 'T_START_HEREDOC)
@@ -653,7 +664,7 @@
;; Calculate indentation level at start of line
- (setq nesting-start (+ round-bracket-level
square-bracket-level curly-bracket-level alternative-control-structure-level
in-assignment-level in-class-declaration-level concatenation-level))
+ (setq nesting-start (+ round-bracket-level
square-bracket-level curly-bracket-level alternative-control-structure-level
in-assignment-level in-class-declaration-level in-concatenation-level))
;; Set initial values for tracking first token
(when (> token-start-line-number last-line-number)
diff --git a/phps-mode-lexer.el b/phps-mode-lexer.el
index 87a824e..95e171a 100644
--- a/phps-mode-lexer.el
+++ b/phps-mode-lexer.el
@@ -1694,7 +1694,8 @@
(end (cdr (cdr token))))
(if (< start previous-token-end)
(progn
- (semantic-lex-push-token (semantic-lex-token token
start end))
+ ;; NOTE Does following line make any difference?
+ ;; (semantic-lex-push-token (semantic-lex-token token
start end))
(push token old-tokens))
(throw 'stop-iteration nil)))))
(setq old-tokens (nreverse old-tokens))
diff --git a/phps-mode-test-functions.el b/phps-mode-test-functions.el
index 7f18ae7..5a8397b 100644
--- a/phps-mode-test-functions.el
+++ b/phps-mode-test-functions.el
@@ -335,7 +335,7 @@
"<?php\n$var =\n 500 .\n \"200\" .\n 100.0 .\n '200' .\n
$this->getTail()\n ->getBottom();"
"Multi-line assignments"
;; (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))) (phps-mode-test-hash-to-list
(phps-mode-functions-get-lines-indent)))))
+ (should (equal '((1 (0 0)) (2 (0 0)) (3 (1 0)) (4 (1 0)) (5 (1 0)) (6 (1
0)) (7 (1 0)) (8 (1 0))) (phps-mode-test-hash-to-list
(phps-mode-functions-get-lines-indent)))))
)
- [elpa] externals/phps-mode 52cfc78 281/405: Added failing indent test, (continued)
- [elpa] externals/phps-mode 52cfc78 281/405: Added failing indent test, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 46147f4 287/405: Fixed bug with undefined token-end-line-number in new buffers, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 66edaca 286/405: Improved lexing of comment version doc comment, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 55f61b0 296/405: New algorithm for concatenation indentation passes tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 9069d0a 300/405: Concatenation indentation now uses stack, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e639ea3 299/405: Indent passing new concatenation tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 5be3560 291/405: Adding more indent examples from PSR-2, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 74ab2a7 294/405: Work on incremental lexer and failing test for indent, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b31f817 292/405: Added all examples from PSR-2 as tests for indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 2087abd 282/405: Added two failing tests for switch indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 43c13b4 295/405: Started on new algorithm for concatenation indentation,
Stefan Monnier <=
- [elpa] externals/phps-mode b2ff76e 283/405: Started on debugging switch indentation bug, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 1aadb1b 285/405: Added failing lexer test for comment vs doc-comment, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 95de04b 274/405: New layout for lexer grammar passes unit tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 00d3568 290/405: Added indentation examples from official PSR-2, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode ec3fd41 289/405: Added failing indent test for mixed concatenation and function call, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode cc77604 284/405: Fixed bug with indentation after switch case statements, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode eeffdb2 315/405: Fixed trailing white-space, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 02b69f5 304/405: Tests for PSR-2 now passes with new algorithms, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b251a1e 314/405: Got unit tests for wrapping region in symbols working, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 20199b0 307/405: Added byte-compiled Lisp to gitignore, Stefan Monnier, 2019/07/13