branch: externals/phps-mode
commit e1b71600d5a1b1c488d2ec15fec0af9ecd6112c6
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
(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 ()