Как заставить vim правильно делать отступ в tcl? - PullRequest
0 голосов
/ 07 января 2019

У меня есть следующий пример tcl:

#!/usr/bin/env tclsh

proc main {} {
    foreach v $::argv {
        puts $v
}
}

main

Когда я получаю vim для отступа этого кода (ggVG=), он отступает точно так же, как и выше, что, очевидно, неправильно, так как фигурные скобки не совпадают.

Однако я почти уверен, что мой vim настроен правильно:

:set
--- Options ---
  autoindent          backspace=2         expandtab           hlsearch            scroll=22           syntax=tcl          wildmenu
  autoread            comments=:#         filetype=tcl        incsearch           shiftround          ttyfast             window=0
  background=dark     commentstring=#%s   helplang=en         modelines=0         shiftwidth=4        ttymouse=xterm2   nowrap
  fileencoding=utf-8
  fileencodings=ucs-bom,utf-8,default,latin1
  formatoptions=tcroql
  indentexpr=GetTclIndent()
  indentkeys=0{,0},!^F,o,O,0]

и

:scriptnames
...
 52: /usr/share/vim/vim80/ftplugin/tcl.vim
 53: /usr/share/vim/vim80/indent/tcl.vim
 54: /usr/share/vim/vim80/syntax/tcl.vim
...

Это просто как vim делает отступ tcl, или я что-то не так делаю?

1 Ответ

0 голосов
/ 07 января 2019

Я попробовал ваш пример со старым Vim 7.4 и вижу ту же ошибку. Затем я попробовал это с Vim 8.1, и он работает как надо. Я проверил indent/tcl.vim, и оно было обновлено 2018-12-05 (Vim 8.1.0576).

Загрузите текущий файл отступа из git . И сохраните его в каталоге ~/.vim/indent (или $HOME/vimfiles/indent в Windows).

Перезапустите Vim и проверьте.

Как только вы обновитесь до Vim 8.1.0576 или новее, вы можете удалить indent/tcl.vim из вашей личной конфигурации.

Кстати: обновлен только файл отступа. Скрипты для синтаксиса, компилятора и ftplugin остались прежними.

PS: чтобы сохранить вас одним нажатием клавиши: Попробуйте gg=G: -)

...