diff --git a/core/autoload/help.el b/core/autoload/help.el index fa010b9e3..c3458376c 100644 --- a/core/autoload/help.el +++ b/core/autoload/help.el @@ -196,7 +196,7 @@ selection of all minor-modes, active or not." (find-file (expand-file-name "index.org" doom-docs-dir))) ;;;###autoload -(defun doom/help-search (&optional initial-input) +(defun doom/help-search-headings (&optional initial-input) "Search Doom's documentation and jump to a headline." (interactive) (doom-completing-read-org-headings @@ -212,6 +212,25 @@ selection of all minor-modes, active or not." x) (doom--help-modules-list)))) +;;;###autoload +(defun doom/help-search (&optional initial-input) + "Preform a text search on all of Doom's documentation." + (interactive) + (funcall (cond ((featurep! :completion ivy) + #'+ivy-file-search) + ((featurep! :completion helm) + #'+helm-file-search) + ((rgrep + (read-regexp + "Search for" (or initial-input 'grep-tag-default) + 'grep-regexp-history) + "*.org" doom-emacs-dir) + #'ignore)) + :query initial-input + :args '("-g" "*.org") + :in doom-emacs-dir + :prompt "Search documentation for: ")) + ;;;###autoload (defun doom/help-news-search (&optional initial-input) "Search headlines in Doom's newsletters." diff --git a/modules/completion/helm/autoload/helm.el b/modules/completion/helm/autoload/helm.el index 44c7ddd44..610abb75d 100644 --- a/modules/completion/helm/autoload/helm.el +++ b/modules/completion/helm/autoload/helm.el @@ -38,7 +38,7 @@ workspace." ;;; Project search ;;;###autoload -(cl-defun +helm-file-search (&key query in all-files (recursive t)) +(cl-defun +helm-file-search (&key query in all-files (recursive t) _prompt args) "Conduct a file search using ripgrep. :query STRING @@ -55,8 +55,9 @@ workspace." (let ((this-command 'helm-rg) (helm-rg-default-directory (or in (doom-project-root) default-directory)) (helm-rg-default-extra-args - (delq nil (list (when all-files "-z -uu") - (unless recursive "--maxdepth 1"))))) + (delq nil (append (list (when all-files "-z -uu") + (unless recursive "--maxdepth 1")) + args)))) (helm-rg (or query (when (use-region-p) (let ((beg (or (bound-and-true-p evil-visual-beginning) (region-beginning))) diff --git a/modules/completion/ivy/autoload/ivy.el b/modules/completion/ivy/autoload/ivy.el index 81f9b923e..b453c405a 100644 --- a/modules/completion/ivy/autoload/ivy.el +++ b/modules/completion/ivy/autoload/ivy.el @@ -242,7 +242,7 @@ The point of this is to avoid Emacs locking up indexing massive file trees." (#'counsel-file-jump))))) ;;;###autoload -(cl-defun +ivy-file-search (&key query in all-files (recursive t)) +(cl-defun +ivy-file-search (&key query in all-files (recursive t) prompt args) "Conduct a file search using ripgrep. :query STRING @@ -260,7 +260,9 @@ The point of this is to avoid Emacs locking up indexing massive file trees." (project-root (or (doom-project-root) default-directory)) (directory (or in project-root)) (args (concat (if all-files " -uu") - (unless recursive " --maxdepth 1")))) + (unless recursive " --maxdepth 1") + " " + (mapconcat #'shell-quote-argument args " ")))) (counsel-rg (or (if query query) (when (use-region-p) @@ -278,13 +280,14 @@ The point of this is to avoid Emacs locking up indexing massive file trees." ((concat "\\\\" substr)))) (rxt-quote-pcre query))))))) directory args - (format "rg%s [%s]: " - args - (cond ((equal directory default-directory) - "./") - ((equal directory project-root) - (projectile-project-name)) - ((file-relative-name directory project-root))))))) + (or prompt + (format "rg%s [%s]: " + args + (cond ((equal directory default-directory) + "./") + ((equal directory project-root) + (projectile-project-name)) + ((file-relative-name directory project-root)))))))) ;;;###autoload (defun +ivy/project-search (&optional arg initial-query directory) diff --git a/modules/config/default/config.el b/modules/config/default/config.el index 788c7d326..2b51a68e0 100644 --- a/modules/config/default/config.el +++ b/modules/config/default/config.el @@ -328,7 +328,8 @@ "dP" #'doom/help-package-homepage "dc" #'doom/goto-config-file "dC" #'doom/help-package-config - "ds" #'doom/help-search + "ds" #'doom/help-search-headings + "dS" #'doom/help-search "dx" #'doom/sandbox "dt" #'doom/toggle-profiler "dv" #'doom/version