flymake は重いし、警告が多いと Emacs 毎ハングアップするので、
flycheck に移行しました。
基本設定
;;; flycheck (setq lsp-prefer-flymake nil) (defun tnoda/turn-on-flycheck-mode () (flycheck-mode 1)) (add-hook 'python-mode-hook 'tnoda/turn-on-flycheck-mode)
これだけです。
flake8 は別途インストールして、パスが通ってるディレクトリに置いてください。
特に設定は必要なくて flycheck がパスから探して flake8 を実行してくれます。
しかし flymake が動いてしまうので python-mode-hook で息の根を止めますw
(add-hook 'python-mode-hook #'(lambda () (setq indent-tabs-mode nil) (which-function-mode 1) (setq indent-level 4) (setq python-indent 4) (setq tab-width 4) (elpy-enable) (elpy-mode) (flymake-mode 0) ; ←これ ))
また、python-mode 用に (which-function-mode 1) をしないとカーソル位置の関数/メソッド名が表示されないので、これも pyhon-mode-hook に書いておくと良いです。
いろいろと flycheck 使っている方の設定を拝借していますがwww
次は追加の設定です。警告は「◆」、エラーは「✕」を左端の部分に表示します。
ここってなんて呼ぶんだろうw わかりませんw
(define-fringe-bitmap 'my-flycheck-fringe-indicator (vector #b00000000 #b00000000 #b00000000 #b00000000 #b00000000 #b00001000 #b00011100 #b00111110 #b01111111 #b00111110 #b00011100 #b00001000 #b00000000 #b00000000 #b00000000 #b00000000 #b00000000)) (define-fringe-bitmap 'my-flycheck-fringe-indicator2 (vector #b00000000 #b00000000 #b00000000 #b00000000 #b01000001 #b01100011 #b00110110 #b00011100 #b00011100 #b00011100 #b00110110 #b01100011 #b01000001 #b00000000 #b00000000 #b00000000 #b00000000)) (flycheck-define-error-level 'error :overlay-category 'flycheck-error-overlay :fringe-bitmap 'my-flycheck-fringe-indicator2 :fringe-face 'flycheck-fringe-error) (flycheck-define-error-level 'warning :overlay-category 'flycheck-warning-overlay :fringe-bitmap 'my-flycheck-fringe-indicator :fringe-face 'flycheck-fringe-warning) (flycheck-define-error-level 'info :overlay-category 'flycheck-info-overlay :fringe-bitmap 'my-flycheck-fringe-indicator :fringe-face 'flycheck-fringe-info) (set-face-foreground 'flycheck-fringe-error "red") (set-face-foreground 'flycheck-fringe-warning "orange2") (set-face-foreground 'flycheck-fringe-info "lightblue")
最後は、これも追加設定ですが、警告・エラー部分の表示の仕方を変更します。
(set-face-attribute 'flycheck-error nil :foreground "red" :bold t :underline '(:color "red")) (set-face-attribute 'flycheck-warning nil :foreground "red" :bold t :underline '(:color "red"))
しかし、警告表示がおかしくなっているようなので表示しません。