タグ

tree-sitterに関するpcrdのブックマーク (11)

  • php-ts-modeを実装する

    EmacsにTree-sitterベースのMajor modeを実装していく。Major modeとはプログラミング言語などをサポートする機能の単位のことだ。 なぜやるのか 理由はいくつかある Emacs 29からTree-sitterベースのメジャーモードに全ベットする風潮になってきた 個別に正規表現ベースのメジャーモードを実装していくのつらい Cc Modeという最強の言語実装フレームワークがベース これを作った人は天才だと思うが、われわれ凡人には手を出せない EmacsにPHPのためのメジャーモードは同梱されていない 歴史的経緯による → Will GNU Emacs Ever Include php mode? 個人的にはCc Modeへの愛着はあるのだが、PHP Modeを改善していくにしろ、一旦自分の満足のいくものを完成させるのがいいだろうと考えている。 ここで目指すべきものは

    php-ts-modeを実装する
    pcrd
    pcrd 2023/06/02
    “EmacsにTree-sitterベースのMajor modeを実装していく。Major modeとはプログラミング言語などをサポートする機能の単位のことだ。”
  • GitHub - mickeynp/combobulate: Structured Editing and Navigation in Emacs with Tree-Sitter

    Combobulate is under active development. Expect bugs. Combobulate is a package that adds structured editing and movement to a wide range of programming languages. Unlike most programming major modes that use error-prone imperative code and regular expressions to determine what's what in your code, Combobulate uses Emacs 29's tree-sitter library. Tree-sitter maintains a concrete syntax tree of your

    GitHub - mickeynp/combobulate: Structured Editing and Navigation in Emacs with Tree-Sitter
    pcrd
    pcrd 2023/05/28
    “Structured Navigation and Editing with Combobulate”
  • 2022年の nvim-treesitter の変更・新機能を振り返る

    はじめに 今日はクリスマス。今年も街中のクリスマスツリーが綺麗に彩られています。「ツリー」と「彩り」といえばもちろん、Neovim のバッファを綺麗に彩る nvim-treesitter ですよね。nvim-treesitter を語るに今日ほどふさわしい日はありません。 2022年、nvim-treesitter には様々な変更が入りました。記事では、その中でも私が「ユーザ影響が大きそうだ」もしくは「便利そうだ」と感じた仕様変更や機能追加を選んで紹介します。 nvim-treesitter とは nvim-treesitter は Neovim 上で tree-sitter と連携し、構文解析に基づくシンタックスハイライトや折りたたみなどの様々な便利機能を実現するプラグインです。インストール方法や設定手順、具体的な機能については、公式の README や他の入門記事を参照してください。

    2022年の nvim-treesitter の変更・新機能を振り返る
  • GitHub - meain/scopeline.el: Show info about the block at the end of the block

  • tree-sitter-python/src/grammar.json at master · tree-sitter/tree-sitter-python

    pcrd
    pcrd 2023/05/16
  • Update README with builtin treesit support info · meain/scopeline.el@1b9f56d

  • 日常に彩りを加える nvim-treesitter の設定術

    この記事は Vim advent calendar 2021 その2 の22日目の記事です。 昨日はゴリラさんの記事「GitHubのissueを編集するときの補完機能を実装した話」でした。 明日は @seroqn さんの記事「もっと軽量な statusline と tabline」が公開される予定です。 はじめに 今年は Neovim に大きな変化がありました。 v0.5.0 と v0.6.0 のリリースです。特に v0.5.0 から tree-sitter のライブラリが組み込まれたことは大きな話題を集め、以下をはじめとする様々な記事で紹介されました。 これらの記事で紹介されている通り、nvim-treesitter というプラグインを用いると tree-sitter の力を借りられるようになります。高速な構文解析に基づき、シンタックスハイライトやインデントといった様々な処理を正確かつ柔

    日常に彩りを加える nvim-treesitter の設定術
    pcrd
    pcrd 2023/03/27
    “Markdown ファイルを見ているにもかかわらず Python の構文木が中に埋め込まれています。これは tree-sitter の language injection という機能を用いています”
  • Tree-sitterを使ってEmacsのimenuをカスタマイズしてみる

    Tree-sitter はAtomで採用されていることで有名なパーサージェネレータです。 JSで記述した文法を渡すことでパーサーを生成してくれる仕組みですが、現在多くの言語サポートが入っていて、 よく利用する言語であればこれらのパーサーを利用して高速な構文解析と、その結果としてシンタックスハイライトなどの機能を様々なエディタで利用することができます。 Tree-sitter|Introduction elisp-tree-sitter.el emacs-tree-sitter.el はTree-sitterのEmacs バインディングです。 emacs-tree-sitterはシンタックスハイライトの提供の他に、Tree-sitterを利用するためのelisp APIを提供しています。 このAPIを利用することで、Tree-sitterを利用した様々なパッケージの開発が簡単にできるようにな

  • EmacsでTree-sitterを利用してシンタックスハイライトする

    Emacs 29以降の設定方法 Emacs 29以降の設定方法は こちら の記事で説明しています! Tree-sitterとは Tree-sitter自体はパーサ生成ツールと、かつそれを利用して作成された様々な言語のパーサのセットのようです。 Tree-sitterのパーサを利用することで高速かつ正確なシンタックスハイライトを適用することができます。 AtomではTree-sitterをベースにしたシンタックスハイライトシステムを使用しているようです。 emacsではELisp Tree-sitterというEmacs Lispバインディングパッケージを通じてシンタックスハイライトを適用できます。 Tree-sitterそのものについての解説は下記の記事がわかりやすかったです。 インストール インストール手順に則ってElisp Tree-sitterパッケージを追加します。 併せて、tree

    EmacsでTree-sitterを利用してシンタックスハイライトする
  • Ruby用VSCode拡張: vscode-ruby-light

    Ruby向けに、vscode-ruby-lightというVSCode拡張をつくっています。この拡張は、利用者に特にRubyのインストール要求することなく、シンタックスハイライトやカーソル操作など、VSCode標準の機能よりちょっと良い編集体験を提供しようという目的の拡張です。 最初は「メソッドやブロックをもう少し上手く選択できるようにしたい」というモチベーションで調べ始めたのですが、気付けば色々な機能を持つVSCode拡張が出来上がっていました。この記事では、幾つかの機能を紹介しながら、関連する話を書いていこうと思います。 Selection Range VSCodeにはExpand Selectionというコマンドがあり、選択範囲を拡大したり狭くしたりできます。このコマンドには、例えばWindowsであればデフォルトでShift + Alt + →にショートカットキーが割り当てられていま

  • Emacs での LSP と tree-sitter と lint

    概要 eglot を試してみたところ LSP はうまく動いていて、かなり使えるレベルになっている。特に TypeScript の言語サーバはおすすめできる。何が良いのかはこの記事の文で列挙した。 LSP はシンタックスハイライトをより精細にする機能を持っているが、eglot はそれに対応していない。代わりに emacs-tree-sitter を使えばほぼ同等の効果が得られる。動作もかなり速いのでおすすめ。 LSP と lint ツールを協調させるのは難しい。今は妥協して別々に動かすしかなさそう。 はじめに エディタの機能からプログラミング言語の解析に関わる機能を切り出し、エディタに依存しない「言語サーバ」を作るというアイデアがある。これを整備して、エディタと言語サーバが通信するルールを決めたものが LSP である。LSP を使うことで良質な開発体験ができる、という意見をしばしば耳にする

    Emacs での LSP と tree-sitter と lint
  • 1