【问题标题】:Trigger autocompletion on dot在点上触发自动完成
【发布时间】:2013-03-19 20:47:09
【问题描述】:

我如何在键入 .(dot) 时触发自动完成弹出窗口,例如 Python 作用域?


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

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

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

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

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

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

【问题讨论】:

  • 这可能是不可能的 - 请参阅这个重复的问题:stackoverflow.com/questions/15684193/…
  • 感谢@MattDMo。您是否知道允许此功能的第三方软件包?或者是否可以通过 Python 以某种方式访问​​此功能?
  • 我不这么认为,因为看起来这个功能是硬编码的,我在 API 中找不到任何东西来覆盖它。 SublimeCodeIntel 是一个很棒的插件,可以极大地扩展内置的自动完成功能,我强烈推荐安装它。我还没有完全看透 its API,因为它很大而且相关的库不在 python 中,所以可能有办法做到这一点,但我还不知道。
  • 当你输入点时你在寻找什么行为。如果您正在寻找它不充当单词分隔符,请参阅我在该问题中的回答。如果您希望在按下点时出现所有可用的自动完成选项,请尝试添加“auto_complete_trigger”。有关 HTML 示例,请参阅默认首选项。如果您试图获得其他行为,请提供更多详细信息。 :)
  • 谢谢!我不想更改 Python 的单词定义。我已经查看了html_completions.py,但据我所知,它没有提供解决方案,我将添加相关信息以避免冗长的评论。

标签: sublimetext2 sublimetext3


【解决方案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 -&gt; Settings - More -&gt; Syntax Specific - User)。我相信它应该为您提供点运算符所需的行为。

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

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

【讨论】:

  • 谢谢。插件解决方案似乎不起作用,我想我们知道为什么 - 它只是不提供额外的列表,虽然它肯定不会覆盖 ST 建议;)但是,"auto_complete_selector": "- source, comment" 正是我想要的 :) 可以你指点我一些关于这个偏好的文档,或者告诉我它做了什么?
  • 嗯,插件应该只是在插入 4 个字符后弹出弹出窗口(使用正常的 ST 完成)。无论如何,我只是在玩不同的设置时遇到了这些东西。不幸的是,这些东西没有很好的记录。这两个设置在默认首选项中进行了描述。可悲的是,这是发现如何修改事物的最佳方式。甚至一些插件的东西也没有很好的记录。我几乎希望看到一个包含更好文档的 wiki,我不确定非官方文档的更新频率。
  • 是的,我也这么认为。 ST 是如此可扩展,但我猜文档的优先级很低。希望关键用户群将创建一些维基,除了这个 SO 知识库......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2012-10-02
  • 2012-10-17
  • 1970-01-01
相关资源
最近更新 更多