Sublime Text 3 在 'Space' 上停止自动完成提交
Sublime Text 3 Stop Auto-Complete From Committing on 'Space'
在 Sublime Text 3 中,有什么方法可以阻止按 space 时自动完成提交?我在设置中看到了 "auto_complete_commit_on_tab": false
选项,但没有什么可以停止按 space 键来提交 selected 条目。
也许我可以使用 "auto_complete_selector"
或 "auto_complete_triggers"
设置的某种组合?任何帮助将不胜感激。
更新
要重新创建,请打开一个新缓冲区并验证语法是否设置为 纯文本。写
Blah
Test
Stuff
More Text
现在按 ctrl+space(或任何您设置的热键)打开完成列表。使用箭头键导航到其中一个选项,然后按 space。这将自动 select 突出显示的选项,就好像您已按 enter(或 tab,如果您将 "auto_complete_commit_on_tab"
设置为true
).
我想阻止 Sublime Text 假设 space 意味着我想 select 突出显示的完成。
我问这个问题是因为我正在开发一个自动完成包(Gherkin Auto-Complete Plus) for Cucumber's Gherkin 语言。因为该语言使用人类可读的文本,所以对空格的提交使其几乎无用。
因为我想在键入时显示自动完成结果(就像您在 IDE 中看到的那样),所以我在我的包中管理上述结果的显示。该解决方案是 hacky,但它有效。我从 SublimeCodeIntel 包中得到了这个想法。
首先,我在 GherkinEventListener
class 上定义了一个 _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
。
然后在GherkinEventListener
的on_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
,不会显示。
在 Sublime Text 3 中,有什么方法可以阻止按 space 时自动完成提交?我在设置中看到了 "auto_complete_commit_on_tab": false
选项,但没有什么可以停止按 space 键来提交 selected 条目。
也许我可以使用 "auto_complete_selector"
或 "auto_complete_triggers"
设置的某种组合?任何帮助将不胜感激。
更新
要重新创建,请打开一个新缓冲区并验证语法是否设置为 纯文本。写
Blah
Test
Stuff
More Text
现在按 ctrl+space(或任何您设置的热键)打开完成列表。使用箭头键导航到其中一个选项,然后按 space。这将自动 select 突出显示的选项,就好像您已按 enter(或 tab,如果您将 "auto_complete_commit_on_tab"
设置为true
).
我想阻止 Sublime Text 假设 space 意味着我想 select 突出显示的完成。
我问这个问题是因为我正在开发一个自动完成包(Gherkin Auto-Complete Plus) for Cucumber's Gherkin 语言。因为该语言使用人类可读的文本,所以对空格的提交使其几乎无用。
因为我想在键入时显示自动完成结果(就像您在 IDE 中看到的那样),所以我在我的包中管理上述结果的显示。该解决方案是 hacky,但它有效。我从 SublimeCodeIntel 包中得到了这个想法。
首先,我在 GherkinEventListener
class 上定义了一个 _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
。
然后在GherkinEventListener
的on_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
,不会显示。