From 678ea6106ac671a438af8e41a2db1322a250eade Mon Sep 17 00:00:00 2001 From: Eshel Yaron Date: Tue, 17 Sep 2024 20:26:23 +0200 Subject: [PATCH] New user option 'completion-preview-ignore-case' Completion Preview mode implicitly assumed that 'completion-ignore-case' is nil, and while it can also work with 'completion-ignore-case' non-nil, the results are a bit different than what you get with 'completion-at-point'. Add an option that controls case sensitivity explicitly and specifically for Completion Preview mode, and clarify the behavior when case differences are ignored. (Bug#73234) * lisp/completion-preview.el (completion-preview-ignore-case): New user option. --- lisp/completion-preview.el | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lisp/completion-preview.el b/lisp/completion-preview.el index b90da6127b9..530b116da7c 100644 --- a/lisp/completion-preview.el +++ b/lisp/completion-preview.el @@ -183,6 +183,24 @@ If this is nil, display the completion preview without delay." (const :tag "No delay" nil)) :version "30.1") +(defcustom completion-preview-ignore-case nil + "Whether Completion Preview mode ignores case differences. + +By default this option is nil, which says that case is significant, so a +completion candidate \"FooBar\" matches prefix \"Foo\", but not \"foo\". +If you set it to non-nil, then Completion Preview mode also suggests +completions that differ in case from the prefix that you type; for +example, it may suggest completing \"foo\" with the suffix \"Bar\" when +there's an available completion candidate \"FooBar\". Note that in this +case, when you insert the completion (with `completion-preview-insert'), +Completion Preview mode does not update the completed prefix according +to the capitalization of the completion candidate, instead it simply +ignores such case differences, so the resulting string is \"fooBar\". + +See also `completion-ignore-case'." + :type 'boolean + :version "31.1") + (defvar completion-preview-sort-function #'minibuffer--sort-by-length-alpha "Sort function to use for choosing a completion candidate to preview.") @@ -403,6 +421,7 @@ candidates or if there are multiple matching completions and ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (let* ((pred (plist-get props :predicate)) (string (buffer-substring beg end)) + (completion-ignore-case completion-preview-ignore-case) (md (completion-metadata string table pred)) (sort-fn (or (completion-metadata-get md 'sort-function) completion-preview-sort-function)) -- 2.39.5