GPS for ADA - 插件改进自动完成功能

时间:2014-03-28 10:25:47

标签: autocomplete ada gnat gnat-gps

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

GPS自动填充功能会搜索以您输入的文字开头的匹配项。

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

目前正则表达式将是这样的: /myString.*/i

我希望它是: /.*的myString。* / I

  1. 有没有我错过的选项吗?
  2. 有没有人知道这样做的GPS插件?
  3. 我自己也看过这个插件,http://docs.adacore.com/gps-docs/users_guide/_build/html/GPS.html#GPS.Completion的文档引用了“completion.py” - 这是我无法找到的 - 我猜这可能只有已包含在后来的GPS版本中。

1 个答案:

答案 0 :(得分: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)

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