emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/treesit-fold 4d8e9ceef7 405/417: Add more nodes to elisp p


From: ELPA Syncer
Subject: [nongnu] elpa/treesit-fold 4d8e9ceef7 405/417: Add more nodes to elisp parser, remove `s` dependency, add vimscript (#6)
Date: Mon, 1 Jul 2024 10:03:10 -0400 (EDT)

branch: elpa/treesit-fold
commit 4d8e9ceef792522f3dfe60621d8ea7727a493273
Author: DevelopmentCool2449 
<163072436+DevelopmentCool2449@users.noreply.github.com>
Commit: GitHub <noreply@github.com>

    Add more nodes to elisp parser, remove `s` dependency, add vimscript (#6)
    
    * Add more nodes to elisp parser, remove `s` dependency, add vimscript
    
    This commit includes some new features and changes:
    * Add more nodes/rule set to elisp parser.
      This add support for folding lists and special forms such as `if`,
      `defvar` and etc.
    * Remove dependency in `s.el` library.
      There was only 1 function from s.el in use, it was replaced by
      its built-in alternative.
    * Add vimscript support through vimscript-ts-mode.
      It only add folding for `functions` and `if` conditionals.
    * Add more missing `*-ts-modes` to `treesit-fold-range-alist` list.
      This also rmeove some modes that doesn't exists or unlikely to
      exist.
    
    * Remove elisp parser changes from treesit-fold-parsers.el
    
    * Add awk parser function
---
 Eask                    |  1 -
 README.md               | 23 +++++++++++------------
 treesit-fold-parsers.el | 10 ++++++++++
 treesit-fold-summary.el |  4 +---
 treesit-fold.el         | 32 ++++++++++++++++++++++++++------
 5 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/Eask b/Eask
index 852b09f18f..8848691970 100644
--- a/Eask
+++ b/Eask
@@ -14,7 +14,6 @@
 (source "melpa")
 
 (depends-on "emacs" "29.1")
-(depends-on "s")
 (depends-on "fringe-helper")
 
 (setq network-security-level 'low)  ; see 
https://github.com/jcs090218/setup-emacs-windows/issues/156#issuecomment-932956432
diff --git a/README.md b/README.md
index 3049ee448e..e4961f9cc7 100644
--- a/README.md
+++ b/README.md
@@ -26,7 +26,7 @@ the tree-sitter syntax tree.
 - [🖥 Usage](#🖥-usage)
   - [📇 Commands](#📇-commands)
   - [🔨 Supported languages](#🔨-supported-languages)
-    - [🚀 Add support for non-ts modes](#🚀-Add support for non-ts modes)
+    - [🚀 Add support for non-ts modes](#🚀-Add-support-for-non-ts-modes)
 - [📝 Customization](#📝-customization)
   - [⚪ Folding on new nodes](#⚪-folding-on-new-nodes)
     - [❔ Example](#❔-example)
@@ -198,8 +198,8 @@ mode and the value being another alist of fold definitions.
 So you can select whatever node that you want to fold on it.
 
 To find what node you'll want to fold closed, refer to the
-[tree-sitter 
documentation](https://emacs-tree-sitter.github.io/getting-started/#view-the-syntax-tree)
-about viewing nodes. `tree-sitter-debug` and `tree-sitter-query-builder`
+[Emacs tree-sitter 
documentation](https://www.gnu.org/software/emacs/manual/html_node/elisp/Pattern-Matching.html)
+about viewing nodes. `treesit-inspect-mode` and `treesit-explore-mode`
 are both very useful for this.
 
 For the folding functions, treesit-fold provides some default
@@ -463,16 +463,16 @@ Please note that turning on 
`treesit-fold-indicators-mode` automatically turns o
 `treesit-fold-mode` as well. Though, turning off 
`treesit-fold-indicators-mode` does not
 turn off `treesit-fold-mode`
 
-- To enable this automatically whenever `tree-sitter-mode` is enabled, use the 
global indicator mode:
+- To enable this automatically whenever a buffer has a tree-sitter parser, use 
the global indicator mode:
 
   ```elisp
   (global-treesit-fold-indicators-mode 1)
   ```
 
-  Else, a hook can be added to tree-sitter directly.
+  Else, you can add a hook directly.
 
   ```elisp
-  (add-hook 'tree-sitter-after-on-hook #'treesit-fold-indicators-mode)
+  (add-hook 'c-ts-mode-hook #'treesit-fold-indicators-mode)
   ```
 
 - To switch to left/right fringe: (Default is `left-fringe`)
@@ -585,9 +585,9 @@ This plugin makes line comment into foldable range.
 [![Donate on 
paypal](https://img.shields.io/badge/paypal-donate-1?logo=paypal&color=blue)](https://www.paypal.me/jcs090218)
 [![Become a 
patron](https://img.shields.io/badge/patreon-become%20a%20patron-orange.svg?logo=patreon)](https://www.patreon.com/jcs090218)
 
-Enable `tree-sitter-mode` first, then `tree-sitter-query-builder` is useful to 
test
+Ensure your buffer has a tree-sitter parser first, then `treesit-explore-mode` 
is useful to test
 out queries that determine what syntax nodes should be foldable and how to fold
-them. 
[emacs-tree-sitter](https://ubolonton.github.io/emacs-tree-sitter/syntax-highlighting/queries/)
+them. [Emacs 
repository](https://git.savannah.gnu.org/cgit/emacs.git/tree/admin/notes/tree-sitter/starter-guide#n130)
 and [Emacs tree-sitter 
manual](https://www.gnu.org/software/emacs/manual/html_node/elisp/Pattern-Matching.html)
 has an excellent documentation on how to write `tree-sitter` queries.
 
 ### 🔬 Development
@@ -658,13 +658,12 @@ To look for the correct node you have three options:
   This will display a buffer with the whole s-expr representing nodes at point 
from the current file/buffer.
 - `M-x treesit-inspect-node-at-point` in your function to display what your
   function is seeing.
-- Also you can use `M-x treesit-inspect-mode` which diplay in the mode-line 
the current node at point.
+- use `M-x treesit-inspect-mode` which diplay in the mode-line the current 
node at point.
 
 > ⚠️ Warning
 >
-> Make sure you look into the correct repository. Repositories are managed
-> under 
[tree-sitter-langs](https://github.com/emacs-tree-sitter/tree-sitter-langs)'s
-> using git submodule. Some tree-sitter module aren't using the latest version!
+> Make sure you look into the correct repository. Some repositories are managed
+> under https://github.com/tree-sitter/[lang].
 
 ### ❓ How to create a summary parser?
 
diff --git a/treesit-fold-parsers.el b/treesit-fold-parsers.el
index ed02f7ecfa..02bf77833a 100644
--- a/treesit-fold-parsers.el
+++ b/treesit-fold-parsers.el
@@ -134,6 +134,11 @@
                  (t
                   (treesit-fold-range-c-like-comment node offset))))))))
 
+(defun treesit-fold-parsers-awk ()
+  "Rule set for Awk."
+  ;; TODO: Complete this function
+  (append (treesit-fold-parsers-c)))
+
 (defun treesit-fold-parsers-bash ()
   "Rule set for Bash."
   '((compound_statement . treesit-fold-range-seq)
@@ -664,6 +669,11 @@
     (enumeration_type_definition . treesit-fold-range-seq)
     (comment                     . treesit-fold-range-lua-comment)))
 
+(defun treesit-fold-parsers-vimscript ()
+  "Rule set for Vimscript."
+  '((function_definition . treesit-fold-range-vimscript-function)
+    (if_statement        . (treesit-fold-range-seq 1 -4))))
+
 (defun treesit-fold-parsers-xml ()
   "Rule set for XML."
   '((element . treesit-fold-range-html)
diff --git a/treesit-fold-summary.el b/treesit-fold-summary.el
index 0f384f3e5d..e1d85ec052 100644
--- a/treesit-fold-summary.el
+++ b/treesit-fold-summary.el
@@ -25,8 +25,6 @@
 
 ;;; Code:
 
-(require 's)
-
 (require 'treesit-fold-util)
 
 (defcustom treesit-fold-summary-show t
@@ -105,7 +103,7 @@ type of content by checking the word boundary's existence."
 (defun treesit-fold-summary-csharp-vsdoc (doc-str)
   "Extract summary from DOC-STR in C# vsdoc."
   (let ((type-triple (string-match-p "///" doc-str)))
-    (setq doc-str (s-replace-regexp "<[/]*[^>]+." "" doc-str)) ; should use 
`replace-regexp-in-string'?
+    (setq doc-str (replace-regexp-in-string "<[/]*[^>]+." "" doc-str))
     (treesit-fold-summary--generic doc-str (if type-triple "///" "//"))))
 
 (defun treesit-fold-summary-csharp (doc-str)
diff --git a/treesit-fold.el b/treesit-fold.el
index 4409c53193..8ae17e5a57 100644
--- a/treesit-fold.el
+++ b/treesit-fold.el
@@ -9,7 +9,7 @@
 ;;         Shen, Jen-Chieh <jcs090218@gmail.com>
 ;; URL: https://github.com/emacs-tree-sitter/treesit-fold
 ;; Version: 0.1.0
-;; Package-Requires: ((emacs "29.1") (s "1.9.0") (fringe-helper "1.0.1"))
+;; Package-Requires: ((emacs "29.1") (fringe-helper "1.0.1"))
 ;; Keywords: convenience folding tree-sitter
 
 ;; This file is NOT part of GNU Emacs.
@@ -40,7 +40,6 @@
 (require 'seq)
 (require 'subr-x)
 
-(require 's)
 (require 'treesit)
 
 (require 'treesit-fold-util)
@@ -63,7 +62,8 @@
     (agda-mode              . ,(treesit-fold-parsers-agda))
     (arduino-mode           . ,(treesit-fold-parsers-arduino))
     (asm-mode               . ,(treesit-fold-parsers-asm))
-    (awk-ts-mode            . ,(treesit-fold-parsers-c))
+    (awk-mode               . ,(treesit-fold-parsers-awk))
+    (awk-ts-mode            . ,(treesit-fold-parsers-awk))
     (fasm-mode              . ,(treesit-fold-parsers-asm))
     (masm-mode              . ,(treesit-fold-parsers-asm))
     (nasm-mode              . ,(treesit-fold-parsers-asm))
@@ -124,6 +124,7 @@
     (julia-mode             . ,(treesit-fold-parsers-julia))
     (julia-ts-mode          . ,(treesit-fold-parsers-julia))
     (kotlin-mode            . ,(treesit-fold-parsers-kotlin))
+    (kotlin-ts-mode         . ,(treesit-fold-parsers-kotlin))
     (latex-mode             . ,(treesit-fold-parsers-latex))
     (latex-ts-mode          . ,(treesit-fold-parsers-latex))
     (LaTeX-mode             . ,(treesit-fold-parsers-latex))
@@ -141,19 +142,20 @@
     (makefile-bsdmake-mode  . ,(treesit-fold-parsers-make))
     (makefile-imake-mode    . ,(treesit-fold-parsers-make))
     (markdown-mode          . ,(treesit-fold-parsers-markdown))
+    (markdown-ts-mode       . ,(treesit-fold-parsers-markdown))
     (matlab-mode            . ,(treesit-fold-parsers-matlab))
     (mermaid-mode           . ,(treesit-fold-parsers-mermaid))
+    (mermaid-ts-mode        . ,(treesit-fold-parsers-mermaid))
     (ninja-mode             . ,(treesit-fold-parsers-ninja))
     (noir-mode              . ,(treesit-fold-parsers-noir))
+    (noir-ts-mode           . ,(treesit-fold-parsers-noir))
     (nix-mode               . ,(treesit-fold-parsers-nix))
     (nix-ts-mode            . ,(treesit-fold-parsers-nix))
     (ocaml-mode             . ,(treesit-fold-parsers-ocaml))
     (ocaml-ts-mode          . ,(treesit-fold-parsers-ocaml))
     (org-mode               . ,(treesit-fold-parsers-org))
     (pascal-mode            . ,(treesit-fold-parsers-pascal))
-    (pascal-ts-mode         . ,(treesit-fold-parsers-pascal))
     (perl-mode              . ,(treesit-fold-parsers-perl))
-    (perl-ts-mode           . ,(treesit-fold-parsers-perl))
     (php-mode               . ,(treesit-fold-parsers-php))
     (php-ts-mode            . ,(treesit-fold-parsers-php))
     (python-mode            . ,(treesit-fold-parsers-python))
@@ -167,9 +169,9 @@
     (rust-ts-mode           . ,(treesit-fold-parsers-rust))
     (rustic-mode            . ,(treesit-fold-parsers-rust))
     (scheme-mode            . ,(treesit-fold-parsers-scheme))
-    (scheme-ts-mode         . ,(treesit-fold-parsers-scheme))
     (sh-mode                . ,(treesit-fold-parsers-bash))
     (scala-mode             . ,(treesit-fold-parsers-scala))
+    (scala-ts-mode          . ,(treesit-fold-parsers-scala))
     (sql-mode               . ,(treesit-fold-parsers-sql))
     (svelte-mode            . ,(treesit-fold-parsers-svelte))
     (swift-mode             . ,(treesit-fold-parsers-swift))
@@ -179,12 +181,17 @@
     (conf-toml-mode         . ,(treesit-fold-parsers-toml))
     (tuareg-mode            . ,(treesit-fold-parsers-ocaml))
     (typescript-mode        . ,(treesit-fold-parsers-typescript))
+    (typescript-ts-mode     . ,(treesit-fold-parsers-typescript))
     (tsx-ts-mode            . ,(treesit-fold-parsers-typescript))
     (verilog-mode           . ,(treesit-fold-parsers-verilog))
+    (verilog-ts-mode        . ,(treesit-fold-parsers-verilog))
     (vhdl-mode              . ,(treesit-fold-parsers-vhdl))
+    (vhdl-ts-mode           . ,(treesit-fold-parsers-vhdl))
+    (vimscript-ts-mode      . ,(treesit-fold-parsers-vimscript))
     (nxml-mode              . ,(treesit-fold-parsers-xml))
     (xml-ts-mode            . ,(treesit-fold-parsers-xml))
     (yaml-mode              . ,(treesit-fold-parsers-yaml))
+    (yaml-ts-mode           . ,(treesit-fold-parsers-yaml))
     (k8s-mode               . ,(treesit-fold-parsers-yaml))
     (zig-mode               . ,(treesit-fold-parsers-zig)))
   "An alist of (major-mode . (foldable-node-type . function)).
@@ -399,6 +406,7 @@ This function is borrowed from `tree-sitter-node-at-point'."
                                         (treesit-fold-summary--get 
(buffer-substring beg end)))
                                    (propertize treesit-fold-replacement
                                                'mouse-face 
'treesit-fold-replacement-mouse-face
+                                               'help-echo "mouse-1: unfold 
this node"
                                                'keymap map)))
       (overlay-put ov 'face 'treesit-fold-replacement-face)
       (overlay-put ov 'modification-hooks '(treesit-fold--on-change))
@@ -1458,6 +1466,18 @@ more information."
       (setq end (treesit-fold--last-eol end)))
     (treesit-fold--cons-add (cons beg end) offset)))
 
+(defun treesit-fold-range-vimscript-function (node offset)
+  "Return the fold range for `function!' and `func' NODE
+in Vimscript.
+
+For arguments NODE and OFFSET, see function `treesit-fold-range-seq' for
+more information."
+  (when-let* ((param-node (treesit-node-child node 1))
+              (beg (treesit-node-start param-node))
+              (end (treesit-node-end node)))
+    (unless treesit-fold-on-next-line  ; display nicely
+      (setq beg (treesit-fold--last-eol beg)))
+    (treesit-fold--cons-add (cons beg end) offset)))
 
 (provide 'treesit-fold)
 ;;; treesit-fold.el ends here



reply via email to

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