Включить строку цвета в строке состояния - PullRequest
4 голосов
/ 13 мая 2011

У меня есть функция, определенная как

function! myfunc()
    let s = 'hello world'
    return s
endfunction

, и я могу включить это в мою строку статуса как statusline=%{myfunc()}, которая красиво печатает «привет мир». Я также могу раскрасить его как statusline=%#mycolor#%{myfunc()}, где mycolor - это определенный мной цвет.

Теперь я хочу покрасить каждое слово отдельно, поэтому я переопределяю свою функцию как

function! myfunc()
    let s = '%#mycolor1#hello %#mycolor2#world'
    return s
endfunction

Однако, когда я устанавливаю это в строке состояния, выводом будет просто буквальная строка "%#mycolor1#hello %#mycolor2#world", тогда как я хочу, чтобы hello был окрашен в соответствии с mycolor1 и world окрашен в соответствии с mycolor2.

Как мне это сделать?

1 Ответ

2 голосов
/ 13 мая 2011

Я думаю, эта утилита vim может частично ответить на ваш вопрос:

http://www.vim.org/scripts/script.php?script_id=3383

Похоже, у вас не может быть изменений цвета в вашей функции 'myfunc'. Но вы можете изменить цвет, назначив строку состояния с помощью команды exec, например ::

.
:let sl_statement = 'set statusline=%#' . color1highlight .
                 \   '#%{myfunc1()}%#' . color2hl . '#%{myfunc2()}'
:exec sl_statement
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...