代码之家  ›  专栏  ›  技术社区  ›  guest_user r-stein

在Sublime文本中编写自动完成插件

  •  2
  • guest_user r-stein  · 技术社区  · 8 年前

    在我的公司里,我们有一种基于XML的表示法。在其他特性中,可以将一个XML文档中的引用定义到另一个XML文档中。 我希望在Sublime中启用自动完成功能,以便每当我添加引用时,都会提供可能的文件(即同一项目中的XML文件)和链接点(即该文件中的符号)作为建议。

    到目前为止,我已经找到了很多插件,可以支持自动完成,比如HTML、PHP或LaTeX。然而,我觉得代码库对于一个简单的任务来说太复杂了。 例如,是否存在基于作为参数接收的任意数组生成补全的普通函数? 我会创建逻辑来确定什么是符号并派生出所述数组,但整个过程对我来说似乎有些麻烦。

    ( 请注意: 我可以用Python编程,还可以处理其他一些出色的功能,比如代码片段,但这些包似乎要复杂得多。)

    1 回复  |  直到 8 年前
        1
  •  5
  •   guest_user r-stein    8 年前

    创建完成条目的基础并不复杂。现在需要用正确的值填充数组(这可以通过项目设置或解析其他文件来完成)。

    import sublime
    import sublime_plugin
    
    
    # Your array, which contains the completions
    arr = ["foo", "bar", "baz"]
    
    
    class MyCompletionsListener(sublime_plugin.EventListener):
        def on_query_completions(self, view, prefix, locations):
            loc = locations[0]
    
            # limit you completions scope
            if not view.score_selector(loc, "text"):
                return
    
            completions = [(v + "\tYour Description", v) for v in arr]
    
            return completions
    

    OP备注: 答案如广告所示。然而,集成是如此无缝,以至于我有一段时间认为缺少了一些东西。如果上面的Python脚本位于右侧文件夹中,则会建议使用completions数组返回的所有补全(根据Sublime设置,可能需要使用 Ctrl+Space ). 同样值得注意的是:

    • 这个 completions 可能是 None ,在这种情况下,他们只是不添加任何补全选项或2元组数组,其中第一个元素是描述(将显示在下拉菜单中并触发补全),第二个是值(即,如果选择补全,将输入的文本)。
    • 这个 score_selector 方法可用于确定光标位置是否在给定的 scope .
    推荐文章