emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-29 4c16fd3a512 2/2: Change tree-sitter indent anchor 'point-min' t


From: Yuan Fu
Subject: emacs-29 4c16fd3a512 2/2: Change tree-sitter indent anchor 'point-min' to 'column-0'
Date: Sat, 4 Mar 2023 04:28:40 -0500 (EST)

branch: emacs-29
commit 4c16fd3a51286e1b1685bfb28e0cd6ae2358c37d
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>

    Change tree-sitter indent anchor 'point-min' to 'column-0'
    
    Point-min isn't necessarily at column 0, using line-beginning-position
    is better. column-0 is also more intuitive.
    
    * doc/lispref/modes.texi (Parser-based Indentation): Update manual.
    * lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles):
    * lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules):
    * lisp/progmodes/rust-ts-mode.el (rust-ts-mode--indent-rules):
    * lisp/progmodes/typescript-ts-mode.el:
    (typescript-ts-mode--indent-rules): Change point-min to column-0.
    * lisp/treesit.el (treesit-simple-indent-presets): Change point-min to
    column-0.
---
 doc/lispref/modes.texi               |  6 +++---
 lisp/progmodes/c-ts-mode.el          | 16 ++++++++--------
 lisp/progmodes/java-ts-mode.el       | 20 ++++++++++----------
 lisp/progmodes/rust-ts-mode.el       |  2 +-
 lisp/progmodes/typescript-ts-mode.el |  2 +-
 lisp/treesit.el                      |  9 ++++++---
 6 files changed, 29 insertions(+), 26 deletions(-)

diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index fedb2804f26..c12224230fc 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -5117,10 +5117,10 @@ This anchor is a function that is called with 3 
arguments: @var{node},
 @var{parent}, and @var{bol}, and returns the first non-whitespace
 character on the previous line.
 
-@item point-min
+@item column-0
 This anchor is a function that is called with 3 arguments: @var{node},
