Evil使いのelispデバッグ風景

( ´_ゝ`)ノシ

yoshitiaです。

この記事はEvil Advent Calendar 2014の7日目の記事になります。

先日、web-modeで出てくる

File mode specification error: (void-variable web-mode-html-offset)

の対処ですが、

emacs: web-mode のインデント設定が効かない - yoshitia’s diary

よりまともなやり方が見つかったので記事にします。

 

対処法

私の場合、highlight-indentation-modeが原因でした。

highlight-indentation-modeはメジャーモードがweb-modeの時に

変数web-mode-html-offsetを参照する仕様になってるっぽいので

highlight-indentation.elを直接開いて

web-mode-html-offset

(web-modeの古いバージョンで使われていた変数)

を検索、

web-mode-markup-indent-offset

(web-modeの新しいバージョンで使われていた関数)

に書き換えれば解決します。

 

対処法を探したやり方

ここからが本題。

結果としてweb-mode自体が原因でなかったので

どれが原因かを探す方法が必要だと思うので書いておきます。

emacsネイティブ?の方には常識かもですが

M-x backtrace
(普通よりエラーを詳しく表示してくれる関数)

を入力してからhtmlなどを開いて

メジャーモードをweb-modeに切り替えます。

すると同じ

(void-variable web-mode-html-offset)

メッセージが出てきますが手前の部分に

エラーが発生してるモードが表示されます。

私の例の様にhighlight-indentation-modeでなくても

問題のモードのファイルを開いて

web-mode-html-offset

を検索して見つけた部分を書き直せば

多分解決するんじゃないかと。

この記事のEvil要素は?

( ´_ゝ`)

インデント設定効いてないと

Evilでの操作、

i<TAB><down><ESC>

の後のドットコマンドが役に立たないのです。

(Vim ドットコマンドで調べると便利)

後はVimEmacs Evilルートの方に

M-x backtraceの存在を知ってもらえれば、

と言う意図で。

elispプラグインは関数や変数の頭に

プラグインの名前が付いてるのですごくわかりやすいです。

これでVimmerelispと戦える(はず)です。

 

日々の暮らしにVimEmacsをEvilを。 Happy Evil life!