Skip to content

Commit

Permalink
featuregate ivy dependent autoloads for irc, pass
Browse files Browse the repository at this point in the history
previously these functions would get autoloaded even when another
completion framework was active
  • Loading branch information
iyefrat committed May 20, 2021
1 parent 6dc6d11 commit 5ddf8b9
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 66 deletions.
37 changes: 5 additions & 32 deletions modules/app/irc/autoload/irc.el
Original file line number Diff line number Diff line change
Expand Up @@ -63,40 +63,13 @@ workspace for it."
(+workspace/delete +irc--workspace-name)))))

;;;###autoload
(defun +irc/ivy-jump-to-channel (&optional this-server)
"Jump to an open channel or server buffer with ivy. If THIS-SERVER (universal
(defun +irc/jump-to-channel (&optional this-server)
"Jump to an open channel or server buffer. 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))))

;;;###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)))

(call-interactively
(cond ((featurep! :completion ivy) #'+irc/ivy-jump-to-channel)
((user-error "No jump-to-channel backend is enabled. Enable ivy!")))))

;;
;;; Hooks/fns
Expand Down
30 changes: 30 additions & 0 deletions modules/app/irc/autoload/ivy.el
Original file line number Diff line number Diff line change
@@ -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))))
3 changes: 1 addition & 2 deletions modules/app/irc/config.el
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,7 @@ playback.")
"p" #'circe-command-PART
"Q" #'+irc/quit
"R" #'circe-reconnect
(:when (featurep! :completion ivy)
"c" #'+irc/ivy-jump-to-channel))
"c" #'+irc/jump-to-channel)
(:map circe-channel-mode-map
"n" #'circe-command-NAMES)))

Expand Down
21 changes: 21 additions & 0 deletions modules/tools/pass/autoload/ivy.el
Original file line number Diff line number Diff line change
@@ -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"))))
32 changes: 0 additions & 32 deletions modules/tools/pass/autoload/pass.el
Original file line number Diff line number Diff line change
Expand Up @@ -106,35 +106,3 @@ fields in `+pass-url-fields' is used to find the url field."
(interactive
(list (password-store--completing-read)))
(+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)
;; )

0 comments on commit 5ddf8b9

Please sign in to comment.