From 58573a0ce795e804b4b4e1813e716eed306d3f4a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 4 Jan 2018 03:24:00 -0500 Subject: [PATCH] Refactor/revise ui/window-select And bind SPC w C-w (or C-w C-w) to other-window. --- modules/private/default/+bindings.el | 2 +- modules/ui/window-select/README.org | 44 +++++++++++++++++++++------- modules/ui/window-select/config.el | 44 ++++++++++++++-------------- 3 files changed, 56 insertions(+), 34 deletions(-) diff --git a/modules/private/default/+bindings.el b/modules/private/default/+bindings.el index dc8beb3e4..75c59770a 100644 --- a/modules/private/default/+bindings.el +++ b/modules/private/default/+bindings.el @@ -320,7 +320,7 @@ "C-j" #'evil-window-down "C-k" #'evil-window-up "C-l" #'evil-window-right - "C-w" #'ace-window + "C-w" #'other-window ;; Swapping windows "H" #'+evil/window-move-left "J" #'+evil/window-move-down diff --git a/modules/ui/window-select/README.org b/modules/ui/window-select/README.org index 57cba1db9..9d70524b2 100644 --- a/modules/ui/window-select/README.org +++ b/modules/ui/window-select/README.org @@ -2,22 +2,44 @@ This module provides the user with a visual way to switch windows. By default, the module only kicks in if there are more than two windows open at the same time. -* Keybindings -The default function to switch windows is automatically changed to work with this module. More specifically, the function ~other-window~ is automatically remapped. This function is bounded by default to ~C-x o~. +* Table of Contents :TOC: +- [[#install][Install]] + - [[#module-flags][Module flags]] +- [[#usage][Usage]] +- [[#configuration][Configuration]] + - [[#ace-window][ace-window]] + - [[#switch-window][switch-window]] -* Customization -There are two packages that accomplish the same but with a different visual queue. +* Install +Add =:feature lookup= to your init.el. + +** Module flags +This module provides two flags: + ++ ~+ace-window~ Use avy (and ace-window) as the backend. ++ ~+switch-window~ Use switch-window as the backend. + +If neither flag is specified, ~+ace-window~ will be used. + +* Usage +This module remaps the function ~other-window~ to either ~switch-window~ or +~ace-window~, depending on which backend you've enabled. + +~other-window~ is bound to ~C-x o~ and ~SPC w o~. + +* Configuration +This module provides two backends, both providing the same functionality, but +with different visual cues. They are =ace-window= and =switch-window=. ** ace-window -The first character of the buffers change to a user selectable character. +The first character of the buffers changes to a highlighted, user-selectable +character. + + Pros: The content of the buffers are always visible. + Cons: The displayed characters are small and difficult to see. -This is the module's default if no module flag is specified. To explicitly enable this, write in *init.el*: ~(doom! :ui (window-select +ace-window))~ - ** switch-window -The entire buffer is replaced by big letters than enable the user to easily select a desired window. - + Pros: The displayed characters are easy to see. They will never be missed. - + Cons: The contents of the buffers is entirely replaced by a big character. +Replaces the entire buffer with large letters. -To enable this, write in *init.el*: ~(doom! :ui (window-select +switch-window))~ + + Pros: The displayed characters are /really/ easy to see. + + Cons: You can't see the contents of the buffers. diff --git a/modules/ui/window-select/config.el b/modules/ui/window-select/config.el index 4436b4fa6..eff60aa08 100644 --- a/modules/ui/window-select/config.el +++ b/modules/ui/window-select/config.el @@ -1,24 +1,24 @@ ;;; ui/window-select/config.el -*- lexical-binding: t; -*- -(cond ((featurep! +switch-window) - ;; Configure switch-window if that flag is found - (def-package! switch-window - :commands (switch-window switch-window-then-maximize switch-window-then-split-below - switch-window-then-split-right switch-window-then-delete - switch-window-then-swap-buffer) - :init - (setq switch-window-shortcut-style 'qwerty - switch-window-qwerty-shortcuts '("a" "s" "d" "f" "g" "h" "j" "k" "l")) - ;; Redefine how we switch windows with switch-window - (define-key global-map [remap other-window] #'switch-window))) - ((or (featurep! +ace-window) t) - ;; Configure ace-window if that flag or no flag is found - (def-package! ace-window - :commands (ace-window ace-swap-window ace-delete-window - ace-select-window ace-delete-other-windows) - :init - (define-key global-map [remap other-window] #'ace-window) - :config - (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l) - aw-scope 'frame - aw-background t)))) +(cond + ((featurep! +switch-window) + (def-package! switch-window + :commands (switch-window switch-window-then-maximize switch-window-then-split-below + switch-window-then-split-right switch-window-then-delete + switch-window-then-swap-buffer) + :init + (define-key global-map [remap other-window] #'switch-window) + :config + (setq switch-window-shortcut-style 'qwerty + switch-window-qwerty-shortcuts '("a" "s" "d" "f" "g" "h" "j" "k" "l")))) + + ((or (featurep! +ace-window) t) ; default to ace-window + (def-package! ace-window + :commands (ace-window ace-swap-window ace-delete-window + ace-select-window ace-delete-other-windows) + :init + (define-key global-map [remap other-window] #'ace-window) + :config + (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l) + aw-scope 'frame + aw-background t))))