现在的问题是我们自己的后端引擎可以通过给项目路径来进行语法检测,编译错误啥的,但是在编辑器上写代码的时候,代码是没有写入到磁盘里的,因此文件跟编辑器上的代码不一致,想问下这种编辑器里输入的代码但是没有保存到文件上怎么进行语法检测呢?
1
wikinee 2020-03-22 17:30:26 +08:00 via Android
没做过插件开发,建议不要检测。行为现在这样的插件都是保存之后触发的,比如 AutoFormatOnSave,pylint,还有 vim 的异步 ALE 。
|
2
ooxiaoming OP @wikinee 看了下 typescript 的,都是输入代码就触发,但是这里面的办法不清楚
|
3
littleTomorrow1 2020-03-22 18:08:12 +08:00
这种语言支持插件都是通过 Language Server Protocol 来实现的吧
|
4
ooxiaoming OP @littleTomorrow1 嗯,但是看了下 ts 的语言支持,也是交给 typescript 来检测的,主要就这里不知道里面是怎么实现的
|
5
pisc 2020-03-22 18:23:01 +08:00 via Android
去实现一个 language server,实现 protocol 里面 json rpc 接口就行了,不用关心编辑器的事情,具体的还是看 language server protocol 的文档吧
|
6
changnet 2020-03-22 20:40:07 +08:00 via Android
输入或者修改磁盘上的文件,vsc 都会通知 LSP,可以拿到没存盘的内容,这时候传给语法检测接口,返回结果给 vsc
如果检测接口是其他语言或者独立的程序,需要拉起一个子进程,把内容当作参数传过去,这种就不建议做实时检测,子进程太慢 或者建立 socket 之类的和检测程序交互 |