[ELPA] Update crucial packages

This commit is contained in:
Daniel - 2019-03-31 19:05:44 +02:00
parent d1d87c1256
commit 6d5a37b41d
Signed by: dbo
GPG Key ID: 4F63DB96D45AA9C6
21 changed files with 332 additions and 124 deletions

View File

@ -1,15 +0,0 @@
;;; dash-autoloads.el --- automatically extracted autoloads
;;
;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil nil ("dash.el") (23517 56182 290592 403000))
;;;***
;; Local Variables:
;; version-control: never
;; no-byte-compile: t
;; no-update-autoloads: t
;; End:
;;; dash-autoloads.el ends here

View File

@ -0,0 +1,22 @@
;;; dash-autoloads.el --- automatically extracted autoloads
;;
;;; Code:
(add-to-list 'load-path (directory-file-name
(or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "dash" "dash.el" (0 0 0 0))
;;; Generated autoloads from dash.el
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "dash" '("dash-" "-keep" "-butlast" "-non" "-only-some" "-zip" "-e" "->" "-a" "-gr" "-when-let" "-d" "-l" "-s" "-p" "-r" "-m" "-i" "-f" "-u" "-value-to-list" "-t" "--" "-c" "!cons" "!cdr")))
;;;***
;; Local Variables:
;; version-control: never
;; no-byte-compile: t
;; no-update-autoloads: t
;; coding: utf-8
;; End:
;;; dash-autoloads.el ends here

View File

@ -1,2 +1,2 @@
;;; -*- no-byte-compile: t -*- ;;; -*- no-byte-compile: t -*-
(define-package "dash" "20180910.1856" "A modern list library for Emacs" 'nil :commit "6514359b8606a6a9a94068ccd601fcd6379d6584" :keywords '("lists") :authors '(("Magnar Sveen" . "magnars@gmail.com")) :maintainer '("Magnar Sveen" . "magnars@gmail.com")) (define-package "dash" "20190320.1406" "A modern list library for Emacs" 'nil :commit "677c1561142db89cb151f50ce21f24096ca1a328" :keywords '("lists") :authors '(("Magnar Sveen" . "magnars@gmail.com")) :maintainer '("Magnar Sveen" . "magnars@gmail.com"))

View File

@ -3,8 +3,8 @@
;; Copyright (C) 2012-2016 Free Software Foundation, Inc. ;; Copyright (C) 2012-2016 Free Software Foundation, Inc.
;; Author: Magnar Sveen <magnars@gmail.com> ;; Author: Magnar Sveen <magnars@gmail.com>
;; Version: 2.14.1 ;; Version: 2.15.0
;; Package-Version: 20180910.1856 ;; Package-Version: 20190320.1406
;; Keywords: lists ;; Keywords: lists
;; This program is free software; you can redistribute it and/or modify ;; This program is free software; you can redistribute it and/or modify
@ -87,6 +87,14 @@ the target form."
forms) forms)
,retval))) ,retval)))
(defmacro --doto (eval-initial-value &rest forms)
"Anaphoric form of `-doto'.
Note: `it' is not required in each form."
(declare (indent 1))
`(let ((it ,eval-initial-value))
,@forms
it))
(defun -each (list fn) (defun -each (list fn)
"Call FN with every item in LIST. Return nil, used for side-effects only." "Call FN with every item in LIST. Return nil, used for side-effects only."
(--each list (funcall fn it))) (--each list (funcall fn it)))
@ -914,9 +922,11 @@ See also: `-drop'"
"Rotate LIST N places to the right. With N negative, rotate to the left. "Rotate LIST N places to the right. With N negative, rotate to the left.
The time complexity is O(n)." The time complexity is O(n)."
(declare (pure t) (side-effect-free t)) (declare (pure t) (side-effect-free t))
(if (> n 0) (when list
(append (last list n) (butlast list n)) (let* ((len (length list))
(append (-drop (- n) list) (-take (- n) list)))) (n-mod-len (mod n len))
(new-tail-len (- len n-mod-len)))
(append (-drop new-tail-len list) (-take new-tail-len list)))))
(defun -insert-at (n x list) (defun -insert-at (n x list)
"Return a list with X inserted into LIST at position N. "Return a list with X inserted into LIST at position N.
@ -2533,11 +2543,15 @@ the new seed."
(defun -cons-pair? (con) (defun -cons-pair? (con)
"Return non-nil if CON is true cons pair. "Return non-nil if CON is true cons pair.
That is (A . B) where B is not a list." That is (A . B) where B is not a list.
Alias: `-cons-pair-p'"
(declare (pure t) (side-effect-free t)) (declare (pure t) (side-effect-free t))
(and (listp con) (and (listp con)
(not (listp (cdr con))))) (not (listp (cdr con)))))
(defalias '-cons-pair-p '-cons-pair?)
(defun -cons-to-list (con) (defun -cons-to-list (con)
"Convert a cons pair to a list with `car' and `cdr' of the pair respectively." "Convert a cons pair to a list with `car' and `cdr' of the pair respectively."
(declare (pure t) (side-effect-free t)) (declare (pure t) (side-effect-free t))
@ -2942,6 +2956,7 @@ structure such as plist or alist."
"-unfold" "-unfold"
"--unfold" "--unfold"
"-cons-pair?" "-cons-pair?"
"-cons-pair-p"
"-cons-to-list" "-cons-to-list"
"-value-to-list" "-value-to-list"
"-tree-mapreduce-from" "-tree-mapreduce-from"

View File

@ -1,9 +1,12 @@
;;; hydra-autoloads.el --- automatically extracted autoloads ;;; hydra-autoloads.el --- automatically extracted autoloads
;; ;;
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
(add-to-list 'load-path (directory-file-name
(or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "hydra" "hydra.el" (23555 58032 639630 221000)) ;;;### (autoloads nil "hydra" "hydra.el" (0 0 0 0))
;;; Generated autoloads from hydra.el ;;; Generated autoloads from hydra.el
(autoload 'defhydra "hydra" "\ (autoload 'defhydra "hydra" "\
@ -41,7 +44,7 @@ nil. If you don't even want the KEY to be printed, set HINT
explicitly to nil. explicitly to nil.
The heads inherit their PLIST from BODY-PLIST and are allowed to The heads inherit their PLIST from BODY-PLIST and are allowed to
override some keys. The keys recognized are :exit and :bind. override some keys. The keys recognized are :exit, :bind, and :column.
:exit can be: :exit can be:
- nil (default): this head will continue the Hydra state. - nil (default): this head will continue the Hydra state.
@ -51,6 +54,8 @@ override some keys. The keys recognized are :exit and :bind.
- nil: this head will not be bound in BODY-MAP. - nil: this head will not be bound in BODY-MAP.
- a lambda taking KEY and CMD used to bind a head. - a lambda taking KEY and CMD used to bind a head.
:column is a string that sets the column for all subsequent heads.
It is possible to omit both BODY-MAP and BODY-KEY if you don't It is possible to omit both BODY-MAP and BODY-KEY if you don't
want to bind anything. In that case, typically you will bind the want to bind anything. In that case, typically you will bind the
generated NAME/body command. This command is also the return generated NAME/body command. This command is also the return
@ -62,10 +67,33 @@ result of `defhydra'.
(function-put 'defhydra 'doc-string-elt '3) (function-put 'defhydra 'doc-string-elt '3)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hydra" '("hydra-" "defhydra")))
;;;*** ;;;***
;;;### (autoloads nil nil ("hydra-examples.el" "hydra-ox.el" "hydra-pkg.el" ;;;### (autoloads nil "hydra-examples" "hydra-examples.el" (0 0 0
;;;;;; "lv.el") (23555 58032 655630 298000)) ;;;;;; 0))
;;; Generated autoloads from hydra-examples.el
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hydra-examples" '("hydra-" "org-agenda-cts" "whitespace-mode")))
;;;***
;;;### (autoloads nil "hydra-ox" "hydra-ox.el" (0 0 0 0))
;;; Generated autoloads from hydra-ox.el
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "hydra-ox" '("hydra-ox")))
;;;***
;;;### (autoloads nil "lv" "lv.el" (0 0 0 0))
;;; Generated autoloads from lv.el
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "lv" '("lv-")))
;;;***
;;;### (autoloads nil nil ("hydra-pkg.el") (0 0 0 0))
;;;*** ;;;***
@ -73,5 +101,6 @@ result of `defhydra'.
;; version-control: never ;; version-control: never
;; no-byte-compile: t ;; no-byte-compile: t
;; no-update-autoloads: t ;; no-update-autoloads: t
;; coding: utf-8
;; End: ;; End:
;;; hydra-autoloads.el ends here ;;; hydra-autoloads.el ends here

View File

@ -270,7 +270,7 @@ _v_ariable _u_ser-option
_h_ _l_ _o_k _y_ank _h_ _l_ _o_k _y_ank
^_j_^ _n_ew-copy _r_eset ^_j_^ _n_ew-copy _r_eset
^^^^ _e_xchange _u_ndo ^^^^ _e_xchange _u_ndo
^^^^ ^ ^ _p_aste ^^^^ ^ ^ _x_kill
" "
("h" rectangle-backward-char nil) ("h" rectangle-backward-char nil)
("l" rectangle-forward-char nil) ("l" rectangle-forward-char nil)
@ -285,7 +285,7 @@ _h_ _l_ _o_k _y_ank
("y" yank-rectangle nil) ("y" yank-rectangle nil)
("u" undo nil) ("u" undo nil)
("s" string-rectangle nil) ("s" string-rectangle nil)
("p" kill-rectangle nil) ("x" kill-rectangle nil)
("o" nil nil)) ("o" nil nil))
;; Recommended binding: ;; Recommended binding:
@ -333,6 +333,13 @@ _y_: ?y? year _q_: quit _L__l__c_: log = ?l?"
;; Recommended binding: ;; Recommended binding:
;; (define-key org-agenda-mode-map "v" 'hydra-org-agenda-view/body) ;; (define-key org-agenda-mode-map "v" 'hydra-org-agenda-view/body)
;;** Example 13: automatic columns
(defhydra hydra-movement ()
("j" next-line "down" :column "Vertical")
("k" previous-line "up")
("l" forward-char "forward" :column "Horizontal")
("h" backward-char "back"))
;;* Helpers ;;* Helpers
(require 'windmove) (require 'windmove)

View File

@ -1,4 +1,4 @@
(define-package "hydra" "20181128.1716" "Make bindings that stick around." (define-package "hydra" "20190326.1950" "Make bindings that stick around."
'((cl-lib "0.5")) '((cl-lib "0.5"))
:keywords :keywords
'("bindings") '("bindings")

View File

@ -1,6 +1,6 @@
;;; hydra.el --- Make bindings that stick around. -*- lexical-binding: t -*- ;;; hydra.el --- Make bindings that stick around. -*- lexical-binding: t -*-
;; Copyright (C) 2015 Free Software Foundation, Inc. ;; Copyright (C) 2015-2019 Free Software Foundation, Inc.
;; Author: Oleh Krehel <ohwoeowho@gmail.com> ;; Author: Oleh Krehel <ohwoeowho@gmail.com>
;; Maintainer: Oleh Krehel <ohwoeowho@gmail.com> ;; Maintainer: Oleh Krehel <ohwoeowho@gmail.com>
@ -207,6 +207,34 @@ the body or the head."
:type 'sexp :type 'sexp
:group 'hydra) :group 'hydra)
(declare-function posframe-show "posframe")
(declare-function posframe-hide "posframe")
(declare-function posframe-poshandler-window-center "posframe")
(defun hydra-posframe-show (str)
(require 'posframe)
(posframe-show
" *hydra-posframe*"
:string str
:poshandler #'posframe-poshandler-window-center))
(defun hydra-posframe-hide ()
(posframe-hide " *hydra-posframe*"))
(defvar hydra-hint-display-alist
(list (list 'lv #'lv-message #'lv-delete-window)
(list 'message #'message (lambda () (message "")))
(list 'posframe #'hydra-posframe-show #'hydra-posframe-hide))
"Store the functions for `hydra-hint-display-type'.")
(defcustom hydra-hint-display-type 'lv
"The utility to show hydra hint"
:type '(choice
(const message)
(const lv)
(const posframe))
:group 'hydra)
(defcustom hydra-lv t (defcustom hydra-lv t
"When non-nil, `lv-message' (not `message') will be used to display hints." "When non-nil, `lv-message' (not `message') will be used to display hints."
:type 'boolean) :type 'boolean)
@ -441,6 +469,21 @@ Return DEFAULT if PROP is not in H."
((blue teal) t) ((blue teal) t)
(t nil))))) (t nil)))))
(defun hydra--normalize-body (body)
"Put BODY in a normalized format.
Add :exit and :foreign-keys if they are not there.
Remove :color key. And sort the plist alphabetically."
(let ((plist (cddr body)))
(plist-put plist :exit (hydra--body-exit body))
(plist-put plist :foreign-keys (hydra--body-foreign-keys body))
(let* ((alist0 (cl-loop for (k v) on plist
by #'cddr collect (cons k v)))
(alist1 (assq-delete-all :color alist0))
(alist2 (cl-sort alist1 #'string<
:key (lambda (x) (symbol-name (car x))))))
(append (list (car body) (cadr body))
(cl-mapcan (lambda (x) (list (car x) (cdr x))) alist2)))))
(defalias 'hydra--imf #'list) (defalias 'hydra--imf #'list)
(defun hydra-default-pre () (defun hydra-default-pre ()
@ -471,9 +514,8 @@ Return DEFAULT if PROP is not in H."
(setq hydra-curr-map nil) (setq hydra-curr-map nil)
(unless (and hydra--ignore (unless (and hydra--ignore
(null hydra--work-around-dedicated)) (null hydra--work-around-dedicated))
(if hydra-lv (funcall
(lv-delete-window) (nth 2 (assoc hydra-hint-display-type hydra-hint-display-alist))))
(message "")))
nil) nil)
(defvar hydra-head-format "[%s]: " (defvar hydra-head-format "[%s]: "
@ -483,9 +525,10 @@ Return DEFAULT if PROP is not in H."
"The function for formatting key-doc pairs.") "The function for formatting key-doc pairs.")
(defun hydra-key-doc-function-default (key key-width doc doc-width) (defun hydra-key-doc-function-default (key key-width doc doc-width)
"Doc"
(cond (cond
((equal key " ") (format (format "%%-%ds" (+ 3 key-width doc-width)) doc)) ((equal key " ") (format (format "%%-%ds" (+ 3 key-width doc-width)) doc))
((listp doc)
`(format ,(format "%%%ds: %%%ds" key-width (- -1 doc-width)) ,key ,doc))
(t (format (format "%%%ds: %%%ds" key-width (- -1 doc-width)) key doc)))) (t (format (format "%%%ds: %%%ds" key-width (- -1 doc-width)) key doc))))
(defun hydra--to-string (x) (defun hydra--to-string (x)
@ -493,6 +536,14 @@ Return DEFAULT if PROP is not in H."
x x
(eval x))) (eval x)))
(defun hydra--eval-and-format (x)
(let ((str (hydra--to-string (cdr x))))
(format
(if (> (length str) 0)
(concat hydra-head-format str)
"%s")
(car x))))
(defun hydra--hint-heads-wocol (body heads) (defun hydra--hint-heads-wocol (body heads)
"Generate a hint for the echo area. "Generate a hint for the echo area.
BODY, and HEADS are parameters to `defhydra'. BODY, and HEADS are parameters to `defhydra'.
@ -501,14 +552,13 @@ Works for heads without a property :column."
(dolist (h heads) (dolist (h heads)
(let ((val (assoc (cadr h) alist)) (let ((val (assoc (cadr h) alist))
(pstr (hydra-fontify-head h body))) (pstr (hydra-fontify-head h body)))
(unless (not (stringp (cl-caddr h))) (if val
(if val (setf (cadr val)
(setf (cadr val) (concat (cadr val) " " pstr))
(concat (cadr val) " " pstr)) (push
(push (cons (cadr h)
(cons (cadr h) (cons pstr (cl-caddr h)))
(cons pstr (cl-caddr h))) alist))))
alist)))))
(let ((keys (nreverse (mapcar #'cdr alist))) (let ((keys (nreverse (mapcar #'cdr alist)))
(n-cols (plist-get (cddr body) :columns)) (n-cols (plist-get (cddr body) :columns))
res) res)
@ -537,13 +587,7 @@ Works for heads without a property :column."
`(concat `(concat
(mapconcat (mapconcat
(lambda (x) #'hydra--eval-and-format
(let ((str (hydra--to-string (cdr x))))
(format
(if (> (length str) 0)
(concat hydra-head-format str)
"%s")
(car x))))
',keys ',keys
", ") ", ")
,(if keys "." "")))) ,(if keys "." ""))))
@ -557,11 +601,16 @@ Works for heads without a property :column."
BODY, and HEADS are parameters to `defhydra'." BODY, and HEADS are parameters to `defhydra'."
(let* ((sorted-heads (hydra--sort-heads (hydra--normalize-heads heads))) (let* ((sorted-heads (hydra--sort-heads (hydra--normalize-heads heads)))
(heads-w-col (cl-remove-if-not (lambda (heads) (hydra--head-property (nth 0 heads) :column)) sorted-heads)) (heads-w-col (cl-remove-if-not (lambda (heads) (hydra--head-property (nth 0 heads) :column)) sorted-heads))
(heads-wo-col (cl-remove-if (lambda (heads) (hydra--head-property (nth 0 heads) :column)) sorted-heads))) (heads-wo-col (cl-remove-if (lambda (heads) (hydra--head-property (nth 0 heads) :column)) sorted-heads))
(concat (when heads-w-col (hint-w-col (when heads-w-col
(hydra--hint-from-matrix body (hydra--generate-matrix heads-w-col))) (hydra--hint-from-matrix body (hydra--generate-matrix heads-w-col))))
(when heads-wo-col (hint-wo-col (when heads-wo-col
(hydra--hint-heads-wocol body (car heads-wo-col)))))) (hydra--hint-heads-wocol body (car heads-wo-col)))))
(if (null hint-w-col)
hint-wo-col
(if (stringp hint-wo-col)
`(concat ,@hint-w-col ,hint-wo-col)
`(concat ,@hint-w-col ,@(cdr hint-wo-col))))))
(defvar hydra-fontify-head-function nil (defvar hydra-fontify-head-function nil
"Possible replacement for `hydra-fontify-head-default'.") "Possible replacement for `hydra-fontify-head-default'.")
@ -715,27 +764,37 @@ The expressions can be auto-expanded according to NAME."
(substring docstring 0 start) (substring docstring 0 start)
"%" spec "%" spec
(substring docstring (+ start offset 1 lspec varp)))))))) (substring docstring (+ start offset 1 lspec varp))))))))
(cond (hydra--format-1 docstring rest varlist))))
((string= docstring "")
rest) (defun hydra--format-1 (docstring rest varlist)
((eq ?\n (aref docstring 0)) (cond
`(concat (format ,(substring docstring 1) ,@(nreverse varlist)) ((string= docstring "")
,rest)) rest)
(t ((listp rest)
(let ((r `(replace-regexp-in-string (unless (string-match-p "[:\n]" docstring)
" +$" "" (setq docstring (concat docstring ":\n")))
(concat ,docstring (unless (or (string-match-p "\n\\'" docstring)
,(cond ((string-match-p "\\`\n" rest) (equal (cadr rest) "\n"))
":") (setq docstring (concat docstring "\n")))
((string-match-p "\n" rest) `(concat (format ,(replace-regexp-in-string "\\`\n" "" docstring) ,@(nreverse varlist))
":\n") ,@(cdr rest)))
(t ((eq ?\n (aref docstring 0))
": ")) `(format ,(concat (substring docstring 1) rest) ,@(nreverse varlist)))
(replace-regexp-in-string (t
"\\(%\\)" "\\1\\1" ,rest))))) (let ((r `(replace-regexp-in-string
(if (stringp rest) " +$" ""
`(format ,(eval r)) (concat ,docstring
`(format ,r)))))))) ,(cond ((string-match-p "\\`\n" rest)
":")
((string-match-p "\n" rest)
":\n")
(t
": "))
(replace-regexp-in-string
"\\(%\\)" "\\1\\1" ,rest)))))
(if (stringp rest)
`(format ,(eval r))
`(format ,r))))))
(defun hydra--complain (format-string &rest args) (defun hydra--complain (format-string &rest args)
"Forward to (`message' FORMAT-STRING ARGS) unless `hydra-verbose' is nil." "Forward to (`message' FORMAT-STRING ARGS) unless `hydra-verbose' is nil."
@ -872,9 +931,9 @@ KEY is forwarded to `plist-get'."
(message (eval hint))) (message (eval hint)))
(t (t
(when hydra-is-helpful (when hydra-is-helpful
(if hydra-lv (funcall
(lv-message (eval hint)) (nth 1 (assoc hydra-hint-display-type hydra-hint-display-alist))
(message (eval hint)))))))) (eval hint)))))))
(defmacro hydra--make-funcall (sym) (defmacro hydra--make-funcall (sym)
"Transform SYM into a `funcall' to call it." "Transform SYM into a `funcall' to call it."
@ -1074,33 +1133,54 @@ representing the maximum dimension of their owning group.
decorated-heads) res))) decorated-heads) res)))
(nreverse res)))) (nreverse res))))
(defun hydra-interpose (x lst)
"Insert X in between each element of LST."
(let (res y)
(while (setq y (pop lst))
(push y res)
(push x res))
(nreverse (cdr res))))
(defun hydra--hint-row (heads body)
(let ((lst (hydra-interpose
"| "
(mapcar (lambda (head)
(funcall hydra-key-doc-function
(hydra-fontify-head head body)
(let ((n (hydra--head-property head :max-key-len)))
(+ n (cl-count ?% (car head))))
(nth 2 head) ;; doc
(hydra--head-property head :max-doc-len)))
heads))))
(when (stringp (car (last lst)))
(let ((len (length lst))
(new-last (replace-regexp-in-string "\s+$" "" (car (last lst)))))
(when (= 0 (length (setf (nth (- len 1) lst) new-last)))
(setf (nth (- len 2) lst) "|"))))
lst))
(defun hydra--hint-from-matrix (body heads-matrix) (defun hydra--hint-from-matrix (body heads-matrix)
"Generate a formated table-style docstring according to BODY and HEADS-MATRIX. "Generate a formated table-style docstring according to BODY and HEADS-MATRIX.
HEADS-MATRIX is expected to be a list of heads with following features: HEADS-MATRIX is expected to be a list of heads with following features:
Each heads must have the same length Each heads must have the same length
Each head must have a property max-key-len and max-doc-len." Each head must have a property max-key-len and max-doc-len."
(when heads-matrix (when heads-matrix
(let* ((first-heads-col (nth 0 heads-matrix)) (let ((lines (hydra--hint-from-matrix-1 body heads-matrix)))
(last-row-index (- (length first-heads-col) 1)) `(,@(apply #'append (hydra-interpose '("\n") lines))
(lines nil)) "\n"))))
(dolist (row-index (number-sequence 0 last-row-index))
(let ((heads-in-row (mapcar
(lambda (heads) (nth row-index heads))
heads-matrix)))
(push (replace-regexp-in-string
"\s+$" ""
(mapconcat (lambda (head)
(funcall hydra-key-doc-function
(hydra-fontify-head head body) ;; key
(let ((n (hydra--head-property head :max-key-len)))
(+ n (cl-count ?% (car head))))
(nth 2 head) ;; doc
(hydra--head-property head :max-doc-len)))
heads-in-row "| "))
lines)))
(concat (mapconcat #'identity (nreverse lines) "\n") "\n"))))
;; previous functions dealt with automatic docstring table generation from :column head property (defun hydra--hint-from-matrix-1 (body heads-matrix)
(let* ((first-heads-col (nth 0 heads-matrix))
(last-row-index (- (length first-heads-col) 1))
(lines nil))
(dolist (row-index (number-sequence 0 last-row-index))
(let ((heads-in-row (mapcar
(lambda (heads) (nth row-index heads))
heads-matrix)))
(push (hydra--hint-row heads-in-row body)
lines)))
(nreverse lines)))
(defun hydra-idle-message (secs hint name) (defun hydra-idle-message (secs hint name)
"In SECS seconds display HINT." "In SECS seconds display HINT."
@ -1167,7 +1247,7 @@ nil. If you don't even want the KEY to be printed, set HINT
explicitly to nil. explicitly to nil.
The heads inherit their PLIST from BODY-PLIST and are allowed to The heads inherit their PLIST from BODY-PLIST and are allowed to
override some keys. The keys recognized are :exit and :bind. override some keys. The keys recognized are :exit, :bind, and :column.
:exit can be: :exit can be:
- nil (default): this head will continue the Hydra state. - nil (default): this head will continue the Hydra state.
@ -1177,6 +1257,8 @@ override some keys. The keys recognized are :exit and :bind.
- nil: this head will not be bound in BODY-MAP. - nil: this head will not be bound in BODY-MAP.
- a lambda taking KEY and CMD used to bind a head. - a lambda taking KEY and CMD used to bind a head.
:column is a string that sets the column for all subsequent heads.
It is possible to omit both BODY-MAP and BODY-KEY if you don't It is possible to omit both BODY-MAP and BODY-KEY if you don't
want to bind anything. In that case, typically you will bind the want to bind anything. In that case, typically you will bind the
generated NAME/body command. This command is also the return generated NAME/body command. This command is also the return
@ -1192,6 +1274,7 @@ result of `defhydra'."
(setq docstring ""))) (setq docstring "")))
(when (keywordp (car body)) (when (keywordp (car body))
(setq body (cons nil (cons nil body)))) (setq body (cons nil (cons nil body))))
(setq body (hydra--normalize-body body))
(condition-case-unless-debug err (condition-case-unless-debug err
(let* ((keymap-name (intern (format "%S/keymap" name))) (let* ((keymap-name (intern (format "%S/keymap" name)))
(body-name (intern (format "%S/body" name))) (body-name (intern (format "%S/body" name)))
@ -1274,12 +1357,14 @@ result of `defhydra'."
"An %S Hydra must have at least one blue head in order to exit" "An %S Hydra must have at least one blue head in order to exit"
body-foreign-keys))) body-foreign-keys)))
`(progn `(progn
;; create keymap (set (defvar ,(intern (format "%S/params" name))
(set (defvar ,keymap-name
nil nil
,(format "Keymap for %S." name)) ,(format "Params of %S." name))
',keymap) ',body)
;; declare heads (set (defvar ,(intern (format "%S/docstring" name))
nil
,(format "Docstring of %S." name))
,docstring)
(set (defvar ,(intern (format "%S/heads" name)) (set (defvar ,(intern (format "%S/heads" name))
nil nil
,(format "Heads for %S." name)) ,(format "Heads for %S." name))
@ -1288,6 +1373,12 @@ result of `defhydra'."
(cl-remf (cl-cdddr j) :cmd-name) (cl-remf (cl-cdddr j) :cmd-name)
j)) j))
heads)) heads))
;; create keymap
(set (defvar ,keymap-name
nil
,(format "Keymap for %S." name))
',keymap)
;; declare heads
(set (set
(defvar ,(intern (format "%S/hint" name)) nil (defvar ,(intern (format "%S/hint" name)) nil
,(format "Dynamic hint for %S." name)) ,(format "Dynamic hint for %S." name))
@ -1338,6 +1429,24 @@ result of `defhydra'."
(hydra--complain "Error in defhydra %S: %s" name (cdr err)) (hydra--complain "Error in defhydra %S: %s" name (cdr err))
nil))) nil)))
(defmacro defhydra+ (name body &optional docstring &rest heads)
"Redefine an existing hydra by adding new heads.
Arguments are same as of `defhydra'."
(declare (indent defun) (doc-string 3))
(unless (stringp docstring)
(setq heads
(cons docstring heads))
(setq docstring nil))
`(defhydra ,name ,(or body (hydra--prop name "/params"))
,(or docstring (hydra--prop name "/docstring"))
,@(cl-delete-duplicates
(append (hydra--prop name "/heads") heads)
:key #'car
:test #'equal)))
(defun hydra--prop (name prop-name)
(symbol-value (intern (concat (symbol-name name) prop-name))))
(defmacro defhydradio (name _body &rest heads) (defmacro defhydradio (name _body &rest heads)
"Create radios with prefix NAME. "Create radios with prefix NAME.
_BODY specifies the options; there are none currently. _BODY specifies the options; there are none currently.

View File

@ -1,10 +1,20 @@
;;; multiple-cursors-autoloads.el --- automatically extracted autoloads ;;; multiple-cursors-autoloads.el --- automatically extracted autoloads
;; ;;
;;; Code: ;;; Code:
(add-to-list 'load-path (directory-file-name (or (file-name-directory #$) (car load-path))))
(add-to-list 'load-path (directory-file-name
(or (file-name-directory #$) (car load-path))))
;;;### (autoloads nil "mc-edit-lines" "mc-edit-lines.el" (23517 56120 ;;;### (autoloads nil "mc-cycle-cursors" "mc-cycle-cursors.el" (0
;;;;;; 926283 899000)) ;;;;;; 0 0 0))
;;; Generated autoloads from mc-cycle-cursors.el
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-cycle-cursors" '("mc/")))
;;;***
;;;### (autoloads nil "mc-edit-lines" "mc-edit-lines.el" (0 0 0 0))
;;; Generated autoloads from mc-edit-lines.el ;;; Generated autoloads from mc-edit-lines.el
(autoload 'mc/edit-lines "mc-edit-lines" "\ (autoload 'mc/edit-lines "mc-edit-lines" "\
@ -31,10 +41,12 @@ Add one cursor to the beginning of each line in the active region.
\(fn)" t nil) \(fn)" t nil)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-edit-lines" '("mc/edit-lines-empty-lines")))
;;;*** ;;;***
;;;### (autoloads nil "mc-hide-unmatched-lines-mode" "mc-hide-unmatched-lines-mode.el" ;;;### (autoloads nil "mc-hide-unmatched-lines-mode" "mc-hide-unmatched-lines-mode.el"
;;;;;; (23517 56120 982284 180000)) ;;;;;; (0 0 0 0))
;;; Generated autoloads from mc-hide-unmatched-lines-mode.el ;;; Generated autoloads from mc-hide-unmatched-lines-mode.el
(autoload 'mc-hide-unmatched-lines-mode "mc-hide-unmatched-lines-mode" "\ (autoload 'mc-hide-unmatched-lines-mode "mc-hide-unmatched-lines-mode" "\
@ -46,10 +58,11 @@ mode. To leave this mode press <return> or \"C-g\"
\(fn &optional ARG)" t nil) \(fn &optional ARG)" t nil)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-hide-unmatched-lines-mode" '("hum/")))
;;;*** ;;;***
;;;### (autoloads nil "mc-mark-more" "mc-mark-more.el" (23517 56120 ;;;### (autoloads nil "mc-mark-more" "mc-mark-more.el" (0 0 0 0))
;;;;;; 954284 39000))
;;; Generated autoloads from mc-mark-more.el ;;; Generated autoloads from mc-mark-more.el
(autoload 'mc/mark-next-like-this "mc-mark-more" "\ (autoload 'mc/mark-next-like-this "mc-mark-more" "\
@ -244,10 +257,11 @@ Mark the tag we're in and its pair for renaming.
\(fn)" t nil) \(fn)" t nil)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-mark-more" '("mc/" "mc--")))
;;;*** ;;;***
;;;### (autoloads nil "mc-mark-pop" "mc-mark-pop.el" (23517 56120 ;;;### (autoloads nil "mc-mark-pop" "mc-mark-pop.el" (0 0 0 0))
;;;;;; 986284 200000))
;;; Generated autoloads from mc-mark-pop.el ;;; Generated autoloads from mc-mark-pop.el
(autoload 'mc/mark-pop "mc-mark-pop" "\ (autoload 'mc/mark-pop "mc-mark-pop" "\
@ -259,7 +273,7 @@ to the popped mark.
;;;*** ;;;***
;;;### (autoloads nil "mc-separate-operations" "mc-separate-operations.el" ;;;### (autoloads nil "mc-separate-operations" "mc-separate-operations.el"
;;;;;; (23517 56120 910283 818000)) ;;;;;; (0 0 0 0))
;;; Generated autoloads from mc-separate-operations.el ;;; Generated autoloads from mc-separate-operations.el
(autoload 'mc/insert-numbers "mc-separate-operations" "\ (autoload 'mc/insert-numbers "mc-separate-operations" "\
@ -296,10 +310,12 @@ Aligns all cursors with whitespace like `mc/vertical-align' does
\(fn)" t nil) \(fn)" t nil)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "mc-separate-operations" '("mc/insert-numbers-default" "mc--")))
;;;*** ;;;***
;;;### (autoloads nil "multiple-cursors-core" "multiple-cursors-core.el" ;;;### (autoloads nil "multiple-cursors-core" "multiple-cursors-core.el"
;;;;;; (23517 56120 966284 100000)) ;;;;;; (0 0 0 0))
;;; Generated autoloads from multiple-cursors-core.el ;;; Generated autoloads from multiple-cursors-core.el
(autoload 'multiple-cursors-mode "multiple-cursors-core" "\ (autoload 'multiple-cursors-mode "multiple-cursors-core" "\
@ -307,10 +323,12 @@ Mode while multiple cursors are active.
\(fn &optional ARG)" t nil) \(fn &optional ARG)" t nil)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "multiple-cursors-core" '("multiple-cursors-mode" "unsupported-cmd" "deactivate-cursor-after-undo" "activate-cursor-for-undo")))
;;;*** ;;;***
;;;### (autoloads nil "rectangular-region-mode" "rectangular-region-mode.el" ;;;### (autoloads nil "rectangular-region-mode" "rectangular-region-mode.el"
;;;;;; (23517 56120 974284 140000)) ;;;;;; (0 0 0 0))
;;; Generated autoloads from rectangular-region-mode.el ;;; Generated autoloads from rectangular-region-mode.el
(autoload 'set-rectangular-region-anchor "rectangular-region-mode" "\ (autoload 'set-rectangular-region-anchor "rectangular-region-mode" "\
@ -326,10 +344,12 @@ A mode for creating a rectangular region to edit
\(fn &optional ARG)" t nil) \(fn &optional ARG)" t nil)
(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "rectangular-region-mode" '("rectangular-region-mode" "rrm/")))
;;;*** ;;;***
;;;### (autoloads nil nil ("mc-cycle-cursors.el" "multiple-cursors-pkg.el" ;;;### (autoloads nil nil ("multiple-cursors-pkg.el" "multiple-cursors.el")
;;;;;; "multiple-cursors.el") (23517 56120 958284 59000)) ;;;;;; (0 0 0 0))
;;;*** ;;;***
@ -337,5 +357,6 @@ A mode for creating a rectangular region to edit
;; version-control: never ;; version-control: never
;; no-byte-compile: t ;; no-byte-compile: t
;; no-update-autoloads: t ;; no-update-autoloads: t
;; coding: utf-8
;; End: ;; End:
;;; multiple-cursors-autoloads.el ends here ;;; multiple-cursors-autoloads.el ends here

