Refactor/revise ui/window-select

And bind SPC w C-w (or C-w C-w) to other-window.
This commit is contained in:
Henrik Lissner 2018-01-04 03:24:00 -05:00
parent 815fc6ef02
commit 58573a0ce7
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 56 additions and 34 deletions

View file

@ -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

View file

@ -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.

View file

@ -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))))