Score
0
Watch 28 Star 75 Fork 18

LunarSF / Lunar Markdown EditorC#MIT

Preview version
2019-11-10 07:41
LunarSF

【1】将自定义 IronPython 脚本区分为工作区脚本和全局脚本。这是为了避免某些仅适用于特定工作区的脚本“污染”其它工作区——而且这样便于转移工作区位置(例如换一台电脑继续编辑工作区中的文件时,不再需要到全局脚本文件夹下去挑选脚本文件再复制)。
【2】调整主工具栏位置,优化 IronPython 脚本调用工具条的显示位置。
【3】允许添加自定义Div,这样可以对文档中的部分进行更精细的控制。
【4】为防止在向编辑器粘贴图像数据块(会自动保存文件并创建链接)时误覆盖同名的、已存在的文件,添加了一个对话框让用户预览(这比一个消息框要直观得多)。
【5】使“方块区域”除了支持转换为 Html DIV 元素标签以外,也支持其它成对的元素标签。请参见:#I11G2J:支持添加自定义 div。这个功能没多大用处——因为一般只需要 Div ——其它元素标签很少有用处甚至帮倒忙。加上这个功能是为了添加某些 Html5 元素标签对——但一般做文档时(考虑到 CHM 格式的兼容性要求)很少有机会使用 Html5!!!
【6】解决方块区域添加自定义 ID 或 CLASS 时不能使用两个及以上的 _ 字符的问题。(原因是 MarkdownSharp 会将成对的 _ 处理成 。)
【7】给编译的 Html 网页底部的导航面板添加 id 和 class ,以便使用 CSS 重新定义其样式(固定在浏览器可视区底部才是更好的办法)。
【8】尝试解决被加密的文档在多次错误输入密码后再输入正确的密码无法载入内容的问题。(注意用旧版如发现异常千万不要保存!)
【9】优化左侧工具栏布局,解决向上拖动分隔条会越界的问题并添加窗口尺寸改变时向上或向下“吸附”效果。
【10】修复左边栏在某些情况下会缩小的问题。
【11】为脚本编辑器封装了一些方便调用的文本处理方法。
【12】添加了使用 Enter 键调用脚本的方式——这样,可以在自定义脚本中编写一些验证方法来方便对当前行输入的文本进行检测(例如银行卡号、身份证号等)。
【13】在 Globals 类中添加了 ValidateSavingCard() 和 ValidateIdCard() 这两个方法,以便 Python 脚本调用来对身份证号和银行卡号进行不那么严格的验证——一般用来防止输入错误是够用了。
【14】实现 Quick Image Link 功能。请参见:#I14OFM:添加 QuickImageLink 功能。

Preview version
2019-08-18 15:11
LunarSF

【新增小功能】为工作区目录文件夹设置自定义图标——这样可以更容易地找到工作区,而且不容易与导出目录混淆。

【测试功能1】(尚未进行压力测试)在“编译”菜单下添加了一个名为“Html 工厂”的菜单项,用来对工作区中编译生成的 Html 文件进行进一步加工(利用第三方 js 库)。这是对 #IV718:关于代码块高亮诉求的回应,其实现思路是 锋爷冷静冷静 提出的。
【测试功能2】(未完成)给 IronPython 编辑器提供有限的自动完成功能,以提高编码效率、降低输入错误。

