Vim: пользовательская функция свертывания сделана, требуется пользовательская подсветка - PullRequest
1 голос
/ 11 марта 2010

Я определил функцию в vim для правильного отступа. Т.е. так они выглядят так:

разложенном

this is text 
also text
    indented text
    indented text
not indented text

в сложенном виде с функцией по умолчанию

this is text 
also text
+-- 2 lines: indented text ----------------------------
not indented text

свернуто с моей новой функцией

this is text 
also text
    ++- 2 lines: indented text ----------------------------
not indented text

Единственная проблема заключается в том, что подсветка по-прежнему выглядит так:

свернуто с моей новой функцией (выделение показано тегом)

this is text 
also text
<hi>    ++- 2 lines: indented text ----------------------------</hi>
not indented text

Я бы хотел, чтобы подсветка начиналась с ++, а не с начала строки. Я посмотрел в руководстве vim, но не смог найти ничего подобного. Одним из таких решений, которое я нашел, было сделать фон черным (так же, как мой фон).

highlight Folded ctermbg=black ctermfg=white cterm=bold

Но это делает складки менее заметными.

Я пробовал несколько вариантов:

syn keyword Folded lines
syn region Folded ...

Но я думаю, что сгибы выбираются по-другому, и я не могу придумать способ переопределить подсветку по умолчанию. Кто-нибудь может предложить предложение?

Кстати, моя функция состоит в том, чтобы делать отступы:

set foldmethod=indent

function! MyFoldText()
        let lines = 1 + v:foldend - v:foldstart
        let ind = indent(v:foldstart)

        let spaces = ''
        let i = 0
        while i < ind
                let i = i+1
                let spaces = spaces . ' '
        endwhile

        let linestxt = 'lines'
        if lines == 1
                linestxt = 'line'
        endif

        return spaces . '+' . v:folddashes . ' '. lines . ' ' . linestxt . ': ' . getline(v:foldstaendfunction
endfunction


au BufWinEnter,BufRead,BufNewFile * set foldtext=MyFoldText()

Кстати, спасибо njd за помощь в настройке этой функции.

Примечание: я выложил это на супер пользователя .

1 Ответ

2 голосов
/ 12 марта 2010

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

...