2

例如,对于 Python 范围,当我键入 .(dot) 时如何触发自动完成弹出窗口?


为了解决@skuroda 评论,我将扩展问题:

"auto_complete": true如果在首选项中设置(默认设置),则在按下任何字符时触发 ST 中的自动完成。我觉得这很烦人,因为我不希望它在单键按下时触发,所以我把它关掉了。

html_completions.py只检查哪个是当前字符的前一个字符,并提供完成列表,但不会更改自动完成行为或设置触发它的内容。

OTOH,有auto_complete_triggers偏好,但这并不能解决我的问题,因为它取决于auto_complete偏好:

  • 如果auto_complete首选项设置为 false,则定义的触发器auto_complete_triggers不会触发完成
  • 如果它设置为 true,那么我会再次在按下任何键时自动完成,而不仅仅是像大多数 Python 感知编辑器所做的那样

另一个可接受的解决方案是,如果我可以定义一些阈值,例如 4 个字符,以便自动完成不会显示在自动按下的单个键上,而是在 4 个字符之后显示。

4

1 回答 1

1

您可以编写一个简单的插件来获得该阈值效果。

import sublime
import sublime_plugin

class MyEventListener(sublime_plugin.EventListener):
    def on_query_completions(self, view, prefix, locations):
        if len(prefix) < 4:
            return ([], sublime.INHIBIT_WORD_COMPLETIONS | sublime.INHIBIT_EXPLICIT_COMPLETIONS)
        else:

            return []

此外,请尝试将以下内容添加到特定于语法的设置 ( Preferences -> Settings - More -> Syntax Specific - User)。我相信它应该给你你想要的点运算符的行为。

"auto_complete_selector": "- source, comment",
"auto_complete_triggers": [ {"selector": "source.python", "characters": "."} ]

我只对这两种解决方案进行了最低限度的测试,所以如果我能澄清任何事情,请告诉我。

于 2013-03-30T05:19:57.377 回答