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.
This commit is contained in:
parent
7ef9a8210c
commit
4a6db125b9
1 changed files with 15 additions and 5 deletions
|
@ -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))))
|
||||
(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.
|
||||
(when anchor
|
||||
(if (markerp marker)
|
||||
(move-marker marker anchor)
|
||||
(setf (aref meta-vec (* idx meta-len))
|
||||
(copy-marker anchor t))))
|
||||
(copy-marker anchor t)))
|
||||
;; SET OFFSET.
|
||||
(setf (aref meta-vec (+ 1 (* idx meta-len))) 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.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue