ace-window.el (aw-dispatch-default): Clarify through destructuring

old-master
Damien Cassou 8 years ago committed by Oleh Krehel
parent 056abfee87
commit 91d736ed1a
  1. 37
      ace-window.el

@ -260,28 +260,33 @@ LEAF is (PT . WND)."
(force-mode-line-update))
(defvar aw-dispatch-alist
'((?x aw-delete-window " Ace - Delete Window")
(?m aw-swap-window " Ace - Swap Window")
(?M aw-move-window " Ace - Move Window")
(?j aw-switch-buffer-in-window " Ace - Select Buffer")
'((?x aw-delete-window "Delete Window")
(?m aw-swap-window "Swap Window")
(?M aw-move-window "Move Window")
(?j aw-switch-buffer-in-window "Select Buffer")
(?n aw-flip-window)
(?c aw-split-window-fair " Ace - Split Fair Window")
(?v aw-split-window-vert " Ace - Split Vert Window")
(?b aw-split-window-horz " Ace - Split Horz Window")
(?i delete-other-windows " Ace - Delete Other Windows")
(?c aw-split-window-fair "Split Fair Window")
(?v aw-split-window-vert "Split Vert Window")
(?b aw-split-window-horz "Split Horz Window")
(?i delete-other-windows "Delete Other Windows")
(?o delete-other-windows))
"List of actions for `aw-dispatch-default'.")
(defun aw--dispatch-action (char)
"Return item from `aw-dispatch-alist' matching CHAR."
(assoc char aw-dispatch-alist))
(defun aw-dispatch-default (char)
"Perform an action depending on CHAR."
(let ((val (cdr (assoc char aw-dispatch-alist))))
(if val
(if (and (car val) (cadr val))
(prog1 (setq aw-action (car val))
(aw-set-mode-line (cadr val)))
(funcall (car val))
(throw 'done 'exit))
(avy-handler-default char))))
(let ((action (aw--dispatch-action char)))
(cl-destructuring-bind (_key fn &optional description) (aw--dispatch-action char)
(if action
(if (and fn description)
(prog1 (setq aw-action fn)
(aw-set-mode-line (format " Ace - %s" description)))
(funcall fn)
(throw 'done 'exit))
(avy-handler-default char)))))
(defun aw-select (mode-line &optional action)
"Return a selected other window.

Loading…
Cancel
Save