Skip to content

Commit

Permalink
Integrate rg into isearch
Browse files Browse the repository at this point in the history
  • Loading branch information
dajva committed Sep 12, 2021
1 parent e652af9 commit f66b1c9
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
6 changes: 5 additions & 1 deletion rg-menu.el
Expand Up @@ -40,6 +40,7 @@
(declare-function rg-buffers "rg.el")
(declare-function rg-dwim-current-dir "rg.el")
(declare-function rg-dwim-current-file "rg.el")
(declare-function rg-isearch-current-file "rg.el")
(declare-function rg-list-searches "rg.el")
(declare-function rg-save-search "rg.el")
(declare-function rg-save-search-as-name "rg.el")
Expand Down Expand Up @@ -105,6 +106,7 @@ FUNC is an rerun function invoked from an `rg-mode' buffer."
(rg-menu-wrap-transient-search rg-buffers)
(rg-menu-wrap-transient-search rg-dwim-current-dir)
(rg-menu-wrap-transient-search rg-dwim-current-file)
(rg-menu-wrap-transient-search rg-isearch-current-file)
(rg-menu-wrap-transient-search rg-list-searches)
(rg-menu-wrap-transient-search rg-save-search)
(rg-menu-wrap-transient-search rg-save-search-as-name)
Expand Down Expand Up @@ -159,7 +161,9 @@ FUNC is an rerun function invoked from an `rg-mode' buffer."
(3 "r" "Regex" rg--transient)
(3 "t" "Literal" rg-literal--transient)
(3 "p" "Project" rg-project--transient)
(3 "B" "Buffers" rg-buffers--transient)]
(3 "B" "Buffers" rg-buffers--transient)
(4 "i" "Isearch" rg-isearch-current-file--transient)
]
[:if-mode rg-mode
:description "Rerun"
(3 "g" "Go" rg-rerun--transient)
Expand Down
25 changes: 25 additions & 0 deletions rg.el
Expand Up @@ -567,6 +567,23 @@ reports."
(message environment)
(kill-new environment)))

(defun rg-get-isearch-string ()
"Extract the isearch string from the last isearch."
;; Do what `isearch-occur' does.
(cond
((functionp isearch-regexp-function)
(funcall isearch-regexp-function isearch-string))
(isearch-regexp-function (word-search-regexp isearch-string))
(isearch-regexp isearch-string)
(t isearch-string)))

(defun rg-isearch-literal-p ()
"Return t if last isearch was literal, nil otherwise."
(not (or
(functionp isearch-regexp-function)
isearch-regexp-function
isearch-regexp)))

;;;###autoload
(defmacro rg-define-toggle (flag &optional key default)
"Define a command line flag that can be toggled from the rg result buffer.
Expand Down Expand Up @@ -894,6 +911,14 @@ Example:
(rg-menu-wrap-transient-search ,name)
,@menu-forms)))

;;;###autoload (autoload 'rg-isearch-file "rg.el" "" t)
(rg-define-search rg-isearch-current-file
:dir current
:query (rg-get-isearch-string)
:format (rg-isearch-literal-p)
:files current
:dir current)

;;;###autoload (autoload 'rg-project "rg.el" "" t)
(rg-define-search rg-project
"Run ripgrep in current project searching for QUERY in FILES.
Expand Down

0 comments on commit f66b1c9

Please sign in to comment.