Module to visually select windows with either ace-window or switch-window

Modularize ace-window and add switch-window as a replacement: Issue #218
This commit is contained in:
Undead Kernel 2017-10-08 23:34:25 +02:00
parent ab31730253
commit f9321b1b3b
5 changed files with 59 additions and 8 deletions

View file

@ -242,14 +242,6 @@ with functions that require it (like modeline segments)."
(def-package! ace-link (def-package! ace-link
:commands (ace-link-help ace-link-org)) :commands (ace-link-help ace-link-org))
(def-package! ace-window
:commands (ace-window ace-swap-window ace-delete-window
ace-select-window ace-delete-other-windows)
:config
(setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)
aw-scope 'frame
aw-background t))
(def-package! avy (def-package! avy
:commands (avy-goto-char-2 avy-goto-line) :commands (avy-goto-char-2 avy-goto-line)
:config :config

View file

@ -59,6 +59,7 @@
;unicode ; extended unicode support for various languages ;unicode ; extended unicode support for various languages
;tabbar ; FIXME an (incomplete) tab bar for Emacs ;tabbar ; FIXME an (incomplete) tab bar for Emacs
vi-tilde-fringe ; fringe tildes to mark beyond EOB vi-tilde-fringe ; fringe tildes to mark beyond EOB
(window-select +ace-window) ; visually switch windows
:tools :tools
dired ; making dired pretty [functional] dired ; making dired pretty [functional]

View file

@ -0,0 +1,23 @@
#+TITLE: :ui window-select
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~.
* Customization
There are two packages that accomplish the same but with a different visual queue.
** ace-window
The first character of the buffers change to a 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.
To enable this, write in *init.el*: ~(doom! :ui (window-select +switch-window))~

View file

@ -0,0 +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))))

View file

@ -0,0 +1,11 @@
;; -*- no-byte-compile: t; -*-
;;; ui/window-select/packages.el
(cond ((featurep! +switch-window)
;; Install switch-window if the user indicated the '+switch-window' module flag
(package! switch-window))
((or (featurep! +ace-window) t)
;; Install ace-window if the user selects the flag '+ace-window' or by default
;; ... if the user did not specify a module flag
(package! ace-window)))