summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Mendler <mail@daniel-mendler.de>2024-07-10 21:19:06 +0200
committerDaniel Mendler <mail@daniel-mendler.de>2024-07-10 21:19:14 +0200
commit040c1ee30b6ff766ba0f3e1458b43ce4a65f068b (patch)
treedf0c57c3395b73f92761123726eae719e2afb098
parentd6600e48e5976fb3c6cc373ef25d22284d38ba2e (diff)
Add cape-prefix-map for simplified configuration
-rw-r--r--CHANGELOG.org4
-rw-r--r--README.org27
-rw-r--r--cape.el24
3 files changed, 36 insertions, 19 deletions
diff --git a/CHANGELOG.org b/CHANGELOG.org
index 16da753..fd8c0c1 100644
--- a/CHANGELOG.org
+++ b/CHANGELOG.org
@@ -2,6 +2,10 @@
#+author: Daniel Mendler
#+language: en
+* Development
+
+- Add ~cape-prefix-map~ for simplified configuration.
+
* Version 1.5 (2024-04-12)
- ~cape-file-prefix~: New variable to customize file name completion prefix. If
diff --git a/README.org b/README.org
index 9e12b4f..9f446fa 100644
--- a/README.org
+++ b/README.org
@@ -84,25 +84,14 @@ information.
;; Add extensions
(use-package cape
- ;; Bind dedicated completion commands
- ;; Alternative prefix keys: C-c p, M-p, M-+, ...
- :bind (("C-c p p" . completion-at-point) ;; capf
- ("C-c p t" . complete-tag) ;; etags
- ("C-c p d" . cape-dabbrev) ;; or dabbrev-completion
- ("C-c p h" . cape-history)
- ("C-c p f" . cape-file)
- ("C-c p k" . cape-keyword)
- ("C-c p s" . cape-elisp-symbol)
- ("C-c p e" . cape-elisp-block)
- ("C-c p a" . cape-abbrev)
- ("C-c p l" . cape-line)
- ("C-c p w" . cape-dict)
- ("C-c p :" . cape-emoji)
- ("C-c p \\" . cape-tex)
- ("C-c p _" . cape-tex)
- ("C-c p ^" . cape-tex)
- ("C-c p &" . cape-sgml)
- ("C-c p r" . cape-rfc1345))
+ ;; Bind prefix keymap providing all Cape commands under a mnemonic key.
+ ;; Press C-c p ? for help.
+ :bind ("C-c p" . cape-prefix-map) ;; Alternative keys: M-p, M-+, ...
+ ;; Alternatively bind Cape commands individually.
+ ;; :bind (("C-c p d" . cape-dabbrev)
+ ;; ("C-c p h" . cape-history)
+ ;; ("C-c p f" . cape-file)
+ ;; ...)
:init
;; Add to the global default value of `completion-at-point-functions' which is
;; used by `completion-at-point'. The order of the functions matters, the
diff --git a/cape.el b/cape.el
index b268507..d2bcc32 100644
--- a/cape.el
+++ b/cape.el
@@ -1271,5 +1271,29 @@ This function can be used as an advice around an existing Capf."
(format "Create a %s Capf from CAPF.
The Capf calls `%s' with CAPF and ARGS as arguments." name wrapper))))
+(defvar-keymap cape-prefix-map
+ :doc "Keymap used as completion entry point.
+The keymap should be installed globally under a prefix."
+ "p" #'completion-at-point
+ "t" #'complete-tag
+ "d" #'cape-dabbrev
+ "h" #'cape-history
+ "f" #'cape-file
+ "s" #'cape-elisp-symbol
+ "e" #'cape-elisp-block
+ "a" #'cape-abbrev
+ "l" #'cape-line
+ "w" #'cape-dict
+ "k" 'cape-keyword
+ ":" 'cape-emoji
+ "\\" 'cape-tex
+ "_" 'cape-tex
+ "^" 'cape-tex
+ "&" 'cape-sgml
+ "r" 'cape-rfc1345)
+
+;;;###autoload (autoload 'cape-prefix-map "cape" nil t 'keymap)
+(defalias 'cape-prefix-map cape-prefix-map)
+
(provide 'cape)
;;; cape.el ends here