与大多数其他软件包不同,PHP会抑制完成/片段 - 弹出窗口,强制您在单击选项卡之前键入整个触发器,并且无法在具有相同触发器的不同片段之间进行选择。
我正在寻找一种方法来启用PHP中的完成 - 弹出窗口(或覆盖所有语言,覆盖其默认值)。
我尝试过的事情:
PHP包包含文件"完成规则.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之外。范围是(embedding.php,text.html.basic)。
答案 0 :(得分:2)
默认情况下,当您键入HTML时,不会自动显示自动完成功能。这由auto_complete_selector
首选项控制,该首选项默认为以下选择器:"meta.tag - punctuation.definition.tag.begin, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc"
。正如您所看到的,它是为source
范围启用的(除了内部注释和字符串时),这就是它在PHP中工作的原因以及meta.tag
范围。
现在,HTML语法定义仅在meta.tag
后面至少有一个字符时才分配<
范围。即键入<d
将自动显示自动完成列表。
要将其更改为始终显示HTML完成情况,您可以将首选项更改为"text.html, source - comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc"
- 即将meta.tag - punctuation.definition.tag.begin
更改为text.html
。
或者,要在键入任何语言时始终显示完成次数,您可以将首选项更改为空字符串""
。但是,我建议保留在字符串和注释中不显示自动完成功能的功能,并使用"- comment - string.quoted.double.block - string.quoted.single.block - string.unquoted.heredoc"
代替。还值得注意的是,键入单词分隔符不会自动触发自动完成 - 您必须键入可以自动完成的内容的第一个字母。
此偏好设置应添加到您的Preferences
- &gt; Settings - User
档案。
注意:当您覆盖默认首选项时,默认值可能会在将来的ST3版本中更改。因此,有时可能需要检查默认值(来自Preferences
- > Settings - Default
),以防有不同的价值会对您的体验产生负面影响。