ivy actions

This commit is contained in:
Pavel Korytov 2022-02-10 22:59:47 +03:00
parent 0bf336a878
commit e6d8b3f61e

View file

@ -152,29 +152,31 @@ SEQUENCE is a list of the following elements:
(defvar ivy-pass-history nil (defvar ivy-pass-history nil
"History for `ivy-pass'") "History for `ivy-pass'")
(defmacro ivy-pass--sequence-type-action (sequence) (defmacro ivy-pass--define-sequence-funcs (sequence sequence-name)
`(lambda (entry-name) `(progn
(ivy-pass--async-commands (defun ,(intern (format "ivy-pass--type-%s-command" sequence-name)) ()
(ivy-pass--get-commands (interactive)
entry-name (ivy-exit-with-action
,sequence)))) (lambda (entry-name)
(ivy-pass--async-commands
(ivy-pass--get-commands entry-name sequence)))))
(defun ,(intern (format "ivy-pass--type-%s-action" sequence-name)) (entry-name)
(ivy-pass--async-commands
(ivy-pass--get-commands
entry-name
,sequence)))))
(defmacro ivy-pass--def-sequence-type (sequence sequence-name) (ivy-pass--define-sequence-funcs ivy-pass-autotype "autotype")
`(defun ,(intern (format "ivy-pass--type-%s" sequence-name)) () (ivy-pass--define-sequence-funcs ivy-pass-password "password")
(interactive) (ivy-pass--define-sequence-funcs ivy-pass-username "username")
(ivy-exit-with-action (ivy-pass--define-sequence-funcs ivy-pass-url "url")
,(ivy-pass--sequence-type-action sequence))))
(defvar ivy-pass-map (defvar ivy-pass-map
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(define-key map (kbd "M-a") (define-key map (kbd "M-a") #'ivy-pass--type-autotype-command)
(ivy-pass--def-sequence-type ivy-pass-autotype "autotype")) (define-key map (kbd "M-p") #'ivy-pass--type-password-command)
(define-key map (kbd "M-p") (define-key map (kbd "M-u") #'ivy-pass--type-username-command)
(ivy-pass--def-sequence-type ivy-pass-password "password")) (define-key map (kbd "M-U") #'ivy-pass--type-url-command)
(define-key map (kbd "M-u")
(ivy-pass--def-sequence-type ivy-pass-username "username"))
(define-key map (kbd "M-U")
(ivy-pass--def-sequence-type ivy-pass-url "url"))
map)) map))
;;;###autoload ;;;###autoload
@ -185,7 +187,11 @@ SEQUENCE is a list of the following elements:
:require-match t :require-match t
:history 'ivy-pass-history :history 'ivy-pass-history
:keymap ivy-pass-map :keymap ivy-pass-map
:action (ivy-pass--sequence-type-action ivy-pass-password) :action '(1
("p" ivy-pass--type-password-action "password")
("a" ivy-pass--type-autotype-action "autotype")
("u" ivy-pass--type-username-action "username")
("U" ivy-pass--type-url-action "url"))
:caller #'ivy-pass)) :caller #'ivy-pass))
(provide 'ivy-pass) (provide 'ivy-pass)