]> git.eshelyaron.com Git - emacs.git/commitdiff
Clean up treesit-default-defun-skipper and add comments
authorYuan Fu <casouri@gmail.com>
Thu, 29 Dec 2022 09:28:25 +0000 (01:28 -0800)
committerYuan Fu <casouri@gmail.com>
Thu, 29 Dec 2022 09:43:28 +0000 (01:43 -0800)
* lisp/treesit.el (treesit-default-defun-skipper): Clean up, fix some
small issue, add comment.

lisp/treesit.el

index 4ee0fba79b791685cb3d3a00d9c9aca9eba96822..0ba4395a6b45fe19afc8382c8b8550b1f214b176 100644 (file)
@@ -1744,13 +1744,17 @@ this function depends on `treesit-defun-type-regexp' and
 This function tries to move to the beginning of a line, either by
 moving to the empty newline after a defun, or to the beginning of
 the current line if the beginning of the defun is indented."
-  (cond ((and (looking-at (rx (* (or " " "\\t")) "\n"))
-              (not (looking-at (rx bol))))
-         (goto-char (match-end 0)))
-        ((save-excursion
-           (skip-chars-backward " \t")
-           (eq (point) (line-beginning-position)))
-         (goto-char (line-beginning-position)))))
+  ;; Moving forward, point at the end of a line and not already on an
+  ;; empty line: go to BOL of the next line (which hopefully is an
+  ;; empty line).
+  (cond ((and (looking-at (rx (* (or " " "\t")) "\n"))
+              (not (bolp)))
+         (forward-line 1))
+        ;; Moving backward, but there are some whitespace (and only
+        ;; whitespace) between point and BOL: go back to BOL.
+        ((looking-back (rx (+ (or " " "\t")))
+                       (line-beginning-position))
+         (beginning-of-line))))
 
 ;; prev-sibling:
 ;; 1. end-of-node before pos