Режим быстрого исправления Vim с файлами Oracle Pro * C?

при использовании Vim для компиляции файла Oracle Pro * C у меня возникают следующие проблемы:

  1. если все в порядке, компиляция завершается, но текущий открытый файл исчезает, и экран становится пустым (это происходит только с файлами Pro*c, обычные .c работают нормально), нажав CtrlO переходит к исходному файлу.

  2. если есть проблема с кодом, я могу открыть окно быстрого исправления, но когда я нахожусь над линией, показывающей место с проблемой, это ничего не делает.

Я новичок в Vim, поэтому не знаю, как решить эти проблемы.

Любые советы приветствуются

Я использую vim 7.3, если это помогает.


person Eman    schedule 23.07.2013    source источник
comment
Вы не говорите о движке QuickFIX для протокола FIX, не так ли?   -  person Grant Birchmeier    schedule 24.07.2013
comment
привет, Грант Бирчмайер, нет, я имею в виду быстрое исправление для Vim. После дальнейшего изучения я предполагаю, что моя проблема связана с конфигурацией errorformat, прямо сейчас я пытаюсь выяснить, создал ли кто-нибудь уже одну конфигурацию, которая работает с выводом компилятора PRO*C.   -  person Eman    schedule 25.07.2013


Ответы (1)


Проблема в том, что Vim связывает *.pc файлов с файлами другого формата (по умолчанию) и не имеет ссылки errorformat, который подходит для вычурного стиля предупреждений/сообщений об ошибках Oracle Pro*C (по крайней мере, при использовании Vim 7.2 или 7.4).

(Ваша первая проблема является результатом того, что errorformat по умолчанию соответствует сообщению о запуске Pro*C, а вторая проблема связана с тем, что шаблоны errorformat по умолчанию не соответствуют никаким предупреждениям/сообщениям об ошибках Pro*C.)

Я использую следующие дополнительные шаблоны errorformat для файлов Pro*C:

"append patterns for Pro*C multi line error message:
set efm+=%ESyntax\ error\ at\ line\ %l\\,\ column\ %c\\,\ file\ %f:,%ESemantic\ error\ at\ line\ %l\\,\ column\ %c\\,\ file\ %f:,%EError\ at\ line\ %l\\,\ column\ %c\ in\ file\ %f,%ZPCC%[A-Z0-9-]%#\\,\ %m,%C%.%#

"prepend ignoring string to ignore Pro*C startup message
set efm^=%-GPro*C/C++:\ Release%.%#

Вы можете добавить эти строки в свой ~/.vimrc.

Чтобы исправить связанную с этим проблему определения типа файла, вы можете настроить правильный тип файла:

$ cd ~/.vim
$ mkdir ftdetect
$ cd ftdetect
$ cat > pc.vim
au BufRead,BufNewFile *.pc  set filetype=esqlc

Однако для отступа этого недостаточно.

Предполагая что-то вроде

filetype plugin indent on

в вашем ~/.vimrc вы можете явно настроить правила отступа C:

$ cd ~/.vim
$ mkdir indent
$ cd indent
$ cp /usr/share/vim/vim72/indent/c.vim esqlc.vim

Без этого я вообще не получаю никаких отступов в файлах .pc - даже в коде C.

person maxschlepzig    schedule 13.09.2013