• 作成:

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を設定しましょう.