[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode c040358 046/405: Point lexer token informatio
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode c040358 046/405: Point lexer token information makes more sense |
Date: |
Sat, 13 Jul 2019 09:59:40 -0400 (EDT) |
branch: externals/phps-mode
commit c040358b555a1e157b055da5c7a1b7e08d2718ae
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
Point lexer token information makes more sense
---
phps-lexer.el | 28 ++++++++++++++++++++--------
phps-test-lexer.el | 18 ++++++++++++++----
2 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/phps-lexer.el b/phps-lexer.el
index 39d745e..42ab914 100644
--- a/phps-lexer.el
+++ b/phps-lexer.el
@@ -1268,24 +1268,33 @@ ANY_CHAR'
(start-brace-level 0)
(start-parenthesis-level 0)
(start-inline-function-level 0)
- (start-token-number -1)
+ (start-token-number nil)
(end-in-scripting nil)
(end-brace-level 0)
(end-parenthesis-level 0)
(end-inline-function-level 0)
- (end-token-number -1))
+ (end-token-number nil)
+ (found-line-tokens nil))
(catch 'stop-iteration
(dolist (item phps-mode/lexer-tokens)
(let ((token (car item))
- (start (car (cdr item))))
+ (start (car (cdr item)))
+ (end (cdr (cdr item))))
;; (message "Token: %s Start: %s End: %s Item: %s" token start end
item)
(when (> start line-end)
;; (message "Stopping iteration at: %s %s" start position)
(throw 'stop-iteration nil))
+ (when (and (not found-line-tokens)
+ (>= start position)
+ (<= end line-end))
+ (setq found-line-tokens t))
+
;; When start of token is equal or less to current point
- (when (< start position)
+ (when (<= end position)
+ (when (null start-token-number)
+ (setq start-token-number -1))
(setq start-token-number (+ start-token-number 1))
(pcase token
('T_OPEN_TAG (setq start-in-scripting t))
@@ -1298,7 +1307,9 @@ ANY_CHAR'
(_)))
;; When start of token is equal or less to end of curent line
- (when (< start line-end)
+ (when (<= start line-end)
+ (when (null end-token-number)
+ (setq end-token-number -1))
(setq end-token-number (+ end-token-number 1))
(pcase token
('T_OPEN_TAG (setq end-in-scripting t))
@@ -1311,10 +1322,11 @@ ANY_CHAR'
(_)))
)))
- (let ((data (list (list start-in-scripting start-brace-level
start-parenthesis-level start-inline-function-level start-token-number) (list
end-in-scripting end-brace-level end-parenthesis-level
end-inline-function-level end-token-number))))
+ (let ((data (list (list start-in-scripting start-brace-level
start-parenthesis-level start-inline-function-level nil) (list end-in-scripting
end-brace-level end-parenthesis-level end-inline-function-level nil))))
+ (when found-line-tokens
+ (setq data (list (list start-in-scripting start-brace-level
start-parenthesis-level start-inline-function-level start-token-number) (list
end-in-scripting end-brace-level end-parenthesis-level
end-inline-function-level end-token-number))))
;; (message "data: %s" data)
- data)
- )))
+ data))))
(defun phps-mode/lex--SETUP (start end)
"Just prepare other lexers for lexing region START to END."
diff --git a/phps-test-lexer.el b/phps-test-lexer.el
index 0897a08..8eb8ed3 100644
--- a/phps-test-lexer.el
+++ b/phps-test-lexer.el
@@ -279,17 +279,27 @@
(phps-mode/with-test-buffer
"<html><head><title><?php echo $title; ?></title><body>Bla
bla</body></html>"
(goto-char 15)
- (should (equal (list (list nil 0 0 0 -1) (list nil 0 0 0 5))
(phps-mode/lexer-get-point-data))))
+ (should (equal (list (list nil 0 0 0 nil) (list nil 0 0 0 5))
(phps-mode/lexer-get-point-data))))
+
+ (phps-mode/with-test-buffer
+ "<html><head><title><?php echo $title; ?>\n</title><body>Bla
bla</body></html>"
+ (goto-char 50)
+ (should (equal (list (list nil 0 0 0 nil) (list nil 0 0 0 nil))
(phps-mode/lexer-get-point-data))))
+
+ (phps-mode/with-test-buffer
+ "<html><head><title></title><body>Bla bla</body></html>"
+ (goto-char 15)
+ (should (equal (list (list nil 0 0 0 nil) (list nil 0 0 0 nil))
(phps-mode/lexer-get-point-data))))
(phps-mode/with-test-buffer
"<html><head><title><?php echo $title; ?></title><body>Bla
bla</body></html>"
(goto-char 30)
- (should (equal (list (list nil 0 0 0 -1) (list nil 0 0 0 5))
(phps-mode/lexer-get-point-data))))
+ (should (equal (list (list nil 0 0 0 nil) (list nil 0 0 0 5))
(phps-mode/lexer-get-point-data))))
(phps-mode/with-test-buffer
"<html><head><title><?php echo $title; ?></title><body>Bla
bla</body></html>"
(goto-char 50)
- (should (equal (list (list nil 0 0 0 -1) (list nil 0 0 0 5))
(phps-mode/lexer-get-point-data))))
+ (should (equal (list (list nil 0 0 0 nil) (list nil 0 0 0 5))
(phps-mode/lexer-get-point-data))))
(phps-mode/with-test-buffer
"<html><head><title><?php if ($myCondition) { \n if ($mySeconCondition) {
echo $title; } } ?></title><body>Bla bla</body></html>"
@@ -311,7 +321,7 @@
"<html><head><title><?php if ($myCondition) { if ($mySeconCondition) { echo
$title; } } ?></title><body>Bla bla</body></html>"
(goto-char 100)
- (should (equal (list (list nil 0 0 0 -1) (list nil 0 0 0 17))
(phps-mode/lexer-get-point-data))))
+ (should (equal (list (list nil 0 0 0 nil) (list nil 0 0 0 17))
(phps-mode/lexer-get-point-data))))
)
- [elpa] externals/phps-mode c6e5255 038/405: Merge branch 'master' of https://github.com/cjohansson/emacs-phps-mode, (continued)
- [elpa] externals/phps-mode c6e5255 038/405: Merge branch 'master' of https://github.com/cjohansson/emacs-phps-mode, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 3837d9c 001/405: My initial commit, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 6776468 037/405: Started worked with adding references to tokens from point meta information, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode feb5724 039/405: Various debug work, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e36d477 045/405: token-number from point now is the same format as (nth), Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b437374 040/405: Fixed bug in parsing of object parameters inside double quoted string, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 7161184 041/405: Handles stacked states better, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode c625217 042/405: Added flag for PSR-2 white-space settings, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b629c4b 050/405: Updated comments and TODOs, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 4b4a375 043/405: Using lexical bindings for all files, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode c040358 046/405: Point lexer token information makes more sense,
Stefan Monnier <=
- [elpa] externals/phps-mode 94492c4 048/405: Added changes tracking to functions from lexer, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode be46d9c 044/405: Added lexer autoload to functions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a259292 047/405: Changed indentation function to work solely on tokens, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 4098f46 049/405: Started with incremental lexer, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode da1d1de 051/405: Temporary lexer after change until other work is ready, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 990d3dd 054/405: Added test for indentation of multiple-line doc comment, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode dd80d27 055/405: Started work on detecting doc comment blocks, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e1b7160 053/405: (newline-and-indent) now working, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 8aa1ab6 059/405: Another test for getting point data inside doc block, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 09daec3 052/405: Foundation for incremental lexer and syntax colorer completed, Stefan Monnier, 2019/07/13