[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 4a6db125b9e: Fix treesit-indent-region
From: |
Yuan Fu |
Subject: |
emacs-29 4a6db125b9e: Fix treesit-indent-region |
Date: |
Wed, 1 Mar 2023 03:57:09 -0500 (EST) |
branch: emacs-29
commit 4a6db125b9ee5d681aa09d86c9283526f204b274
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
Fix treesit-indent-region
Fix it for the case where there is no suitable rule for the line.
Right now treesit-indent-region would indent the line to column 0.
After the change the indentation is not altered.
* lisp/treesit.el (treesit-indent-region): Handle the case where
ANCHOR or OFFSET is nil specially.
---
lisp/treesit.el | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 052f641abfd..fe9ed399773 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -1532,14 +1532,24 @@ Similar to `treesit-indent', but indent a region
instead."
(aref meta-vec (+ 1 (* idx meta-len))) nil)
(pcase-let* ((`(,anchor . ,offset) (treesit--indent-1))
(marker (aref meta-vec (* idx meta-len))))
- ;; Set ANCHOR.
- (when anchor
+ (if (not (and anchor offset))
+ ;; No indent for this line, either...
+ (if (markerp marker)
+ (progn
+ ;; ... Set marker and offset to do a dummy
+ ;; indent, or...
+ (back-to-indentation)
+ (move-marker marker (point))
+ (setf (aref meta-vec (+ 1 (* idx meta-len))) 0))
+ ;; ...Set anchor to nil so no indent is performed.
+ (setf (aref meta-vec (* idx meta-len)) nil))
+ ;; Set ANCHOR.
(if (markerp marker)
(move-marker marker anchor)
(setf (aref meta-vec (* idx meta-len))
- (copy-marker anchor t))))
- ;; SET OFFSET.
- (setf (aref meta-vec (+ 1 (* idx meta-len))) offset)))
+ (copy-marker anchor t)))
+ ;; SET OFFSET.
+ (setf (aref meta-vec (+ 1 (* idx meta-len))) offset))))
(cl-incf idx)
(setq lines-left-to-move (forward-line 1)))
;; Now IDX = last valid IDX + 1.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-29 4a6db125b9e: Fix treesit-indent-region,
Yuan Fu <=