Sublime Text 3停止自动完成提交空间'

时间:2015-05-19 20:12:04

标签: python autocomplete settings sublimetext3 sublimetext

在Sublime Text 3中,有什么方法可以在按 space 时停止自动完成提交?我在设置中看到"auto_complete_commit_on_tab": false选项,但没有任何内容可以阻止 space 键提交所选条目。

也许我可以使用"auto_complete_selector""auto_complete_triggers"设置的某种组合?任何帮助将不胜感激。

更新

要重新创建,请打开一个新缓冲区并验证语法是否设置为纯文本。写

Blah
Test
Stuff
More Text

现在按 ctrl + space (或设置为热键的任何内容)以打开“完成列表”。使用箭头键导航到其中一个选项,然后按 space 。这将自动选择突出显示的选项,就像您已按 (或 tab ,如果"auto_complete_commit_on_tab"设置为true)。

我想停止Sublime Text假设 space 意味着我想选择突出显示的完成。

1 个答案:

答案 0 :(得分:2)

我问的是这个问题,因为我正在为Gherkin Auto-Complete PlusCucumber语言开发一个自动完成的包(Gherkin)。因为该语言使用人类可读的文本,所以对空格的提交使它几乎无用。

因为我想在键入时显示自动完成的结果(就像你在IDE中看到的那样),我管理在我的包中显示所述结果。解决方案是hacky,但它的工作原理。我从SublimeCodeIntel包中得到了这个想法。

可以在gherkin_event_listener.py

中看到实施情况

首先,我在_show_auto_complete课程中定义了GherkinEventListener方法。

def _show_auto_complete(self, view):
    def _show_auto_complete():
        view.run_command('auto_complete', {
            'disable_auto_insert': True,
            'api_completions_only': True,
            'next_completion_if_showing': False,
            'auto_complete_commit_on_tab': True,
        })
    # Have to set a timeout for some reason
    sublime.set_timeout(_show_auto_complete, 0)

请注意,必须设置超时,即使它是0

然后在on_modified的{​​{1}}方法中,我这样做了:

GherkinEventListener

请注意,您必须在调用view.settings().set('auto_complete', False) pos = view_sel[0].end() next_char = view.substr(sublime.Region(pos - 1, pos)) if next_char in (' ', '\n'): view.run_command('hide_auto_complete') return view.run_command('hide_auto_complete') self._show_auto_complete(view) self._fill_completions(view, pos) 后填写完成项,否则在填写时将设置为_show_auto_complete,并且不会显示。