前回さらしてから、はや1年。で、再度晒してみる。誰も興味ないだろうけど。
- 環境は、Debian(bullseye)+emacs(27.1)。consult + company。 consult になってます。まだ馴染んでません。 embark の恩恵にもあずかってません。頭がついていけない。
- lsp は、 python, shell, html(追加) で使用。
- lsp は lsp-mode で、python のクライアントは、lsp-pylsp。 shell は bash-language-server。 html は vscode-langservers-extracted。
- python のクライアントは整理されたようだ。 pyrigh は、python で完結しないらしいので、私は避けている。
- flymake ではなく、flycheck。設定は lsp まかせ。
- 補完は、lsp 経由?の company になってる。ispell も含められてる。 ただ、バックエンドの変更が、時々うまくいかないことがある。
- フォールディングは、origami だが、あいかわらず使えこなせない。 narrowing で間に合っているかんじ。
- lsp-ui-peak は、一応設定してあるというレベルで、これも変らず。
- 新しく追加したのは、sideline-mode と treemacs の2つ。
- lsp-sideline 見易くなったと思う。
- lsp-treemacs 画面が広くなったので、試している最中。
最近は、なべると1日1時間ぐらいしか、触ってない。 だからか、変更は少ない。
;; lsp-mode
(leaf sideline :ensure t :require t)
;; 表示を見やすくすため追加。いいかんじ。
(leaf lsp-mode :ensure t
:url "https://github.com/emacs-lsp/lsp-mode"
:hook (
(python-mode-hook . lsp-deferred)
(rust-mode-hook . lsp-deferred) ;; rust-analyzer
(sh-mode-hook . lsp-deferred) ;; yarn global add bash-language-server
(html-mode . lsp-deferred) ;; yarn global add vscode-langservers-extracted
(css-mode . lsp-deferred) ;;
;; (haskell-mode . lsp-deferred) ;;
;; To defer LSP server startup (and DidOpen notifications) until the buffer is visible
;; you can use lsp-deferred instead of lsp:
(lsp-mode-hook . lsp-enable-which-key-integration) ;; Adds to `which-key-mode'
(lsp-mode-hook . (lambda () (ggtags-mode -1))) ;; global との共存は止めてみる [2021-06-12]
(lsp-mode-hook . sideline-mode)
)
:custom (
;; (add-to-list 'lsp-disabled-clients 'pyright)
(lsp-log-io . nil) ;; print all messages to and from the language server to ~*lsp-log*~.
;; (lsp-print-performance . nil) ;; removed in Relese 8.0
(lsp-server-trace . nil) ;; Request trace mode on the language server.
;; general
(lsp-auto-guess-root . t) ;; original nil
;; Automatically guess the project root using projectile/project.
;; Do *not* use this setting unless you are familiar with ‘lsp-mode’
;; internals and you are sure that all of your projects are
;; following ‘projectile’/‘project.el’ conventions.
(lsp-message-project-root-warning . t)
(lsp-auto-configure . t) ;;
;; "Auto configure `lsp-mode' main features.
;; When set to t `lsp-mode' will auto-configure
;; completion, code-actions, breadcrumb, flycheck, flymake, imenu, symbol highlighting,
;; lenses, links, and so on.
(lsp-headerline-breadcrumb-enable . t)
;; (lsp-headerline-breadcrumb-segments . '(project file symbols))
;;
;; (lsp-document-sync-method . 'lsp-sync-incremental) ;; original nil 'inclemental は変更された
;; (lsp-document-sync-method . 2)
;;
(lsp-eldoc-render-all . nil)
;; ミニバッファでの関数情報 nil: シグニチャだけ, t: doc-string 本体を表示する
;;
(lsp-idle-delay . 0.5)
(lsp-response-timeout . 5)
(lsp-enable-snippet . nil) ;; original t ; yasnippet を直接使っている。
;; (lsp-enable-folding . t) ;; original t
(lsp-enable-indentation . t) ;; あちこちで設定しているみたいで、気持ち悪い。
;;
(lsp-completion-enable . t) ;; original t
(lsp-completion-provider . :capf) ;;
;;
;; (lsp-completion-provider . :none)
;; (lsp-prefer-capf . t) ;; use ‘lsp-completion-provider’ instead.
;; (lsp-completion-no-cache . t) ;;
;; (lsp-completion-enable-additional-text-edit . t)
(lsp-completion-show-detail . nil)
;; (lsp-completion-show-kind . nil)
;; (lsp-diagnostics-provider . :auto) ;; default :auto
(lsp-diagnostics-provider . :flycheck)
;; Safe renamed lsp-diagnose to lsp-doctor(Relese 8.0)
;;
;; (lsp-inhibit-message . t)
;; (create-lockfiles . nil)
(lsp-file-watch-threshold . nil)
;;
(lsp-enable-symbol-highlighting . t)
(lsp-signature-render-documentation . nil)
)
:commands (lsp lsp-deferred)
;; :commands (lsp)
:config
;; .venv, .mypy_cache などを watch 対象から外す
;; https://qiita.com/slotport/items/0e9cb2a875fe85bc1735
(dolist (dir '(
"[/\\\\]\\.venv$"
"[/\\\\]\\.mypy_cache$"
"[/\\\\]__pycache__$"
"[/\\\\]_archives$"
"[/\\\\]_logs$"
"[/\\\\]\\.local\\'"
"[/\\\\]\\.cache\\'"
))
(push dir lsp-file-watch-ignored))
;;
(leaf lsp-ui :ensure t
:custom
;; lsp-ui-doc
(lsp-ui-doc-enable . t) ;; original t
(lsp-ui-doc-header . nil) ;; original nil
;; (lsp-ui-doc-use-childframe . t)
(lsp-ui-doc-delay . 1.5)
(lsp-ui-doc-include-signature . t) ;; original nil
(lsp-ui-doc-position . 'bottom) ;; top bottom at-point
;; (lsp-ui-doc-alignment . 'frame)
;; "How to align the doc.
;; only takes effect when `lsp-ui-doc-position' is 'top or 'bottom."
;; (lsp-ui-doc-border . "orange")
;; (lsp-ui-doc-border (face-foreground 'default))
;; (lsp-ui-doc-use-childframe . t) ;; require 26
;;(lsp-ui-doc-max-width . 70)
;;(lsp-ui-doc-max-height . 20)
(lsp-ui-doc-use-webkit . nil)
(lsp-eldoc-enable-hover . nil) ;; mini-buffer への表示
;; disable cursor hover (keep mouse hover)
(lsp-ui-doc-show-with-cursor . t)
;; disable mouse hover (keep cursor hover)
(lsp-ui-doc-show-with-mouse . nil)
;; lsp-ui-flycheck ;; autoload ?
(lsp-ui-flycheck-enable . t)
(lsp-lens-enable . t)
;; lsp-ui-sideline
;; Show informations of the symbols on the current line.
;; It also show flycheck diagnostics and LSP code actions
;;
(lsp-ui-sideline-update-mode . 'line) ;; line or point
(lsp-ui-sideline-enable . t)
;; (lsp-ui-sideline-show-symbol . t)
;; (lsp-ui-sideline-show-code-actions . nil) ;; default nil
;; (lsp-ui-sideline-code-actions-prefix . "")
;; (lsp-ui-sideline-show-hover . nil) ;; default nil
(lsp-ui-sideline-show-diagnostics . t)
(lsp-ui-sideline-ignore-duplicate . t)
(lsp-ui-sideline-delay . 0.5)
;;
;; lsp-ui-imenu
;; "q" kill
;; "r" refresh
;; "<right>" next kind
;; "<left>" prev kind
;; "M-RET", "<M-return>" visit
;; "RET", "<return>" view
;;
(lsp-ui-imenu-enable . t)
(lsp-ui-imenu-kind-position . 'top)
;; (setq lsp-ui-imenu-colors `(,(face-foreground 'font-lock-keyword-face)
;; ,(face-foreground 'font-lock-string-face)
;; ,(face-foreground 'font-lock-constant-face)
;; ,(face-foreground 'font-lock-variable-name-face)))
;;
;; lsp-ui-peek
;; like Visual studio peak function.
(lsp-ui-peek-enable . t)
(lsp-ui-peek-show-directory . t)
(lsp-ui-peek-always-show . t)
;; (lsp-ui-peek-list-width . 60)
;; (lsp-ui-peek-peek-height . 20)
(lsp-ui-peek-fontify . 'on-demand) ;; never, on-demand, or always
)
;; sideline-mode 対応
(leaf sideline-flycheck :ensure t :require t)
(leaf sideline-lsp :ensure t :require t
:init
:config
(setq sideline-backends-right '(sideline-lsp sideline-flycheck))
)
:defer-config
;; consult 対応
(leaf consult-lsp :ensure t :require t
:url "https://github.com/gagbo/consult-lsp"
:doc ""
:after consult
)
;; うまく使えていない。
(leaf lsp-origami :ensure t :require t :disabled nil
:url "https://github.com/emacs-lsp/lsp-origami"
:doc "folding range の設定をorigami にやらせるということみたい。これは不要か。"
:doc "python-mode は hideshow を require. うまく共存できる?"
;; :hook lsp-after-open-hook
;; :after origami-minor-mode
:commands lsp-origami-try-enable
)
;; L570 にして画面が少し広くなったので、使ってみている。 lsp-ui-imenu の強化版?
;; カスタマイズは今後の課題。ブタに真珠の状態。
(leaf lsp-treemacs :ensure t :require t
:doc "LSP treemacs"
:tag "languages" "emacs>=26.1"
:added "2022-06-24"
:url "https://github.com/emacs-lsp/lsp-treemacs"
:emacs>= 26.1
:ensure t
:after treemacs lsp-mode
)
)
惰性で使ってて、何かを調べてカスタマイズしよう、とかがない昨今である。
L570になって、画面が広くなったし、 メモリも十分だし、 反応が遅いという印象も少ないので、まあ、いいかな。
最近、python-mode が、時々アップデート(v6.3.1 20220907)されている。 アップデートの中身は理解できないけど、 私が python-mode 自体を使っているという意識が希薄なので、 一度、使い方を調べた方がよいのかもと思っている。 (移動や narrow に必要になる ブロックとかの判定がメインかなあ)
まあ、なんとか emacs を使い続けているので、よしとしましょう。
0 件のコメント:
コメントを投稿