[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/phps-mode e1b7160 053/405: (newline-and-indent) now wor
From: |
Stefan Monnier |
Subject: |
[elpa] externals/phps-mode e1b7160 053/405: (newline-and-indent) now working |
Date: |
Sat, 13 Jul 2019 09:59:41 -0400 (EDT) |
branch: externals/phps-mode
commit e1b71600d5a1b1c488d2ec15fec0af9ecd6112c6
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
(newline-and-indent) now working
---
phps-functions.el | 97 +++++++++++++++++++++++++++----------------------------
1 file changed, 48 insertions(+), 49 deletions(-)
diff --git a/phps-functions.el b/phps-functions.el
index 0990be5..85efa86 100644
--- a/phps-functions.el
+++ b/phps-functions.el
@@ -41,58 +41,57 @@
(autoload 'phps-mode/lexer-get-point-data "phps-lexer")
-;; TODO Should also format white-space inside the line, i.e. after function
declarations
+;; TODO Should also format white-space inside the line, i.e. after function
declarations?
+;; TODO Should indent doc blocks with 1 space
(defun phps-mode/indent-line ()
"Indent line."
(let ((data (phps-mode/lexer-get-point-data)))
- (save-excursion
- (beginning-of-line)
- (let* ((start (nth 0 data))
- (end (nth 1 data))
- (in-scripting (nth 0 start)))
-
- ;; Are we in scripting?
- (when in-scripting
- (let ((start-bracket-level (nth 1 start))
- (start-parenthesis-level (nth 2 start))
- (start-token-number (nth 4 start))
- (end-bracket-level (nth 1 end))
- (end-parenthesis-level (nth 2 end))
- (end-token-number (nth 4 end)))
- (let* ((indent-start (+ start-bracket-level
start-parenthesis-level))
- (indent-end (+ end-bracket-level end-parenthesis-level))
- (indent-level indent-start))
- ;; (message "indent-start %s, indent-end %s" indent-start
indent-end)
- (when (and
- (boundp 'phps-mode/lexer-tokens)
- (> indent-start indent-end))
- (let ((token-number start-token-number)
- (valid-tokens t))
- ;; (message "token start %s, token end %s"
start-token-number end-token-number)
- (while (and valid-tokens
- (<= token-number end-token-number))
- (let ((token (car (nth token-number
phps-mode/lexer-tokens)))
- (token-start (car (cdr (nth token-number
phps-mode/lexer-tokens)))))
- (when (and valid-tokens
- (>= token-start (point))
- (not (or
- (string= token "{")
- (string= token "}")
- (string= token "(")
- (string= token ")")
- (string= token "[")
- (string= token "]")
- (string= token ";")
- (eq token 'T_CLOSE_TAG))))
- ;; (message "Token %s - %s in %s was invalid" token
token-number phps-mode/lexer-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))
- (setq indent-level (- indent-level (- indent-start
indent-end))))))
- ;; (message "inside scripting, start: %s, end: %s, indenting to
column %s " start end indent-level)
- (indent-line-to (* indent-level tab-width))
- (phps-mode/run-incremental-lex))))))))
+ (let* ((start (nth 0 data))
+ (end (nth 1 data))
+ (in-scripting (nth 0 start)))
+
+ ;; Are we in scripting?
+ (when in-scripting
+ (let ((start-bracket-level (nth 1 start))
+ (start-parenthesis-level (nth 2 start))
+ (start-token-number (nth 4 start))
+ (end-bracket-level (nth 1 end))
+ (end-parenthesis-level (nth 2 end))
+ (end-token-number (nth 4 end)))
+ (let* ((indent-start (+ start-bracket-level start-parenthesis-level))
+ (indent-end (+ end-bracket-level end-parenthesis-level))
+ (indent-level indent-start))
+ ;; (message "indent-start %s, indent-end %s" indent-start
indent-end)
+ (when (and
+ (boundp 'phps-mode/lexer-tokens)
+ (> indent-start indent-end))
+ (let ((token-number start-token-number)
+ (valid-tokens t))
+ ;; (message "token start %s, token end %s" start-token-number
end-token-number)
+ (while (and valid-tokens
+ (<= token-number end-token-number))
+ (let ((token (car (nth token-number phps-mode/lexer-tokens)))
+ (token-start (car (cdr (nth token-number
phps-mode/lexer-tokens)))))
+ (when (and valid-tokens
+ (>= token-start (point))
+ (not (or
+ (string= token "{")
+ (string= token "}")
+ (string= token "(")
+ (string= token ")")
+ (string= token "[")
+ (string= token "]")
+ (string= token ";")
+ (eq token 'T_CLOSE_TAG))))
+ ;; (message "Token %s - %s in %s was invalid" token
token-number phps-mode/lexer-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))
+ (setq indent-level (- indent-level (- indent-start
indent-end))))))
+ ;; (message "inside scripting, start: %s, end: %s, indenting to
column %s " start end indent-level)
+ (indent-line-to (* indent-level tab-width))
+ (phps-mode/run-incremental-lex)))))))
;; TODO Implement this
(defun phps-mode/indent-region ()
- [elpa] externals/phps-mode b629c4b 050/405: Updated comments and TODOs, (continued)
- [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, 2019/07/13
- [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 <=
- [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
- [elpa] externals/phps-mode 3f4c344 056/405: Fixed detection of doc comment blocks, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 3824abf 060/405: Resolved indent with trailing parenthesis, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode a61cb8b 062/405: Fixed issue with doc comment indentation, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 6c597fb 065/405: Updated readme, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 0ca9fe8 058/405: Detection of point inside doc comment block improved, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 67f9a7a 057/405: Moved lexer-get-point-data to functions, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 27cd705 069/405: Updated readme, Stefan Monnier, 2019/07/13
- [elpa] externals/phps-mode 58300fd 070/405: More updates of readme, Stefan Monnier, 2019/07/13