Removing Tree Sitter
The Tree Sitter just isn't changing anything for me, so I'm removing this code for the time being. I'll reinvestigate later.
This commit is contained in:
parent
a2e7015e94
commit
a3e92b4f7f
3 changed files with 27 additions and 27 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,3 +4,4 @@
|
|||
/elisp/gourmet-projects.el
|
||||
/ha-private.org
|
||||
/incubate.org
|
||||
/elisp/bookmark+*.el
|
||||
|
|
|
@ -188,7 +188,7 @@ While that approach works /fairly well/ with [[file:ha-programming.org::*direnv]
|
|||
While Emacs supplies a Ruby editing environment, we’ll still use =use-package= to grab the latest:
|
||||
#+begin_src emacs-lisp
|
||||
(use-package ruby-mode
|
||||
:mode (rx ".rb" eos)
|
||||
:mode (rx "." (optional "e") "rb" eos)
|
||||
:mode (rx "Rakefile" eos)
|
||||
:mode (rx "Gemfile" eos)
|
||||
:mode (rx "Berksfile" eos)
|
||||
|
|
|
@ -200,7 +200,7 @@ But one of those functions doesn’t exist:
|
|||
(beginning-of-defun))
|
||||
#+end_src
|
||||
*** Tree Sitter
|
||||
Let’s follow along with Mickey Petersen’s [[https://www.masteringemacs.org/article/how-to-get-started-tree-sitter][Getting Started with Tree Sitter]] guide.
|
||||
I’m curious about the new [[https://emacs-tree-sitter.github.io/][Tree Sitter feature]] now [[https://lists.gnu.org/archive/html/emacs-devel/2022-11/msg01443.html][built into Emacs 29]]. After following along with Mickey Petersen’s [[https://www.masteringemacs.org/article/how-to-get-started-tree-sitter][Getting Started with Tree Sitter]] guide, I’ve concluded I /currently/ don’t need this feature. I’m leaving the code here, but adding a =:tangle no= to all the blocks until I’m ready to re-investigate.
|
||||
**** Operating System Part
|
||||
Install the binary for the [[https://tree-sitter.github.io/][tree-sitter project]]. For instance:
|
||||
#+begin_src sh
|
||||
|
@ -264,8 +264,7 @@ In most cases,the =npm install= /usually/ works, but I may work on some sort of
|
|||
git pull origin
|
||||
npm install || cargo build || make install # Various build processes!?
|
||||
|
||||
# echo "Let's copy the library into ~/.emacs.d/tree-sitter/$NAME"
|
||||
# pwd
|
||||
echo "Do we need to copy the library into ~/.emacs.d/tree-sitter/$NAME ?"
|
||||
# if [ "$(uname -o)" = "Darwin" ]
|
||||
# then
|
||||
# cp libtree-sitter-$NAME.dylib ~/.emacs.d/tree-sitter
|
||||
|
@ -274,11 +273,10 @@ In most cases,the =npm install= /usually/ works, but I may work on some sort of
|
|||
# fi
|
||||
done
|
||||
#+end_src
|
||||
|
||||
At this point, we can now parse stuff using: =tree-sitter parse <source-code-file>=
|
||||
**** Emacs Part
|
||||
However, Emacs already has the ability to download and install grammars, so following instructions from Mickey Petersen’s essay on [[https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter][using Tree-sitter with Combobulate]]:
|
||||
#+begin_src emacs-lisp
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
(use-package treesit
|
||||
:straight (:type built-in)
|
||||
|
@ -348,16 +346,17 @@ However, Emacs already has the ability to download and install grammars, so foll
|
|||
#+end_src
|
||||
|
||||
And enable the languages:
|
||||
#+begin_src emacs-lisp
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(when (treesit-available-p)
|
||||
(use-package tree-sitter-langs
|
||||
:after treesit
|
||||
:config
|
||||
(global-tree-sitter-mode)))
|
||||
#+end_src
|
||||
*** Combobulate
|
||||
I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]], but can we extend that to other languages generally? After reading Mickey Petersen’s essay, [[https://www.masteringemacs.org/article/combobulate-structured-movement-editing-treesitter][Combobulate project]], I decided to try out his [[https://github.com/mickeynp/combobulate][combobulate package]]. Of course, this can only work with the underlying tooling supplied by the [[https://emacs-tree-sitter.github.io/][Tree Sitter]] →
|
||||
#+begin_src emacs-lisp
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(when (treesit-available-p)
|
||||
(use-package combobulate
|
||||
:straight (:host github :repo "mickeynp/combobulate")
|
||||
:after treesit
|
||||
|
@ -369,8 +368,8 @@ I like [[file:ha-programming-elisp.org::*Clever Parenthesis][Clever Parenthesis]
|
|||
#+end_src
|
||||
|
||||
I can create a /helper function/ to allow me to jump to various types of—well, /types/:
|
||||
#+begin_src emacs-lisp
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(when (treesit-available-p)
|
||||
(use-package combobulate
|
||||
:config
|
||||
(defun ha-comb-jump (&rest tree-sitter-types)
|
||||
|
@ -383,8 +382,8 @@ I can create a /helper function/ to allow me to jump to various types of—well,
|
|||
#+end_src
|
||||
|
||||
Now, I can create an /interface/ of keystrokes to jump around like a boss:
|
||||
#+begin_src emacs-lisp
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(when (treesit-available-p)
|
||||
(use-package combobulate
|
||||
:general
|
||||
(:states 'visual :keymaps 'combobulate-key-map
|
||||
|
@ -415,8 +414,8 @@ Mickey’s interface is the [[help:combobulate][combobulate]] function (or ~C-c
|
|||
|
||||
*** Evil Text Object from Tree Sitter
|
||||
With Emacs version 29, we get a better approach to parsing languages, and this means that our [[https://github.com/nvim-treesitter/nvim-treesitter-textobjects#built-in-textobjects][text objects]] can be better too with the [[https://github.com/meain/evil-textobj-tree-sitter][evil-textobj-tree-sitter project]]:
|
||||
#+begin_src emacs-lisp
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(when (treesit-available-p)
|
||||
(use-package evil-textobj-tree-sitter
|
||||
:config
|
||||
;; We need to bind keys to the text objects found at:
|
||||
|
@ -436,7 +435,7 @@ With Emacs version 29, we get a better approach to parsing languages, and this m
|
|||
#+end_src
|
||||
|
||||
Seems the macro, =evil-textobj-tree-sitter-get-textobj= has a bug, so the following—which would have been easier to write—doesn’t work:
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
#+begin_src emacs-lisp :tangle no :tangle no
|
||||
(dolist (combo '(("f" "function.outer" "function.inner")
|
||||
("b" "loop.outer" "loop.inner")
|
||||
;; ...
|
||||
|
@ -1067,7 +1066,7 @@ Support for [[https://docutils.sourceforge.io/rst.html][reStructuredText]] is [[
|
|||
** YAML
|
||||
Doing a lot of [[https://github.com/yoshiki/yaml-mode][YAML work]], but this =yaml-mode= project needs a new maintainer, so I’ve switch to [[https://github.com/zkry/yaml-pro][yaml-pro]] that is now based on Tree Sitter. Let’s make sure the Tree-Sitter version works:
|
||||
#+begin_src emacs-lisp :tangle no
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
(when (treesit-available-p)
|
||||
(use-package yaml-ts-mode
|
||||
:mode ((rx ".y" (optional "a") "ml" string-end)
|
||||
(rx (optional ".") "yamllint"))
|
||||
|
@ -1091,7 +1090,7 @@ And we hook
|
|||
|
||||
This comes with a list of nice refactoring features that we can attach to the local leader:
|
||||
#+begin_src emacs-lisp
|
||||
(when (string-search "TREE_SITTER" system-configuration-features)
|
||||
(when (treesit-available-p)
|
||||
(use-package yaml-pro
|
||||
:config
|
||||
(ha-local-leader :keymaps 'yaml-pro-ts-mode-map
|
||||
|
|
Loading…
Reference in a new issue