[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode 4fa9341 030/405: Started with unit tests for
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode 4fa9341 030/405: Started with unit tests for indentation |
Date: |
Sat, 13 Jul 2019 09:59:33 -0400 (EDT) |
branch: externals/phps-mode
commit 4fa93419dab111cb8fbbb185fc35987ea3c41ee2
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
Started with unit tests for indentation
---
phps-lexer.el | 28 ++++++++++++++++++----------
phps-test-lexer.el | 18 ++++++++++++++++++
sample-php-files/class.php | 2 +-
3 files changed, 37 insertions(+), 11 deletions(-)
diff --git a/phps-lexer.el b/phps-lexer.el
index 52c2a5a..979a383 100644
--- a/phps-lexer.el
+++ b/phps-lexer.el
@@ -1261,6 +1261,7 @@ ANY_CHAR'
"Return information about point in tokens."
;; (message "Point: %s in %s" (point) phps-mode/lexer-tokens)
(let ((position (point))
+ (line-end (line-end-position))
(in-scripting nil)
(brace-level 0)
(parenthesis-level 0)
@@ -1272,19 +1273,26 @@ ANY_CHAR'
(end (cdr (cdr item))))
;; (message "Token: %s Start: %s End: %s Item: %s" token start end
item)
- (when (> start position)
+ (when (> start line-end)
;; (message "Stopping iteration at: %s %s" start position)
(throw 'stop-iteration nil))
- (pcase token
- ('T_OPEN_TAG (setq in-scripting t))
- ('T_OPEN_TAG_WITH_ECHO (setq in-scripting t))
- ('T_CLOSE_TAG (setq in-scripting nil))
- ("{" (setq brace-level (+ brace-level 1)))
- ("}" (setq brace-level (- brace-level 1)))
- ("(" (setq parenthesis-level (+ parenthesis-level 1)))
- (")" (setq parenthesis-level (- parenthesis-level 1)))
- (_))
+ ;; When start of token is equal or less to current point
+ (when (<= start position)
+ (pcase token
+ ('T_OPEN_TAG (setq in-scripting t))
+ ('T_OPEN_TAG_WITH_ECHO (setq in-scripting t))
+ ('T_CLOSE_TAG (setq in-scripting nil))
+ ("{" (setq brace-level (+ brace-level 1)))
+ ("(" (setq parenthesis-level (+ parenthesis-level 1)))
+ (")" (setq parenthesis-level (- parenthesis-level 1)))
+ (_)))
+
+ ;; When start of token is equal or less to end of curent line
+ (when (<= start line-end)
+ (pcase token
+ ("}" (setq brace-level (- brace-level 1)))
+ (_)))
)))
(let ((data (list in-scripting brace-level parenthesis-level
inline-function-level)))
diff --git a/phps-test-lexer.el b/phps-test-lexer.el
index 5db8f02..c96499c 100644
--- a/phps-test-lexer.el
+++ b/phps-test-lexer.el
@@ -306,6 +306,23 @@
)
+(defun phps-mode/test-indentation ()
+ "Test for indentation."
+ (phps-mode/with-test-buffer
+ "<html><head><title><?php if ($myCondition) {\nif ($mySeconCondition)
{\necho $title;\n\n} ?></title><body>Bla bla</body></html>"
+ (goto-char 69)
+ (phps-mode/indent-line)
+ (let ((buffer-contents (buffer-substring-no-properties (point-min)
(point-max))))
+ (should (equal buffer-contents "<html><head><title><?php if
($myCondition) {\n if ($mySeconCondition) {\necho $title;\n\n}
?></title><body>Bla bla</body></html>")))
+ (goto-char 85)
+ (phps-mode/indent-line)
+ (let ((buffer-contents (buffer-substring-no-properties (point-min)
(point-max))))
+ (should (equal buffer-contents "<html><head><title><?php if
($myCondition) {\n if ($mySeconCondition) {\n echo $title;\n\n}
?></title><body>Bla bla</body></html>")))
+ (goto-char 98)
+ (phps-mode/indent-line)
+ (let ((buffer-contents (buffer-substring-no-properties (point-min)
(point-max))))
+ (should (equal buffer-contents "<html><head><title><?php if
($myCondition) {\n if ($mySeconCondition) {\n echo $title;\n\n }
?></title><body>Bla bla</body></html>")))))
+
(defun phps-mode/test-lexer ()
"Run test for lexer."
;; (message "-- Running all tests for lexer... --\n")
@@ -316,6 +333,7 @@
(phps-mode/test-lexer--namespaces)
(phps-mode/test-lexer--errors)
(phps-mode/test-lexer--get-point-data)
+ (phps-mode/test-indentation)
;; (message "\n-- Ran all tests for lexer. --")
)
diff --git a/sample-php-files/class.php b/sample-php-files/class.php
index fef6bfe..50c292a 100644
--- a/sample-php-files/class.php
+++ b/sample-php-files/class.php
@@ -17,7 +17,7 @@ class MyClass {
}
public function myMethod2() {
- echo "Some stuff here 2";
+ echo "Some stuff here 2";
}
public function myMethod3() {
- [elpa] externals/phps-mode 795053b 013/405: Lexer unit tests using start and ends as well, (continued)
- [elpa] externals/phps-mode 795053b 013/405: Lexer unit tests using start and ends as well, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 95e749e 028/405: Started with indentation function, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 3202213 025/405: Added another unit test for lexer, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode bf59f0a 023/405: More unit tests for getting point lex information, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode de771b5 019/405: Added more unit tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e3a060a 026/405: Handles script breaking single-line comments, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 7fa9fdb 024/405: More unit tests for lexing comments and doc comments, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 64a3ca8 014/405: Modified start and end for single and double quoted strings, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 3ea8c64 003/405: Added license, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f6e3ce4 027/405: Added another test for comments, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 4fa9341 030/405: Started with unit tests for indentation,
Stefan Monnier <=
- [elpa] externals/phps-mode 184dfa5 034/405: Indentation outside PHP now does nothing, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 5c0568b 033/405: Added some basic unit tests for indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 47440dd 036/405: Added test for decreasing indentation with letters, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 9d3f644 032/405: Separated indentation tests for lexer tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode d839f8a 029/405: More work on indentation support, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode efcefde 035/405: Added support for closing parenthesis and braces, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 1b891ea 031/405: More work on indentation and related tests, Stefan Monnier, 2019/07/13
- [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