在过去8年左右的时间里,该插件与Sublime 2和3一起工作得很好,可以从ctrl + space自动完成列表中删除当前缓冲区中的单词,但它不再适用于ST4 (b4126):
import sublime, sublime_plugin
class MyAutocomplete(sublime_plugin.EventListener):
def on_query_completions(self, view, prefix, locations):
# Popup autocomplete only for .sublime-snippet and
# .sublime-completions files
return ([], sublime.INHIBIT_WORD_COMPLETIONS)我知道on_query_completions和sublime.INHIBIT_WORD_COMPLETIONS仍然有效,所以我认为问题在于数组返回语句。医生们不会在不同版本之间显示任何更改。
我能够让sublime.INHIBIT_WORD_COMPLETIONS使用的惟一不同的返回语句是这样的,但是现在我在我不想要的列表中有了一个额外的完成:
return [
sublime.CompletionItem(
trigger="fox",
completion="The quick brown fox jumps over the lazy dog",
kind=sublime.KIND_KEYWORD
)
], sublime.INHIBIT_WORD_COMPLETIONS在sublime.CompletionList或set_completions方面一点运气都没有
发布于 2022-01-23 19:28:14
似乎不可能在不返回至少一个完成的情况下抑制缓冲区/字完成。但是,如果该完成(触发器和结果)是一个单一字符,它将永远不会相关,因此自动完成将永远不会显示。
import sublime, sublime_plugin
class InhibitWordCompletionsEventListener(sublime_plugin.EventListener):
def on_query_completions(self, view, prefix, locations):
clist = sublime.CompletionList()
sublime.set_timeout(lambda: clist.set_completions([' '], sublime.INHIBIT_WORD_COMPLETIONS), 0)
return clist(注:部分基于对案文/问题/4999的评论,我在搜索时发现了这一点,以查看是否报告了bug。)
https://stackoverflow.com/questions/70703975
复制相似问题