Сворачивание Gvim для системных пар ключевых слов Verilog

Как включить сворачивание ключевых слов системного Verilog в Gvim? Например

function
   Code
   ....
   ....
endfunction

Я хотел бы, чтобы Gvim создал складку от функции к конечной функции. Как я могу это сделать ?


person Jean    schedule 01.03.2013    source источник


Ответы (1)


Вот пользовательское выражение foldexpression, которое должно делать то, что вы хотите. Он начинает сгиб со строки, следующей за каждой «функцией», и заканчивает его на строке, предшествующей каждой «конечной функции», а в противном случае наследует уровень сгиба предыдущей строки.

function! VimFunctionFoldExpr()
    if getline(v:lnum-1) =~ '^\s*function'
        return '>1'
    elseif getline(v:lnum+1) =~ '^\s*endfunction'
        return '<1'
    else
        return '='
    endif
endfunction

Чтобы Vim использовал эту функцию, установите следующее:

set foldmethod=expr
set foldexpr=VimFunctionFoldExpr()

Вы также можете настроить параметр foldtext, чтобы он соответствовал уровню намерения. Вот вопрос SE о том, как это сделать.

person Prince Goulash    schedule 02.03.2013
comment
Есть ли способ попросить vim перепрыгнуть через эти ключевые слова? Так же, как { } ? - person Jean; 18.07.2013