【问题标题】:Location and unclear parameters位置和参数不清楚
【发布时间】:2019-12-17 12:38:53
【问题描述】:

位置的可选参数似乎是重复信息:

  • 偏移量/长度定义选择的起始字符和结束字符
  • 开始/结束行/列似乎用于同一件事

但是,开始/结束行/列似乎不起作用:位置

|project://file.java|(0,100,<1,1>,<1,1>)

地点

|project://file.java|(0,100,<9,2>,<17,23>)

返回相同的内容(当使用例如 readFile() 显示时)。

这就引出了两个问题:

  • 如果出于任何实际原因不使用开始/结束行/列,它们有什么用?

  • 有没有办法在只知道开始/结束行/列而不知道偏移量/长度时构造位置? (不访问文件)

我发现了一个与这个问题(How to construct a location?)相关的问题,但那里给出的答案并没有解释这一点。

【问题讨论】:

    标签: rascal


    【解决方案1】:
    1. 偏移/长度和开始/结束信息确实是相同的信息,但是要从偏移/长度信息重建行/列信息,您总是必须读取整个文件。因为一些编辑器只支持行/列索引,所以我们选择在可能的情况下包含信息,避免遍历整个文件并计算行数以跳转到选择。此外,该代码将取决于操作系统/文本文件编码。
    2. loc 表示不允许在没有偏移/长度信息的情况下设置行/列,因为我们至少需要 Eclipse 编辑器和 Emacs 的 API 的偏移/长度。行/列的东西是额外的优化/缓存,而不是相反。
    3. 如果您确实需要在 loc 中临时表示行/列信息,我建议使用像 ?startLine=12&amp;endLine=24 这样的查询参数。系统将存储信息,但不会对其进行解释或使用。

    【讨论】:

    • 关于第3点,我认为使用片段(例如#12:24)更符合URI。
    猜你喜欢
    • 2020-11-15
    • 1970-01-01
    • 2022-10-25
    • 2023-03-05
    • 2015-12-07
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多