Typora 添加 Julia 代码高亮支持
2016-11-02 18:22
696 查看
Typora 添加 Julia 代码高亮支持
Typora - 颠覆写作体验的免费极简 Markdown 编辑器!好用的 MD 格式阅读器!这是来自 异次元 的评价,个人十分赞同。最近在学习 Julia 语言,跟踪学习《Getting Started with Julia Programming》一书,同时使用 Typora 撰写读书笔记。发现现阶段的 Typora 竟然尚未支持 Julia 语言的代码高亮功能。
既然不支持,那只能自己想办法添加了。
浏览 Typora 主页 http://www.typora.io/,可以找到代码高亮模块
Code Fences。然后从
Support页面的
Code Block Styles/Themes帮助文档中找到了 “Typora use CodeMirror for syntax highlight in code fences. Code fences in typora use cm-s-inner as their theme class.” 这句话。从此可知,Typora 使用的代码高亮模块是 CodeMirror。
进入 CodeMirror 主页:
![](http://codemirror.net/doc/logo.png)
CodeMirror is a versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionality.
然后查看 language modes 链接,可以找到对 Julia 语言支持。
下载最新版的 CodeMirror 并解压缩,在
\mode子文件夹中找到
\julia文件夹,里面就是 CodeMirror 对 Julia 语法高亮的支持文件
julia.js。
好了,CodeMirror 语法高亮 Julia 模块已经准备就绪,开始着手改造 Typora 吧。
进入 Typora 的安装路径,继续进入
\resources\app目录,可以找到
lib.asar文件,这就是修改的关键文件!
lib.asar 文件是由 Node.js asar 打包而成的包文件,使用 asar 可以将其解包。当然,使用 asar 需要 Node.js 的支持:
npm install -g asar asar extract lib.asar lib
这时将自动生成
\lib目录。
接着进入
\lib\codemirror目录,找到
mode.min.js文件,其内容如下:
function Context(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function isStatement(a){return"statement"==a||"switchstatement"==a||"namespace"==a}function pushContext(a,b,c){var d=a.indented;return a.context&&isStatement(a.context.type)&&!isStatement(c)&&(d=a.context.indented),a.context=new Context(d,b,c,null,a.context)}function popContext(a){var b=a.context.type;return(")"==b||"]"==b||"}"==b)&&(a.indented=a.context.indented),a.context=a.context.prev}function typeBefore(a,b){return"variable"==b.prevToken||"variable-3"==b.prevToken?!0:/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(a.string.slice(0,a.start))?!0:void 0}function isTopScope(a){for(;;){if(!a||"top"==a.type)return!0;if("}"==a.type&&"namespace"!=a.prev.type)return!1;a=a.prev}}function words(a){for(var b={},c=a.split(" "),d=0;d<c.length;++d)b[c[d]]=!0;return b}function contains(a,b){return"function"==typeof a?a(b):a.propertyIsEnumerable(b)}function cppHook(a,b){if(!b.startOfLine)return!1;for(var c,d=null;c=a.peek();){if("\\"==c&&a.match(/^.$/)) ...
简直就是天书啊~~~
没关系,肯定是混淆过的代码,找个在线转换器搞定:
function Context(a, b, c, d, e) { this.indented = a, this.column = b, this.type = c, this.align = d, this.prev = e } function isStatement(a) { return "statement" == a || "switchstatement" == a || "namespace" == a } function pushContext(a, b, c) { var d = a.indented; return a.context && isStatement(a.context.type) && !isStatement(c) && (d = a.context.indented), a.context = new Context(d, b, c, null, a.context) } ...
是不是一下就清爽了 :smile:
仔细在代码中搜索以下内容:
CodeMirror.defineMIME(“text/x-ruby”, “ruby”),
找到该位置后,打开 CodeMirror 目录中的
julia.js文件,将其内容复制,然后粘贴到
mode.min.js文件所对应的位置。注意,需要复制的内容如下所示:
CodeMirror.defineMode("julia", function(_conf, parserConf) { var ERRORCLASS = 'error'; function wordRegexp(words, end) { if (typeof end === 'undefined') { end = "\\b"; } return new RegExp("^((" + words.join(")|(") + "))" + end); } var octChar = "\\\\[0-7]{1,3}"; var hexChar = "\\\\x[A-Fa-f0-9]{1,2}"; var specialChar = "\\\\[abfnrtv0%?'\"\\\\]"; ... }); CodeMirror.defineMIME("text/x-julia", "julia");
复制完毕后,需要将刚刚复制过来的代码的最后两个分号
;改为逗号
,才可以生效。
修改完毕,需要将其打包成原来的样子,执行以下命令:
asar pack lib lib.asar
至此,Typora 已经可以支持 Julia 的语法高亮了,但是还需在代码选择框中显示,以供用户选择。
打开
\Typora\resources\app\app\window\frame.js文件,搜索以下内容:
case”java”:return a=”text/x-java”;
找到后,复制粘贴这段代码,并修改成以下代码:
case"julia":return a="text/x-julia";
接着搜索以下代码:
“javascript”,”java”,”json”,
找到后,在这段代码后面添加以下代码:
"julia",
OK 咯~~~
重新打开 Typora 软件,按下
CTRL + ALT + F组合键,打开代码输入区域,按
↓键转到语言选择框,输入并选择 julia 语言项:
选择 julia 语言,按
↑键进入代码编辑区域,输入有效的 Julia 代码,可以看到代码高亮功能已经支持:
搞掂鸟~~~
以上
相关文章推荐
- 使用node.js建博客(六) - 添加代码高亮的支持 (Final)
- 使用node.js建博客(六) - 添加代码高亮的支持 (Final)
- Visual Assist X添加默认包含路径+支持VS2010高亮显示CUDA代码(Windows 7)
- php xml 解析成数组(目前仅支持5级,需要照样添加代码就行)
- solr进阶一:java代码添加索引和增加IKAnalyzer分词支持
- 代码发芽网:无需插件支持Blog代码高亮,支持近百种编程语言
- HTML格式的语法高亮类库代码,内置对C, C++, VBScript, JScript, xml的支持,可扩展,自己添加语法定义。
- 为WordPress添加代码高亮插件
- 在WebStorm中添加Vue.js单文件组件的高亮及语法支持
- 20141127 测试使用Word2013书写博客(代码高亮+公式支持)。
- sublime text中<script type="text/ecmascript-6">如何代码高亮并支持语法?
- bootstrap设计网站中添加代码高亮插件
- 9 - 支持 Markdown 语法和代码高亮
- 把自己Github上的代码添加Cocoapods支持
- 在博客园添加Lisp(或其它)代码高亮
- phpcms自带编辑器添加代码高亮功能
- 介绍一种方法,无需插件支持blog代码高亮,代码发芽网
- 简单几步给Sharp Development的WPF代码编辑器AvalonEditor添加语言支持
- bootstrap设计网站中添加代码高亮插件
- 代码发芽网更新 - 多种代码高亮主题、支持CSDN Blog