在Sublime Text中编写自动完成插件

问题描述 投票:2回答:1

在我的公司内部,我们有一个基于XML的表示法。除了其他功能之外,还可以定义从一个XML文档到另一个XML文档的引用。我想在Sublime中启用自动完成功能,这样每当我添加引用时,可能的文件(即同一项目中的XML文件)和链接点(即该文件中的符号)都会作为建议提供。

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

(作为一个注释:我可以在Python中编程,并且已经摆弄了其他Sublime功能,例如片段,但这些软件包看起来要比它认为必要的复杂得多。)

sublimetext3 sublime-text-plugin
1个回答
4
投票

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

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脚本位于右侧文件夹中,则会建议完成数组返回的所有完成(根据Sublime设置,可能需要使用Ctrl+Space触发完成菜单)。另外值得注意的是:

  • completions可能是None,在这种情况下,它们只是不添加任何完成选项或2元组数组,其中第一个元素是描述(将在下拉菜单中显示并触发完成)第二个是值(即选择完成时将输入的文本)。
  • score_selector方法可用于确定光标位置是否在给定的scope内。
© www.soinside.com 2019 - 2024. All rights reserved.