branch: externals/phps-mode
commit bc5039e32f3ebd3adf4e7d5c6cbb36d9cfc97139
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Created custom determine string indentation function
---
phps-mode-indent.el | 24 +++++++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
diff --git a/phps-mode-indent.el b/phps-mode-indent.el
index c693027643..e6acb397b0 100644
--- a/phps-mode-indent.el
+++ b/phps-mode-indent.el
@@ -10,6 +10,23 @@
;;; Code:
+(defun phps-mode-indent--string-indentation (string)
+ "Count indentation of STRING."
+ (let ((occurences 0)
+ (start 0)
+ (length (length string)))
+ (when (< start length)
+ (let ((match-start (string-match "[\t ]" string start)))
+ (while (and
+ match-start
+ (= match-start start))
+ (setq occurences (1+ occurences))
+ (setq start (match-end 0))
+ (if (< start length)
+ (setq match-start (string-match "[\t ]" string start))
+ (setq match-start nil)))))
+ occurences))
+
(defun phps-mode-indent-line (&optional initial-point)
"Apply alternative indentation at INITIAL-POINT here."
(let ((point))
@@ -56,11 +73,9 @@
(setq
move-length (1+ move-length)))
- (message "Previous non-empty line: %S" line-string)
-
(if line-is-empty-p
(indent-line-to 0)
- (let* ((old-indentation (current-indentation))
+ (let* ((old-indentation (phps-mode-indent--string-indentation
line-string))
(current-line-starts-with-closing-bracket
(phps-mode-indent--string-starts-with-closing-bracket-p current-line-string))
(line-starts-with-closing-bracket
(phps-mode-indent--string-starts-with-closing-bracket-p line-string))
(line-starts-with-opening-doc-comment
(phps-mode-indent--string-starts-with-opening-doc-comment-p line-string))
@@ -69,6 +84,8 @@
(line-ends-with-terminus
(phps-mode-indent--string-ends-with-terminus-p line-string))
(bracket-level (phps-mode-indent--get-string-brackets-count
line-string))
(line-ends-with-implements-p (string-match-p "[\t
]+implements$" line-string)))
+ (message "Previous non-empty line: %S with indentation: %S"
line-string old-indentation)
+
(setq new-indentation old-indentation)
(goto-char point)
@@ -148,6 +165,7 @@
;; Decrease indentation if current line decreases in bracket
level
(when (< new-indentation 0)
(setq new-indentation 0))
+ (message "new-indentation: %S bracket-level: %S old-indentation:
%S" new-indentation bracket-level old-indentation)
(indent-line-to new-indentation)))))
;; Only move to end of line if point is the current point and is at end
of line