Я разрабатываю плагин 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
Почему вы ожидаете, что 'compiler/statemachine.vim' будет автоматически отправлен? Не связанная сторона примечание: вам не нужно скрывать пробел в 'errorformat'. –
@SatoKatsura Не так ли это работает? Я вижу, что этот шаблон упоминается в нескольких других плагинах в Интернете, и ни один из них вручную не вызывает 'compiler/ .vim', поэтому я предположил, что он был автоматически подобен синтаксису/ .vim' и т. Д. –
ScottO
Вероятно, вам нужно вызвать' compiler statemachine где-то. – FDinoff