平衡点
2026/02/16
_ corfu の設定を見直す (2026年版)
以前は
を 丸パクリ 参考に設定していのだけれど,
最近これが動いていない事に気がついた.
でもって, 改めて corfu の設定を最初からやり直してみたのだけれど
- そもそも手癖で tab を打ってしまい, 望まぬ最初の補完候補が展開されるのが嫌
- それはそれとして, 補完候補がある場合は候補は表示して欲しい
となっていれば良いわけで.
- corf は最初から候補を選択している訳ではないので,
TAB に割り振られた
corf-insertが実行されても, 候補を展開したりはしない. - ここで
tab-always-indentが ='complete= だと再度補完が発生して… - なので
tab-always-indentがtなら, 望まぬ補完候補の展開は発生しない
となっていた. なるほど.
というわけで, 結局諸々の設定を綺麗にして, 以下の様に.
corf-terminal と kind-icon → nerd-icon の設定が長いが, まあそれはそれとして.
(leaf corfu
:ensure t
:init
;; -------------------------------------------------------------------------
(leaf corfu-terminal
:ensure t
:config
(setq corfu-terminal-disable-on-gui nil
corfu-terminal-enable-on-minibuffer nil
corfu-terminal-resize-minibuffer nil
)
)
;; -------------------------------------------------------------------------
(leaf kind-icon
:ensure t
:after corfu-terminal
:init
(setq kind-icon-default-face 'corfu-default
kind-icon-use-icons nil
kind-icon-mapping
`(
(array ,(nerd-icons-codicon "nf-cod-symbol_array") :face font-lock-type-face)
(boolean ,(nerd-icons-codicon "nf-cod-symbol_boolean") :face font-lock-builtin-face)
(class ,(nerd-icons-codicon "nf-cod-symbol_class") :face font-lock-type-face)
(color ,(nerd-icons-codicon "nf-cod-symbol_color") :face success)
(command ,(nerd-icons-codicon "nf-cod-terminal") :face default)
(constant ,(nerd-icons-codicon "nf-cod-symbol_constant") :face font-lock-constant-face)
(constructor ,(nerd-icons-codicon "nf-cod-triangle_right") :face font-lock-function-name-face)
(enummember ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face)
(enum-member ,(nerd-icons-codicon "nf-cod-symbol_enum_member") :face font-lock-builtin-face)
(enum ,(nerd-icons-codicon "nf-cod-symbol_enum") :face font-lock-builtin-face)
(event ,(nerd-icons-codicon "nf-cod-symbol_event") :face font-lock-warning-face)
(field ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-variable-name-face)
(file ,(nerd-icons-codicon "nf-cod-symbol_file") :face font-lock-string-face)
(folder ,(nerd-icons-codicon "nf-cod-folder") :face font-lock-doc-face)
(interface ,(nerd-icons-codicon "nf-cod-symbol_interface") :face font-lock-type-face)
(keyword ,(nerd-icons-codicon "nf-cod-symbol_keyword") :face font-lock-keyword-face)
(macro ,(nerd-icons-codicon "nf-cod-symbol_misc") :face font-lock-keyword-face)
(magic ,(nerd-icons-codicon "nf-cod-wand") :face font-lock-builtin-face)
(method ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face)
(function ,(nerd-icons-codicon "nf-cod-symbol_method") :face font-lock-function-name-face)
(module ,(nerd-icons-codicon "nf-cod-file_submodule") :face font-lock-preprocessor-face)
(numeric ,(nerd-icons-codicon "nf-cod-symbol_numeric") :face font-lock-builtin-face)
(operator ,(nerd-icons-codicon "nf-cod-symbol_operator") :face font-lock-comment-delimiter-face)
(param ,(nerd-icons-codicon "nf-cod-symbol_parameter") :face default)
(property ,(nerd-icons-codicon "nf-cod-symbol_property") :face font-lock-variable-name-face)
(reference ,(nerd-icons-codicon "nf-cod-references") :face font-lock-variable-name-face)
(snippet ,(nerd-icons-codicon "nf-cod-symbol_snippet") :face font-lock-string-face)
(string ,(nerd-icons-codicon "nf-cod-symbol_string") :face font-lock-string-face)
(struct ,(nerd-icons-codicon "nf-cod-symbol_structure") :face font-lock-variable-name-face)
(text ,(nerd-icons-codicon "nf-cod-text_size") :face font-lock-doc-face)
(typeparameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face)
(type-parameter ,(nerd-icons-codicon "nf-cod-list_unordered") :face font-lock-type-face)
(unit ,(nerd-icons-codicon "nf-cod-symbol_ruler") :face font-lock-constant-face)
(value ,(nerd-icons-codicon "nf-cod-symbol_field") :face font-lock-builtin-face)
(variable ,(nerd-icons-codicon "nf-cod-symbol_variable") :face font-lock-variable-name-face)
(t ,(nerd-icons-codicon "nf-cod-code") :face font-lock-warning-face))
)
:config
(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter)
)
;; -------------------------------------------------------------------------
:bind (:corfu-map
("M-SPC" . corfu-insert-separator))
;; -------------------------------------------------------------------------
:hook (emacs-startup-hook . (lambda ()
(corfu-terminal-mode +1)
(global-corfu-mode))
)
;; -------------------------------------------------------------------------
:custom (;; Emacs 30 and newer: Disable Ispell completion function.
;; Try `cape-dict' as an alternative.
(text-mode-ispell-word-completion . nil)
)
;; -------------------------------------------------------------------------
:config
(setq corfu-cycle t
corfu-auto t
tab-always-indent t ;; 'complete だと TAB で補完暴発が...
completion-cycle-threshold 4
corfu-preselect 'prompt
)
)
解決したかった TAB の暴走は無くなったけれど,
今度は corf-separator の割り当てに悩んだり.
よくある SPC だと, 英字の後に半角空白を入れて空ける癖と衝突したりして.
取り敢えず M-SPC にしたけれど, どうかなぁ….
[ツッコミを入れる]