0

我正在寻找一种方法来改进 GPS ADA 的自动完成功能(版本:GPS 6.0.1 和 GNAT Pro 6.4.2)。

GPS 自动完成搜索以您输入的文本开头的匹配项。

我想在文本中的任何地方匹配我的字符串。

目前正则表达式类似于:/myString.*/i

我希望它是:/.*myString.*/i

  1. 有没有我错过的选项?
  2. 有谁知道这样做的 GPS 插件?

我也看过自己编写这个插件, http: //docs.adacore.com/gps-docs/users_guide/_build/html/GPS.html#GPS.Completion上的文档引用了“completion.py” - 我无法找到 - 我猜这可能只包含在后来的 GPS 版本中。

4

1 回答 1

2

您确实可以自己编写(GPS 的最新发展不包括此功能,我相信以前从未要求过此功能)。

目标是定义一个操作,然后您可以将其绑定到快捷键。因此,例如插件将以以下内容开头:

import GPS, gps_utils

@gps_utils.interactive(name='My Completion', filter='Source editor'):
def my_completion():
    buffer = GPS.EditorBuffer.get()       # the current editor
    loc = buffer.current_view().cursor()  # the current location
    start = loc.forward_word(-1)          # beginning of word
    end = loc.forward_word(1)             # end of word
    text = buffer.get_chars(start, end)   # the text the user is currently typing

    # then search in current buffer (or elsewhere) for matching text
    match = buffer.beginning_of_buffer().search(text)
    if match:
       match_start, match_end = match
       match_text = buffer.get_chars(match_start, match_end)

       # then go back to initial location, remove text and replace with match
       buffer.delete(start, end)
       buffer.insert(start, match_text)

这是一个粗略的轮廓,可能有数百个我没有看的细节。它应该让你开始。

于 2014-07-23T13:44:50.687 回答