如何在Sublime Text 3中使XML引用内的LUA语法高亮?
2016-10-13 6:11:51
收藏:0
阅读:136
评论:1
我有一个情况,我在XML字符串内编写了很多LUA代码,说实话,它看起来相当丑陋。 由于文件的主要焦点是LUA,因此能够拥有LUA的语法高亮显得非常重要。 我相当确定这是支持的(显然在某些情况下,SQL是在PHP内部高亮显示的),但是我一直在寻找如何编辑语法文件,但我无从下手。一些解决方案甚至似乎表明我需要编辑一个.tmLanguage文件,但我找不到任何这些文件,也没有sublime-syntax文件看起来是同一种格式。如果情况更容易些,包含LUA的字符串总是以"%function(self)开头,并且它们总是以 end"结尾,在XML中仅需要此高亮功能。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 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 代码?

第一步是打开XML语法定义以进行编辑。我将解释如何操作。任何涉及到“tmLanguage”(XML格式)文件的内容都已经过时了,Sublime Text 3现在使用“sublime-syntax”(YAML格式)文件进行所有默认语法高亮。
我建议克隆官方的git repo https://github.com/sublimehq/Packages(请遵循repo的自述文件中的说明,详细说明了如何以这样的方式克隆一个package,以便您能够使用git将任何未来的更改包括在官方版本中并在自己的版本中使用(因为我们正在覆盖默认版本,该版本会随ST自动升级)(基本上,您需要将repo中的“XML”文件夹放入您的Sublime“Packages”文件夹中,该文件夹可以从ST中通过导航到“首选项->浏览包”菜单项中访问)。
我们感兴趣的文件是“XML/XML.sublime-syntax”。如您所见,它充满了正则表达式。我们最感兴趣的是它解析XML属性的地方。
搜索“double-quoted-string:”。在此行下方立即粘贴以下内容:
- match: '"(?=%function\(self\))' scope: string.quoted.double.xml punctuation.definition.string.begin.xml push: - clear_scopes: true - match: '"' scope: string.quoted.double.xml punctuation.definition.string.end.xml pop: true - include: scope:source.lua请注意,第一个字符(
match之前的-)应当和原来的- match: '"'对齐。保存它,就这样!
基本上,我们所做的是:
")之前,它将查找紧随其后的文字字符串%function(self)的双引号。它使用一个正向前瞻来完成这个过程,这样就可以“include”source.lua作用域,并将该%function(self)文本/代码与LUA一起正确地高亮显示(连同其他LUA代码)。clear_scopes:true来确保LUA代码不像XML文本/属性。")并将上下文从堆栈中弹出,回到普通的XML标签中。(我选择在没有它之前就查找"而不是查找end,这样end仍然会被LUA语法定义所捕获。否则,我们将不得不在XML语法中重复匹配正则表达式和范围,这是不理想的。)(您可能希望在本地repo中创建一个新分支,并提交这些更改,以便更容易地合并未来的官方更改。)