Autocomplete 如何预防&引用;(点)取消升华文本2中的自动完成?

Autocomplete 如何预防&引用;(点)取消升华文本2中的自动完成?,autocomplete,sublimetext2,Autocomplete,Sublimetext2,我已经为我在工作中使用的专有语言定义了一些关键词: { "match": "\\b(util.tickettimelimit|util.user_ip|util.server_name|util.today)\\b", "name": "keyword.source.GTX2", "comment": "Tags" } 我还有一份完成文件: { "scope": "source.GTX2", "completions": [ "util.server_name

我已经为我在工作中使用的专有语言定义了一些关键词:

{ "match": "\\b(util.tickettimelimit|util.user_ip|util.server_name|util.today)\\b",
  "name": "keyword.source.GTX2",
    "comment": "Tags"
}
我还有一份完成文件:

{
  "scope": "source.GTX2",

  "completions":
  [
    "util.server_name",
    "util.tickettimelimit",
    "util.today",
    "util.user_ip"
  ]
}
当我开始键入“util”时,我会看到正确的自动完成选项:

但一旦我输入“.”(点)自动完成选项,就会消失:

有没有办法改变这种行为?我只想把关键词作为一个整体来处理,忽略其中的点点滴滴

谢谢

不要按。(点)否则您将需要在点后键入至少一个字符,以便再次显示列表。使用括号或圆点告诉Sublime Text 2用户已完成键入


示例:如果我键入
for
,升华将显示下拉列表,但如果我键入
for(
列表将消失。

我已到处查看,自动完成代码似乎嵌入了可执行文件本身(至少在Windows上,我还没有检查我的Mac电脑),而不是分散在众多外部
.py
文件中的一个,因此我甚至看不到如何执行自动完成的参数。我查看了默认
包/默认/首选项。升华设置
文件,虽然有几个选项与自动完成相关,但没有一个选项与我们正在执行的操作相关查找。在查看同一目录中的
默认值(Windows).sublime keymap
文件时,我尝试添加以下内容:

{ "keys": ["."], "command": "hide_auto_complete", "context":
    [
        { "key": "auto_complete_visible", "operator": "equal", "operand": false }
    ]
},
可惜它没有起作用。那里有许多
auto_complete
命令,虽然这看起来是最有希望的,但我没有尝试其他命令

我还没有详尽地查看这个漂亮插件的源文件和配置文件(也可以从中获得),所以你可能可以在那里找到一个选项。你可能必须先完全禁用内置的自动完成功能,这样它才不会覆盖SCI


所以,我想现在你已经无能为力了。你可以随时留下一个,看看它是否进入,或者在上搜索/打开一个线程,看看其他人是否有任何建议。祝你好运!

我认为@Ashish所指的是
单词分隔符设置。你需要创建一个特定于语法的首选项(
Preferences->Settings-More->Syntax-Specific-User
)。创建一个删除点的
word\u分隔符
条目(从默认首选项复制作为基础)。这将为您提供所需的行为,但有一些事情需要注意。显然,圆点不会被视为单词分隔符,这将改变某些行为

我将以java为例。如果我有一个变量
foo
,使用某种方法
bar
,我可以输入
foo.b
,并且
bar
将显示为完成符。如果没有点作为分隔符,您将看不到这一点

另一个可能更容易理解的例子是在选择单词时。如果使用ctrl/cmd+d选择单词,它会选择单词,并由单词分隔符绑定。因此,如果我有
foo.ba | r
,其中|表示光标位置,并使用ctrl/cmd+d,它会选择
bar
。删除点作为单词分隔符,
foo.bar将选择


如果我能澄清什么,请告诉我。

有点晚了,但我希望这能有所帮助,创建一个新插件并添加以下代码:

import re


myObjects = {"util": ["server", "tickettimelimit", "today", "user_ip"]}


class CustomAutocomplete(sublime_plugin.EventListener):
    def on_query_completions(self, view, prefix, locations):
        if not view.match_selector(0, "source.GTX2"):
            return

        if prefix == "":
            # get the last word in the current line
            currentposition = view.sel()[0].begin()
            currentline = view.full_line(currentposition)
            text = view.substr(currentline)
            words = re.findall("\w+", text)
            lastword = words[-1]

            if lastword in myObjects.keys():
                # return a list of tuples, it represents snippets
                # the first element is the trigger and the second one
                # is the content
                return [(x, x) for x in myObjects[lastword]]

        return []
并在用户设置中添加下一个键:

"auto_complete_triggers":
[
    {
        "characters": ".",
        "selector": "source.GTX2"
    }
]

单击首选项>设置-用户,然后复制并粘贴以下内容

// Characters that are considered to separate words – does not include periods.
// Place comma at the end of the line if there are multiple keybindings.
"word_separators": "/\\()\"‘-:,;~!@#$%^&*|+=[]{}`~?"
从本网页:

我注意到我可以做“utiltoday”例如,如果可能的话,我想改变点的行为。有什么配置可以实现这一点吗?@fedxc-我从来没有见过任何配置选项可以解决这个问题,它可能是硬编码的。谢谢你的回答!我接受这个选项是因为投入了时间:dt这是一个解决方案,很简单。请参阅我的ans下面是wer。这不在键绑定中,而是在用户首选项中。此外,不需要花括号。很好!我一直在寻找类似“自动完成触发器”的东西。