• 作成:

Emacsでrusticとeglotを使っている時にflymakeのハイライト表示がバグるので無効化しました

前提

私はEmacsでRustを書く時にbrotzeit/rustic: Rust development environment for Emacsを使っています.

そしてLanguage Server Protocolのフロントエンドにjoaotavora/eglot: A client for Language Server Protocol serversを使っています.

rusticはeglotを自動設定して,eglotはflycheckではなくflymakeを使ってエラーの検出と表示を行います.

しかしそれはflycheckが使えないということではなく,flycheckはflymakeをバックエンドにしてエラーをきちんと表示してくれます.

問題

エラーが出てきた後それを修正すると,flycheckはきちんとエラーが修正されたことをエラーリストを消して教えてくれます.

しかしflymakeは認識と表示が不整合な状態になることが多々あり,コードのアンダーラインに赤い線がハイライトされたままになることが多く,コンパイルエラーが治ったのかわかりにくいです.

解決法

エラーのリストはflycheckがきちんと報告してくれているので,flymakeのハイライトを全部disableしてしまえば解決です.

コード

(with-eval-after-load 'flymake
  (custom-set-variables
   '(flymake-error-bitmap nil)
   '(flymake-note-bitmap nil)
   '(flymake-warning-bitmap nil)
   )
  (set-face-underline 'flymake-error nil)
  (set-face-underline 'flymake-note nil)
  (set-face-underline 'flymake-warning nil)
  )

flymake-errlineなどはEmacs 26で廃止されたのでflymake-errorを設定しましょう.