У меня есть объект, определенный так:
let g:lightline = {
\ 'component': {
\ 'fugitive': '%{exists("*fugitive#statusline") ? "⎇ " . fugitive#statusline() : ""}'
\ },
\ }
Результатом fugitive#statusline()
является GIT(master)
, поэтому последняя строка в конечном итоге появляется в моей строке состояния как ⎇ ,GIT(master)
с запятой.
Почему стоит запятая? Как мы можем избежать запятой?
Я использую lightline.vim для настройки строки состояния, и вся конфигурация выглядит так:
let g:lightline = {
\ 'active': {
\ 'left': [
\ [ 'mode', 'paste' ],
\ [ 'filename', 'readonly', 'modified' ],
\ [ 'fugitive', ],
\ ]
\ },
\ 'inactive': {
\ 'left': [
\ [ 'filename', 'readonly', 'modified' ],
\ [ 'fugitive', ],
\ ]
\ },
\ 'component': {
\ 'readonly': '%{&readonly?"x":""}',
\ 'fugitive': '%{exists("*fugitive#statusline") ? "⎇ " . fugitive#statusline() . "" : ""}'
\ },
\ 'component_visible_condition': {
\ 'fugitive': '(exists("*fugitive#head") && ""!=fugitive#head())'
\ },
\ 'separator': { 'left': '', 'right': '' },
\ 'subseparator': { 'left': '|', 'right': '|' }
\ }
"foo" . fugitive#statusline()
, результат равенfoo,GIT(master)
, но если я делаюfugitive#statusline() . "foo"
, то результатGIT(master)foo
без запятой. Если я сделаю"foo" . fugitive#head()
, то результат будетfoomaster
без запятой! Это заставило меня поверить, что, возможно, я не так много знаю о конкатенации строк, как думал. Скорее всего, это не связано с плагином. - person trusktr   schedule 05.02.2017vim-fugitive
; См. эти строки исходного кода - person dNitro   schedule 05.02.2017