Skip to content

Instantly share code, notes, and snippets.

@buzztaiki
Last active June 26, 2022 13:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save buzztaiki/856994cfe61ad66218c2513a99cdac54 to your computer and use it in GitHub Desktop.
Save buzztaiki/856994cfe61ad66218c2513a99cdac54 to your computer and use it in GitHub Desktop.
vertico の候補一覧でプレフィクスを優先させる

vertico の候補一覧でプレフィクスを優先させる

emacs-jp に書いたやつ。

(defun vertico--compare-prefer-prefix (x y)
  (let ((content (or (car-safe vertico--input) (minibuffer-contents))))
    (pcase (cons (string-prefix-p content x) (string-prefix-p content y))
      ((or '(t . t) '(nil . nil)) (vertico--length-string< x y))
      (`(,match . ,_) match))))

(defun vertico-sort-prefer-prefix (candidates)
  (sort candidates #'vertico--compare-prefer-prefix))

(setq completion-styles '(orderless))
(setq vertico-sort-override-function #'vertico-sort-prefer-prefix)

history も考慮させるなら、vertico--define-sort を使う必要がある (それか全部自分で実装する)。バケットの先頭二つを history と perfix 用にするとかになるのかな。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment