featuregate ivy dependent autoloads for irc, pass
previously these functions would get autoloaded even when another completion framework was active
This commit is contained in:
parent
6dc6d11b83
commit
5ddf8b9b51
5 changed files with 57 additions and 66 deletions
|
@ -63,40 +63,13 @@ workspace for it."
|
||||||
(+workspace/delete +irc--workspace-name)))))
|
(+workspace/delete +irc--workspace-name)))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun +irc/ivy-jump-to-channel (&optional this-server)
|
(defun +irc/jump-to-channel (&optional this-server)
|
||||||
"Jump to an open channel or server buffer with ivy. If THIS-SERVER (universal
|
"Jump to an open channel or server buffer. If THIS-SERVER (universal
|
||||||
argument) is non-nil only show channels in current server."
|
argument) is non-nil only show channels in current server."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(if (not (circe-server-buffers))
|
(call-interactively
|
||||||
(message "No circe buffers available")
|
(cond ((featurep! :completion ivy) #'+irc/ivy-jump-to-channel)
|
||||||
(when (and this-server (not circe-server-buffer))
|
((user-error "No jump-to-channel backend is enabled. Enable ivy!")))))
|
||||||
(setq this-server nil))
|
|
||||||
(ivy-read (format "Jump to%s: " (if this-server (format " (%s)" (buffer-name circe-server-buffer)) ""))
|
|
||||||
(cl-loop with servers = (if this-server (list circe-server-buffer) (circe-server-buffers))
|
|
||||||
with current-buffer = (current-buffer)
|
|
||||||
for server in servers
|
|
||||||
collect (buffer-name server)
|
|
||||||
nconc
|
|
||||||
(with-current-buffer server
|
|
||||||
(cl-loop for buf in (circe-server-chat-buffers)
|
|
||||||
unless (eq buf current-buffer)
|
|
||||||
collect (format " %s" (buffer-name buf)))))
|
|
||||||
:action #'+irc--ivy-switch-to-buffer-action
|
|
||||||
:preselect (buffer-name (current-buffer))
|
|
||||||
:keymap ivy-switch-buffer-map
|
|
||||||
:caller '+irc/ivy-jump-to-channel)))
|
|
||||||
|
|
||||||
(defun +irc--ivy-switch-to-buffer-action (buffer)
|
|
||||||
(when (stringp buffer)
|
|
||||||
(ivy--switch-buffer-action (string-trim-left buffer))))
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun +irc/tracking-next-buffer ()
|
|
||||||
"Disables switching to an unread buffer unless in the irc workspace."
|
|
||||||
(interactive)
|
|
||||||
(when (derived-mode-p 'circe-mode)
|
|
||||||
(tracking-next-buffer)))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;;; Hooks/fns
|
;;; Hooks/fns
|
||||||
|
|
30
modules/app/irc/autoload/ivy.el
Normal file
30
modules/app/irc/autoload/ivy.el
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
;;; app/irc/autoload/ivy.el -*- lexical-binding: t; -*-
|
||||||
|
;;;###if (featurep! :completion ivy)
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +irc/ivy-jump-to-channel (&optional this-server)
|
||||||
|
"Jump to an open channel or server buffer with ivy. If THIS-SERVER (universal
|
||||||
|
argument) is non-nil only show channels in current server."
|
||||||
|
(interactive "P")
|
||||||
|
(if (not (circe-server-buffers))
|
||||||
|
(message "No circe buffers available")
|
||||||
|
(when (and this-server (not circe-server-buffer))
|
||||||
|
(setq this-server nil))
|
||||||
|
(ivy-read (format "Jump to%s: " (if this-server (format " (%s)" (buffer-name circe-server-buffer)) ""))
|
||||||
|
(cl-loop with servers = (if this-server (list circe-server-buffer) (circe-server-buffers))
|
||||||
|
with current-buffer = (current-buffer)
|
||||||
|
for server in servers
|
||||||
|
collect (buffer-name server)
|
||||||
|
nconc
|
||||||
|
(with-current-buffer server
|
||||||
|
(cl-loop for buf in (circe-server-chat-buffers)
|
||||||
|
unless (eq buf current-buffer)
|
||||||
|
collect (format " %s" (buffer-name buf)))))
|
||||||
|
:action #'+irc--ivy-switch-to-buffer-action
|
||||||
|
:preselect (buffer-name (current-buffer))
|
||||||
|
:keymap ivy-switch-buffer-map
|
||||||
|
:caller '+irc/ivy-jump-to-channel)))
|
||||||
|
|
||||||
|
(defun +irc--ivy-switch-to-buffer-action (buffer)
|
||||||
|
(when (stringp buffer)
|
||||||
|
(ivy--switch-buffer-action (string-trim-left buffer))))
|
|
@ -149,8 +149,7 @@ playback.")
|
||||||
"p" #'circe-command-PART
|
"p" #'circe-command-PART
|
||||||
"Q" #'+irc/quit
|
"Q" #'+irc/quit
|
||||||
"R" #'circe-reconnect
|
"R" #'circe-reconnect
|
||||||
(:when (featurep! :completion ivy)
|
"c" #'+irc/jump-to-channel)
|
||||||
"c" #'+irc/ivy-jump-to-channel))
|
|
||||||
(:map circe-channel-mode-map
|
(:map circe-channel-mode-map
|
||||||
"n" #'circe-command-NAMES)))
|
"n" #'circe-command-NAMES)))
|
||||||
|
|
||||||
|
|
21
modules/tools/pass/autoload/ivy.el
Normal file
21
modules/tools/pass/autoload/ivy.el
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
;;; tools/pass/autoload/ivy.el -*- lexical-binding: t; -*-
|
||||||
|
;;;###if (featurep! :completion ivy)
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +pass/ivy (arg)
|
||||||
|
"TODO"
|
||||||
|
(interactive "P")
|
||||||
|
(ivy-read "Pass: " (password-store-list)
|
||||||
|
:action (if arg
|
||||||
|
#'password-store-url
|
||||||
|
#'password-store-copy)
|
||||||
|
:caller '+pass/ivy))
|
||||||
|
|
||||||
|
(after! ivy
|
||||||
|
(ivy-add-actions
|
||||||
|
'+pass/ivy
|
||||||
|
'(("o" password-store-copy "copy password")
|
||||||
|
("e" +pass/edit-entry "edit entry")
|
||||||
|
("u" +pass/copy-user "copy username")
|
||||||
|
("b" +pass/copy-url "open url in browser")
|
||||||
|
("f" +pass/copy-field "get field"))))
|
|
@ -106,35 +106,3 @@ fields in `+pass-url-fields' is used to find the url field."
|
||||||
(interactive
|
(interactive
|
||||||
(list (password-store--completing-read)))
|
(list (password-store--completing-read)))
|
||||||
(+pass--open-url entry))
|
(+pass--open-url entry))
|
||||||
|
|
||||||
|
|
||||||
;;
|
|
||||||
;; Ivy interface
|
|
||||||
|
|
||||||
;;;###autoload
|
|
||||||
(defun +pass/ivy (arg)
|
|
||||||
"TODO"
|
|
||||||
(interactive "P")
|
|
||||||
(ivy-read "Pass: " (password-store-list)
|
|
||||||
:action (if arg
|
|
||||||
#'password-store-url
|
|
||||||
#'password-store-copy)
|
|
||||||
:caller '+pass/ivy))
|
|
||||||
|
|
||||||
(after! ivy
|
|
||||||
(ivy-add-actions
|
|
||||||
'+pass/ivy
|
|
||||||
'(("o" password-store-copy "copy password")
|
|
||||||
("e" +pass/edit-entry "edit entry")
|
|
||||||
("u" +pass/copy-user "copy username")
|
|
||||||
("b" +pass/copy-url "open url in browser")
|
|
||||||
("f" +pass/copy-field "get field"))))
|
|
||||||
|
|
||||||
|
|
||||||
;;
|
|
||||||
;; TODO Helm interface
|
|
||||||
|
|
||||||
;; (defun +pass/helm ()
|
|
||||||
;; (interactive)
|
|
||||||
;; )
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue