新しい consel-gtags.el を試してみたらパッチが必要だった

こまった

counsel-gtags--select-file-ivy-parameters でコールしている string-empty-p という関数がないようで動かない。

Symbol’s function definition is void: string-empty-p

とエラー終了。

対応

『やさしい Emacs-Lisp講座』を参考に scratch バッファで

  1. (setq debug-on-error t) <C-j> として、その後
  2. counsel-gtags-dwim を実行(タグジャンプしてみただけ)
  3. バックトレースが表示される。みると counsel-gtags--select-file-ivy-parameters でエラー発生。
  4. クリックしてエラー発生関数に飛び M-x edebug-defun する
  5. もう一度実行させて関数内をステップ実行。

として確認した。

(if (string-empty-p tagname) ...)

という記述を変更する。↓

(if (= (length tagname) 0) ...)

長さが 0 の判定にした。

修正後

emacs-lisp-byte-compile-and-load

でバイトコンパイルして再ロード。

最後に edebug-defun の効果を消すために対象関数の中で

C-M-x (eval-defun)

を実行。これでデバッグ機能なしのふつうの関数が再定義されるらしい。

参考資料

www.amazon.co.jp

おわりに

以前も file-truename を呼ぶためにシンボリックリンクのファイルが開けない・・・という動きになってしまい file-truename を使わないようにしたことがあった。今回はそれは大丈夫なのかな??