doomemacs/modules/tools/prodigy/autoload.el
Henrik Lissner 9a02bd8ac8
Minor refactors across the board
- when-let* -> when-let
- Fix projectile-locate-dominating-file for connected remote files
2019-06-26 14:31:06 +02:00

49 lines
1.7 KiB
EmacsLisp

;;; tools/prodigy/autoload.el -*- lexical-binding: t; -*-
;;;###autoload
(defun +prodigy/create ()
"Interactively create a new prodigy service."
(interactive)
;; TODO
)
;;;###autoload
(defun +prodigy/delete (arg)
"Delete service at point. Asks for confirmation."
(interactive "P")
(prodigy-with-refresh
(when-let (service (prodigy-service-at-pos))
(let ((name (plist-get service :name)))
(cond ((or arg
(y-or-n-p (format "Delete '%s' service?" name)))
(setq prodigy-services (delete service prodigy-services))
(ignore-errors
(prodigy-goto-next-line))
(message "Successfully deleted service: %s" name))
(t
(message "Aborted")))))))
;;;###autoload
(defun +prodigy/cleanup ()
"Delete all services associated with projects that don't exist."
(interactive)
(cl-loop for service in prodigy-services
if (and (plist-member service :project)
(file-directory-p (plist-get service :project)))
collect service into services
finally do (setq prodigy-service services)))
;;;###autoload
(defun +prodigy*services (orig-fn &rest args)
"Adds a new :project property to prodigy services, which hides the service
unless invoked from the relevant project."
(let ((project-root (downcase (or (doom-project-root) default-directory)))
(services (apply orig-fn args)))
(if current-prefix-arg
services
(cl-remove-if-not (lambda (service)
(let ((project (plist-get service :project)))
(or (not project)
(file-in-directory-p project-root project))))
services))))