V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ooxiaoming
V2EX  ›  Visual Studio Code

vscode 有人搞过语言支持插件开发吗?

  •  
  •   ooxiaoming · 2020-03-22 17:11:05 +08:00 · 2773 次点击
    这是一个创建于 1712 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在的问题是我们自己的后端引擎可以通过给项目路径来进行语法检测,编译错误啥的,但是在编辑器上写代码的时候,代码是没有写入到磁盘里的,因此文件跟编辑器上的代码不一致,想问下这种编辑器里输入的代码但是没有保存到文件上怎么进行语法检测呢?

    6 条回复    2020-03-22 20:40:07 +08:00
    wikinee
        1
    wikinee  
       2020-03-22 17:30:26 +08:00 via Android
    没做过插件开发,建议不要检测。行为现在这样的插件都是保存之后触发的,比如 AutoFormatOnSave,pylint,还有 vim 的异步 ALE 。
    ooxiaoming
        2
    ooxiaoming  
    OP
       2020-03-22 17:57:49 +08:00
    @wikinee 看了下 typescript 的,都是输入代码就触发,但是这里面的办法不清楚
    littleTomorrow1
        3
    littleTomorrow1  
       2020-03-22 18:08:12 +08:00
    这种语言支持插件都是通过 Language Server Protocol 来实现的吧
    ooxiaoming
        4
    ooxiaoming  
    OP
       2020-03-22 18:11:33 +08:00
    @littleTomorrow1 嗯,但是看了下 ts 的语言支持,也是交给 typescript 来检测的,主要就这里不知道里面是怎么实现的
    pisc
        5
    pisc  
       2020-03-22 18:23:01 +08:00 via Android
    去实现一个 language server,实现 protocol 里面 json rpc 接口就行了,不用关心编辑器的事情,具体的还是看 language server protocol 的文档吧
    changnet
        6
    changnet  
       2020-03-22 20:40:07 +08:00 via Android
    输入或者修改磁盘上的文件,vsc 都会通知 LSP,可以拿到没存盘的内容,这时候传给语法检测接口,返回结果给 vsc

    如果检测接口是其他语言或者独立的程序,需要拉起一个子进程,把内容当作参数传过去,这种就不建议做实时检测,子进程太慢

    或者建立 socket 之类的和检测程序交互
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3901 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:21 · PVG 18:21 · LAX 02:21 · JFK 05:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.