Make melpazoid happy

master
Adam Kruszewski 2023-07-03 11:53:45 +02:00
parent 0674824cb8
commit 5b8137087a
1 changed files with 19 additions and 7 deletions

View File

@ -1,6 +1,6 @@
;;; corfu-candidate-overlay.el --- Show first candidate in an overlay while typing -*- lexical-binding: t -*- ;;; corfu-candidate-overlay.el --- Show first candidate in an overlay while typing -*- lexical-binding: t -*-
;; Copyright (C) 2021-2023 Free Software Foundation, Inc. ;; Copyright (C) 2021-2023 Adam Kruszewski
;; Author: Adam Kruszewski <adam@kruszewski.name> ;; Author: Adam Kruszewski <adam@kruszewski.name>
;; Maintainer: Adam Kruszewski <adam@kruszewski.name> ;; Maintainer: Adam Kruszewski <adam@kruszewski.name>
@ -9,7 +9,7 @@
;; Package-Requires: ((emacs "28.1") (corfu "0.36")) ;; Package-Requires: ((emacs "28.1") (corfu "0.36"))
;; Homepage: https://code.bsdgeek.org/adam/corfu-candidate-overlay/ ;; Homepage: https://code.bsdgeek.org/adam/corfu-candidate-overlay/
;; This file is part of GNU Emacs. ;; This file is not part of GNU Emacs.
;; This program is free software: you can redistribute it and/or modify ;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by ;; it under the terms of the GNU General Public License as published by
@ -48,9 +48,14 @@
(defvar corfu-candidate-overlay-map nil (defvar corfu-candidate-overlay-map nil
"Keymap to dismiss the Corfu candidate overlay.") "Keymap to dismiss the Corfu candidate overlay.")
(defgroup cofru-candidate-overlay nil
"Show first candidate in an overlay while typing."
:prefix "corfu-candidate-overlay"
:group 'corfu-candidate-overlay)
(defcustom corfu-candidate-overlay-auto-commands (defcustom corfu-candidate-overlay-auto-commands
'("delete-backward-char\\'" "backward-delete-char-untabify") '("delete-backward-char\\'" "backward-delete-char-untabify")
"Additional commands apart from ``corfu-auto-commands'' which initiate completion candidate overlay." "Additional commands apart ``corfu-auto-commands'' triggering candidate overlay."
:type '(repeat (choice regexp symbol)) :type '(repeat (choice regexp symbol))
:group 'corfu) :group 'corfu)
@ -92,7 +97,11 @@ The overlay can be dismissed with a mouse click."
(overlay-put corfu-candidate-overlay--overlay property value)) (overlay-put corfu-candidate-overlay--overlay property value))
(defun corfu-candidate-overlay--update (position prefix candidate how-many-candidates) (defun corfu-candidate-overlay--update (position prefix candidate how-many-candidates)
"Update the candidate overlay with the first candidate found by Corfu. Move the overlay to `POSITION` and store the `PREFIX` and `CANDIDATE` as overlay's properties. Depending on the `HOW-MANY-CANDIDATES` the overlay face is set to either `corfu-candidate-overlay-face-exact-match' (exactly one match) or `corfu-candidate-overlay-face' (more matches)." "Update the candidate overlay with the first candidate found by Corfu.
Move the overlay to `POSITION` and store the `PREFIX` and `CANDIDATE` as
overlay's properties. Depending on the `HOW-MANY-CANDIDATES` the overlay
face is set to either `corfu-candidate-overlay-face-exact-match'
\(exactly one match) or `corfu-candidate-overlay-face' (more matches)."
(corfu-candidate-overlay--prepare position) (corfu-candidate-overlay--prepare position)
(unless (string-empty-p candidate) (unless (string-empty-p candidate)
@ -132,7 +141,8 @@ The overlay can be dismissed with a mouse click."
Completion candidates are computed like Corfu does. Completion candidates are computed like Corfu does.
The overlay is updated to reflect the first one found. The overlay is updated to reflect the first one found.
Uses different face when there is only one candidate available Uses different face when there is only one candidate available
\(defaults to underline), see ``corfu-candidate-overlay-face-exact-match' and `corfu-candidate-overlay-face' faces for customization" \(defaults to underline), see ``corfu-candidate-overlay-face-exact-match'
and `corfu-candidate-overlay-face' faces for customization"
(let ((value (while-no-input ;; Interruptible capf query (let ((value (while-no-input ;; Interruptible capf query
(run-hook-wrapped 'completion-at-point-functions #'corfu--capf-wrapper)))) (run-hook-wrapped 'completion-at-point-functions #'corfu--capf-wrapper))))
@ -223,7 +233,9 @@ Otherwise the overlay can influence movement commands (i.e. the cursor is
(corfu-candidate-overlay--hide))))) (corfu-candidate-overlay--hide)))))
(defun corfu-candidate-overlay--post-command () (defun corfu-candidate-overlay--post-command ()
"Post command hook updating the candidate overlay when user types character and the cursor is at the end of word." "Post command hook to update candidate overlay.
Update happens when the user types character and the cursor is at
the end of word."
;; We should not throw an error here, as Emacs will disable ;; We should not throw an error here, as Emacs will disable
;; the hook if it fails with an error (and auto suggestion backends ;; the hook if it fails with an error (and auto suggestion backends
;; can and do throw errors sometimes, corfu even have a readme section ;; can and do throw errors sometimes, corfu even have a readme section
@ -296,7 +308,7 @@ Otherwise the overlay can influence movement commands (i.e. the cursor is
;; Here we "borrow" a character from the candidate and append it to the prefix. ;; Here we "borrow" a character from the candidate and append it to the prefix.
(is-insert-command (is-insert-command
(if (and (if (and
(not (string-empty-p previous-text)) (not (string= previous-text ""))
(length> candidate 1)) (length> candidate 1))
(corfu-candidate-overlay--update (corfu-candidate-overlay--update
(point) ;; move to current cursor's position (point) ;; move to current cursor's position