View File

@ -149,7 +149,18 @@ highlights the entire width of the window."
autopair-action autopair-action
autopair-wrap-action autopair-wrap-action
temporary-goal-column temporary-goal-column
er/history) er/history
dabbrev--abbrev-char-regexp
dabbrev--check-other-buffers
dabbrev--friend-buffer-list
dabbrev--last-abbrev-location
dabbrev--last-abbreviation
dabbrev--last-buffer
dabbrev--last-buffer-found
dabbrev--last-direction
dabbrev--last-expansion
dabbrev--last-expansion-location
dabbrev--last-table)
"A list of vars that need to be tracked on a per-cursor basis.") "A list of vars that need to be tracked on a per-cursor basis.")
(defun mc/store-current-state-in-overlay (o) (defun mc/store-current-state-in-overlay (o)
@ -424,6 +435,10 @@ the original cursor, to inform about the lack of support."
(message "%S is not supported with multiple cursors%s" (message "%S is not supported with multiple cursors%s"
original-command original-command
(get original-command 'mc--unsupported)) (get original-command 'mc--unsupported))
;; lazy-load the user's list file
(mc/load-lists)
(when (and original-command (when (and original-command
(not (memq original-command mc--default-cmds-to-run-once)) (not (memq original-command mc--default-cmds-to-run-once))
(not (memq original-command mc/cmds-to-run-once)) (not (memq original-command mc/cmds-to-run-once))
@ -602,6 +617,15 @@ for running commands with multiple cursors."
:type 'file :type 'file
:group 'multiple-cursors) :group 'multiple-cursors)
(defvar mc--list-file-loaded nil
"Whether the list file has already been loaded.")
(defun mc/load-lists ()
"Loads preferences for running commands with multiple cursors from `mc/list-file'"
(unless mc--list-file-loaded
(load mc/list-file 'noerror 'nomessage)
(setq mc--list-file-loaded t)))
(defun mc/dump-list (list-symbol) (defun mc/dump-list (list-symbol)
"Insert (setq 'LIST-SYMBOL LIST-VALUE) to current buffer." "Insert (setq 'LIST-SYMBOL LIST-VALUE) to current buffer."
(cl-symbol-macrolet ((value (symbol-value list-symbol))) (cl-symbol-macrolet ((value (symbol-value list-symbol)))
@ -806,10 +830,6 @@ for running commands with multiple cursors."
(defvar mc/cmds-to-run-for-all nil (defvar mc/cmds-to-run-for-all nil
"Commands to run for all cursors in multiple-cursors-mode") "Commands to run for all cursors in multiple-cursors-mode")
;; load, but no errors if it does not exist yet please, and no message
;; while loading
(load mc/list-file 'noerror 'nomessage)
(provide 'multiple-cursors-core) (provide 'multiple-cursors-core)
;; Local Variables: ;; Local Variables:

View File

@ -1,4 +1,4 @@
(define-package "multiple-cursors" "20180913.1237" "Multiple cursors for Emacs." (define-package "multiple-cursors" "20190317.1211" "Multiple cursors for Emacs."
'((cl-lib "0.5"))) '((cl-lib "0.5")))
;; Local Variables: ;; Local Variables:
;; no-byte-compile: t ;; no-byte-compile: t