summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2023-01-13 11:47:02 +0100
committerDaniel Mendler <mail@daniel-mendler.de>2023-01-13 11:47:02 +0100
commit6081a68db6f74a493431d647942fc294964910aa (patch)
tree55649ec3d6213bc1361a76f1078ad0d4236d0641
parentb5458a132c678b5fe97b4a7819b9bb1dba31aee2 (diff)
Require the compat library
-rw-r--r--corfu.el56
-rw-r--r--extensions/corfu-indexed.el2
-rw-r--r--extensions/corfu-popupinfo.el20
3 files changed, 37 insertions, 41 deletions
diff --git a/corfu.el b/corfu.el
index 4a3579e..f4f8000 100644
--- a/corfu.el
+++ b/corfu.el
@@ -6,7 +6,7 @@
;; Maintainer: Daniel Mendler <mail@daniel-mendler.de>
;; Created: 2021
;; Version: 0.34
-;; Package-Requires: ((emacs "27.1"))
+;; Package-Requires: ((emacs "27.1") (compat "29.1.1.0"))
;; Homepage: https://github.com/minad/corfu
;; This file is part of GNU Emacs.
@@ -33,6 +33,7 @@
;;; Code:
+(require 'compat)
(require 'seq)
(eval-when-compile
(require 'cl-lib)
@@ -213,31 +214,29 @@ The completion backend can override this with
'((t :inherit shadow :strike-through t))
"Face used for deprecated candidates.")
-(defvar corfu-map
- (let ((map (make-sparse-keymap)))
- (define-key map [remap beginning-of-buffer] #'corfu-first)
- (define-key map [remap end-of-buffer] #'corfu-last)
- (define-key map [remap scroll-down-command] #'corfu-scroll-down)
- (define-key map [remap scroll-up-command] #'corfu-scroll-up)
- (define-key map [remap next-line] #'corfu-next)
- (define-key map [remap previous-line] #'corfu-previous)
- (define-key map [remap completion-at-point] #'corfu-complete)
- (define-key map [down] #'corfu-next)
- (define-key map [up] #'corfu-previous)
- (define-key map [remap keyboard-escape-quit] #'corfu-reset)
- ;; XXX [tab] is bound because of org-mode
- ;; The binding should be removed from org-mode-map.
- (define-key map [tab] #'corfu-complete)
- (define-key map "\M-n" #'corfu-next)
- (define-key map "\M-p" #'corfu-previous)
- (define-key map "\C-g" #'corfu-quit)
- (define-key map "\r" #'corfu-insert)
- (define-key map "\t" #'corfu-complete)
- (define-key map "\M-g" 'corfu-info-location)
- (define-key map "\M-h" 'corfu-info-documentation)
- (define-key map "\M- " #'corfu-insert-separator)
- map)
- "Corfu keymap used when popup is shown.")
+(defvar-keymap corfu-map
+ :doc "Corfu keymap used when popup is shown."
+ "<remap> <beginning-of-buffer>" #'corfu-first
+ "<remap> <end-of-buffer>" #'corfu-last
+ "<remap> <scroll-down-command>" #'corfu-scroll-down
+ "<remap> <scroll-up-command>" #'corfu-scroll-up
+ "<remap> <next-line>" #'corfu-next
+ "<remap> <previous-line>" #'corfu-previous
+ "<remap> <completion-at-point>" #'corfu-complete
+ "<remap> <keyboard-escape-quit>" #'corfu-reset
+ "<down>" #'corfu-next
+ "<up>" #'corfu-previous
+ ;; XXX [tab] is bound because of org-mode
+ ;; The binding should be removed from org-mode-map.
+ "<tab>" #'corfu-complete
+ "M-n" #'corfu-next
+ "M-p" #'corfu-previous
+ "C-g" #'corfu-quit
+ "RET" #'corfu-insert
+ "TAB" #'corfu-complete
+ "M-g" 'corfu-info-location
+ "M-h" 'corfu-info-documentation
+ "M-SPC" #'corfu-insert-separator)
(defvar corfu--auto-timer nil
"Auto completion timer.")
@@ -887,8 +886,7 @@ See `corfu-separator' for more details."
(<= beg pt end)
(save-excursion
(goto-char beg)
- (let ((inhibit-field-text-motion t))
- (<= (line-beginning-position) pt (line-end-position))))
+ (<= (pos-bol) pt (pos-eol)))
(or
;; We keep Corfu alive if a `overriding-terminal-local-map' is
;; installed, e.g., the `universal-argument-map'. It would be good to
@@ -1082,7 +1080,7 @@ Quit if no candidate is selected."
(exit (plist-get completion-extra-properties :exit-function))
(threshold (completion--cycle-threshold metadata))
(completion-in-region-mode-predicate
- (or completion-in-region-mode-predicate (lambda () t))))
+ (or completion-in-region-mode-predicate #'always)))
(pcase (completion-try-completion str table pred pt metadata)
('nil (corfu--message "No match") nil)
('t (goto-char end)
diff --git a/extensions/corfu-indexed.el b/extensions/corfu-indexed.el
index 7de296b..c090a97 100644
--- a/extensions/corfu-indexed.el
+++ b/extensions/corfu-indexed.el
@@ -60,7 +60,7 @@
"Advice for `corfu--affixate' which prefixes the CANDS with an index."
(setq cands (cdr cands))
(let* ((space #(" " 0 1 (face (:height 0.5 :inherit corfu-indexed))))
- (width (if (> (+ corfu-indexed-start (length cands)) 10) 2 1))
+ (width (if (length> cands (- 10 corfu-indexed-start)) 2 1))
(fmt (concat space
(propertize (format "%%%ds" width)
'face 'corfu-indexed)
diff --git a/extensions/corfu-popupinfo.el b/extensions/corfu-popupinfo.el
index 48e1294..60cb0b5 100644
--- a/extensions/corfu-popupinfo.el
+++ b/extensions/corfu-popupinfo.el
@@ -112,17 +112,15 @@ popup can be requested manually via `corfu-popupinfo-toggle',
(const force-vertical)))
:group 'corfu)
-(defvar corfu-popupinfo-map
- (let ((map (make-sparse-keymap)))
- (define-key map "\M-d" #'corfu-popupinfo-documentation)
- (define-key map "\M-l" #'corfu-popupinfo-location)
- (define-key map "\M-t" #'corfu-popupinfo-toggle)
- (define-key map [remap scroll-other-window] #'corfu-popupinfo-scroll-up)
- (define-key map [remap scroll-other-window-down] #'corfu-popupinfo-scroll-down)
- (define-key map [remap end-of-buffer-other-window] #'corfu-popupinfo-end)
- (define-key map [remap beginning-of-buffer-other-window] #'corfu-popupinfo-beginning)
- map)
- "Additional keymap activated in popupinfo mode.")
+(defvar-keymap corfu-popupinfo-map
+ :doc "Additional keymap activated in popupinfo mode."
+ "M-d" #'corfu-popupinfo-documentation
+ "M-l" #'corfu-popupinfo-location
+ "M-t" #'corfu-popupinfo-toggle
+ "<remap> <scroll-other-window>" #'corfu-popupinfo-scroll-up
+ "<remap> <scroll-other-window-down>" #'corfu-popupinfo-scroll-down
+ "<remap> <end-of-buffer-other-window>" #'corfu-popupinfo-end
+ "<remap> <beginning-of-buffer-other-window>" #'corfu-popupinfo-beginning)
(defvar corfu-popupinfo--buffer-parameters
'((truncate-partial-width-windows . nil)