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

Loading…
Cancel
Save