【发布时间】:2016-09-27 12:50:47
【问题描述】:
与大多数其他软件包不同,PHP 抑制了完成/sn-ps-popup,迫使您在点击选项卡之前键入整个触发器,并且无法在具有相同触发器的不同 sn-ps 之间进行选择。
我正在寻找一种在 PHP 中启用完成弹出窗口的方法(或者对于所有语言,覆盖它们的默认值)。
我的尝试:
PHP 包包含文件“Completion Rules.tmPreferences”与
<key>cancelCompletion</key>
<string>^\s*(\}?\s*(else|do|try)|(class|function)\s*[a-zA-Z_0-9]+)$</string>
Afaik,这就是抑制弹出窗口的原因。我将正则表达式更改为无法匹配的选择器
<key>cancelCompletion</key>
<string>/(?!)/</string>
并使用 PackageResourceViewer 保存它,以便它应该覆盖默认设置文件,但是,即使重新启动以防文件仅加载一次,弹出窗口仍然不会出现。
编辑:
正如 Enteleform 指出的那样,弹出窗口在 <?php ?> 内工作,问题发生在 PHP 文件中,但在 php.ini 文件之外。范围是(embedding.php,text.html.basic)。
【问题讨论】:
-
我无法重现您的问题,并且
cancelCompletion键的值相同。步骤: [1] 打开新文件并设置PHP语法 [2] 插入基本 PHP 模板:<!DOCTYPEhtml><html><body><?php __PHP_CONTENT__ ?></body></html>[3] 在__PHP_CONTENT__区域测试自动完成。自动完成按预期工作。 -
我现在正在使用 laravel,所以我什至没有想过用 进行测试。它在这些内部工作,所以感谢您的输入。但是,我仍然试图让它在这些之外工作,尤其是。刀片模板;范围(embedding.php、text.html.basic)。如果键入准确,PHP 和 Laravel Snippets 都可以工作,因此适用范围,并且 Laravel Snippets 包甚至没有 .tmPreferences 来覆盖 PHP 的。有什么想法吗?
-
我尝试更改范围@
Completion Rules.tmPreferences和PHP.sublime-completions,但运气不佳。很奇怪——如果我把它改成source.python,它就会停止运行@PHP 文件,并且会正常运行@Python 文件。但是,我尝试了source.php,embedding.php,&text.html.basic的一堆组合;而且它们似乎都不适用于您的预期用例。 @KeithHall 可能知道一个解决方案,他在与范围相关的问题上要好得多。 -
@Enteleform 不幸的是,您无法 ping 其他 SO 成员,除非他们已经与帖子相关联 - 撰写、编辑、评论。我肯定会在主题行中打开一个问题(你们中的任何一个)here 和
[PHP],解释正在发生的一切。embedding.php必须是新范围,但我不知道它是基本范围还是什么。 Keith 或 wbond 应该能够对此有所了解。
标签: autocomplete sublimetext3 sublime-text-plugin