python - Sublime Text 3 停止自动完成提交 'Space'

标签 python autocomplete settings sublimetext3 sublimetext

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

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

更新

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

Blah
Test
Stuff
More Text

现在按ctrl+空格(或您设置的热键)打开完成列表。使用箭头键导航到选项之一,然后按 空格。这将自动选择突出显示的选项,就像您按下了 enter(如果您将 "auto_complete_commit_on_tab" 设置为 true)。

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

最佳答案

我问这个问题是因为我正在为 Gherkin Auto-Complete Plus 开发一个自动完成包( Cucumber )的Gherkin语言。由于该语言使用人类可读的文本,因此对空格的提交使其实际上毫无用处。

因为我想在键入时显示自动完成结果(就像您在 IDE 中看到的那样),所以我在包中管理所述结果的显示。该解决方案很糟糕,但它有效。我从 SublimeCodeIntel 得到了这个想法包。

实现参见gherkin_event_listener.py

首先,我在 GherkinEventListener 类上定义了一个 _show_auto_complete 方法。

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

然后在 GherkinEventListeneron_modified 方法中,我执行了以下操作:

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之后填写补全信息,否则填写时会被设置为false并且不会显示.

关于python - Sublime Text 3 停止自动完成提交 'Space',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335257/

相关文章:

python - 如何使用正则表达式向前查找并找到所需字符串的结尾?

javascript - jquery 自动完成下拉菜单是透明的

android - 我的应用程序可以控制哪些设置来节省电池生命周期?

android - 如何在设置/无线设置下调用 "EthernetSettings"?

visual-studio - NuGet 包管理器控制台自动完成建议 PATH 中的所有文件

c# - 在应用程序设置中保存字典并在启动时加载它

python - 使用 pd.to_datetime 通过输入数据框中不同列中的年、月、日来形成日期

python - 具有多列的 groupby 以及 pandas 中的添加和频率计数

python - 通过该列表上的连续函数调用来构建列表的惯用方法

autocomplete - ReSharper在lambda表达式中具有匿名类型的自动完成行为