completion/ivy: change +ivy:file-search

+ Removed literal search
+ Only escapes inserted selection
+ BANG now means: don't respect .gitignore
+ rg: use smart-case (-S) instead of case insensitivity (-i)
This commit is contained in:
Henrik Lissner 2017-05-10 05:21:53 +02:00
parent f05819c85f
commit 57a74b1761
2 changed files with 21 additions and 17 deletions

View file

@ -3,37 +3,40 @@
(defvar +ivy--file-last-search nil)
;;;###autoload (autoload '+ivy:file-search "completion/ivy/autoload/evil" nil t)
(evil-define-operator +ivy:file-search (beg end search regex-p &optional dir)
"Preform a `counsel-rg' search with SEARCH. If SEARCH is nil and in visual
mode, use the selection, otherwise activate live ag searching in helm.
(evil-define-operator +ivy:file-search (beg end query all-files-p &optional dir)
"Preform a `counsel-rg' search with QUERY. If QUERY is nil and in visual mode,
use the selection, otherwise activate live rg searching in ivy.
If REGEX-P is non-nil, SEARCH will be treated as a regular expression.
DIR specifies the default-directory from which ag is run.
If ALL-FILES-P is non-nil, don't respect .gitignore files and search everything.
If there is no selection and SEARCH is empty, then relaunch the previous search
If there is no selection and QUERY is empty, then relaunch the previous search
session."
:type inclusive :repeat nil
(interactive "<r><a><!>")
(let ((search (or search
(let ((query (or query
(and (evil-visual-state-p)
(and beg end (buffer-substring-no-properties beg end)))
+ivy--file-last-search)))
(setq +ivy--file-last-search search)
(counsel-rg search
(and beg end
(rxt-quote-pcre (buffer-substring-no-properties beg end))))
+ivy--file-last-search))
;; smart-case instead of case-insensitive flag
(counsel-rg-base-command
(replace-regexp-in-string " -i " " -S " counsel-rg-base-command)))
(setq +ivy--file-last-search query)
(counsel-rg query
(or dir (doom-project-root))
(unless regex-p " -F")
(format "File search (%s)" (if regex-p "regex" "literal")))))
(when all-files-p " -u")
(format "File search%s" (if all-files-p " (all)" "")))))
;;;###autoload (autoload '+ivy:file-search-cwd "completion/ivy/autoload/evil" nil t)
(evil-define-operator +ivy:file-search-cwd (beg end search regex-p)
(evil-define-operator +ivy:file-search-cwd (beg end search all-files-p)
"Perform a `counsel-rg' search for SEARCH (or the current selection) in
`default-directory'."
:type inclusive :repeat nil
(interactive "<r><a><!>")
(+ivy:file-search beg end search regex-p default-directory))
(+ivy:file-search beg end search all-files-p default-directory))
;;;###autoload (autoload '+ivy:swiper "completion/ivy/autoload/evil" nil t)
(evil-define-command +ivy:swiper (&optional search)
"Invoke `swiper' with SEARCH, otherwise with the symbol at point."
(interactive "<a>")
(swiper (or search (thing-at-point 'symbol))))
(swiper search))