GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Accessing-Node-Information.html ・ emacs-doc.conao3.com

38.4 ノード情報の取得

Nodeの基本情報

各ノードにはパーサーが関連付けられており、そのパーサーにはバッファが関連付けられています。以下の関数はこれらを取得します。

関数: treesit-node-parser node

この関数は、nodeに関連付けられたパーサーを返します。

関数: treesit-node-buffer node

この関数は、nodeのパーサーに関連付けられたバッファを返します。

関数: treesit-node-language node

この関数は、nodeのパーサーに関連付けられた言語を返します。

各ノードは、バッファ内のテキストの一部を表します。以下の関数は、そのテキストに関する関連情報を取得します。

関数: treesit-node-start node

node の開始位置を返します。

関数: treesit-node-end node

node の終端位置を返します。

関数: treesit-node-text node &optional object

node が表すバッファテキストを文字列として返します。(文字列のパースから node が取得された場合は、その文字列のテキストとなります。)

Tree-sitterノードに関する述語をいくつか挙げます:

関数: treesit-node-p object

object が Tree-sitter の構文ノードであるかを確認します。

関数: treesit-node-eq node1 node2

Tree-sitterの構文木において、node1とnode2が同一のノードを指しているかを確認します。この関数はequalと同じ等価性判定基準を使用します。また、equalを使用してノードを比較することも可能です(等価性述語を参照)。

物件情報

一般に、具体構文木のノードは、名前付きノードと匿名ノードの2つのカテゴリに分類されます。ノードが名前付きか匿名かは、言語文法によって決定されます(名前付きノードを参照)。

名前付きか匿名かという点以外に、ノードは他のプロパティを持つことがあります。ノードが「欠落」している場合があり、こうしたノードは、特定の種類の構文エラー(すなわち、文法上は本来あるべき箇所に記述がない状態)から復旧するために、パーサーによって挿入されます。これは、プログラムソースがまだ最終的な形式になっていない編集作業中に起こり得ます。

ノードは「extra」となり得ます。こうしたノードはコメントなどを表し、テキスト内のどこにでも出現します。

ノードのパーサーが、ノードの作成後に少なくとも1回再解析を行っている場合、そのノードは「古くなっている」可能性があります。

ノードがスパンするテキストに構文エラーが含まれている場合、そのノードは「エラーあり」となります。ノード自体にエラーがある場合もあれば、その子孫のいずれかにエラーがある場合もあります。

ノードのパーサーが削除されておらず、かつそのノードが属するバッファがライブバッファである場合、そのノードはライブであるとみなされます(バッファの破棄を参照)。

関数: treesit-node-check node property

この関数は、node に指定された property が含まれている場合、non-nil を返します。property には named、missing、extra、outdated、has-error、または live を指定できます。

関数: treesit-node-type node

名前付きノードには「型」があります(ノード型を参照)。例えば、名前付きノードはstring_literalノードとなり得、ここでstring_literalはその型となります。匿名ノードの型は、そのノードが表すテキストそのものです。例えば、「,」ノードの型は単に「,」となります。

この関数は、nodeの型を文字列として返します。

子どもや親としての情報

関数: treesit-node-index node &optional named

この関数は、node の親ノードにおける子ノードとしてのインデックスを返します。named が nil 以外の場合、名前付きノード(名前付きノード を参照)のみがカウントされます。

関数: treesit-node-field-name node

親ノードの子は、フィールド名(フィールド名を参照)を持つことができます。この関数は、親の子としてのnodeのフィールド名を返します。

関数: treesit-node-field-name-for-child node n

この関数は、nodeのn番目の子要素のフィールド名を返します。n番目の子要素が存在しない場合、またはn番目の子要素にフィールド名がない場合は、nilを返します。

なお、nは名前付き子要素と匿名子要素の両方をカウントし、nは負の値を取ることができ、例えば−1は最後の子要素を表します。

関数: treesit-node-child-count node &optional named

この関数は、node の子要素の数を返します。named が nil 以外の場合、名前付き子要素(名前付きノード を参照)のみをカウントします。

便利機能

関数: treesit-node-enclosed-p smaller larger &optional strict

この関数は、smaller が larger で囲まれている場合に non-nil を返します。smaller および larger は、コンス (beg . end) またはノードのいずれかになります。

largerの開始位置 ≤ smallerの開始位置 かつ largerの終了位置 ≤ smallerの終了位置 の場合、non-nil を返す。

strict が t の場合、<= ではなく < で比較する。

strict が partial である場合、少なくとも一方の辺が厳密に囲んでいるとき、larger が smaller を包含するものとする。