如何从 Sublime Text 4 自动完成列表中删除当前缓冲区中的单词
How to remove words in the current buffer from Sublime Text 4 autocomplete list
在过去 8 年左右的时间里,这个插件与 Sublime Text 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
仍然有效,所以我认为问题出在数组 return 语句上。 The docs 不显示版本之间的任何变化。
我能够 sublime.INHIBIT_WORD_COMPLETIONS
使用的 return 语句的唯一变体是这个,但现在我在列表中有一个我不想要的额外完成:
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
一点运气都没有
似乎无法在不返回至少一个完成的情况下禁止 buffer/word 完成。但是,如果完成(触发器和结果)是单个字符,则它永远不会相关,因此永远不会显示自动完成。
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
(注意:部分基于 https://github.com/sublimehq/sublime_text/issues/4999 上的评论,我在搜索时发现是否为此报告了错误。)
在过去 8 年左右的时间里,这个插件与 Sublime Text 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
仍然有效,所以我认为问题出在数组 return 语句上。 The docs 不显示版本之间的任何变化。
我能够 sublime.INHIBIT_WORD_COMPLETIONS
使用的 return 语句的唯一变体是这个,但现在我在列表中有一个我不想要的额外完成:
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
似乎无法在不返回至少一个完成的情况下禁止 buffer/word 完成。但是,如果完成(触发器和结果)是单个字符,则它永远不会相关,因此永远不会显示自动完成。
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
(注意:部分基于 https://github.com/sublimehq/sublime_text/issues/4999 上的评论,我在搜索时发现是否为此报告了错误。)