关于Sublime Text 3中的范围:text.something vs source.something及其功能

时间:2016-07-01 14:56:06

标签: sublimetext3

因此,为了更多地了解ST3的内部结构,我正在为一个为Laravel的Blade模板制作新包的存储库做出贡献。

.sublime-syntax file中,范围当前设置为scope: text.blade,除了我无法为我的代码段显示自动完成弹出窗口这一事实外,其工作正常。为此,我需要将范围更改为source.blade。但这样做会导致使用div.foo + tab将其扩展为<div class="foo"></div>的能力。

我知道我可以根据自己的偏好更改auto_complete_selector以包含text,但这只是我的解决方案。我们不希望有一个包裹要求您更改您的偏好,我们希望它能够正常工作。

在我的语法文件中,是否有办法在text范围内激活自动完成弹出窗口并保留两个功能(自动填充弹出窗口和扩展选项卡)?

1 个答案:

答案 0 :(得分:2)

我不确定哪种解决方案最好。可能有必要auto_complete_selector的默认设置在text范围内不起作用,但我不明白为什么它在text.html中不起作用。无论如何,我看到它的方式,你有两种选择,每种选择都有它们的缺点。

  1. 请勿弄乱用户的设置,但需要调整auto_complete_selector,例如使用Package Control提供的Messaging系统。 Con:用户可能会忽略README或安装消息。

  2. 通过添加.sublime-settings text.blade来覆盖用户的设置auto_complete_selector text.html.blade(我已经看到packages这样做了!)Con:interferences使用用户设置。

  3. 在旁注中,我想知道使用$transclude(function(clone, scope) { element.append(clone); transcludedContent = clone; transclusionScope = scope; }); 作为范围是否更合适。