Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dmille56/treesit-jump
Jump around your source code in emacs using treesit and avy
https://github.com/dmille56/treesit-jump
avy emacs gptel tree-sitter
Last synced: 29 days ago
JSON representation
Jump around your source code in emacs using treesit and avy
- Host: GitHub
- URL: https://github.com/dmille56/treesit-jump
- Owner: dmille56
- License: apache-2.0
- Created: 2024-02-24T05:36:30.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-29T09:52:15.000Z (6 months ago)
- Last Synced: 2024-09-27T10:40:13.212Z (about 1 month ago)
- Topics: avy, emacs, gptel, tree-sitter
- Language: Scheme
- Homepage:
- Size: 78.1 KB
- Stars: 34
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
[[https://github.com/dmille56/treesit-jump/actions/workflows/main.yml/badge.svg]]
* About
:PROPERTIES:
:CUSTOM_ID: about
:END:
Jump around your source code in emacs using treesit and avy.* Demos
:PROPERTIES:
:CUSTOM_ID: demos
:END:treesit-jump-jump (used to jump to match)
[[https://i.imgur.com/bYeCHwd.gif]]treesit-jump-select (used to select the region of a match)
[[https://i.imgur.com/Ge5g7pb.gif]]treesit-jump-delete (used to delete the region of a match)
[[https://i.imgur.com/ofIUGTj.gif]]treesit-jump-parent-jump (used to jump to a parent of the current node under the cursor)
[[https://i.imgur.com/2222Jun.gif]]treesit-jump-gptel-describe (used to describe the selected region using gptel (chatgpt/ollama/etc.))
* Table of Contents
:PROPERTIES:
:TOC: :include all :ignore (this)
:END:
:CONTENTS:
- [[#about][About]]
- [[#demos][Demos]]
- [[#installation][Installation]]
- [[#dependencies][Dependencies]]
- [[#config][Config]]
- [[#extra-config-options][Extra config options]]
- [[#queries][Queries]]
- [[#notes][Notes]]
- [[#special-thanks][Special Thanks]]
:END:* Installation
:PROPERTIES:
:CUSTOM_ID: installation
:END:
** Dependencies
:PROPERTIES:
:CUSTOM_ID: dependencies
:END:
1. Emacs compiled with treesit support (version 29+)
2. Installed treesitter grammar (for the language you want to use)
- You can use [[https://github.com/renzmann/treesit-auto][treesit-auto]] to install grammars and auto load treesitter language modes.
3. [[https://github.com/abo-abo/avy][Avy]]
4. [[https://github.com/magit/transient][Transient]]
5. [[https://github.com/karthink/gptel][Gptel]]
** Config
:PROPERTIES:
:CUSTOM_ID: config
:END:
#+BEGIN_SRC emacs-lisp
(use-package treesit-jump
:straight (:host github :repo "dmille56/treesit-jump" :files ("*.el" "treesit-queries"))
:config
;; Optional: add some queries to filter out of results (since they can be too cluttered sometimes)
(setq treesit-jump-queries-filter-list '("inner" "test" "param")))
#+END_SRC** Extra config options
:PROPERTIES:
:CUSTOM_ID: extra-config-options
:END:
- Transient for all the functions: treesit-jump-transient- How to add extra treesit queries per mode:
#+BEGIN_SRC emacs-lisp
(add-to-list 'treesit-jump-queries-extra-alist (cons 'powershell-ts-mode '("(flow_control_statement (_)) @flow")))
(add-to-list 'treesit-jump-queries-extra-alist (cons 'python-ts-mode '("(return_statement (_)) @return")))
#+END_SRC- How to add queries to filter out of results per mode:
#+BEGIN_SRC emacs-lisp
(add-to-list 'treesit-jump-queries-filter-mode-alist (cons 'python-ts-mode '("class")))
#+END_SRC- Function to clear cache (useful if you've added to treesit-queries per node after running treesit-jump functions):
#+BEGIN_SRC emacs-lisp
treesit-jump-queries-clear-cache
#+END_SRC- See [[https://github.com/karthink/gptel]] for help configuring gptel queries (in order to configure backend between chatgpt/ollama/etc.)
* Queries
:PROPERTIES:
:CUSTOM_ID: queries
:END:Queries are defined in treesit-queries directory. Queries must be defined separately for each language. List of the query capture types are defined here: [[https://github.com/nvim-treesitter/nvim-treesitter-textobjects?tab=readme-ov-file#built-in-textobjects]].
For help defining your own queries refer to: [[https://github.com/emacs-mirror/emacs/blob/master/admin/notes/tree-sitter/starter-guide#query-syntax]]. Also recommend the following package for debugging your queries: https://git.sr.ht/~meow_king/ts-query-highlight.
* Notes
:PROPERTIES:
:CUSTOM_ID: notes
:END:
I've tested that the queries compile for the following languages: Python, C, C++, Java, C#, JavaScript, TypeScript, Go, Rust.* Special Thanks
:PROPERTIES:
:CUSTOM_ID: special-thanks
:END:
This package takes inspiration from [[https://github.com/abo-abo/avy][avy]], and [[https://github.com/meain/evil-textobj-tree-sitter][evil-textobj-tree-sitter]]. Queries (and a bit of code to process them) were taken originally from evil-textobj-tree-sitter. The code here is licensed under the same license (Apache-2.0).