Emeditor JS代码着色初稿
本帖最后由 马黑黑 于 2022-3-26 19:22 编辑Emeditor宏代码(其实是非常接近JavaScript代码):
document.selection.SelectAll();
var str = document.selection.Text;
var regBlue = /(\bvar|let|const|function|if|else|while|in|case|switch|this\b)/gm;
var regRed = /(\bArray|Date|document|window\b)/gm;
var regAr = [
[/(["'])((?:\\\1|(?:(?!\1)).)*)(\1)/gm, "LxLspan style='color: magenta;'GxG$1$2$3LxL/spanGxG"], //引号
[/(\/\*)(.*)(\*\/)/gm, "LxLspan style='color: green;'GxG$1$2$3LxL/spanGxG"], //注释1
[/(\/\/*$)/gm,"LxLspan style='color: green'GxG$1LxL/spanGxG"], //注释2
[/\t/gm, " "], //制表符
, //蓝色关键词
, //红色关键词
, //<号换回来
, //>号换回来
[/<([/]{0,1}script.*)>/gm, "<$1>"] //转义
];
for(i=0; i<regAr.length; i++) {
str = str.replace(regAr, regAr);
}
str = "<pre style='margin: auto; padding: 10px; width: 98%; background: #f5f5f5; box-shadow: 2px 2px 2px #ccc; border-radius: 6px;'>\r\n" + str +"\r\n</pre>";
document.selection.Text = str;
红、蓝关键词随意选了几个,还有很多的,后续可以陆续添加。
(鼓捣这个dz code模块有些力不从心,代码老发不全。现在应该好了吧?)
<p>测试发现还是有些问题,需要修改:<br><br></p>
<pre style="margin: auto; padding: 10px; width: 98%; background: #f5f5f5; box-shadow: 2px 2px 2px #ccc; border-radius: 6px;"><script>
<span style="color: blue">function</span> fly(id) {
/* 动态创建文本走马灯:自右向左
id参数:元素的 id 名称
*<span style="color: green">/</span>
<span style="color: blue">var</span> ziFly = <span style="color: red">document</span>.getElementById(id, far); //元素操作权柄
<span style="color: blue">var</span> width = ziFly.clientWidth; //获得元素宽度
<span style="color: blue">var</span> style = <span style="color: red">document</span>.createElement(<span style="color: magenta;">'style'</span>); //创建 style 元素
style.type = <span style="color: magenta;">'text/css'</span>; //元素类型
<span style="color: blue">var</span> flyStr = <span style="color: magenta;">'@keyframes fly { from {}to { left: -'</span> + width + <span style="color: magenta;">'px; } }'</span>;
style.<span style="color: blue">in</span>nerHTML = flyStr;
ziFly.appendChild(style);
ziFly.style.animation = <span style="color: magenta;">'fly 40s l<span style="color: blue">in</span>ear <span style="color: blue">in</span>f<span style="color: blue">in</span>ite'</span>;
}
</script>
</pre> 二楼测试目前发现两个问题:
① 注释没能上色;
② 蓝色关键字出现在了包含有它的其他单词里面 问题 ② 解决方案:单词边界 \b ... \b 必须渗透到正则规则中的每一个关键词。原来的语句:
var regRed = /(\bArray|Date|document|window\b)/gm;
得改为:
var regRed = /(\bArray\b|\bDate\b|\bdocument\b|\bwindow\b)/gm;
问题 ① 单行注释已弄好,多行适配老出错 <p>再看:<br><br></p>
<pre style='margin: auto; padding: 10px; width: 98%; background: #f5f5f5; box-shadow: 2px 2px 2px #ccc; border-radius: 6px;'>
<script language=<span style='color: magenta'>"javascript"</span>>
<span style='color: blue'>function</span> myFunction(){ <span style='color: green'>//单行注释测试
</span><span style='color: green'>
/* 多行注释测试
getUTCFullyear()
Does <span style='color: blue'>this</span> work?
*/
</span> <span style='color: blue'>var</span> d = new <span style='color: red'>Date</span>(<span style='color: magenta'>"July 21, 1983 01:15:00"</span>); <span style='color: green'>/* 单行注释测试 */</span>
<span style='color: blue'>var</span> x = <span style='color: red'>document</span>.getElementById(<span style='color: magenta'>"demo"</span>);
x.innerHTML=d.getUTCFullYear(); <span style='color: green'>// 单行注释
</span>
}
</script>
</pre>
这个帖子竟然看漏了。嗯嗯,有这个着色功能,可以让想找的自动亮起来了{:4_187:} 红影 发表于 2022-3-27 10:52
这个帖子竟然看漏了。嗯嗯,有这个着色功能,可以让想找的自动亮起来了
这个类似于笔记,记录一下处理和解决问题的原始代码。昨天的问题全解决了,多行注释的匹配试出来了 马黑黑 发表于 2022-3-27 11:00
这个类似于笔记,记录一下处理和解决问题的原始代码。昨天的问题全解决了,多行注释的匹配试出来了
黑黑喜欢琢磨,这点很棒,没什么能难得住你{:4_187:} 红影 发表于 2022-3-27 20:37
黑黑喜欢琢磨,这点很棒,没什么能难得住你
过奖了。过去使用的站点可以给代码着色,我一直用呢,没想到一切都在改变,只好自己动手吧,靠谱一点,用的过程慢慢完善。 马黑黑 发表于 2022-4-2 18:35
过奖了。过去使用的站点可以给代码着色,我一直用呢,没想到一切都在改变,只好自己动手吧,靠谱一点,用 ...
琢磨这个也挺不容易的{:4_187:} 红影 发表于 2022-4-2 21:04
琢磨这个也挺不容易的
有基础就不会太难 来学习 马黑黑 发表于 2022-4-2 21:22
有基础就不会太难
那是对你来说的,对一般人来说还是难呢。 红影 发表于 2022-4-3 09:50
那是对你来说的,对一般人来说还是难呢。
谁有了基础都可以做的
马黑黑 发表于 2022-4-3 10:10
谁有了基础都可以做的
问题是有基础的人不多啊。{:4_173:} 红影 发表于 2022-4-3 19:33
问题是有基础的人不多啊。
所以要努力呀
页:
[1]