branch: elpa/typst-ts-mode
commit dc4678aa5b5f7d9839f724867e6c3d2abebed741
Author: Meow King <mr.meowk...@anche.no>
Commit: Meow King <mr.meowk...@anche.no>

    fix(indentation): edge conditions
---
 typst-ts-mode.el | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/typst-ts-mode.el b/typst-ts-mode.el
index 444e97087b..cbd7299874 100644
--- a/typst-ts-mode.el
+++ b/typst-ts-mode.el
@@ -504,10 +504,6 @@ TYPES."
   ;; you can set `treesit--indent-verbose' variable to t to see which 
indentation
   ;; rule matches.
   `((typst
-     ;; ((lambda (node parent bol)
-     ;;    (message "%s %s %s" node parent bol)
-     ;;    nil) parent-bol 0)
-
      ((and (node-is ")") (parent-is "group")) parent-bol 0)
      ((and (node-is "}") (parent-is "block")) parent-bol 0)
      ((and (node-is "]") (parent-is "content")) parent-bol 0)
@@ -534,18 +530,18 @@ TYPES."
                                 (line-number-at-pos (point)))))
                          (prev-nonwhite-line-node
                           (treesit-node-at prev-nonwhite-pos))
+                         ((equal (treesit-node-type prev-nonwhite-line-node) 
"linebreak"))
+                         
                          (prev-nonwhite-line-heading-node
                           (save-excursion
                             (goto-char prev-nonwhite-pos)
                             (back-to-indentation)
                             (treesit-node-at (point))))
+                         ((equal (treesit-node-type 
prev-nonwhite-line-heading-node) "-"))
                          
                          (prev-nonwhite-line-top-node (treesit-node-parent
                                                        
prev-nonwhite-line-heading-node)))
-               (and
-                (equal (treesit-node-type prev-nonwhite-line-top-node) "item")
-                (equal (treesit-node-type prev-nonwhite-line-heading-node) "-")
-                (equal (treesit-node-type prev-nonwhite-line-node) 
"linebreak")))))
+               (equal (treesit-node-type prev-nonwhite-line-top-node) 
"item"))))
       parent-bol typst-ts-mode-indent-offset)
 
      ((and no-node
@@ -553,6 +549,14 @@ TYPES."
       ,(typst-ts-mode--ancestor-bol typst-ts-mode--bracket-node-types)
       typst-ts-mode-indent-offset)
 
+     ;; ((lambda (node parent bol)
+     ;;    (message "%s %s %s" node parent bol)
+     ;;    nil) parent-bol 0)
+
+     ((and no-node
+           (parent-is "source_file"))
+      prev-line 0)
+     
      (no-node parent-bol 0)))
   "Tree-sitter indent rules for `rust-ts-mode'.")
 
@@ -846,11 +850,14 @@ PROC: process; OUTPUT: new output from PROC."
 ARG.
 TODO lack of documentation."
   (interactive "P")
-  (let* ((cur-pos (point))
-         (cur-node (treesit-node-at cur-pos))
-         (cur-node-type (treesit-node-type cur-node)))
+  (when-let* ((cur-pos (point))
+              (cur-node (treesit-node-at cur-pos))
+              (cur-node-type (treesit-node-type cur-node))
+              (parent-node (treesit-node-parent cur-node))  ; could be nil
+              (parent-node-type (treesit-node-type parent-node)))
     (cond
-     ((equal cur-node-type "parbreak")
+     ((or (equal cur-node-type "parbreak")
+          (eq (point) (point-max)))
       (when-let* ((cur-line-bol
                    (save-excursion
                      (back-to-indentation)

Reply via email to