【问题标题】:Do I have to implement a partial parser, to support dot triggered completion request?我是否必须实现部分解析器以支持点触发完成请求?
【发布时间】:2021-04-05 04:36:23
【问题描述】:

使用 VSCode 1.52.1 / LSP 3.16 进行测试

我启用了点来触发完成,例如:

        'completionProvider': {
          'triggerCharacters': [
            '.', '@',
          ]
        },

但似乎textDocument/didChange 是在完成请求之前发送的,通过插入点,它会使整个源的语法无效,所以我丢失了 AST 来计算所需的完成响应。

这是常态吗?其他实现如何处理这种情况?他们都实现了一个部分解析器来获取部分 AST,其中无效点站在那里?还是其他解决方法?

【问题讨论】:

    标签: language-server-protocol


    【解决方案1】:

    部分 AST 可能是最简洁的方法。您也可以手动尝试在输入中向后迭代,直到发现表达式的开头被“点”,将其解析为表达式,然后使用先前已知的良好 AST 来查找类型并提供补全

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-13
      • 2018-08-06
      • 2014-11-30
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 1970-01-01
      相关资源
      最近更新 更多