[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 6559760 166/405: Work on assignments and clas
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode 6559760 166/405: Work on assignments and class declaration indentations |
Date: |
Sat, 13 Jul 2019 10:00:05 -0400 (EDT) |
branch: externals/phps-mode
commit 6559760ee4e889db200ad74530cfdbad8f61f54e
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
Work on assignments and class declaration indentations
---
phps-mode-functions.el | 69 +++++++++++++++++++++++---------------------------
1 file changed, 32 insertions(+), 37 deletions(-)
diff --git a/phps-mode-functions.el b/phps-mode-functions.el
index fa1fa80..db474e3 100644
--- a/phps-mode-functions.el
+++ b/phps-mode-functions.el
@@ -76,7 +76,9 @@
(allow-custom-column-increment nil)
(allow-custom-column-decrement nil)
(in-assignment nil)
- (in-assignment-on-new-line nil))
+ (in-assignment-level 0)
+ (in-class-declaration nil)
+ (in-class-declaration-level 0))
;; Iterate through all buffer tokens from beginning to end
(dolist (item phps-mode-lexer-tokens)
@@ -96,17 +98,11 @@
(setq last-token-was-first-on-new-line t))
;; Calculate indentation level at end of line
- (setq nesting-end (+ round-bracket-level
square-bracket-level curly-bracket-level alternative-control-structure-level
inline-control-structure-level))
-
- ;; Inside assignment increment by one
- (when (and in-assignment
- (not in-heredoc))
- (setq nesting-end (1+ nesting-end)))
+ (setq nesting-end (+ round-bracket-level
square-bracket-level curly-bracket-level alternative-control-structure-level
inline-control-structure-level in-assignment-level in-class-declaration-level))
;; Is line ending indentation lesser than line beginning
indentation?
(when (and (< nesting-end nesting-start)
- (> column-level 0)
- (not in-assignment-on-new-line))
+ (> column-level 0))
;; Decrement column
(if allow-custom-column-decrement
@@ -116,14 +112,16 @@
(setq column-level (1- column-level))))
;; Is line ending indentation equal to line beginning
indentation and did we have a change of scope?
- (when (= nesting-end nesting-start)
+ (when (and (= nesting-end nesting-start)
+ (not (and first-token-is-nesting-increase
+ first-token-is-nesting-decrease)))
(when (and first-token-is-nesting-decrease
(> column-level 0))
(setq column-level (1- column-level)))
(when first-token-is-nesting-increase
(setq column-level (1+ column-level))))
- ;; (message "new line at %s, %s %s.%s (%s - %s) = %s %s %s
%s %s [%s %s] %s" token 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)
+ (message "new line at %s, %s %s.%s (%s - %s) = %s %s %s %s
%s [%s %s] %s %s %s" token 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-assignment-level in-class-declaration-level)
;; Put indent-level to hash-table
(when (> last-line-number 0)
@@ -158,16 +156,13 @@
(setq column-level (1+ column-level))))
;; Calculate indentation level at start of line
- (setq nesting-start (+ round-bracket-level
square-bracket-level curly-bracket-level alternative-control-structure-level
inline-control-structure-level))
-
- ;; Inside assignment increment by one
- (when in-assignment
- (setq nesting-start (1+ nesting-start)))
+ (setq nesting-start (+ round-bracket-level
square-bracket-level curly-bracket-level alternative-control-structure-level
inline-control-structure-level in-assignment-level in-class-declaration-level))
;; Set initial values for tracking first token
(setq first-token-on-line t)
(setq first-token-is-nesting-increase nil)
- (setq first-token-is-nesting-decrease nil))
+ (setq first-token-is-nesting-decrease nil)
+ (setq in-assignment-level 0))
(setq first-token-on-line nil))
;; Keep track of round bracket level
@@ -307,23 +302,15 @@
;; (message "Assignment ended at semi-colon")
)
(when first-token-on-line
- (if (or (equal token 'T_VARIABLE)
- (equal token 'T_CONSTANT_ENCAPSED_STRING)
- (equal token 'T_ENCAPSED_AND_WHITESPACE)
- (equal token 'T_OBJECT_OPERATOR)
- (equal token 'T_LNUMBER)
- (equal token 'T_DNUMBER))
- (progn
- ;; (message "In assignment on new-line at %s" token)
- (setq in-assignment-on-new-line t))
- ;; (message "Not in assignment on new-line at %s" token)
- (setq in-assignment-on-new-line nil)))))
+ (setq in-assignment-level 1)
+ (message "In assignment on new-line at %s" token)
+ )))
(when (and (not after-special-control-structure)
(not in-assignment)
(string= token "="))
;; (message "Started assignment")
(setq in-assignment t)
- (setq in-assignment-on-new-line nil))
+ (setq in-assignment-level 1))
;; Did we encounter a token that supports extra special
alternative control structures?
(when (equal token 'T_CASE)
@@ -343,6 +330,19 @@
(when (equal token 'T_END_HEREDOC)
(setq in-heredoc nil))
+ ;; Keep track of when we are inside a class definition
+ (when (and in-class-declaration
+ first-token-on-line)
+ (if (not (string= token "{"))
+ (setq in-class-declaration-level 1)
+ (setq in-class-declaration-level 0)))
+ (when (equal token 'T_CLASS)
+ (setq in-class-declaration t)
+ (setq in-class-declaration-level 0))
+ (when (and in-class-declaration
+ (string= token "{"))
+ (setq in-class-declaration nil))
+
;; Are we on a new line?
(when (> token-start-line-number last-line-number)
@@ -356,16 +356,11 @@
(when last-token-was-first-on-new-line
;; Calculate indentation level at end of line
- (setq nesting-end (+ round-bracket-level square-bracket-level
curly-bracket-level alternative-control-structure-level
inline-control-structure-level))
-
- ;; Inside assignment increment by one
- (when in-assignment
- (setq nesting-end (1+ nesting-end)))
+ (setq nesting-end (+ round-bracket-level square-bracket-level
curly-bracket-level alternative-control-structure-level
inline-control-structure-level in-assignment-level in-class-declaration-level))
;; Is line ending indentation lesser than line beginning
indentation?
(when (and (< nesting-end nesting-start)
- (> column-level 0)
- (not in-assignment-on-new-line))
+ (> column-level 0))
;; Decrement column
(if allow-custom-column-decrement
@@ -382,7 +377,7 @@
(when first-token-is-nesting-increase
(setq column-level (1+ column-level))))
- ;; (message "last token at %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)
+ (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))
- [elpa] externals/phps-mode 0b3ced4 145/405: First test for new indentation function passes, (continued)
- [elpa] externals/phps-mode 0b3ced4 145/405: First test for new indentation function passes, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 96588b5 142/405: More work on new indentation calculation functions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 9d6af11 157/405: More work on indentations, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e249124 152/405: Prevent negative indent, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 4a27c44 147/405: Added support for naming unit tests to better find failures, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b852f5f 160/405: All tests for indentation passes, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode dfb0427 151/405: Added unit test for round and square bracket expressions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 7b8cea3 163/405: Added failing indentation test for class multiple implements, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a61ff64 134/405: Renamed function get-point-data to get-current-line-data for better semantics, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b99da6b 153/405: Starting using new indentation calculation for indentations, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 6559760 166/405: Work on assignments and class declaration indentations,
Stefan Monnier <=
- [elpa] externals/phps-mode 2720be8 165/405: Indentation calculation for heredoc and nowdoc assignments passes, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 13c4c78 164/405: More work on heredoc, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 47ffc37 179/405: More work on refactored indentation calculation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a5ced61 158/405: New indentation function passes all original unit tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e3eedd7 167/405: Assignment indentation passes tests, class declaration remains, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e37c1cf 150/405: New indention calculation works with doc-comments, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f789468 172/405: Took notes of new indentation tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 20e77aa 181/405: Removed debug output, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 321803a 182/405: Line indents are now cleaning on buffer changes, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 38bcabb 176/405: Improved detection of assignment ends in function optional arguments, Stefan Monnier, 2019/07/13