在Sublime Text 3中的引号内禁用代码完成

时间:2014-09-25 22:14:29

标签: sublimetext sublimetext3 code-completion

当光标位于单引号或双引号内时,有没有办法禁用Sublime Text 3触发代码完成:

enter image description here

这似乎是毫无意义的行为,有点烦人。

如果重要的话,我正在使用最新的稳定版(3065)Sublime Text 3和PHP Completions Kit插件。

1 个答案:

答案 0 :(得分:4)

事实证明你的PHP Completions Kit插件可能是罪魁祸首。我forked the code on Github如果你想跟随。{/ p>

您可以通过创建JSON格式的.sublime-completions文件来填充Sublime中的自动完成下拉列表。从本质上讲,它是一个包含关联触发器的长片段列表,其名称显示在下拉列表中,并根据您键入的内容与模糊搜索方法匹配。完成都是scoped所以它们只出现在代码的所需部分中:例如,当您尝试定义类等时,您不希望出现标准函数名称。

回到插件。对于几个完成文件,范围是使用否定选择器构建的:从source.php(所有PHP代码的基本范围)开始,并减去不需要的范围。一旦Sublime进行分析,完成将显示在任何地方,除非它们被明确拒绝。一个例子,来自function.sublime-completions

"scope": "source.php - variable.other - meta.function.arguments - support.class - entity.other.inherited-class - meta.use - meta.catch - comment.block.documentation.phpdoc"

所以那些作者没有想要完成这些完成的地方。不幸的是,在这几个文件中,他/她忘记包含string范围,因此当您键入字符串时会出现完成,这显然是不受欢迎的行为。幸运的是,修复很简单:浏览所有完成文件,检查负选择器的范围,并在其末尾添加- string。现在,他们仍然会像以前一样工作,除了完成不会出现在任何类型的字符串中。

就像我在顶部说的那样,我分叉了项目here,并进行了必要的修正。我还提交了pull request,因此我们会查看是否/何时将其接受到主代码库中。与此同时,您可以随意将我的仓库克隆到您的Packages目录中:

点击 Preferences -> Browse Packages... 打开您的Packages目录。通过命令行转到该目录,然后运行

git clone https://github.com/MattDMo/sublime-phpck.git "PHP Completions Kit"

这会将repo克隆到名为PHP Completions Kit的文件夹中,覆盖Package Control安装的文件夹。密切关注插件的Package Control page,当您看到Modified字段从2014-09-05更改时(如果您将鼠标悬停在文字上,则会在工具提示中显示{} {1}})到最近的某个时候,检查一下repo,看看是否是我的pull请求已经合并并发布了一个新版本,然后你可以随意删除3 weeks ago中的新文件夹并坚持下去使用Package Control版本,因为我不希望我的回购更新到包的任何新修改。

更新

我的拉取请求已合并,并且包控制已更新。