MyNotepad是一个用原生Java写的编程记事本程序。
核心功能: 代码高亮、自定义高亮(对任何文本文件)、运行代码(可配置不同文件的运行脚本)
其他功能: 记笔记、更改字体、进入代码模式、查找替换、字数统计、自动识别文件编码等实用功能。
正在不断完善ing... 欢迎提出BUG
- 导入到IDEA中,运行AppMain中的启动方法,即可使用
- 本程序的配置文件路径在
C:\\NotepadData
- 本程序的更新日志和BUG日志均在
AppFunc.java
首部以注释形式记录
写MyNotepad的初衷就是希望能够在记笔记的时候像写代码一样,随时有高亮提示, 而不是像富文本编辑器那样。虽然MarkDown能够写出很漂亮笔记, 但是我认为它的表现力有些局限,毕竟语法规则都是死的,不能根据自己的想象记出丰富多彩的笔记(或许是我自己的问题~)。
MyNotepad的高亮可通过配置文件动态配置,用户自己决定哪类文件的哪里需要高亮。有三种类型:KEYWORD 关键字
,ALL_LINE 整行
和PART 区域
。
以Java代码的高亮为例,int, double, char
等单词的高亮属于KEYWORD,//
行注释的高亮属于ALL_LINE,
/**/
块注释的高亮属于PART。默认的配置文件即项目中的default.hlts
文件。
本项目已经提供了一个默认的配置文件,可以高亮一些基础的代码文件和我自创的.note笔记文件。用户可以自行完善或者另行编写配置文件。
MyNotepad在打开一个文件(文本)后,会根据文件后缀名去配置文件中查找该类文件的所有高亮配置(包括上文所提的三种类型), 所以配置文件中的内容以文件类型(一个或多个)为单位。如下面一段配置:(原文件中无缩进)
{.java .c .h .js .s .cpp
[
'<\-?[0-9]+\.?[0-9]*>' : #ff4400;;
'continue' : #3355cc bold;; 'break' : #3355cc bold;;'else' : #3355cc bold;;'return' : #3355cc bold;;'int' : #3355cc bold;;
'for' : #3355cc bold;;'if' : #3355cc bold;;'while' : #3355cc bold;;'do' : #3355cc bold;;
'void' : #3355cc bold;;'float' : #3355cc bold;;'double' : #3355cc bold;;'char' : #3355cc bold;; 'final' : #3355cc bold;;
'static' : #3355cc bold;; 'switch' : #3355cc bold;; 'case' : #3355cc bold;;
'[A-Z0-9_]+' : #7E3D76 bold;;
'<(>>>)|(>>)|(<<<)|(<<)>' : #DC143C;;
]
<
'//' : #019858 !;;
>
(
'/\*' '\*/' : #7373b9 !;;
'\"' '\"' : #d26900 ~;;
'\'' '\'' : #ff8000 ~;;
)
}
{ }括住的该段配置是java,c,c++等文件所共有的高亮,所以在{后面以空格分隔写上文件类型:
{.java .c .h .js .s .cpp
}
那么该段配置在这些类型的文件都生效。
[ ]里面是KEYWORD 关键字
类型的高亮,< >里面是ALL_LINE 整行
类型的高亮,
( )里面是PART 区域
类型的高亮:(先后顺序无所谓)
{.java .c .h .js .s .cpp
[
]
<
>
(
)
}
MyNotepad是用正则表达式来查找需要高亮的位置的。具体高亮内容的编写的格式为:'正则' : 高亮属性;;
(注意:两边有空格,结尾是两个分号)。
- 对于关键字类型来说,如果引号里直接写正则,那么MyNotepad会在其两边添加上
\b
即当做一个单词来匹配; 如果引号里的正则以<>
括住,那么变不会为其加上\b
,而是当做一个完全的正则表达式去匹配。 如'<\-?[0-9]+\.?[0-9]*>'
。 - 对于整行和区域型高亮,没有上面那么麻烦,引号里就是写完全的正则。整行类型匹配的是以该内容为首的一行,
如
'//'
匹配的是一行中从//到换行符中间的所有字符(就是单行注释的逻辑)。 区域类型有两个匹配项,格式为'正则1' '正则2' : 高亮属性;;
。正则1是要匹配的区域开始内容, 正则2是要匹配的区域的结束内容,如'/\*' '\*/'
(\*是*的转义字符)匹配的是/*和*/之间的所有内容(就是块注释的逻辑)。
接下来就是为匹配到的内容设置高亮了,就是 : 后面的高亮属性,属性可以有很多个, 比如前景、背景、加粗、下划线、斜体、字体、字号、优先级等等。 需要哪个属性写哪个,每个属性以空格分开。
- 颜色。六位颜色代码,前景则以
#
开头,背景则以b#
开头。如:#ff4400
b#3355cc
- 加粗。
bold
- 下划线。
underline
- 斜体。
italic
- 字体。
"微软雅黑"
- 字号。
30
- 优先级。
!
代表更高一级优先,?
代表更低一级优先,~
代表此高亮不可被分割, 所谓不可分割并不是指该高亮范围一定会生效,而是相反:该范围内若有其他高亮已经生效,则此高亮失效。(不单纯,毋宁死)
根据以上的配置规则,用户可以自由的配置自己想要的高亮方式,十分方便,并且在配置完毕后, 不用重启软件,只需重新开启高亮或保存文件即可生效。
MyNotepad可以运行当前代码文件,快捷键是Ctrl + B
,编译警告和出错将会以一个对话框弹出,运行时会打开一个CMD命令框。
运行脚本配置方法:
打开C:\NotepadData\scripts
下当前版本的. script 文件,可以看到里面已经配置了一些语言的运行脚本,如下:
[c; gcc "%FILE%" -o "%PATH%\%NAME%.exe"; "%PATH%\%NAME%.exe";]
[cpp; g++ "%FILE%" -o "%PATH%\%NAME%.exe"; "%PATH%\%NAME%.exe";]
[java; javac -d "%PATH%" "%FILE%"; java %NAME%;]
其实很简单,每个语言对应一行,每行以;
号分隔成多个部分。第一个是源文件的后缀名,后面是编译该文件需要依次执行的命令,最后一个是运行程序的命令。
这些命令,是在路径C:\\NotepadData\\build
下执行的。其中:
%FILE%
代替当前源文件的路径(带文件名和后缀)
%PATH%
代替命令的执行路径
%NAME%
代替当前源文件的文件名(不带后缀)
用户可以自己编写运行脚本以运行更多的文件。
由于本人水平有限,软件一定有不少BUG,见谅。