ooxiaoming

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

  •  
  •   ooxiaoming · Mar 22, 2020 · 3327 views
    This topic created in 2296 days ago, the information mentioned may be changed or developed.

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

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

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

    或者建立 socket 之类的和检测程序交互
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2771 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 10:14 · PVG 18:14 · LAX 03:14 · JFK 06:14
    ♥ Do have faith in what you're doing.