LINUX.ORG.RU

Omni vim-clang я что-то делаю не так

 neocomplate, , vim-clang


0

2

Изначально использую neocomplete всё отлично пока не юзаю omni, такая конструкция

struct foo
{
   int x;
   int y;
};

struct foo bar = {1,2};

bar.<c-x><c-o> 
Ставит вим раком.

Ладно, ставлю для комплита с/с++ vim-clang всё отлично и вроде не конфликтует с neocomlete, но я непойму вот чё

Допустим ситуация такая


#include <SDL2/SDL.h>

void main()
{
   SDL_In //всё я жду всплытия с SDL_Init(Uint32 flags) f int
          //а его нету ((( пока не протыкаешь <c-n><c-o>
}

Я пока ещё слабо дружу с vim в общем так и не понял как сделать так что бы при подключении хидера из него получать функции

к слову если кто-то осилил neocomplate для С то тоже скажу толстое и пушистое спасибо за инфу ::)

vimrc лежит тут

P.S. Да гуглил я гуглил.

UPDATE: Решено! Короче дело к ночи я слепой и не увидел в :h clang-faq

Q: How to complete head files ?
A: Please use with neocomplete, they can work well together.

        " disable auto completion for vim-clang
        let g:clang_auto = 0
        " default 'longest' can not work with neocomplete
        let g:clang_c_completeopt = 'menuone,preview'
        let g:clang_cpp_completeopt = 'menuone,preview'

        " use neocomplete
        " input patterns
        if !exists('g:neocomplete#force_omni_input_patterns')
          let g:neocomplete#force_omni_input_patterns = {}
        endif

        " for c and c++
        let g:neocomplete#force_omni_input_patterns.c =
              \ '[^.[:digit:] *\t]\%(\.\|->\)\w*'
        let g:neocomplete#force_omni_input_patterns.cpp =
              \ '[^.[:digit:] *\t]\%(\.\|->\)\w*\|\h\w*::\w*'

В общем omni комплит работает neoinclude работает, пока что тьфу тьфу всё отлично, ждёмс когда на neovim подрубят наконец то if_lua и можно будет переехать и по хипстерски гонять терминал в виме :D

P.P.S Но я всё же одного не понял, вот vim-clang бекенд для neocomplete да? А как neocomplate обрабатывает omnifunc ClangComplate? И вот ещё на счёт паттернов,, нахрена они? Если всё делет vim-clang, а neocomlete только выводит варианты комплита? Я смотрел исходники плагинов, но пока слабо понимаю как оно работает.

★★★★★

Последнее исправление: Dron (всего исправлений: 3)
Ответ на: комментарий от andreyu

neocomplate & vim-clang тоже выполняют работу великолепно, проблема не в этом.

Проблема в том что omni автоматом работает только для текущего буфера вызывая popup c вариантами комплита для него, а для файлов #include <всякаразна.h> нужно явно вызывать omni дополнение через <c-n> <c-o>

Dron ★★★★★
() автор топика
Ответ на: комментарий от slon

У меня оно стоит, оно исправно комплитит варианты инклюд файлов, а разве оно и что-то большее делает?

Dron ★★★★★
() автор топика
Ответ на: комментарий от andreyu

в неё умеет neocomplate используя omnifunc, php/html/js/etc комплитит подсказками в реалтайме всё отлично пока дело не касается с/с++ там патерны для omnifunc просто вешают вим.

я отключил omni комплит с++/с в neocomplate и для них доставил vim-clang который замечательно работает, но я хочу реалтайм в поиске функций. Если я работаю со структурой то у меня реалтайм но если я начинаю вводить имя функции то без c-x c-o мне не показывает варианты дополнения вот что мне не по нраву.

Dron ★★★★★
() автор топика

К слову тот два разраба плагинов обсуждали совместную работу neocomplate + vim-clang https://github.com/justmao945/vim-clang/issues/53 но я не распарсил результат их переговоров

Dron ★★★★★
() автор топика

Хорошо, ладно, подойду с другой стороны как сделать так чтобы <c-x><c-o> срабатывало автоматом, а не вручную при вводе нового символа? В принципе это исправит проблему. Просто нужно будет добавить условие в vimrc

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Хорошо, ладно, подойду с другой стороны как сделать так чтобы <c-x><c-o> срабатывало автоматом, а не вручную при вводе нового символа?

Может вам supertab поможет?

andreyu ★★★★★
()
Ответ на: комментарий от Dron

Не, он конфликтует с neocomplate

Скорее всего так. Но зачем нужен neocomplete, который у вас не работает и которому до ycm как до луны?

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Аргументируй, мне действительно интересно. Neocomplate работает отлично, его задача просто выводить то что выплёвывают omni функции/буферы/теги/дотфайлы/и прочее прочее

Вот к примеру мне вдруг не понравился или сломался комплит от vim-clang (neocomplete просто может использовать omnifunc других комплитеров ) я беру и ставлю vimproc что-то не так с ним я ставлю clang_complate и так далее. С ycm так можно?

Dron ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Хотя есть один жирный + для ycm его интегрировали в neovim, а в виду кипиша вокруг последнего ycm будут пилить и пилят

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Аргументируй, мне действительно интересно.

Да аргумент прост - ycm работает, а с neocomplete у вас проблемы.

С ycm так можно?

Я не понял вопрос, что значит «так можно»?

andreyu ★★★★★
()
Ответ на: комментарий от HeipaVai1o

прежде чем перебраться на neovim я хочу освоить vim

Dron ★★★★★
() автор топика
Ответ на: комментарий от Dron

Использовать другие комплитеры в качестве бекенда.

Никогда не задавался этим вопросом. Меня устраивает ycm, а neocomplete и deoplete не делают то, что мне нужно. Возможно, что их можно как-то настроить, но зачем мне усложнять себе жизнь?

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.