2019の6日目の記事です。今年の4月にv8.1.1228でtagfuncという機能が追加されました。こちらは:tagや:tselectなどのタグ系コマンド*1を実行した時、tagsファイルを検索する代わりに呼ばれる関数を設定するためのオプションです。設定する関数の形式としては次のようなものです。\]endfunctionヘルプにはtaglist()の結果を並べ替える関数が例として記載されていますが、LSPを使ってタグ情報のリストを生成できればタグジャンプがすごく便利になりそうです。scriptでタグスタックの管理をしなければならないといったものでした。標準のキーマップ、Exコマンドがそのまま使えるタグ補完の時にも使えるタグスタックの管理をVim本体に任せられると、すごく良さそうです。試しに任意の文字列で検索するworkspace/symbolをvim-lspから呼び出してみます。tagfunc=MyTagFuncで設定すると、ctagsとほぼ同じ使い勝手のタグジャンプができるようになります。workspace/symbolはtextDocument/definitionなどのようなカーソル位置を起点に対象を探すメソッドとは異なり、100%目当ての場所にジャンプできるとは限りません。確実にジャンプしたい時はtextDocument/definitionを呼べるような実装にできれば良いのですが、MyTagFuncの引数からだと、それがExコマンドの引数に指定したタグ名なのか、カーソル位置のキーワードなのかを判別できないので、メソッドの呼び分けをするのは非常に困難です。]はtextDocument/definition*2を呼ぶ定義元にジャンプしたいそれ以外はtagfuncからworkspace/symbolを呼ぶ同名の別メソッド/関数やインタフェースの実体などを探したいというように、用途に応じて使い分けるのがオススメです!結局settagstack()とtagfuncを両方使うことに。17:00追記]flagsで判別可能でした。みたいなコマンドだと空だった。tagfuncでなるべく完結したいなー。2019年12月6日tagfuncだけで完結させるにはMyTagFuncを次のようにします。endforendfunctionただ一番利用頻度の高いgoplsがworkspace/symbolに対応していないのでまだ常用できていません。2019に行ってきました。2018の13日目の記事です。2015の5日目の記事です。Datastore用キャッシュパッケージの検討Stackdriverの設定をterraformで管理する参加グループVimはてなブログをはじめよう!daisuzuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。