Vim Powerline с синтастическим сегментом

Как добавить синтастический сегмент в powerline нижний колонтитул для Vim? (новая powerline, а не vim-powerline) Синтастические документы говорят только о том, как добавить его в стандартный нижний колонтитул Vim, и я не смог найти, как добавить его в документы Powerline.


person Mike Funk    schedule 03.04.2013    source источник
comment
Почему бы не спросить у автора?   -  person romainl    schedule 03.04.2013


Ответы (1)


Большинство этих инструкций взяты из этого запроса на включение (451) для Powerline.

Этот запрос на включение добавляет синтаксический сегмент в Powerline. Поскольку сегмент не объединен с основным деревом линий электропередач, вам необходимо предварительно сформировать патчи вручную. К счастью, вам нужно изменить только три файла. (+ означает добавить строку/ - означает удалить строку). Посмотрите на запрос на вытягивание цветного diff.

Файл: powerline/config_files/colorschemes/vim/default.json (строка 28)

     "line_current_symbol": { "fg": "gray1", "bg": "gray10" },
     "virtcol_current_gradient": { "fg": "dark_GREEN_Orange_red", "bg": "gray10" },
     "col_current": { "fg": "gray6", "bg": "gray10" },
-    "modified_buffers": { "fg": "brightyellow", "bg": "gray2" }
+    "modified_buffers": { "fg": "brightyellow", "bg": "gray2" },
+    "syntastic_segment": { "fg": "brightestred", "bg": "gray2", "attr": ["bold"] }
   },
   "mode_translations": {
     "nc": {

Файл: powerline/config_files/colorschemes/vim/default.json (строка 68)

       "groups": {
         "mode": { "fg": "darkestcyan", "bg": "white", "attr": ["bold"] },
         "background:divider": { "fg": "darkcyan", "bg": "darkestblue" },
-        "branch:divider": { "fg": "darkcyan", "bg": "darkblue" }
+        "branch:divider": { "fg": "darkcyan", "bg": "darkblue" },
+        "syntastic_segment": { "fg": "white", "bg": "darkestblue", "attr": ["bold"] }
       }
     },
     "v": {

Файл: powerline/config_files/colorschemes/vim/solarized.json (строка 27)

     "line_current":             { "fg": "gray13", "bg": "lightyellow", "attr": ["bold"] },
     "line_current_symbol":      { "fg": "gray13", "bg": "lightyellow" },
     "virtcol_current_gradient": { "fg": "GREEN_Orange_red", "bg": "gray10" },
-    "col_current":              { "fg": "azure4", "bg": "lightyellow" }
+    "col_current":              { "fg": "azure4", "bg": "lightyellow" },
+    "syntastic_segment":        { "fg": "red", "bg": "royalblue5", "attr": ["bold"] }
   },
   "mode_translations": {
     "nc": {

Файл: powerline/config_files/colorschemes/vim/solarized.json (строка 65)

         "line_percent_gradient":  { "fg": "oldlace", "bg": "gray61" },
         "line_current":           { "fg": "gray13", "bg": "oldlace", "attr": ["bold"] },
         "line_current_symbol":    { "fg": "gray13", "bg": "oldlace" },
-        "col_current":            { "fg": "azure4", "bg": "oldlace" }
+        "col_current":            { "fg": "azure4", "bg": "oldlace" },
+        "syntastic_segment":      { "fg": "lightyellow", "bg": "darkgreencopper", "attr": ["bold"] }
       }
     },
     "v": {

Файл: powerline/segments/vim.py (строка 23)

   'expand': vim_get_func('expand', rettype=str),
   'bufnr': vim_get_func('bufnr', rettype=int),
   'line2byte': vim_get_func('line2byte', rettype=int),
+  'exists': vim_get_func('exists', rettype=int),
 }

 vim_modes = {

В конце powerline/segments/vim.py добавьте следующую функцию. (Убедитесь, что вы используете вкладки для отступа функции. Вы изменяете отступ файла python)

@window_cached
def syntastic_segment(pl):
    '''Return the syntastic statusline flag
    '''
    if int(vim_funcs['exists']('*SyntasticStatuslineFlag')) > 0:
        syntastic_flag_func = vim_get_func('SyntasticStatuslineFlag', rettype=str)
        return [{
            'contents': str(syntastic_flag_func()),
        }]
    else:
        return None

После внесения всех этих изменений вам нужно включить сегмент. Один из способов сделать это — отредактировать файл конфигурации ~/.config/powerline/themes/vim/default.json.

В секции segments: поместите следующее в правую или левую секции.

{
    "name": "syntastic_segment",
    "before": " "
},

После всех этих изменений вы должны увидеть вывод синтаксической ошибки в сегменте линии электропередач.


Исправление проблем:

  • если вы вводите ошибки синтаксического анализа в json, вы можете запустить vim с vim --noplugin, чтобы запустить vim без плагинов, чтобы Powerline не пытался анализировать файл.
  • Убедитесь, что запятые для json стоят в правильных местах.
  • Убедитесь, что вы использовали вкладки, а не пробелы в файлах Python при их редактировании.
person FDinoff    schedule 12.06.2013