From 506b6c66fee75b1c5d3a94527c0f3945805ce1b8 Mon Sep 17 00:00:00 2001 From: Case Duckworth Date: Fri, 17 Dec 2021 18:29:58 -0600 Subject: Add ace-window --- init.el | 8 ++++++++ lisp/+ace-window.el | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 lisp/+ace-window.el diff --git a/init.el b/init.el index 5d756cd..f8368db 100644 --- a/init.el +++ b/init.el @@ -161,6 +161,14 @@ (with-eval-after-load 'embark (define-key embark-region-map (kbd "U") '0x0-dwim))) +(setup (:straight ace-window) + (:also-load +ace-window) + (:option aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l) + aw-display-mode-overlay nil) + (:+key "M-o" '+ace-window-or-switch-buffer) + (:face aw-mode-line-face ((t (:foreground "red")))) + (+ace-window-display-mode +1)) + (setup (:straight acme-theme) ;; (load-theme 'acme t) ) diff --git a/lisp/+ace-window.el b/lisp/+ace-window.el new file mode 100644 index 0000000..fca27d9 --- /dev/null +++ b/lisp/+ace-window.el @@ -0,0 +1,37 @@ +;;; +ace-window.el -*- lexical-binding: t; -*- + +;;; Code: + +(require 'ace-window) + +;;;###autoload +(define-minor-mode +ace-window-display-mode + "Minor mode for updating data for `+modeline-ace-window-display'." + ;; This is stolen from ace-window.el but with the mode-line stuff ripped out. + :global t + (if +ace-window-display-mode + (progn + (aw-update) + (force-mode-line-update t) + (add-hook 'window-configuration-change-hook 'aw-update) + (add-hook 'after-make-frame-functions 'aw--after-make-frame t) + (advice-add 'aw--lead-overlay :override 'ignore)) + (remove-hook 'window-configuration-change-hook 'aw-update) + (remove-hook 'after-make-frame-functions 'aw--after-make-frame) + (advice-remove 'aw--lead-overlay 'ignore))) + +;;;###autoload +(defun +ace-window-or-switch-buffer (arg) + "Call `ace-window' with ARG if more than one window is visible. +Switch to most recent buffer otherwise." + ;; cribbed from `crux-other-window-or-switch-buffer' + (interactive "p") + (if (one-window-p) + (switch-to-buffer nil) + (ace-window arg))) + +(defun +ace-window@disable-overlay (_fn &rest _args) + "ADVICE for FN `aw--lead-overlay' (and ARGS) to not show overlays.") + +(provide '+ace-window) +;;; +ace-window.el ends here -- cgit 1.4.1-21-gabe81