比如大家用各种双栏预览式的markdown editor都会注意到,markdown源码和生成的预览页面往往不等长。
于是很难真正的side-by-side的预览,epiceditor根本就懒得尝试做同步滚动,马克飞象好些略有同步滚(好吧,我只用过这两种)。
看了下marked.js的源码才知道,原来parse出来的token里直接把这个token在源代码里的位置信息给无视了,使得从生成的内容追述到源代码几乎不可能。
正经写过compiler的人都知道,在开发时加上这种基本信息就是举手之劳,事后改就等着蛋碎一地吧,而开发各种编辑工具都需要依赖这样的信息。
也许这就是到现在markdown的editor功能依然很有限的原因,当然另一种解释是geek情怀不屑于用editor。
还好markdown的语法不是很复杂,marked.js的源代码还算清晰没有什么nasty hack,所以还是可以做到的。之前尝试对MathJax做类似的修改,一个月后放弃了。
目前还没完全改好,略buggy,过几天就能发pull request了,撸了个visualizer试了下效果先:
想象下完事后,左边光标所在的token会和右边对应生成的element完全对其同步滚动是多么爽的感受。然后也许终于可以撸一个一直希望能有的markdown in-place preview editor出来(http://www.v2ex.com/t/110988)。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/111249
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.