Sublime Text 3 - 在 package/plugin 中为文件类型设置语法
2018-1-17 14:23:34
收藏:0
阅读:112
评论:1
我正在忙于制作一个 Sublime Text 插件/包,以方便我们工作场所开发 Lua 脚本。
我们有几个不同的扩展名的 Lua 文件,用途不同。我希望 ST3 为这些文件提供正确的 Lua 语法。
我知道可以设置 ST3 记住特定文件扩展名的语法,并将其保存为(在我的情况下)Lua.sublime-settings 文件,保存在 AppData\Roaming\Sublime Text 3\Packages\User 中。
然而,如果我将此文件放在我的新插件文件夹中,它将被忽略。
我是否做错了什么,或者我想要的不可能?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

这不起作用是因为语法特定的设置只从定义语法的软件包和
User软件包中加载(因此用户可以自定义它们)。以下是官方设置文档的引用:
按以下顺序查找设置文件: 1. Packages/Default/Preferences.sublime-settings 2. Packages/Default/Preferences (<platform>).sublime-settings 3. Packages/User/Preferences.sublime-settings 4. <Project Settings> 5. Packages/<syntax>/<syntax>.sublime-settings 6. Packages/User/<syntax>.sublime-settings 7. <Buffer Specific Settings>仅从软件包本身和用户软件包中引用
<syntax>。如果我必须猜测,我会说这是因为除了定义语法的原始软件包作者之外,所有其他设置都被认为是用户自定义设置,并且这些设置需要在
User包(特别是在其根目录下)中确保它们被最后加载。一个简单(但不理想)的解决方案是向用户说明他们必须手动进行此步骤。
另一种方法是在插件加载时添加一些插件代码来扩展设置:
def plugin_loaded(): settings = sublime.load_settings("Lua.sublime-settings") extensions = settings.get("extensions", []) if "blarb" not in extensions: extensions.append("blarb") settings.set("extensions", extensions) sublime.save_settings("Lua.sublime-settings")如果您采用这种方法,可能希望在某些地方(例如特定于您的软件包的设置中)包含额外的哨兵设置,指示您是否这样做,而不是像上面的示例那样强制设置。
实际上,您将检查是否设置了该哨兵而不是强制扩展名,以便如果用户决定为您的文件使用其他语法,您不会将其强制到
Lua语法中。还可以定义自己的语法,只需嵌入标准Lua语法,就可以使其正常工作而无需编写任何代码或让用户执行任何操作:
%YAML 1.2 --- name: Blarb scope: source.lua file_extensions: - blarb contexts: main: - include: scope:source.lua这样做后,文件中的范围仍将是
source.lua,因为语法文件中的scope就是这样写的。状态行将将语法名称设置为Blarb。如果需要,可以修改其中任何一个来更改顶级作用域或显示名称。例如,更改作用域为
source.blarb,以便可以创建仅适用于特定变体的Lua文件的键绑定/片段。这种方法的潜在缺点/功能是,由于语法特定设置的名称来自提供语法的文件的名称,因此如果用户有任何
Lua特定设置,则这些设置默认情况下不适用于您的Blarb文件。同样,任何通过检查作用域
source.lua进行特殊设置的Lua特定内容,在Blarb文件中也不起作用,原因相同,这可能是一个问题或不是问题。