Плагин Tagbar работает в Vim, но не неовим - PullRequest
3 голосов
/ 24 апреля 2019

У меня есть плагин tagbar , отлично работающий в vim, но в neovim теги не отображаются.

Когда я использую TagbarDebug из обоих, я вижу, что вывод ctagsхорошо, когда запускается из vim, но из neovim, tagbardebug.log.ctags_out просто имеет следующую строку:

^[[31;01m'^[[39;00m^[[31;01m/usr/local/bin/ctags-f---format=2--excmd=pattern--fields=nksSaf--extra=--file-scope=yes--sort=no--append=no-V--language-force=python--python-kinds=icfmv/var/folders/_z/tz5sb8jd6mj41gj2gn8qvhhr0000gn/T/nvimoU8Oxr/1.py^[[39;00m^[[31;01m'^[[39;00m

Из tagbardebug.log, я вижу, что ctags вызывается немного по-разному между этими двумя.Внутри vim журнал имеет:

Calling shell to execute: "('/usr/local/bin/ctags' '-f' '-' '--format=2' '--excmd=pattern' '--fields=nksSaf' '--extra=' '--file-scope=yes' '--sort=no' '--append=no' '-V' '--language-force=python' '--python-kinds=icfmv' '/var/folders/_z/tz5sb8jd6mj41gj2gn8qvhhr0000gn/T/v0jhgoR/4.py') >/var/folders/_z/tz5sb8jd6mj41gj2gn8qvhhr0000gn/T/v0jhgoR/5 2>&1"

, но из neovim эквивалентная строка:

Executing command: "'/Users/owen/miniconda3/bin/xonsh' '-c' ''/usr/local/bin/ctags' '-f' '-' '--format=2' '--excmd=pattern' '--fields=nksSaf' '--extra=' '--file-scope=yes' '--sort=no' '--append=no' '-V' '--language-force=python' '--python-kinds=icfmv' '/var/folders/_z/tz5..."

Разница заключается в том, как вызывается ctags - vim вызывает его напрямуюно neovim вызывает исполняемый файл оболочки и передает аргумент -c.Однако, если я запускаю команду, используемую neovim, из командной строки, она работает нормально.

Я попытался установить tagbar_ctags_bin, но это не имело никакого значения.

Любые подсказки относительнокуда еще копать надо?

1 Ответ

2 голосов
/ 29 апреля 2019

Я предполагаю, что xonsh делает некоторые предположения о подключении к терминалу, что верно для терминала Vim, но не для gVim или Neovim (который вызывает команды с использованием каналов).

Попробуйте установить shell* значения параметров по умолчанию:

:set shell& shellcmdflag& shellpipe& shellquote& shellredir& shellxquote& shellxescape&

(Или просто удалите строки в вашей конфигурации, которые устанавливают эти параметры.)

Разница, по-видимому, заключается в том, как вызывается ctags - vim вызывает его напрямую, но neovim вызывает исполняемый файл оболочки и передает аргумент -c

Нет, это просто разница в выводе журнала. Vim также использует опции 'shell' и 'shellcmdflag' (на что намекает сообщение журнала: Вызов оболочки для выполнения ... ).

...