[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 3740660 095/405: Get point-data now collects
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode 3740660 095/405: Get point-data now collects information about square brackets |
Date: |
Sat, 13 Jul 2019 09:59:51 -0400 (EDT) |
branch: externals/phps-mode
commit 37406602856c1528c174dac5b79016424a10b8e9
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
Get point-data now collects information about square brackets
---
phps-functions.el | 42 +++++++++++++++++++++++++-----------------
phps-test-functions.el | 7 +++++++
2 files changed, 32 insertions(+), 17 deletions(-)
diff --git a/phps-functions.el b/phps-functions.el
index 22e42ee..227d0f4 100644
--- a/phps-functions.el
+++ b/phps-functions.el
@@ -43,6 +43,7 @@
"Start of buffer changes, nil if none.")
;; NOTE Also format white-space inside the line, i.e. after function
declarations?
+
;; TODO Support inline function indentations
;; TODO Support indentation for multi-line scalar assignments
;; TODO Add support for automatic parenthesis, bracket, square-bracket,
single-quote and double-quote encapsulations
@@ -203,13 +204,15 @@
(let ((line-beginning (point))
(line-end (line-end-position))
(start-in-scripting nil)
- (start-brace-level 0)
- (start-parenthesis-level 0)
+ (start-curly-bracket-level 0)
+ (start-round-bracket-level 0)
+ (start-square-bracket-level 0)
(start-inline-function-level 0)
(start-token-number nil)
(end-in-scripting nil)
- (end-brace-level 0)
- (end-parenthesis-level 0)
+ (end-curly-bracket-level 0)
+ (end-round-bracket-level 0)
+ (end-square-bracket-level 0)
(end-inline-function-level 0)
(end-token-number nil)
(line-in-doc-comment nil)
@@ -240,14 +243,17 @@
('T_OPEN_TAG (setq start-in-scripting t))
('T_OPEN_TAG_WITH_ECHO (setq start-in-scripting t))
('T_CLOSE_TAG (setq start-in-scripting nil))
- ('T_CURLY_OPEN (setq start-brace-level (+ start-brace-level
1)))
- ('T_DOLLAR_OPEN_CURLY_BRACES (setq start-brace-level (+
start-brace-level 1)))
- ("}" (setq start-brace-level (- start-brace-level 1)))
- ("{" (setq start-brace-level (+ start-brace-level 1)))
- ("(" (setq start-parenthesis-level (+
start-parenthesis-level 1)))
- (")" (setq start-parenthesis-level (-
start-parenthesis-level 1)))
+ ('T_CURLY_OPEN (setq start-curly-bracket-level (+
start-curly-bracket-level 1)))
+ ('T_DOLLAR_OPEN_CURLY_BRACES (setq start-curly-bracket-level
(+ start-curly-bracket-level 1)))
+ ("{" (setq start-curly-bracket-level (+
start-curly-bracket-level 1)))
+ ("}" (setq start-curly-bracket-level (-
start-curly-bracket-level 1)))
+ ("[" (setq start-square-bracket-level (+
start-square-bracket-level 1)))
+ ("]" (setq start-square-bracket-level (-
start-square-bracket-level 1)))
+ ("(" (setq start-round-bracket-level (+
start-round-bracket-level 1)))
+ (")" (setq start-round-bracket-level (-
start-round-bracket-level 1)))
(_)))
+ ;; Are we at the final line and inside a doc-comment that ends
after it?
(when (and (< token-start line-beginning)
(>= token-end line-end)
(eq token 'T_DOC_COMMENT))
@@ -262,19 +268,21 @@
('T_OPEN_TAG (setq end-in-scripting t))
('T_OPEN_TAG_WITH_ECHO (setq end-in-scripting t))
('T_CLOSE_TAG (setq end-in-scripting nil))
- ('T_CURLY_OPEN (setq end-brace-level (+ end-brace-level 1)))
- ('T_DOLLAR_OPEN_CURLY_BRACES (setq end-brace-level (+
end-brace-level 1)))
- ("}" (setq end-brace-level (- end-brace-level 1)))
- ("{" (setq end-brace-level (+ end-brace-level 1)))
- ("(" (setq end-parenthesis-level (+ end-parenthesis-level
1)))
- (")" (setq end-parenthesis-level (- end-parenthesis-level
1)))
+ ('T_CURLY_OPEN (setq end-curly-bracket-level (+
end-curly-bracket-level 1)))
+ ('T_DOLLAR_OPEN_CURLY_BRACES (setq end-curly-bracket-level
(+ end-curly-bracket-level 1)))
+ ("{" (setq end-curly-bracket-level (+
end-curly-bracket-level 1)))
+ ("}" (setq end-curly-bracket-level (-
end-curly-bracket-level 1)))
+ ("[" (setq end-square-bracket-level (+
end-square-bracket-level 1)))
+ ("]" (setq end-square-bracket-level (-
end-square-bracket-level 1)))
+ ("(" (setq end-round-bracket-level (+
end-round-bracket-level 1)))
+ (")" (setq end-round-bracket-level (-
end-round-bracket-level 1)))
(_)))
)))
(when (not found-line-tokens)
(setq start-token-number nil)
(setq end-token-number nil))
- (let ((data (list (list start-in-scripting start-brace-level
start-parenthesis-level start-inline-function-level start-token-number
line-in-doc-comment) (list end-in-scripting end-brace-level
end-parenthesis-level end-inline-function-level end-token-number
line-in-doc-comment))))
+ (let ((data (list (list start-in-scripting start-curly-bracket-level
start-round-bracket-level start-square-bracket-level
start-inline-function-level start-token-number line-in-doc-comment) (list
end-in-scripting end-curly-bracket-level end-round-bracket-level
end-square-bracket-level end-inline-function-level end-token-number
line-in-doc-comment))))
;; (message "data: %s" data)
data)))))
diff --git a/phps-test-functions.el b/phps-test-functions.el
index ed538cc..fefb864 100644
--- a/phps-test-functions.el
+++ b/phps-test-functions.el
@@ -42,6 +42,8 @@
(autoload 'phps-mode/get-point-data "phps-functions")
(autoload 'should "ert")
+;; TODO Add unit tests for HEREDOC, NOWDOC as well
+
(defun phps-mode/test-indent-line ()
"Test for indentation."
@@ -165,6 +167,7 @@
"<?php\nif (myRandomCondition()):\necho 'Something here';\n else:\n
echo 'Something else here';\nendif;\n"
(goto-char 60)
(phps-mode/indent-line)
+ (message "Tokens %s" phps-mode/lexer-tokens)
(let ((buffer-contents (buffer-substring-no-properties (point-min)
(point-max))))
(should (equal buffer-contents "<?php\nif (myRandomCondition()):\necho
'Something here';\nelse:\n echo 'Something else here';\nendif;\n"))))
@@ -226,6 +229,10 @@
)
+;; TODO Support all control structures
+;; if, else, elseif, else if, while, do-while, for, foreach, break, switch,
declare, return, require, include, require_once, include_once, goto
+
+
(defun phps-mode/test-functions--get-point-data ()
"Return information about point in tokens."
- [elpa] externals/phps-mode 69ced0d 090/405: Added another unit test for failed indentation, (continued)
- [elpa] externals/phps-mode 69ced0d 090/405: Added another unit test for failed indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f2f41a3 088/405: Handles indentation case with } else if (...) {, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 59ba835 086/405: Fixed issue with wrong indentation at trailing opening brace, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 434c3dc 089/405: Added more failing tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 61abf7e 091/405: Added todo item, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f7f931a 092/405: Added another failing indentation test, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a8561ab 096/405: Updated unit test for get-point-data with support for square brackets, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode dbc02bb 099/405: Improved syntax table, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 989cc7e 098/405: Fixed flycheck warning about semantic, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode c5beb50 093/405: Added another unit test for indentation with special syntax, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 3740660 095/405: Get point-data now collects information about square brackets,
Stefan Monnier <=
- [elpa] externals/phps-mode 6c8eea0 100/405: Added another failing indentation case for switch case, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a899707 102/405: Updated comments, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 89fac0b 094/405: Added another unit test for bracket less conditional, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 6ac718c 104/405: Removed non-breaking space from syntax table, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a5beef1 097/405: Added support for square bracket indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 2c9746b 101/405: Added switch case unit test for lexer, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 47ad456 103/405: Fixed syntax table for white-spaces, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode cd1fdee 106/405: *** empty log message ***, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode efa297a 108/405: More work on renaming, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 529042e 109/405: More work on renaming, Stefan Monnier, 2019/07/13