diff options
| author | Ravi R Kiran <aine.marina@gmail.com> | 2022-04-17 15:14:12 (GMT) |
|---|---|---|
| committer | Ravi R Kiran <aine.marina@gmail.com> | 2022-04-17 15:14:59 (GMT) |
| commit | 26067be3a4d90df83bcc9cd0364c185b6f2fa68b (patch) | |
| tree | c6733f464bbab91e8844fa419dccf23b48188cfa | |
| parent | 44114c64270223bf7f85d1a34fe247dca9b71e12 (diff) | |
| download | dotemacs-26067be3a4d90df83bcc9cd0364c185b6f2fa68b.zip dotemacs-26067be3a4d90df83bcc9cd0364c185b6f2fa68b.tar.gz dotemacs-26067be3a4d90df83bcc9cd0364c185b6f2fa68b.tar.bz2 | |
Easy kill extras and nicer hints
| -rw-r--r-- | lisp/ravi-init-navigation.el | 82 |
1 files changed, 70 insertions, 12 deletions
diff --git a/lisp/ravi-init-navigation.el b/lisp/ravi-init-navigation.el index 1f1770b..f2aafda 100644 --- a/lisp/ravi-init-navigation.el +++ b/lisp/ravi-init-navigation.el @@ -289,19 +289,44 @@ nil))) (when on-exit-with-map (lambda () (funcall on-exit-with-map map)))))) + (defun ravi/concat-easy-kill-hints (hints max-size) + (let ((current-line-size 0) + (current-hint-size) + (result "")) + (dolist (hint hints) + (setq current-hint-size (1+ (length hint))) + (when (> (+ current-line-size current-hint-size) max-size) + (setq result (concat result "\n")) + (setq current-line-size 0)) + (setq result (concat result " " hint)) + (setq current-line-size (+ current-line-size current-hint-size))) + result)) + (defun ravi/easy-kill-make-hint-message () - (let ((basic "+=:expand -:shrink SPC:cycle @:append 0:original 1-9:more ?:help") - (remapped-basic (mapconcat 'identity - (delq nil (mapcar - (lambda (c) - (when-let ((binding (where-is-internal (car c) nil t))) - (concat (key-description binding) ":" (symbol-name (car c))))) - (cdr (alist-get 'remap easy-kill-base-map)))) - " ")) - (configurable (mapconcat (lambda (item) - (concat (char-to-string (car item)) ":" (symbol-name (cadr item)))) - easy-kill-alist " "))) - (concat basic "\n" remapped-basic "\n" configurable))) + (let* ((hint-maker (lambda (key-desc) + (concat (propertize (car key-desc) 'face 'font-lock-keyword-face) ":" (cdr key-desc)))) + (basic (mapcar hint-maker '(("+=" . "expand") + ("-" . "shrink") + ("SPC" . "cycle") + ("@" . "append") + ("0" . "original") + ("1-9" . "more") + ("?" . "help")))) + (remapped-basic (delq nil (mapcar + (lambda (c) + (when-let ((binding (where-is-internal (car c) nil t))) + (funcall hint-maker + (cons (propertize (key-description binding) 'face 'font-lock-keyword-face) + (symbol-name (car c)))))) + (cdr (alist-get 'remap easy-kill-base-map))))) + (configurable (mapcar (lambda (item) + (funcall hint-maker + (cons (propertize (char-to-string (car item)) 'face 'font-lock-keyword-face) + (symbol-name (cadr item))))) + easy-kill-alist))) + (mapconcat (lambda (hints) (ravi/concat-easy-kill-hints hints (window-width (minibuffer-window)))) + (list basic remapped-basic configurable) + "\n"))) (defvar ravi/easy-kill-hint-delay 2.0 "Delay before easy-kill hints are shown") @@ -324,6 +349,39 @@ (advice-add 'easy-kill-activate-keymap :override #'ravi/easy-kill-activate-keymap) ) +(use-package easy-kill-extras + :after (easy-kill) + :init + (setq easy-kill-ace-jump-enable-p nil) ; we use avy instead of ace-jump + :config + (bind-key "o" 'easy-kill-er-expand easy-kill-base-map) + (bind-key "i" 'easy-kill-er-unexpand easy-kill-base-map) + (require 'extra-things) + (dolist (cmd '((?^ backward-line-edge "") + (?$ forward-line-edge "") + (?a buffer "") + (?f string-to-char-forward "") + (?F string-up-to-char-forward "") + (?t string-to-char-backward "") + (?T string-up-to-char-backward "") + ;; The rest come from extra-things + (?W WORD " ") + (?\' squoted-string "") + (?\" dquoted-string "") + (?\` bquoted-string "") + (?q quoted-string "") + (?Q quoted-string-universal "") + (?\) parentheses-pair-content "\n") + (?\( parentheses-pair "\n") + (?\] brackets-pair-content "\n") + (?\[ brackets-pair "\n") + (?} curlies-pair-content "\n") + (?{ curlies-pair "\n") + (?> angles-pair-content "\n") + (?< angles-pair "\n"))) + (add-to-list 'easy-kill-alist cmd)) + ) + ;; grep and friends (use-package wgrep |
