#이맥스: #빌트인 #트리시터
2023-10-01 Note builtin emacs notes treesit할로 트리시터
Tree-sitter is a parser generator tool and an incremental parsing library.
우분투
sudo apt-get install libtree-sitter-dev --reinstall
DONE tree-sitter upgrade
EmacsConf - 2022 - talks - Tree-sitter beyond syntax highlighting GitHub - meain/emacsconf-talk-tree-sitter: Slides/Files for EmacsConf 2022 ta… 이 영상에서 많은 것을 배웠다.
tree-sitter 설치(?)
애매한 부분이 무엇인가? tree-sitter 설치 부터 문제다. 라이브러리가 있었는데 실제 리포에 가보면 바이너리 하나 일 뿐이다. 이게 맞을 것 같다.
emacs tree-sitter install
Emacs 29 부터 내장 되어 있고, 아래 리포에 가면 내장 버전을 사용하라고 한다. 근데 Spacemacs 에 레이어가 있는데 뭐가 좋을까?
아직 정식도 아닌데 레이어를 사용하는 게 맞다고 본다. Emacs 빌드 할 때 끈다. 그리고 treesit-auto 패키지도 지운다.
home/junghan/sync/man/dotsamples/vanilla/meain-dotfiles/emacs.config/emacs/init.el:2822
GitHub - emacs-tree-sitter/elisp-tree-sitter: Tree-sitter bindings for Emacs …
libtreesitter
termux 에서는 pkg install libtreesitter -y
2023-10-03 20.8 버전으로 라이브러리를 빌드해야 한다.
git clone git@github.com:tree-sitter/tree-sitter.git
Build Tree-sitter-module All Languages
https://github.com/casouri/tree-sitter-module
여기서 스크립트를 돌리면 나온다. 관리가 잘 되고 있으니 모든 언어에 대한 모듈이 있다고 본다. Termux 에서도 잘 된다.
Emacs 빌트인
29 버전부터 들어간다.
Emacs 언어별 트리시터 모듈 로딩 위치
~/.emacs/tree-sitter
가 기본이다. 즉 Emacs 사용자 디렉토리 아래에 있다. 참고하여 설정.
clojure-mode with tree-sitter
https://metaredux.com/posts/2023/03/12/clojure-mode-meets-tree-sitter.html
HOLD Evil and the Built-In Tree Sitter - M. Rincón
Article
The new Emacs 29 support for tree sitter awesome. Since I’m an evil user, I made a small package to take advantage of the new facilities. If you are interested, the package is on GitHub here. From the README
:
새로운 Emacs 29는 트리 시터를 훌륭하게 지원합니다. 저는 evil 사용자이기 때문에 작은 package 새로운 시설을 활용합니다. 관심이 있으시면 패키지는 GitHub here에 있습니다. =README=에서:
This package provides some basic additional actions for evil-mode
using the new built-in tree sitter library. The package only works with Emacs 29 or greater. To activate, just run M-x evil-ts-mode
. This was so easy to do, that it hardly merits a package. But perhaps it will be useful to someone.
이 패키지는 새로운 내장 트리 시터 라이브러리를 사용하여 =evil-mode=에 대한 몇 가지 기본 추가 작업을 제공합니다. 이 패키지는 Emacs 29 이상에서만 작동합니다. 활성화하려면 =M-x evil-ts-mode=를 실행하십시오. 이것은 하기가 너무 쉬웠기 때문에 패키지의 가치가 거의 없었습니다. 그러나 아마도 누군가에게 유용할 것입니다.
In visual mode, you can select a if/try/etc statement
with s
. So when you are inside an if statement, the sequence vas
will select it. Similarly, f
selects a function and c
selects a class. On these cases, there is no difference between inner and outer text objects.
시각적 모드에서 =s=가 포함된 =if/try/etc 문=을 선택할 수 있습니다. 따라서 if 문 안에 있을 때 시퀀스 =vas=가 선택합니다. 마찬가지로 =f=는 함수를 선택하고 =c=는 클래스를 선택합니다. 이러한 경우 내부 텍스트 개체와 외부 텍스트 개체 간에 차이가 없습니다.
In normal state, you can move to the beginning or the end of a class with [c
and ]c
. Similarly, [f
and ]f
moves you to the start or end of a function. And [w
moves you to the start of a sentence, and ]w
to the end (these last two bindings are not great, but ]s
is usually taken for navigating spelling errors). I created this package for my own personal use, so the default bindings may not be what you want. Of course, you can change that. The mode map is evil-ts-mode-map
.
정상 상태에서 [c
및 ]c=로 클래스의 시작 또는 끝으로 이동할 수 있습니다. 마찬가지로 =[f
및 =]f=는 함수의 시작 또는 끝으로 이동합니다. 그리고 =[w=는 문장의 시작 부분으로 이동하고 =]w=는 끝 부분으로 이동합니다(마지막 두 바인딩은 좋지 않지만 =]s=는 일반적으로 철자 오류를 탐색하는 데 사용됩니다). 개인적 용도로 이 패키지를 만들었으므로 기본 바인딩이 원하는 것이 아닐 수도 있습니다. 물론 변경할 수 있습니다. 모드 맵은 =evil-ts-mode-map=입니다.
evil-ts-mode
git@github.com:foxfriday/evil-ts.git
GitHub - foxfriday/evil-ts: Actions for Emacs evil-mode using the new built-i…
내장 treesit 을 사용하는 것이 정답이다.
왜냐? 모드를 나눠서 사용할 수 있다. 결국 그렇게 될 수 밖에 없다.