自学编程难不难系列 之 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+(?=:))



采用上述类似的创建文件的方式, 可以扩展无数种带扩展名的文件加亮, 满足各种加亮需求.