2015-10-08 2 views
0

Я разрабатываю плагин vim для нового (игрушечного) языка под названием statemachine как часть более крупного проекта.Файлы, которые не загружаются/запускаются из плагина vim

Я пытаюсь получить действительный компилятор/makeprg загружалась в течение этого типа файла, и я один определенный в compiler/statemachine.vim

Однако, когда я пытаюсь запустить :make или set makeprg? я make и makeprg= соответственно. Я также не вижу echom s, который я определил внутри compiler/statemachine.vim. Так что кажется, что мой код в файле compiler/statemachine.vim не выполняется.

В частности, я пытаюсь зарегистрировать его в Syntastic как действительный синтаксический контролер, и для этого требуется получить makeprg и errorformat для действительных значений.

Я могу использовать equalprg, что я установил и могу видеть echom s от syntax_checkers/statemachine/statemachine.vim, поэтому я знаю, что мой плагин запускается в некоторой емкости.

И Filetype обнаружена правильно: set filetype? дает filetype=statemachine

макет каталога плагина до сих пор:

. 
├── README.md 
├── autoload 
│   └── statemachine.vim 
├── compiler 
│   └── statemachine.vim 
├── complete.sh 
├── example.sm 
├── formatter.sh 
├── ftdetect 
│   └── statemachine.vim 
├── ftplugin 
│   └── statemachine.vim 
├── syntax 
│   └── statemachine.vim 
├── syntax_checkers 
│   └── statemachine 
│    └── statemachine.vim 
├── test.txt 
└── validator.sh 

Соответствующие части кода ВИМ плагина:

// autoload/statemachine.vim 
function! statemachine#Errorformat() 
    return '%f:%l:\ %m' 
endfunction 

//ftdetect/statemachine.vim 
au BufNewFile,BufRead *.sm set filetype=statemachine 

// syntax_checkers/statemachine/statemachine.vim 
function! SyntaxCheckers_statemachine_statemachine_GetLocList() dict 
    let l:makeprg = self.makeprgBuild({'args': ''}) 
    echom 'inside getloclist' 
    return SyntasticMake({'makeprg': l:makeprg, 
         \ 'errorformat': statemachine#errorformat() }) 
endfunction 

call g:SyntasticRegistry.CreateAndRegisterChecker({'filetype': 'statemachine', 
               \'name': 'statemachine'}) 

Полный vim можно найти здесь: https://github.com/scottopell/vim-statemachine

+0

Почему вы ожидаете, что 'compiler/statemachine.vim' будет автоматически отправлен? Не связанная сторона примечание: вам не нужно скрывать пробел в 'errorformat'. –

+0

@SatoKatsura Не так ли это работает? Я вижу, что этот шаблон упоминается в нескольких других плагинах в Интернете, и ни один из них вручную не вызывает 'compiler/ .vim', поэтому я предположил, что он был автоматически подобен синтаксису/ .vim' и т. Д. – ScottO

+0

Вероятно, вам нужно вызвать' compiler statemachine где-то. – FDinoff

ответ

0

Спасибо Sato Katsura и FDinoff в комментариях к моему оригинальному вопросу, мне просто нужно было добавить compiler statemachine. Я решил добавить его в ftplugin.