我可以使用ale或syntastic代替写后钩子吗?

问题描述 投票:0回答:1

我有两个必须始终包含有效YAML的YAML文件,所以我希望使用alesyntastic(类似)来帮助我强制执行。

看起来,合成工作的方式是在:w之后运行检查程序(写后)并报告任何错误。 Ale异步工作,但如果有错误,则不会阻止写入。而且它们都像广告中所说的一样运作良好。

但是如果文件未以预写挂钩的方式通过检查器,我可以使用检查器来防止文件通过:w:wq写入磁盘吗?

或者是否有其他替代啤酒和合成啤酒?

vim vim-plugin syntastic
1个回答
0
投票

缓冲区仍然必须保留(例如保存到临时文件),以便检查者能够检查它。这是额外的工作,我不确定Syntastic是否具有类似功能。

对于ALE,由于它是异步工​​作的,因此可以轻松完成此操作。剩下要做的就是防止出现错误时进行写操作。可以通过ale#statusline#Count()获得错误。您只需要检查BufWritePre中的内容并中止写入即可;这可以通过BufWritePre在处理程序中添加异常来完成:

:throw

要将其自动应用于“一对YAML文件”,您可以定义一个自定义autocmd! BufWritePre <buffer> if ale#statusline#Count(bufnr('')).error > 0 | throw "You have errors in the file; fix them first." | endif (例如:command),使您可以轻松设置:command(最好在:EnforceNoErrors内部),或者使用另一个:autocmd自动进行此设置:

:augroup
© www.soinside.com 2019 - 2024. All rights reserved.