Skip to content

Commit

Permalink
Make sure that we don't pipe stdin when starting a job (#250)
Browse files Browse the repository at this point in the history
Starting with version 13, ripgrep always stats stdin and if it's not a
TTY it uses it to read data. Unfortunately, Neovim always attaches a
pipe to stdin by default and that leads to ripgrep reading nothing and
it essentially breaks vim-grepper when targeting a recent version of
ripgrep.

(see neovim/neovim#14812 for more info)

This was fixed in nvim by adding an option to jobstart to not pipe stdin
(see neovim/neovim#14812). So we use this here
which I verified fixes search through rg.

Note that I'm not 100% sure how to gate this. It was technically added
as a commit to neovim after 0.5 shipped so I imagine it will technically
be released in 0.5.1. But it should also be harmless to only gate this
to `nvim` since the options are a dictionary and old versions of neovim
will just ignore that `stdin` key.
  • Loading branch information
ddeville authored Aug 20, 2021
1 parent b80004c commit 1c3c4c6
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions plugin/grepper.vim
Original file line number Diff line number Diff line change
Expand Up @@ -936,6 +936,15 @@ function! s:run(flags)
\ 'on_stderr': function('s:on_stdout_nvim'),
\ 'on_exit': function('s:on_exit'),
\ }
if has('nvim-0.5.1')
" Starting with version 13, ripgrep always stats stdin and if it's not a
" TTY it uses it to read data. Unfortunately, Neovim always attaches a
" pipe to stdin by default and that leads to ripgrep reading nothing...
" (see https://github.com/mhinz/vim-grepper/issues/244 for more info)
" This was fixed in nvim by adding an option to jobstart to not pipe stdin
" (see https://github.com/neovim/neovim/pull/14812).
let opts.stdin = 'null'
endif
if !a:flags.stop
let opts.stdout_buffered = 1
let opts.stderr_buffered = 1
Expand Down

0 comments on commit 1c3c4c6

Please sign in to comment.