featurep! will be renamed modulep! in the future, so it's been deprecated. They have identical interfaces, and can be replaced without issue. featurep! was never quite the right name for this macro. It implied that it had some connection to featurep, which it doesn't (only that it was similar in purpose; still, Doom modules are not features). To undo such implications and be consistent with its namespace (and since we're heading into a storm of breaking changes with the v3 release anyway), now was the best opportunity to begin the transition.
100 lines
3.3 KiB
EmacsLisp
100 lines
3.3 KiB
EmacsLisp
;;; completion/helm/autoload/helm.el -*- lexical-binding: t; -*-
|
|
|
|
;;;###autoload
|
|
(defun +helm/projectile-find-file ()
|
|
"Call `helm-find-files' if called from HOME, otherwise
|
|
`helm-projectile-find-file'."
|
|
(interactive)
|
|
(call-interactively
|
|
(if (or (file-equal-p default-directory "~")
|
|
(if-let* ((proot (doom-project-root)))
|
|
(file-equal-p proot "~")
|
|
t))
|
|
#'helm-find-files
|
|
#'helm-projectile-find-file)))
|
|
|
|
;;;###autoload
|
|
(defun +helm/workspace-buffer-list ()
|
|
"A version of `helm-buffers-list' with its buffer list restricted to the
|
|
current workspace."
|
|
(interactive)
|
|
(unless (modulep! :ui workspaces)
|
|
(user-error "This command requires the :ui workspaces module"))
|
|
(with-no-warnings
|
|
(with-persp-buffer-list nil (helm-buffers-list))))
|
|
|
|
;;;###autoload
|
|
(defun +helm/workspace-mini ()
|
|
"A version of `helm-mini' with its buffer list restricted to the current
|
|
workspace."
|
|
(interactive)
|
|
(unless (modulep! :ui workspaces)
|
|
(user-error "This command requires the :ui workspaces module"))
|
|
(with-no-warnings
|
|
(with-persp-buffer-list nil (helm-mini))))
|
|
|
|
|
|
;;
|
|
;;; Project search
|
|
|
|
;;;###autoload
|
|
(cl-defun +helm-file-search (&key query in all-files (recursive t) _prompt args)
|
|
"Conduct a file search using ripgrep.
|
|
|
|
:query STRING
|
|
Determines the initial input to search for.
|
|
:in PATH
|
|
Sets what directory to base the search out of. Defaults to the current
|
|
project's root.
|
|
:recursive BOOL
|
|
Whether or not to search files recursively from the base directory."
|
|
(declare (indent defun))
|
|
(unless (executable-find "rg")
|
|
(user-error "Couldn't find ripgrep in your PATH"))
|
|
(require 'helm-rg)
|
|
(let ((this-command 'helm-rg)
|
|
(helm-rg-default-directory (or in (doom-project-root) default-directory))
|
|
(helm-rg-default-extra-args
|
|
(delq nil (append (list (when all-files "-z -uu")
|
|
(unless recursive "--maxdepth 1")
|
|
"--hidden" "-g" "!.git")
|
|
args))))
|
|
(setq deactivate-mark t)
|
|
(helm-rg (or query
|
|
(when (use-region-p)
|
|
(let ((beg (or (bound-and-true-p evil-visual-beginning) (region-beginning)))
|
|
(end (or (bound-and-true-p evil-visual-end) (region-end))))
|
|
(when (> (abs (- end beg)) 1)
|
|
(buffer-substring-no-properties beg end))))
|
|
""))))
|
|
|
|
;;;###autoload
|
|
(defun +helm/project-search (&optional arg initial-query directory)
|
|
"Performs a project search from the project root with ripgrep.
|
|
|
|
ARG (universal argument), include all files, even hidden or compressed ones, in
|
|
the search."
|
|
(interactive "P")
|
|
(+helm-file-search
|
|
:query initial-query
|
|
:in directory
|
|
:all-files (and (not (null arg))
|
|
(listp arg))))
|
|
|
|
;;;###autoload
|
|
(defun +helm/project-search-from-cwd (&optional arg initial-query)
|
|
"Performs a project search recursively from the current directory.
|
|
|
|
If ARG (universal argument), include all files, even hidden or compressed ones."
|
|
(interactive "P")
|
|
(+helm-file-search
|
|
:query initial-query
|
|
:in default-directory
|
|
:all-files (and (not (null arg))
|
|
(listp arg))))
|
|
|
|
;;;###autoload
|
|
(defun +helm/jump-list ()
|
|
"TODO"
|
|
(interactive)
|
|
(error "not implemented yet"))
|