您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz模板做语法高亮的/vs code/textmate方法
单羽2025-07-20Discuz教程已有人查阅
导读本人一直做ASP.NET开发,近期接到任务要用Discuz开发一个社区,第一次接触PHP,PHP灵活的语法,天生的模块化,各种语法糖深深的震惊了我
本人一直做ASP.NET开发,近期接到任务要用Discuz开发一个社区,第一次接触PHP,PHP灵活的语法,天生的模块化,各种语法糖深深的震惊了我,我从内心深处感受到了PHP是最牛逼的语言!!!
好了回到正题,初次看Discuz的模板,用VS打开是这样的:
没错,第一眼看上去就震惊了,这TM怎么维护?模板随随便便就2000行,因为DZ是一个极灵活的论坛,里面放了各种hook点用于扩展功能!所以模板非常庞大复杂。
DZ的模板语法采用了HTML注释扩展(有一部分内联的却是破坏性的),见:
http://faq.comsenz.com/library/template/syntax/syntax_index.htm (DZ标签语法说明)
本人第一想法是得给DZ加一个语法高亮功能,脑海里涌现出 Lex Yacc等工具(编译原理忘记得差不多了但是还能记得他俩。)
我尝试在我熟练使用的Visual Stadio中开发一个语言扩展,看到这篇文章: 使用Visual Studio SDK制作GLSL词法着色插件 ,接触了C#版的Lex --- gplex,
于是我也依样画瓢,在画瓢的过程中,我又了解到了自VS2015 Update1开始 VS支持了 textmate的语言扩展规范!!!!(这又是想捡人家MAC生态的现成)
使用TextMate Grammars扩展VS语言服务
把TextMate Grammars规范的文件夹放到
%userprofile%\.vs\Extensions 这个目录下就好了
终于发现用Lex描述HTML的语法太麻烦,我只是在HTML语法高亮的前提下扩展HTML而已,并不需要重写HTML的Lex描述,于是放弃了VS转到了微软的跨平台编辑神器 VS Code!!
--------------------------弃Visual Stadio----转 Visual Stadio Code保进度分隔线------------------------------
为什么要用Visual Stadio Code?因为这家伙支持非常多的语言,本身是一个Chrome浏览器,高仿Atom的。然后查了下怎么扩展 VS Code,不用想直觉告诉我它应该也支持Textmate的扩展规范。electron-browser
和VS一个套路在 %userprofile%\.vscode\extensions 文件夹下放置扩展就行了看了下 VSCODE 的文档,发现有个YO工具可使用向导生成语法高亮工程,好吧
yo code
快速生成了一个,然后用VSCODE打开该工程目录 按F5,启用一个新的 VSCODE,在新的VSCODE中打开DZ的模板文件。
此时由于没写任何词法分析的东东,这应该是没效果的。
那么怎么写?
package.json是描述一个vscode扩展的清单文件。vscode 1.2开始支持了一个新特性叫语法注入(injectTo属性)!!!
(这就是我想要的,把我的关键字注入到html语法中!!)
如上图,我在清单文件中指出了我要把我自己的语法注入到 “text.html.base”中,(text.html.base是vscode内置的一个scopeName,我通过调试vscode得出的,官方文档中未提及)
可以看到我在这个textmate语言扩展文件中写上了 if 之类的关键字,当然还可以扩展其它。在被调试的VSCODE中按CTRL+R重新加载比之前的好多了
在内联在字符串中的语法还没有效果,需要继续扩展text.html.base中的属性值。
好了回到正题,初次看Discuz的模板,用VS打开是这样的:
没错,第一眼看上去就震惊了,这TM怎么维护?模板随随便便就2000行,因为DZ是一个极灵活的论坛,里面放了各种hook点用于扩展功能!所以模板非常庞大复杂。
DZ的模板语法采用了HTML注释扩展(有一部分内联的却是破坏性的),见:
http://faq.comsenz.com/library/template/syntax/syntax_index.htm (DZ标签语法说明)
本人第一想法是得给DZ加一个语法高亮功能,脑海里涌现出 Lex Yacc等工具(编译原理忘记得差不多了但是还能记得他俩。)
我尝试在我熟练使用的Visual Stadio中开发一个语言扩展,看到这篇文章: 使用Visual Studio SDK制作GLSL词法着色插件 ,接触了C#版的Lex --- gplex,
于是我也依样画瓢,在画瓢的过程中,我又了解到了自VS2015 Update1开始 VS支持了 textmate的语言扩展规范!!!!(这又是想捡人家MAC生态的现成)
使用TextMate Grammars扩展VS语言服务
把TextMate Grammars规范的文件夹放到
%userprofile%\.vs\Extensions 这个目录下就好了
https://msdn.microsoft.com/en-us/library/mt742400.aspx
https://manual.macromates.com/en/language_grammars
https://github.com/madskristensen/TextmateBundleInstaller
--------------------------折腾N小时分隔线------------------------------------------------------------------终于发现用Lex描述HTML的语法太麻烦,我只是在HTML语法高亮的前提下扩展HTML而已,并不需要重写HTML的Lex描述,于是放弃了VS转到了微软的跨平台编辑神器 VS Code!!
--------------------------弃Visual Stadio----转 Visual Stadio Code保进度分隔线------------------------------
为什么要用Visual Stadio Code?因为这家伙支持非常多的语言,本身是一个Chrome浏览器,高仿Atom的。然后查了下怎么扩展 VS Code,不用想直觉告诉我它应该也支持Textmate的扩展规范。electron-browser
和VS一个套路在 %userprofile%\.vscode\extensions 文件夹下放置扩展就行了看了下 VSCODE 的文档,发现有个YO工具可使用向导生成语法高亮工程,好吧
yo code
快速生成了一个,然后用VSCODE打开该工程目录 按F5,启用一个新的 VSCODE,在新的VSCODE中打开DZ的模板文件。
此时由于没写任何词法分析的东东,这应该是没效果的。
那么怎么写?
package.json是描述一个vscode扩展的清单文件。vscode 1.2开始支持了一个新特性叫语法注入(injectTo属性)!!!
(这就是我想要的,把我的关键字注入到html语法中!!)
如上图,我在清单文件中指出了我要把我自己的语法注入到 “text.html.base”中,(text.html.base是vscode内置的一个scopeName,我通过调试vscode得出的,官方文档中未提及)
可以看到我在这个textmate语言扩展文件中写上了 if 之类的关键字,当然还可以扩展其它。在被调试的VSCODE中按CTRL+R重新加载比之前的好多了
在内联在字符串中的语法还没有效果,需要继续扩展text.html.base中的属性值。
本文标签:
很赞哦! ()
相关教程
- 帝国cms高亮代码添加行号前端显示Mac OS风格
- 帝国cms编辑器ckeditor安装代码高亮插件
- 帝国cms编辑器ckeditor代码高亮前端显示mac风格
- phpcms完美实现导航栏当前栏目高亮的方法
- phpcms用if语句判断当前栏目高亮、分类信息是否过期的写法
- 易优cms搜索结果页让关键词高亮飘红的方法
- WordPress代码高亮插件SyntaxHighlighter使用方法
- wordpress代码高亮的实现方法
- pbootcms怎么判断当前语言并高亮
- pbootcms内页子栏目高亮显示的实现方法
- pbootcms标签pboot:list当前文档高亮代码实例
- pbootcms内页子栏目当前栏目实现高亮显示的方法
图文教程
discuz代码分析common.inc.php文件的作用
// <?php 是php的开始标记;$是php变量开头标记,所有变量都以$开头./*[Discuz!] (C)2001-2006 Comsenz Inc.
Linux搭建Discuz论坛的步骤方法
linux中怎么搭建discuz论坛?下面本篇文章给大家介绍一下linux中搭建discuz论坛的方法。有 的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
Discuz论坛中回复帖子并参与讨论的方法
1. 点击帖子下方的“回复”按钮,2. 输入你的内容,3. 点击“提交”即可。你还可以使用bbcode或html插入多媒体内容,引用其他用户的回复,确保遵守论坛规则并优化你的回复以提升用户体验。
discuz uc_server登录配置教程
新运行uc_server环境,先配置好ucenter链接-----这部很重要,我从新环境中安装下载的discuz代码,这部没配置,密码又不知道,怎么更改调试,都不起作用,在框架中
相关源码
-
(自适应响应式)动力刀座五金机械设备pbootcms网站源码下载为动力刀座及五金机械企业定制的响应式网站框架,基于PbootCMS系统深度开发,助力传统制造企业实现数字化转型升级。采用手工编写的DIV+CSS前端架构,代码执行效率提升40%。查看源码 -
帝国cms7.5品牌连锁店招商加盟商机网站模版源码本模板为招商加盟、创业投资、品牌连锁等商业领域设计,采用帝国CMS7.5内核构建,整体风格简洁大气,突出商业信任感与专业度,适合各类招商加盟项目展示、品牌连锁店宣传等商业应用场景。查看源码 -
(自适应响应式)绿色环保防腐木材轻钢别墅建材pbootcms模板下载本模板为环保防腐木材、轻钢别墅建材类企业设计开发,基于PbootCMS内核构建,充分考虑了建材行业的展示需求与产品特点。模板设计风格自然环保,布局清晰合理,呈现建材产品特性与专业优势,帮助访客直观了解产品特点并建立信任感。查看源码 -
(PC+WAP)红色厨具厨房用品设备pbootcms模板源码下载为厨具设备企业设计的响应式网站模板,采用PbootCMS内核开发,适用于商用厨房设备、家用厨具、厨房用品等企业展示。模板包含产品展示、新闻动态、案例中心等标准模块,助您快速搭建专业级行业网站。查看源码 -
自适应电子科技类产品公司pbootcms网站模板基于PbootCMS内核开发,为电子科技类企业设计,适用于电子产品展示、企业官网等场景。该模板采用开源架构,用户可自由访问和修改源码,灵活适配各类行业需求,无需二次开发成本查看源码 -
(PC+WAP)货运物流快递仓储货架pbootcms网站模板下载本模板基于PbootCMS开发,为货运物流、快递配送、仓储货架等行业设计,支持PC+WAP自适应,确保在电脑、手机、平板等设备上均能流畅访问。适用于物流公司、仓储企业查看源码
| 分享笔记 (共有 篇笔记) |
