平衡点


2026/02/16

_ corfu の設定を見直す (2026年版)

以前は

丸パクリ 参考に設定していのだけれど, 最近これが動いていない事に気がついた.

でもって, 改めて corfu の設定を最初からやり直してみたのだけれど

  • そもそも手癖で tab を打ってしまい, 望まぬ最初の補完候補が展開されるのが嫌
  • それはそれとして, 補完候補がある場合は候補は表示して欲しい

となっていれば良いわけで.

  1. corf は最初から候補を選択している訳ではないので, TAB に割り振られた corf-insert が実行されても, 候補を展開したりはしない.
  2. ここで tab-always-indent が ='complete= だと再度補完が発生して…
  3. なので tab-always-indentt なら, 望まぬ補完候補の展開は発生しない

となっていた. なるほど.

というわけで, 結局諸々の設定を綺麗にして, 以下の様に. corf-terminalkind-iconnerd-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 にしたけれど, どうかなぁ….


連絡先など
"
最近の日記
  • 2026/02/16
    • 1. corfu の設定を見直す (2026年版)
  • 2026/02/14
    • 1. Windows11, macOS, Linux (Wayland) での clipboard 共有
  • 2026/02/04
    • 1. Emacs で Modern Fortran を弄るためのアレコレ
  • 2026/01/15
    • 1. dh_installdocs の便利(?)機能
  • 2026/01/03
    • 1. 2026年になりました.
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|04|05|06|10|12|
2025|02|03|04|05|06|08|09|10|12|
2026|01|02|
Back to Top ▲