Skip to content

用原生Java写的编程记事本,可自定义文件高亮、进入代码模式(单词补全、符号生成、自动缩进等)、暗色模式、运行代码、更改字体、查找替换、字数统计、识别文件编码等。水平有限但付出很多,欢迎一起Debug!

Notifications You must be signed in to change notification settings

zyrate/MyNotepad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MyNotepad

项目简介

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 ~;;
    )
}

1.文件类型

{ }括住的该段配置是java,c,c++等文件所共有的高亮,所以在{后面以空格分隔写上文件类型:

{.java .c .h .js .s .cpp

}

那么该段配置在这些类型的文件都生效。

2.高亮类型

[ ]里面是KEYWORD 关键字类型的高亮,< >里面是ALL_LINE 整行类型的高亮, ( )里面是PART 区域类型的高亮:(先后顺序无所谓)

{.java .c .h .js .s .cpp
    [

    ]
    <

    >
    (

    )
}

3.高亮编写

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,见谅。

About

用原生Java写的编程记事本,可自定义文件高亮、进入代码模式(单词补全、符号生成、自动缩进等)、暗色模式、运行代码、更改字体、查找替换、字数统计、识别文件编码等。水平有限但付出很多,欢迎一起Debug!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages