自学编程难不难系列 之 notepad-- ..
作者: 一了 <1liao3@funlang.org>
日期: 2020-06-16
本篇是 自学编程难不难系列 的第十二篇。
周末花了两天时间用 Fun 语言写了一个减减型的编辑器, 源代码300行.
notepad-- 是一款极简型的文本编辑器, 用来取代常用的 notepad++ 等文本编辑器, 在手头没有这类增强型的文本编辑器时, 能轻松自如的编辑各种小文本文件, 如各种配置文件/代码文件等. notepad-- 编辑器具有以下功能特性:
1. notepad-- 是单文件程序, 不需要任何安装过程, 即下即用, 无其他任何依赖文件;
2. notepad-- 下载地址: https://funlang.org/down/notepad--.exe
3. notepad-- 是单文件编辑器, 没有多页签;
4. 支持拖拽打开文件, [F4] 或者点击工具栏按钮图标打开文件;
5. 支持自动识别文件的格式 [DOS/UNIX] 和编码 [ANSI/UTF8];
6. 支持无限 Undo 功能 [Ctrl-Z], 或者刷新至文件最后一次保存的状态 [F5];
7. 支持保存文件 [Ctrl-S], 或者另存为另一个文件 [F6];
8. 支持另存为 ANSI 格式 [F7], 或者 UTF8 格式 [F8];
9. 支持查找替换功能 [F3] [Ctrl-F3].
10. 支持语法加亮功能, 软件内置支持 Fun 语言/XML/HTML/YML/YAML 加亮;
11. 支持命令行参数, 指定文件打开编辑;
12. 支持自定义语法加亮和自定义界面配色扩展.
编程扩展
[1] 扩展颜色主题
在运行目录创建或编辑 notepad--.css, 并且修改其 css 即可, 示例如下:
*{ color:#000; background-color:#fff; }
a:hover{ color:#555; }
p{ border-color:#ddd; }
上例中是白色风格编辑器.
*{ color:#888; background-color:#fff; }
a:hover{ color:#fff; }
p{ border-color:#aaa; }
上例中是灰色风格编辑器.
*{ color:#fff; background-color:#000; }
a:hover{ color:#fff; }
p{ border-color:#222; }
上例中是黑色风格编辑器.
[2] 自定义加亮器
在运行目录中创建 notepad--<文件扩展名>.syntax, 并且增加一个正则匹配组, 即可完成加亮扩展.
Fun 语言加亮器如下 (notepad--fun.syntax):
(\b(?:if|then|elsif|else|end|case|is|when|do|loop|exit|next|while|for|to|step|in|try|except|finally|raise|fun|return|class|atom|new|var|use|as|null|nil|div|mod|not|and|or|xor|bit|true|false|result|this|base)\b|@|\$)
HTML加亮器如下 (notepad--html.syntax):
(<[\/?!]?\w+|>|<[\/?!]?\w+|>)
YML 加亮器如下 (notepad--yml.syntax):
(\b(?:null|nil|true|false)\b|\w+(?=:))
采用上述类似的创建文件的方式, 可以扩展无数种带扩展名的文件加亮, 满足各种加亮需求.