文件没有从vim插件中加载/运行

时间:2015-10-08 13:58:58

标签: vim plugins vim-plugin

我正在开发一个名为statemachine的新(玩具)语言的vim插件,作为更大项目的一部分。

我正在尝试为此文件类型加载一个有效的编译器/ makeprg,我在compiler/statemachine.vim中定义了一个

但是,当我尝试运行:makeset makeprg?时,我分别得到makemakeprg=。我也看不到我在echom内定义的compiler/statemachine.vim。所以我的文件compiler/statemachine.vim中的代码似乎没有执行。

具体来说,我试图将这个注册时使用Syntastic作为有效的语法检查程序,并且先决条件是将makeprgerrorformat设置为有效值。

我可以使用我设置的equalprg,并且可以从echom看到syntax_checkers/statemachine/statemachine.vim,所以我知道我的插件正以某种身份运行。

正确检测到文件类型: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

vim插件代码的相关部分:

// 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

1 个答案:

答案 0 :(得分:0)

感谢Sato Katsura和FDinoff在我原始问题的评论中,我只需要在某处添加compiler statemachine。我选择将其添加到ftplugin