Use -- before the search pattern for Ag, Rg, etc. (#1012)

Before this patch, a search pattern starting with a dash like
`:Rg -bang` would fail (or exhibit the wrong behaviour) because it would
be treated as a option. However, this case is very common when searching
for ->member in a project in C, C++, PHP, etc.

Co-authored-by: Alexandre Perrin <alex@atipik.ch>
This commit is contained in:
Alexandre Perrin
2020-05-05 17:53:11 +02:00
committed by GitHub
parent 2c07630341
commit 25bed070d8
4 changed files with 7 additions and 7 deletions

View File

@@ -228,7 +228,7 @@ predefined `Ag` or `Rg` using `fzf#vim#grep`.
```vim ```vim
command! -bang -nargs=* GGrep command! -bang -nargs=* GGrep
\ call fzf#vim#grep( \ call fzf#vim#grep(
\ 'git grep --line-number '.shellescape(<q-args>), 0, \ 'git grep --line-number -- '.shellescape(<q-args>), 0,
\ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0) \ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0)
``` ```
@@ -242,7 +242,7 @@ the spec argument to `fzf#vim#preview`.
```vim ```vim
command! -bang -nargs=* Rg command! -bang -nargs=* Rg
\ call fzf#vim#grep( \ call fzf#vim#grep(
\ 'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1, \ 'rg --column --line-number --no-heading --color=always --smart-case -- '.shellescape(<q-args>), 1,
\ fzf#vim#with_preview(), <bang>0) \ fzf#vim#with_preview(), <bang>0)
``` ```
@@ -267,7 +267,7 @@ a "fuzzy finder".
```vim ```vim
function! RipgrepFzf(query, fullscreen) function! RipgrepFzf(query, fullscreen)
let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case %s || true' let command_fmt = 'rg --column --line-number --no-heading --color=always --smart-case -- %s || true'
let initial_command = printf(command_fmt, shellescape(a:query)) let initial_command = printf(command_fmt, shellescape(a:query))
let reload_command = printf(command_fmt, '{q}') let reload_command = printf(command_fmt, '{q}')
let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]} let spec = {'options': ['--phony', '--query', a:query, '--bind', 'change:reload:'.reload_command]}

View File

@@ -700,7 +700,7 @@ function! fzf#vim#ag(query, ...)
let query = empty(a:query) ? '^(?=.)' : a:query let query = empty(a:query) ? '^(?=.)' : a:query
let args = copy(a:000) let args = copy(a:000)
let ag_opts = len(args) > 1 && type(args[0]) == s:TYPE.string ? remove(args, 0) : '' let ag_opts = len(args) > 1 && type(args[0]) == s:TYPE.string ? remove(args, 0) : ''
let command = ag_opts . ' ' . fzf#shellescape(query) let command = ag_opts . ' -- ' . fzf#shellescape(query)
return call('fzf#vim#ag_raw', insert(args, command, 0)) return call('fzf#vim#ag_raw', insert(args, command, 0))
endfunction endfunction

View File

@@ -286,7 +286,7 @@ predefined `Ag` or `Rg` using `fzf#vim#grep`.
> >
command! -bang -nargs=* GGrep command! -bang -nargs=* GGrep
\ call fzf#vim#grep( \ call fzf#vim#grep(
\ 'git grep --line-number '.shellescape(<q-args>), 0, \ 'git grep --line-number -- '.shellescape(<q-args>), 0,
\ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0) \ fzf#vim#with_preview({'dir': systemlist('git rev-parse --show-toplevel')[0]}), <bang>0)
< <
{10} bin/preview.sh {10} bin/preview.sh
@@ -302,7 +302,7 @@ the spec argument to `fzf#vim#preview`.
> >
command! -bang -nargs=* Rg command! -bang -nargs=* Rg
\ call fzf#vim#grep( \ call fzf#vim#grep(
\ 'rg --column --line-number --no-heading --color=always --smart-case '.shellescape(<q-args>), 1, \ 'rg --column --line-number --no-heading --color=always --smart-case -- '.shellescape(<q-args>), 1,
\ fzf#vim#with_preview(), <bang>0) \ fzf#vim#with_preview(), <bang>0)
< <

View File

@@ -57,7 +57,7 @@ call s:defs([
\'command! -bar -bang Colors call fzf#vim#colors(<bang>0)', \'command! -bar -bang Colors call fzf#vim#colors(<bang>0)',
\'command! -bang -nargs=+ -complete=dir Locate call fzf#vim#locate(<q-args>, s:p(<bang>0), <bang>0)', \'command! -bang -nargs=+ -complete=dir Locate call fzf#vim#locate(<q-args>, s:p(<bang>0), <bang>0)',
\'command! -bang -nargs=* Ag call fzf#vim#ag(<q-args>, s:p(<bang>0), <bang>0)', \'command! -bang -nargs=* Ag call fzf#vim#ag(<q-args>, s:p(<bang>0), <bang>0)',
\'command! -bang -nargs=* Rg call fzf#vim#grep("rg --column --line-number --no-heading --color=always --smart-case ".shellescape(<q-args>), 1, s:p(<bang>0), <bang>0)', \'command! -bang -nargs=* Rg call fzf#vim#grep("rg --column --line-number --no-heading --color=always --smart-case -- ".shellescape(<q-args>), 1, s:p(<bang>0), <bang>0)',
\'command! -bang -nargs=* Tags call fzf#vim#tags(<q-args>, <bang>0)', \'command! -bang -nargs=* Tags call fzf#vim#tags(<q-args>, <bang>0)',
\'command! -bang -nargs=* BTags call fzf#vim#buffer_tags(<q-args>, s:p(<bang>0, { "placeholder": "{2}:{3}", "options": ["-d", "\t"] }), <bang>0)', \'command! -bang -nargs=* BTags call fzf#vim#buffer_tags(<q-args>, s:p(<bang>0, { "placeholder": "{2}:{3}", "options": ["-d", "\t"] }), <bang>0)',
\'command! -bar -bang Snippets call fzf#vim#snippets(<bang>0)', \'command! -bar -bang Snippets call fzf#vim#snippets(<bang>0)',