【1】使 ; >>> (&attributeName : attributeValue htmlelementTag) 这种注释支持向 html 元素的 class 特性添加以空格分隔的多个值。这样就可以利多个 css 片段组合了。
【2】使自定义折叠区和方块的标头文本支持 (&myCustomClass) 这样的语法,以向自定义折叠区或方块 的 class 特性 追加自定义的 class 片段——这样便于在自定义 CSS 样式表中进行更精细的操控。
【3】为便于摘抄文本,对“迷你模式”透视图的行为作微调。
【4】修正添加自定义 ID CSS 名称对 <img .../> 这样的 Html Tag 不起作用的问题。(之前没有考虑到 这样的 Tag 中会带路径字符。

Preview version
2019-06-04 15:29
LunarSF

增强图像链接的校验与提示功能

【1】在主窗口“工具”菜单底部添加用于检验当前文档或全工作区中图像链接是否有效的两个菜单项。
【2】向插入点位置添加新的图像链接时,会检查当前位置是否有一个图像链接,如果有,提示是否替换。
【3】在“最近工作区”的快捷菜单中添加一个“在新窗口中打开工作区”的菜单项。
【4】实现输入时快速反向替换功能。参见:#IVUOH:给键盘党添加的小小福利——快速替换

功能调整

【1】编辑器的快捷工具条直接调用操作系统默认浏览器来搜索选定文本--不再使用内置搜索窗口。
(这是因为内置的搜索窗口使用的是 IE 内核--而且默认版本很低,对现代网站兼容性不好。)
【2】支持在 Python 脚本中加入“分组名称”注释行,以便对脚本进行分组--这样同组的脚本排序时就会在一起,方便使用。
【3】对工作区中未被选中的外部前端 JS 库,在执行“导出工作区”操作时直接忽略。
【4】微调界面配色,使默认按钮(按Enter)和取消按钮(按Cancel)在视觉上更突出。

Bug 修复

【1】修正冒号开头的注释行中自定义 class 片段(类似[gn:概念辨析])不能自动根据冒号右侧的文本自动取拼音首字母生成左侧 class 的问题。
【2】修正未在默认位置安装 Git 工具,又未指定位置时调用相关程序导致 LME 本身崩溃的问题。
【3】更改配色主题后,也提示用户因【预览前总是编译】选项可能未勾选导致该选项不会立即起作用。

Preview version
2019-04-16 20:56
LunarSF

错误修正与改进

【1】修正冒号注释行中自动编号的潜在错误。
【2】允许为冒号注释行设置自定义 class 时使用 - 和 _ 字符(但不能在开头)。
【3】解决 Markdown 使用全角空格字符来格式化 Html 造成以 GBK 或 GB18030 存储时造成出现不可识别字符的问题。
【4】创建文件或目录时,给用户提供设置英文文件名的步骤,以使文件名语义更清晰。

功能增强

最近的更新主要是增强对外部库的引用功能——例如引用 highlight.js 来支持高亮显示

在引用外部前端库时,结合使用:

  • 分号注释引用 css 和 js 文件
  • 分号注释添加 css 样式和 js 代码
  • 设置要包含到 CHM 工程的外部库文件所在的目录

具体包括:

【1】允许用户指定 Html 页面的 IE 兼容版本(在 Html 编译选项中)。
【2】为便于当前文件中引用工作区根目录下的某些用户自定义的 JS 脚本、CSS 样式表等资源,添加了 /ToWorkspace/ 环境变量(可以简写成 /~/ )。
【3】基于同样的目标,允许用户将这些资源放在工作区根目录下类似 _style~_scripts~ 这样的子目录中,并设置将这些子目录下 所有的文件 都包含进 CHM 文件包中。
【4】分号注释增强功能:

支持使用:

; js : > ~/_scripts~/abcd.js

来使当前文档引用 工作区根目录 下的 _scripts~ 子目录中的名为 abcd.js 的 JavaScript 脚本文件。

分号开头,表示这行是个注释。
js 表示要添加对 js 文件的引用或添加单行 js 脚本。
单个冒号表示后面跟的是个外部 js 脚本文件的路径。
路径开头的 ~/ 表示工作区根目录。
右尖括号表示添加到 Html 页面的 </body> 前面,通常这样比较不容易出现因为 要操作的 Html 元素尚未载入 而出现的错误。

如果使用的是 左尖括号,则表示添加到 </head> 前面。

支持使用:

; js :: > $(document).ready(function(){...});

类似这样的方法来向当前文件添加单行的 JavaScript 脚本。

注意:比前一种多个冒号!

支持使用:

; css : ~/_styles~/my-style.css

类似这样的语法来引用 工作区根目录 下的某个子目录(_styles~)中的某个自定义 css 样式表(my-style.css)。

引用样式表不要加尖括号——样式表总是添加在 </head> 前面的。如果使用两个冒号,也可以直接添加单行的 css 样式。


当添加单行的 JavaScript 脚本或 css 时,使用这个方法比直接用 Html 的写法要稍简单些。

【5】部分支持 emmet ,提高输入 Html 标签的工作效率。

尽管 LME 只是个 Markdown 编辑器,但有时为实现一些特殊效果,写点 Html 片段还是值得的,所以部分支持 emmet 是有意义的。

关于 emmet 的具体用法,可以参考网络教程(如果英文尚可,可以直接参考 官网文档。LME 对 emmet 的支持并不完整,但还是挺有用的。

在 LME 中,用于转换为 Html 片段的 emmet 字符串必须顶格书写。
重复元素、自动编号、组、缩略语等在 LME 中是不支持的。

这是因为 LME 的 emmet 功能是引用了第三方的 Nemmet 代码(这是个用 C# 实现的 emmet),而 Nemmet 的原作者并没有实现这些功能。
我对 emmet 用的不是太多,常用的功能 Nemmet 已经实现,暂时没看到有什么必要改进 Nemmet。

Preview version
2019-04-01 16:57
LunarSF

增强工作区资源管理器底部的搜索功能:

【1】允许用户选择“仅搜索目录/文件短名”或者“仅搜索标题”——默认搜索[标题]。
【2】允许在搜索时使用正则表达式进行匹配——这样自由度大大提高——适合批量提取文件到另一工作区。
【3】支持复制找到的文件——这样直接粘贴到一个空目录就可以方便地建立新工作区了。 参见#IS9UV:[Enhancement]增强工作区资源搜索功能
【4】工作区管理器底部的资源搜索框中支持使用拼音首字母进行匹配。

微调编译器行为:

【1】“自动创建指向标题的链接”选项开启后,编译时碰到 # 开头的六级标题文本行 时不再自动创建链接——因为链接在标题中效果很差。
【2】当 Html 编译选项中选中〖标题编译为不折叠、简洁格式〗两个选项时,不再为标题向 Html 中添加不必要的

标签对。

完善脚本功能:

【1】增加几个方便脚本调用方法,便于调用 wktopdf 来将整个工作区编译为 pdf 文件——具体请参见本项目 Wiki。

支持给“附近”的 Html 元素设置 id 和 class

【重要更新】允许在 Markdown 中使用特定的注释来为编译生成的 Html 文件中“附近”的 Html 元素添加 id 或 class 属性。这样,就可以通过 css 来对特定的元素进行修饰或用 JavaScript 对它进行操控了。** 这几乎就是的开了一个新世界**。

参见:#IUOL4:[Enhancement]利用注释支持向 编译成的 Html 元素添加 id 和 class。

问题修复:

修复一个很久之前就存在的小问题:预览网页的时候老是弹出警告信息条,要用户点击并“允许活动内容”才能正常执行 JavaScript 脚本。

造成这一问题的原因是 开启了 “格式化编译的 Html ”功能会将必须的 这行文本两侧的 \r\n 格式化成 \n 并自动添加了一个空格。

Preview version
2019-02-27 08:05
LunarSF

【1】支持按文件夹、文件两种情况分别设置 CHM 内置的42种图标。

  • 可以直接在 编译 菜单下批量设置图标组
  • 也可以使用工作区操作工具条顶端新增的 Chm 图标设置 按钮,单独针对某个条目进行设置

前8种图标适用于文件夹条目,后34种适用于单文件。

【2】修正一些细节问题,提高可用性。

  • 删除脚本时,自动从工具条移除可能存在的对应启动按钮,不再需要重启
  • 工作区根目录创建目录元文件时不再自动添加不需要的 /Nav/ 环境变量

【3】添加 Utils.Speech 类

其中提供了几个用于文字转语音的、供脚本调用的静态公用方法:ReadActiveLineByRegex、ReadSelection、ReadActiveDocument、ReadActiveLine、GetTextArrayByRegexInActiveDocument、ReadByRegexInActiveDocument、ReadText。

即使不使用这些方法,也可以使用 IronPython 脚本!调用 .net framework 的语音库直接解决问题。

语音功能可以参考这里——要保证使用的 Windows 操作系统不是阉割版才能正常。

Preview version
2019-01-05 19:09
LunarSF

【1】实现“批量创建子目录”功能。

请参考#IQSL1:添加“批量创建文件夹”功能。

【2】修正“重命名文件夹”功能不能及时更新工作区管理器中下级条目路径的错误。

【3】修正主界面底端偶尔出现空白错位的问题。

【4】修正切换窗口时编辑区会关闭输入法的问题。

【5】微调 冒号开头的注释文本行 在 Html 网页中的图标——之前的看起来有些太单薄。

Preview version
2018-12-28 14:46
LunarSF

如题。

这个问题会导致编译整个工作区时 某些页面底部的链接消失

如果发现编译工作区太慢,请关闭编译Html 编译选项自动创建指向标题的链接这个选项!

方式是点击主界面上这个菜单项→去除前面的对勾。

Preview version
2018-12-28 08:12
LunarSF

自动创建链接时不再创建指向当前文件的链接——这个毫无必要,冏。
继续优化格式化功能,解决 方块区域标头文本行 与 链接在行首 的冲突问题。

Preview version
2018-12-25 09:31
LunarSF
  • 移除编译生成的 html 页面底部的空行,改由用户使用自定义 CSS 对页脚线外边距来决定。

  • 完善 OptionBox :使之支持默认情况下聚焦于组合框(6个以上选项时);使之支持左键双击单选按钮时直接确定(少于6个选项时)。

  • 给冒号开头的注释文本行中的、可指定自定义 CSS 样式标识符的文本片段(类似 [cssid:文本片段内容] )添加语法高亮支持。

  • 修正自定义折叠区 初始折叠状态 指示符与工作区级的 Html 编译选项(“尝试折叠自定义折叠区”)不完全匹配的问题。

具体请参见:#IO2OZ:[BugFix]修正自定义折叠区控制选项的逻辑错误。

  • 改进供用户自定义 Python 脚本调用的 OptionBox。

  • 支持将次常用的自定义脚本“钉”到主窗口工具条右侧,方便直接调用。

具体请参见:#IO70R:改进供用户自定义 Python 脚本的相关功能

  • 添加一组快捷键:Shift+F2。功能很简单:用一对方括号将选定文本括起来(直接按 F2 是一对实心方括号,加 Shift 是半角方括号)。

  • 支持直接写简化版本的“锚”——形如 (@anchor_id) 。

具体参见:#IO8MA:完善对方块区域的标识符锚点支持。

注意:①方块区域标头、标尾文本中不能写正常的锚——会与方块本身冲突。②目前只在方块区域的标头文本中可以使用简化版的“锚”。

  • 除 方块区域 标头文本之外的其它位置也支持 (@anchor_id) 这种简化的锚——但这种锚在引用时必须使用正统的 Markdown 链接,就像这样: 链接字面值

  • 工作区管理器中添加“移除条目”菜单项。当碰到意外时被迫重建工作区结构时,可能会出现些不必要的条目,可使用此菜单项移除。此菜单项不会删除磁盘文件。适用于“需要保留文件,但又不希望它出现在工作区中”的情况。

  • 在当前 Markdown 文件已存在被编译好的 Html 文件且最后写入时间晚于 Markdown 文件,则按 F5 预览时,不再默认先编译。——这样做的好处是可以减少不必要的写磁盘操作,并且速度往往也更快。

  • 考虑到复制工作区等特殊情形,在预览区标头的快捷菜单顶部添加了一个名为“预览前总是编译(c)”的菜单项,点击勾选后,会恢复之前的做法——即总是先编译再预览。

在编译工作区之前,会自动勾选该选项,免得用户莫名其妙。编译工作区操作完成后,会自动恢复该选项状态。

【1】支持高亮显示效果;
【2】支持折叠效果。

  • 实现一个名为【自动创建指向标题的链接】的 Html 编译选项。

开启此选项后再编译 Markdown 文件时,如果在 Markdown 中找到某个文本片段与工作区中某文章的标题文本相同时,会自动创建到该文章的链接。

Preview version
2018-10-10 21:43
LunarSF

【1】“:[sk:思考 1]”中的“sk”可以省略。
【2】使冒号注释支持自动编号功能。请参见:#INCNY:[enhancement]给冒号开头的注释添加自动编号功能。
【3】使方块支持脚注功能。请参见:#INCSA:支持将脚注放到页脚水平线底部。
【4】使自定义折叠区支持指定为折叠状态,在标头的左花括弧后面跟个加号即可。
【5】解决为 Python 脚本设置的快捷键必须重启 LME 才起作用的问题。这样就可以写个脚本并设置一组快捷键,再用快捷键来快速输入类似 :[sk:思考 {^}] 这样的文本片段了。

Preview version
2018-10-07 10:40
LunarSF

有时候我们需要一些自定义样式的小文本片段(可能只有几个字,例如“思考题”),以便我们可以在浏览网页时一眼就能发现它们。

LME中内置的“行内代码块”可以在一定程度上支持这样的功能(而且还支持填空模式),但是可选择余地太小。于是,利用自定义 CSS 样式就是个很好的选择。例如:我们可以在自定义样式表中添加下面这个样式:

span.sk {
    background: blue;
    color: white;
    padding-left: 0.5em;
    padding-right: 0.5em;
    padding-top: 0.2em;
    padding-bottom: 0.1em;
    marging-right: 0.5em;
}

其中,“sk”是我们要使用的 css 类名。

然后,在 Markdown 中插入一个 Html 片段来引用这个样式:

<span class="sk">思考 1</span>秦始皇为什么要派徐福东渡?

说真话,这样的写法还是很烦琐的——尤其是在经常使用的情况下。于是,LME 提供了一个简化写法:

: [][sk:思考 {^}]秦始皇为什么要派徐福东渡?

乍一看还是挺复杂,但实际上知道意思就很简单了:

  • 第一个冒号表示当前行应被视为注释行

为了防止“污染”正常文本, 这种写法只在冒号开头的注释行中才有效

  • 第一对方括号表示当前行虽然是注释,但编译为 Html 时 <p> 的 class 应为空。

实际效果是编译成普通 Html 段落。

  • 第二对方括号中冒号前面的部分是要引用的 css 类名;冒号后面的部分是要显示的字面值。

这行编译为 Html 实际上是这个样子的:

<p><span class="sk">思考 1</span>秦始皇为什么要派徐福东渡?</p>

“思考”这两个字后面的1是从哪里来的?实际上, 在冒号开头的注释中 ,还支持“自动编号”功能。写法是{^}或者{n}

前者表示比前一个加 1,自动编号;后一种写的时候 “n” 要换成具体的整数数值,表示当前这个从指定数值开始,后面的默认逐次加 1。


实际上,就本例来说, 还有更简单的写法 ,你写成下面这样也是可以的:

: [][:思考 {^}]秦始皇为什么要派徐福东渡?

与之前的写法区别在于:这里省略了“sk”——当省略片段中冒号前面的“sk”时,LME 会自动尝试将冒号后、引号前的文本的 拼音首字母 组成的字符串当作 css 类名。

在这里就是取“思考”二字的拼音首字母“sk”作为默认的 css 类名。


请参见:
#INCSA:支持将脚注放到页脚水平线底部。
#INCNY:[enhancement]给冒号开头的注释添加自动编号功能。
#IN793:[BugFix]修正 [css_class_name:文本] 不能准确地编译为 <span class="css_class_name">文本</span> 的问题。

Preview version
2018-08-26 08:40
LunarSF

使用常规的、兼容低版本 IE 内核(CHM 需要)的手法是没有办法做到在两个本地 Html 页面间共享 theme 标签字符串的。

url 等方法要么对 Html 版本要求高,要么与 CHM 目录结构可能产生冲突。

这次使用了 ** window.name ** 来解决了这个问题。

虽然使用 window.name 有点名不符实,但暂时没发现有什么问题,就先用着好了。

Preview version
2018-09-11 13:09
LunarSF

修正某些情形下 Anchors~.txt 中记录的锚的位置信息不准确导致编译脚注时出错的问题。

2018-08-26 08:20
v0.0.4.49
实现“运行时记住用户选择的主题”功能——通过 window.name 实现... zip tar.gz
Preview version
2018-08-25 07:28
LunarSF

本打算同时实现“记住用户选择的主题”的功能,结果因为种种冲突、限制而未能实现。

所以这个功能有些鸡肋。

另,放宽对按倍数放大显示的文本的样式控制,现在可以通过自定义 CSS 对除字号以外的各样式自主定义了。

话说我一直觉得按倍数放大显示的文本默认样式巨丑。

Preview version
2018-07-29 09:11
LunarSF
  • 添加了 Git Bash 和 Git GUI 的调用菜单项——其实也没方便多少。

最近我迷上了用 Git 来对工作区进行版本控制,实践证明这完全可行。这两个菜单项仅仅是调用 Git,没有什么特别功能。

  • 界面细节调整:

    • 选中工作区条目时,自动获得焦点,缓解删除工作条目的快捷键失效的问题;
    • 同时将快捷键改为{Ctrl+Shift+Del},以解决可能存在的快捷键冲突;
    • 如果上次关闭时没有打开的文档,下次启动时不再弹出文件选择窗口。
  • 即使没有打开的普通MD文件,删除前也显示警告提示消息!

LME 不提倡删除文件,而提倡**更改文件的 Title(标题) 文本。但万一误删除了文件就麻烦了,所以删除前还是要加个警告消息。

Preview version
2018-07-14 08:11
LunarSF

解决锚引用标记不能识别 alt text 为空的锚的问题

之前必须写成这样:

这是个[锚字面值1](@锚ID "alt text")

现在写成这样也可以:

这是个[锚字面值1](@锚ID)

给锚引用标记添加更精细的控制

现在可以通过:

<:-xxx:>

来指定只在当前文档中尝试查找可以引用的锚了。


如果把 - 换成 + 则指在整个工作区中查找:

<:+xxx:>

这是默认行为,+ 可以省略。


如果使用脱字符 ^ 则依然只在当前文档中查找,且以上标形式出现在 Html 文档中。

<:^xxx:>
C#
1
https://gitee.com/lunarsf/Lunar-Markdown-Editor.git
git@gitee.com:lunarsf/Lunar-Markdown-Editor.git
lunarsf
Lunar-Markdown-Editor
Lunar Markdown Editor

Help Search