[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode c57fb5b 073/405: Improved indentation of trai
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode c57fb5b 073/405: Improved indentation of trailing opening brace |
Date: |
Sat, 13 Jul 2019 09:59:46 -0400 (EDT) |
branch: externals/phps-mode
commit c57fb5b22f8fdfb3efa2a11a97a59ad1e6ab7851
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
Improved indentation of trailing opening brace
---
phps-functions.el | 19 ++++++++++++++++++-
phps-lexer.el | 2 +-
phps-test-functions.el | 10 ++++++++--
phps-test-parser.el | 4 ++--
4 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/phps-functions.el b/phps-functions.el
index 6c4a67b..c792c0a 100644
--- a/phps-functions.el
+++ b/phps-functions.el
@@ -69,13 +69,23 @@
(> indent-start indent-end))
(let ((token-number start-token-number)
(valid-tokens t)
+ (last-token-is-open-brace nil)
(tokens phps-mode/lexer-tokens))
;; (message "token start %s, token end %s" start-token-number
end-token-number)
+
+ ;; Interate tokens in line and check if all are valid
(while (and valid-tokens
(<= token-number end-token-number))
(let ((token (car (nth token-number tokens)))
(token-start (car (cdr (nth token-number tokens))))
(token-end (cdr (cdr (nth token-number tokens)))))
+
+ ;; Check if last token is open brace
+ (when (and (= token-number end-token-number)
+ (string= token "{"))
+ (setq last-token-is-open-brace t))
+
+ ;; Check if current token is not one of the valid tokens
(when (and valid-tokens
(or (>= token-start (point))
(>= token-end (point)))
@@ -90,9 +100,16 @@
(eq token 'T_CLOSE_TAG))))
;; (message "Token %s - %s in %s was invalid" token
token-number tokens)
(setq valid-tokens nil)))
+
(setq token-number (+ token-number 1)))
+
(when valid-tokens
;; (message "Tokens was valid, decreasing indent %s - %s"
(line-beginning-position) (line-end-position))
+
+ ;; If last token is a opening brace indent line one lesser
column
+ (when last-token-is-open-brace
+ (setq indent-end (- indent-end 1)))
+
(setq indent-level (- indent-level (- indent-start
indent-end))))))
(when in-doc-comment
@@ -122,7 +139,7 @@
(boundp 'phps-mode/idle-interval))
;; (run-with-idle-timer phps-mode/idle-interval nil #'phps-mode/lex--RUN)
;; TODO Maybe use incremental lexer once it's working
- (run-with-idle-timer phps-mode/idle-interval nil
#'phps-mode/run-incremental-lex)
+ (run-with-idle-timer phps-mode/idle-interval nil
#'phps-mode/run-incremental-lex)
)
(when (or (not phps-mode/buffer-changes--start)
(< start phps-mode/buffer-changes--start))
diff --git a/phps-lexer.el b/phps-lexer.el
index 2baabc1..70359c0 100644
--- a/phps-lexer.el
+++ b/phps-lexer.el
@@ -1337,7 +1337,7 @@ ANY_CHAR'
;; TODO Here clear all tokens after previous-token-start and add
new tokens to stack
))
- (display-warning "phps-mode" (format "Found no state to rewind to for
%s in stack %s" change-start states))
+ ;; (display-warning "phps-mode" (format "Found no state to rewind to
for %s in stack %s, buffer point max: %s" change-start states (point-max)))
(phps-mode/lex--RUN)))
(setq phps-mode/buffer-changes--start nil)))
diff --git a/phps-test-functions.el b/phps-test-functions.el
index b4ef345..c24b35b 100644
--- a/phps-test-functions.el
+++ b/phps-test-functions.el
@@ -54,7 +54,6 @@
(phps-mode/with-test-buffer
"<html><head><title><?php if ($myCondition) {\nif ($mySeconCondition)
{\necho $title1;\n} ?></title><body>Bla bla</body></html>"
-
(goto-char 75)
(phps-mode/indent-line)
(let ((buffer-contents (buffer-substring-no-properties (point-min)
(point-max))))
@@ -62,7 +61,6 @@
(phps-mode/with-test-buffer
"<html><head><title><?php if ($myCondition) {\nif ($mySeconCondition)
{\necho $title2;\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))))
@@ -131,6 +129,14 @@
(let ((buffer-contents (buffer-substring-no-properties (point-min)
(point-max))))
(should (equal buffer-contents "<?php\nadd_filter(\n
\"views_{$screen->id}\",'__return_empty_array'\n);"))))
+ (phps-mode/with-test-buffer
+ "<?php\nif (random_expression(\ntrue\n)) {\nsome_logic_here();\n}"
+ (goto-char 36)
+ (phps-mode/indent-line)
+ ;; (message "Tokens %s point %s" phps-mode/lexer-tokens (point))
+ (let ((buffer-contents (buffer-substring-no-properties (point-min)
(point-max))))
+ (should (equal buffer-contents "<?php\nif (random_expression(\ntrue\n))
{\nsome_logic_here();\n}"))))
+
)
(defun phps-mode/test-functions--get-point-data ()
diff --git a/phps-test-parser.el b/phps-test-parser.el
index 1aab194..a8fef94 100644
--- a/phps-test-parser.el
+++ b/phps-test-parser.el
@@ -39,10 +39,10 @@
(defun phps-test-parser()
"Run test for lexer."
- (message "-- Running all tests for parser... --\n")
+ ;; (message "-- Running all tests for parser... --\n")
;; (setq debug-on-error t)
- (message "\n-- Ran all tests for parser. --")
+ ;; (message "\n-- Ran all tests for parser. --")
)
(phps-test-parser)
- [elpa] externals/phps-mode 58300fd 070/405: More updates of readme, (continued)
- [elpa] externals/phps-mode 58300fd 070/405: More updates of readme, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 86ec35f 066/405: Incremental lexer working somewhat, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode ec71e15 074/405: Fixed bug where token-numbers are not defined, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 236f05e 071/405: Updated makefile to not use hard-coded path to emacs, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode bf633d2 061/405: Added test for indent of final line of doc comment block, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode ba8165a 063/405: Fixed bug with brace count not including braces inside double quoted strings, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 99dfc68 067/405: Incremental-lexer deletes affected overlays, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 90d059c 064/405: Fixed bug in incremental lexer logic, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 1be9270 068/405: Updated README, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e57f1e1 075/405: Skipping indentation if it's already correct, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode c57fb5b 073/405: Improved indentation of trailing opening brace,
Stefan Monnier <=
- [elpa] externals/phps-mode 5e30a65 076/405: Added TODO items, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 94d4814 078/405: Added test for moving lexer tokens, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a59ef7b 079/405: More unit tests for moving lexer token positions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 287d934 077/405: Updated comments are made un-tested function for moving token positions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode b3821a1 080/405: Updated TODOs, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f4cd90e 072/405: Updated readme and makefile for running all tests, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode f79cf4f 081/405: Started on function for moving lexer states, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode e340279 082/405: Added unit tests for moving lexer-state positions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 89b12ab 084/405: Added autoloads and fixed bug with assigning variable, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a10cc79 085/405: Debugging a indentation case, Stefan Monnier, 2019/07/13