Я пытаюсь вручную определить уровни отступа для .tex
файлов с помощью скриптов ftplugin.
~/.vim/ftplugin/tex/indent.vim
:
1 setlocal indentexpr=TeXIndent(v:lnum)
2
3 function! TeXIndent(lnum)
4 if a:lnum == 0
5 return 0
6 endif
7
8 let prev = getline(a:lnum - 1)
9 let line = getline(a:lnum)
10
11 " sections have hardcoded indentation; environments are always subordinate to sections
12 if prev =~ '^\s*\\section'
13 return 1
14 elseif prev =~ '^\s*\\subsection'
15 return 2
16 elseif prev =~ '^\s*\\subsubsection'
17 return 3
18 elseif prev =~ '^\s*\\paragraph'
19 return 4
20 " environment indentation
21 elseif prev =~ '\\begin'
22 return indent(a:lnum - 1) + 1 " increase indentation by 1 if previous line has \begin
23 elseif line =~ '\\end'
24 return indent(a:lnum - 1) - 1 " decrease indentation by 1 if line has \end
25 else
26 return indent(a:lnum - 1) " use previous indentation
27 endif
28 endfunction
Когда я набираю \section
, я ожидаю нажатия enter
, чтобы переместить курсор на уровень отступа 1 в следующей строке (то же самое для других условий, указанных в TeXIndent
), и это не так. Тестирование с помощью более простой функции, которая каждый раз возвращает 2, также не демонстрирует этого поведения, поэтому я подозреваю, что мой подход ошибочен. Как добиться ожидаемого поведения?
В целом, как можно отлаживать скрипты ftplugin?