-@var{parent}, and @var{bol}, and returns the beginning of the buffer.
-This is useful as the beginning of the buffer is always at column 0.
+@var{parent}, and @var{bol}, and returns the beginning of the current
+line, which is at column 0.
 
 @item comment-start
 This anchor is a function that is called with 3 arguments: @var{node},
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index eb07eb74676..05c471e6fb4 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -309,8 +309,8 @@ PARENT, BOL, ARGS are the same as other anchor functions."
   "Indent rules supported by `c-ts-mode'.
 MODE is either `c' or `cpp'."
   (let ((common
-         `(((parent-is "translation_unit") point-min 0)
-           ((query "(ERROR (ERROR)) @indent") point-min 0)
+         `(((parent-is "translation_unit") column-0 0)
+           ((query "(ERROR (ERROR)) @indent") column-0 0)
            ((node-is ")") parent 1)
            ((node-is "]") parent-bol 0)
            ((node-is "else") parent-bol 0)
@@ -330,11 +330,11 @@ MODE is either `c' or `cpp'."
            ((parent-is "labeled_statement")
             c-ts-mode--standalone-grandparent c-ts-mode-indent-offset)
 
-           ((node-is "preproc") point-min 0)
-           ((node-is "#endif") point-min 0)
-           ((match "preproc_call" "compound_statement") point-min 0)
+           ((node-is "preproc") column-0 0)
+           ((node-is "#endif") column-0 0)
+           ((match "preproc_call" "compound_statement") column-0 0)
 
-           ((n-p-gp nil "preproc" "translation_unit") point-min 0)
+           ((n-p-gp nil "preproc" "translation_unit") column-0 0)
            ((n-p-gp nil "\n" "preproc") great-grand-parent 
c-ts-mode--preproc-offset)
            ((parent-is "preproc") grand-parent c-ts-mode-indent-offset)
 
@@ -392,14 +392,14 @@ MODE is either `c' or `cpp'."
     `((gnu
        ;; Prepend rules to set highest priority
        ((match "while" "do_statement") parent 0)
-       (c-ts-mode--top-level-label-matcher point-min 1)
+       (c-ts-mode--top-level-label-matcher column-0 1)
        ,@common)
       (k&r ,@common)
       (linux
        ;; Reference:
        ;; https://www.kernel.org/doc/html/latest/process/coding-style.html,
        ;; and script/Lindent in Linux kernel repository.
-       ((node-is "labeled_statement") point-min 0)
+       ((node-is "labeled_statement") column-0 0)
        ,@common)
       (bsd
        ((node-is "}") parent-bol 0)
diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el
index 827d38e30c2..5cd4acd301d 100644
--- a/lisp/progmodes/java-ts-mode.el
+++ b/lisp/progmodes/java-ts-mode.el
@@ -69,10 +69,10 @@
 
 (defvar java-ts-mode--indent-rules
   `((java
-     ((parent-is "program") point-min 0)
+     ((parent-is "program") column-0 0)
      ((match "}" "element_value_array_initializer")
       parent-bol 0)
-     ((node-is "}") point-min c-ts-common-statement-offset)
+     ((node-is "}") column-0 c-ts-common-statement-offset)
      ((node-is ")") parent-bol 0)
      ((node-is "else") parent-bol 0)
      ((node-is "]") parent-bol 0)
@@ -80,15 +80,15 @@
       c-ts-common-comment-start-after-first-star -1)
      ((parent-is "comment") prev-adaptive-prefix 0)
      ((parent-is "text_block") no-indent)
-     ((parent-is "class_body") point-min c-ts-common-statement-offset)
+     ((parent-is "class_body") column-0 c-ts-common-statement-offset)
      ((parent-is "array_initializer") parent-bol java-ts-mode-indent-offset)
-     ((parent-is "annotation_type_body") point-min 
c-ts-common-statement-offset)
-     ((parent-is "interface_body") point-min c-ts-common-statement-offset)
-     ((parent-is "constructor_body") point-min c-ts-common-statement-offset)
+     ((parent-is "annotation_type_body") column-0 c-ts-common-statement-offset)
+     ((parent-is "interface_body") column-0 c-ts-common-statement-offset)
+     ((parent-is "constructor_body") column-0 c-ts-common-statement-offset)
      ((parent-is "enum_body_declarations") parent-bol 0)
-     ((parent-is "enum_body") point-min c-ts-common-statement-offset)
-     ((parent-is "switch_block") point-min c-ts-common-statement-offset)
-     ((parent-is "record_declaration_body") point-min 
c-ts-common-statement-offset)
+     ((parent-is "enum_body") column-0 c-ts-common-statement-offset)
+     ((parent-is "switch_block") column-0 c-ts-common-statement-offset)
+     ((parent-is "record_declaration_body") column-0 
c-ts-common-statement-offset)
      ((query "(method_declaration (block _ @indent))") parent-bol 
java-ts-mode-indent-offset)
      ((query "(method_declaration (block (_) @indent))") parent-bol 
java-ts-mode-indent-offset)
      ((parent-is "local_variable_declaration") parent-bol 
java-ts-mode-indent-offset)
@@ -121,7 +121,7 @@
      ((parent-is "case_statement") parent-bol java-ts-mode-indent-offset)
      ((parent-is "labeled_statement") parent-bol java-ts-mode-indent-offset)
      ((parent-is "do_statement") parent-bol java-ts-mode-indent-offset)
-     ((parent-is "block") point-min c-ts-common-statement-offset)))
+     ((parent-is "block") column-0 c-ts-common-statement-offset)))
   "Tree-sitter indent rules.")
 
 (defvar java-ts-mode--keywords
diff --git a/lisp/progmodes/rust-ts-mode.el b/lisp/progmodes/rust-ts-mode.el
index 2d5c3211c1a..696c2633231 100644
--- a/lisp/progmodes/rust-ts-mode.el
+++ b/lisp/progmodes/rust-ts-mode.el
@@ -71,7 +71,7 @@
 
 (defvar rust-ts-mode--indent-rules
   `((rust
-     ((parent-is "source_file") point-min 0)
+     ((parent-is "source_file") column-0 0)
      ((node-is ")") parent-bol 0)
      ((node-is "]") parent-bol 0)
      ((node-is "}") (and parent parent-bol) 0)
diff --git a/lisp/progmodes/typescript-ts-mode.el 
b/lisp/progmodes/typescript-ts-mode.el
index 65fba72373c..a9ca85d5d35 100644
--- a/lisp/progmodes/typescript-ts-mode.el
+++ b/lisp/progmodes/typescript-ts-mode.el
@@ -69,7 +69,7 @@
   "Rules used for indentation.
 Argument LANGUAGE is either `typescript' or `tsx'."
   `((,language
-     ((parent-is "program") point-min 0)
+     ((parent-is "program") column-0 0)
      ((node-is "}") parent-bol 0)
      ((node-is ")") parent-bol 0)
      ((node-is "]") parent-bol 0)
diff --git a/lisp/treesit.el b/lisp/treesit.el
index dbd102d00b3..19484ceb0c2 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -1254,7 +1254,10 @@ See `treesit-simple-indent-presets'.")
                              (goto-char bol)
                              (forward-line -1)
                              (skip-chars-forward " \t"))))
-        (cons 'point-min (lambda (&rest _) (point-min)))
+        (cons 'column-0 (lambda (_n _p bol &rest _)
+                          (save-excursion
+                            (goto-char bol)
+                            (line-beginning-position))))
         ;; TODO: Document.
         (cons 'and (lambda (&rest fns)
                      (lambda (node parent bol &rest _)
@@ -1358,9 +1361,9 @@ prev-line
 
     Returns the first non-whitespace character on the previous line.
 
-point-min
+column-0
 
-    Returns the beginning of buffer, which is always at column 0.
+    Returns the beginning of the current line, which is at column 0.
 
 comment-start
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]