Gopls: テンプレートファイルのサポート

Gopls は Go テンプレートファイル、つまり text/template または html/template で解析されるファイルに対して、一部のサポートを提供しています。

テンプレートサポートの有効化

Gopls は、ファイル拡張子に基づいてテンプレートファイルを認識します。これは templateExtensions 設定で設定できます。このリストが空の場合、テンプレートサポートは無効になります。(これは Go テンプレートには標準的なファイル拡張子がないため、デフォルト値です。)

クライアントがテンプレートファイルを開くときに正しい言語の種類を選択するようにするには、追加の構成が必要な場合があります。Gopls はテンプレートファイルに対して "tmpl""gotmpl" の両方を認識します。たとえば、VS Code では、files.associations マッピングにもエントリを追加する必要があります。

"files.associations": {
  ".mytemplate": "gotmpl"
},

機能

テンプレートファイルでは、デフォルトの {{ 区切り文字内でテンプレートサポートが機能します。(Go テンプレートの解析ではユーザーが他の区切り文字を指定できますが、gopls はその方法を知りません。)

Gopls テンプレートサポートには以下の機能が含まれます。

  • 診断: テンプレートの解析がエラーを返した場合、それは診断として表示されます。(存在しない関数はエラーを生成しません。)
  • 構文ハイライト: テンプレートファイルに構文ハイライトが提供されます。
  • 定義: gopls はテンプレート内で定義へのジャンプを提供しますが、スコープを理解していません (すべてのテンプレートは1つのグローバルスコープにあると見なされます)。
  • 参照: gopls は、定義と同じスコープの制限で参照の検索を提供します。
  • 補完: gopls はテンプレート内で補完を提案しようとします。

TODO: その他

  • ホバー
  • SemanticTokens
  • シンボル検索
  • DocumentHighlight

このドキュメントのソースファイルは、golang.org/x/tools/gopls/doc の下にあります。