branch: master commit a651ed9f258e8fa8a5e6b802a5120d7d9b693e12 Author: Stefan Monnier <monn...@iro.umontreal.ca> Commit: Stefan Monnier <monn...@iro.umontreal.ca>
* packages/hydra/*.el: Fix compilation warnings * packages/hydra/hydra.el (hydra-timer): Move before first use. (hydra--make-funcall, hydra-multipop): Move before first use. * packages/hydra/hydra-test.el: * packages/hydra/hydra-ox.el: Require hydra. * packages/hydra/lv.el (golden-ratio-mode): Declare. --- packages/hydra/hydra-ox.el | 1 + packages/hydra/hydra-test.el | 1 + packages/hydra/hydra.el | 36 ++++++++++++++++++------------------ packages/hydra/lv.el | 2 ++ 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/packages/hydra/hydra-ox.el b/packages/hydra/hydra-ox.el index 5f1a5c9..1dc7088 100644 --- a/packages/hydra/hydra-ox.el +++ b/packages/hydra/hydra-ox.el @@ -25,6 +25,7 @@ ;;; Code: (require 'org) +(require 'hydra) ;`defhydradio' is not autoloaded! (defhydradio hydra-ox () (body-only "Export only the body.") diff --git a/packages/hydra/hydra-test.el b/packages/hydra/hydra-test.el index 155c047..f876e36 100644 --- a/packages/hydra/hydra-test.el +++ b/packages/hydra/hydra-test.el @@ -25,6 +25,7 @@ ;;; Code: (require 'ert) +(require 'hydra) (ert-deftest hydra-red-error () (should diff --git a/packages/hydra/hydra.el b/packages/hydra/hydra.el index 18233af..7195e36 100644 --- a/packages/hydra/hydra.el +++ b/packages/hydra/hydra.el @@ -396,6 +396,9 @@ BODY is the second argument to `defhydra'" (delete-window lv-wnd) (kill-buffer buf)))) +(defvar hydra-timer (timer-create) + "Timer for `hydra-timeout'.") + (defun hydra-keyboard-quit () "Quitting function similar to `keyboard-quit'." (interactive) @@ -658,6 +661,11 @@ OTHER-POST is an optional extension to the :post key of BODY." (recur (cdr map))))))) (recur keymap))) +(defmacro hydra--make-funcall (sym) + "Transform SYM into a `funcall' that calls it." + `(when (and ,sym (symbolp ,sym)) + (setq ,sym `(funcall #',,sym)))) + (defun hydra--handle-nonhead (keymap name body heads) "Setup KEYMAP for intercepting non-head bindings. NAME, BODY and HEADS are parameters to `defhydra'." @@ -730,6 +738,16 @@ In duplicate HEADS, :cmd-name is modified to whatever they duplicate." lst (append lst (make-list (- n len) nil))))) +(defmacro hydra-multipop (lst n) + "Return LST's first N elements while removing them." + `(if (<= (length ,lst) ,n) + (prog1 ,lst + (setq ,lst nil)) + (prog1 ,lst + (setcdr + (nthcdr (1- ,n) (prog1 ,lst (setq ,lst (nthcdr ,n ,lst)))) + nil)))) + (defun hydra--matrix (lst rows cols) "Create a matrix from elements of LST. The matrix size is ROWS times COLS." @@ -806,9 +824,6 @@ NAMES should be defined by `defhydradio' or similar." (dolist (n names) (set n (aref (get n 'range) 0)))) -(defvar hydra-timer (timer-create) - "Timer for `hydra-timeout'.") - (defun hydra-timeout (secs &optional function) "In SECS seconds call FUNCTION, then function `hydra-keyboard-quit'. Cancel the previous `hydra-timeout'." @@ -974,11 +989,6 @@ result of `defhydra'." (or body-body-pre body-pre) body-post '(setq prefix-arg current-prefix-arg)))))) -(defmacro hydra--make-funcall (sym) - "Transform SYM into a `funcall' that calls it." - `(when (and ,sym (symbolp ,sym)) - (setq ,sym `(funcall #',,sym)))) - (defmacro defhydradio (name _body &rest heads) "Create radios with prefix NAME. _BODY specifies the options; there are none currently. @@ -1002,16 +1012,6 @@ DOC defaults to TOGGLE-NAME split and capitalized." ',(mapcar (lambda (h) (intern (format "%S/%S" name (car h)))) heads)))) -(defmacro hydra-multipop (lst n) - "Return LST's first N elements while removing them." - `(if (<= (length ,lst) ,n) - (prog1 ,lst - (setq ,lst nil)) - (prog1 ,lst - (setcdr - (nthcdr (1- ,n) (prog1 ,lst (setq ,lst (nthcdr ,n ,lst)))) - nil)))) - (defun hydra--radio (parent head) "Generate a hydradio with PARENT from HEAD." (let* ((name (car head)) diff --git a/packages/hydra/lv.el b/packages/hydra/lv.el index ee5a739..f51d185 100644 --- a/packages/hydra/lv.el +++ b/packages/hydra/lv.el @@ -56,6 +56,8 @@ (set-window-parameter lv-wnd 'no-other-window t)) (select-window ori))))) +(defvar golden-ratio-mode) + (defun lv-message (format-string &rest args) "Set LV window contents to (`format' FORMAT-STRING ARGS)." (let* ((ori (selected-window))