diff options
| author | Ravi R Kiran <aine.marina@gmail.com> | 2021-10-10 20:49:35 (GMT) |
|---|---|---|
| committer | Ravi R Kiran <aine.marina@gmail.com> | 2021-10-10 20:49:35 (GMT) |
| commit | ae40145403cd0a43f827aaefaa50d7cc8229a699 (patch) | |
| tree | 71893cc570fcb8c04b42fb468c335274dee6ccac /lisp/ravi-init-completion.el | |
| parent | 859f6a7f2368198660a8b7ac5dafe3e4571895cc (diff) | |
| download | dotemacs-ae40145403cd0a43f827aaefaa50d7cc8229a699.zip dotemacs-ae40145403cd0a43f827aaefaa50d7cc8229a699.tar.gz dotemacs-ae40145403cd0a43f827aaefaa50d7cc8229a699.tar.bz2 | |
Post facto window selection
Diffstat (limited to 'lisp/ravi-init-completion.el')
| -rw-r--r-- | lisp/ravi-init-completion.el | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lisp/ravi-init-completion.el b/lisp/ravi-init-completion.el index 7ade2fb..a722ad4 100644 --- a/lisp/ravi-init-completion.el +++ b/lisp/ravi-init-completion.el @@ -97,6 +97,45 @@ (interactive "GFile: ") (magit-status (locate-dominating-file file ".git"))) + ;; Ace window dispatch on embark actions + ;; Different implementation, but the idea is from: + ;; https://karthinks.com/software/fifteen-ways-to-use-embark/ + (eval-when-compile + (defun ravi/embark-ace-action (fn) + `(defun ,(intern (concat "ravi/embark-ace-" (symbol-name fn))) () + (interactive) + (with-demoted-errors "%s" + (require 'ace-window) + (aw-switch-to-window (aw-select nil)) + (call-interactively (symbol-function ',fn))))) + (defun ravi/embark-ace-split-action (fn split-type) + `(defun ,(intern (concat "ravi/embark-" + (symbol-name fn) + "-" + (car (last (split-string + (symbol-name split-type) "-"))))) () + (interactive) + (when-let ((new-window (funcall #',split-type))) + (select-window new-window)) + (call-interactively #',fn))) + (defun ravi/make-embark-ace-actions (keymap-func) + (let* ((keymap (car keymap-func)) + (func (cadr keymap-func)) + (func-name (symbol-name func))) + `(progn + (define-key ,keymap (kbd "o") ,(ravi/embark-ace-action func)) + (define-key ,keymap (kbd "2") ,(ravi/embark-ace-split-action func #'split-window-right)) + (define-key ,keymap (kbd "3") ,(ravi/embark-ace-split-action func #'split-window-below))))) + (defmacro ravi/make-embark-ace-actions-all-macro (keymap-func-list) + `(progn + ,@(mapcar #'ravi/make-embark-ace-actions keymap-func-list)))) + (ravi/make-embark-ace-actions-all-macro ((embark-file-map find-file) + (embark-buffer-map switch-to-buffer) + (embark-bookmark-map bookmark-jump))) + ;; For debugging below: + ;; (pp (macroexpand '(ravi/make-embark-ace-actions-all-macro + ;; ((embark-file-map find-file))))) + ;; Hide the mode line of the Embark live/completions buffers (add-to-list 'display-buffer-alist '("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*" |
