Allow 'completion-preview-require-minimum-symbol-length' to be nil

With some completion backends, completion preview is useful not only
after a partial symbol, but also after punctuation and other non-symbol
characters.  For example, in C code it's helpful to display the
completion preview for struct members when point is after 'foo->'.
Provide an option to skip the check for minimum symbol length at point
in order to support this use case.

* lisp/completion-preview.el
(completion-preview-minimum-symbol-length): Mention possible nil
value in type and docstring.
(completion-preview-require-minimum-symbol-length): Skip check
if 'completion-preview-minimum-symbol-length' is nil.
This commit is contained in:
Eshel Yaron 2024-06-05 10:03:06 +02:00
parent b2ed1ed1d8
commit c11fe94006
No known key found for this signature in database
GPG key ID: EF3EE9CA35D78618

View file

@ -90,8 +90,12 @@ first candidate, and you can cycle between the candidates with
:version "30.1")
(defcustom completion-preview-minimum-symbol-length 3
"Minimum length of the symbol at point for showing completion preview."
:type 'natnum
"Minimum length of the symbol at point for showing completion preview.
If this is nil rather than a number of characters, show the preview also
after non-symbol characters, such as punctuation or whitespace."
:type '(choice (natnum :tag "Minimum number of symbol characters")
(const :tag "Disable minimum symbol length requirement" nil))
:version "30.1")
(defcustom completion-preview-message-format
@ -195,9 +199,10 @@ Completion Preview mode avoids updating the preview after these commands.")
(defun completion-preview-require-minimum-symbol-length ()
"Check if the length of symbol at point is at least above a certain threshold.
`completion-preview-minimum-symbol-length' determines that threshold."
(let ((bounds (bounds-of-thing-at-point 'symbol)))
(and bounds (<= completion-preview-minimum-symbol-length
(- (cdr bounds) (car bounds))))))
(or (null completion-preview-minimum-symbol-length)
(let ((bounds (bounds-of-thing-at-point 'symbol)))
(and bounds (<= completion-preview-minimum-symbol-length
(- (cdr bounds) (car bounds)))))))
(defun completion-preview-hide ()
"Hide the completion preview."