1 Star 0 Fork 162

xiejian / EditUltra

forked from calvinwilliams / EUX 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

EditUltra - 中国人开发开源的性能卓越的文本/源码编辑器+数据库客户端+Redis客户端

1. 概述

你正在寻找一款类似UltraEdit强大但免费的文本文件编辑器吗?

你想要一个秒开的开发环境吗?

你还在挑选免费、好用的数据库/Redis图形客户端吗?

向您推荐EditUltra=UltraEdit/Notepad+++PLSql/MySQL Workbench/Navicat+Redis Desktop Manager

EditUltra是中国人开发开源的性能卓越的文本/源码编辑器+数据库客户端+Redis客户端,她基于开源的富文本编辑控件Scintilla提供的基本文本编辑能力,实现了一个完整的文本/源码编辑器,还能显示数据库表列表和直接执行文本中的SQL和Redis命令,整个软件只有10MB(不包含Oracle/MySQL客户端库,需单独安装)。

images/EditUltra_hello.png

images/EditUltra_database_client.png

images/EditUltra_redis_client.png

EditUltra主要功能包含但不限于:

  • 多文件选项卡
  • WINDOWS资源管理器右键菜单打开文件/目录中所有文件
  • 检测文件变动实时重载
  • 文件打开期间自动设置为只读
  • 文件换行符和字符编码转换
  • 远程文件直接打开和保存
  • 高级的切剪、复制和粘贴
  • 查找和替换
  • 快捷键快速选择单词、行
  • 高级移动
  • 高级累积选择、多位置同步操作、多文本块选择、列选择
  • 选定文本后自动高亮上下文中相同文本
  • BASE64编解码、散列摘要计算和加解密
  • 书签
  • 导航
  • 白字符显示
  • 编程语言语法高亮、自动完成和方法浮动提示,语句块折叠展开
  • 连接Oracle/MySQL,获取全表字段列表,执行SQL,显示查询结果到表格
  • 连接Redis,执行命令,显示查询结果到树
  • 配置执行对文件、选择文本的命令

EditUltra完全使用C纯WIN32API编写而成(v1.0.0.3大约有近2万行代码),又加入了众多优化算法和数据结构,提供了极高的运行效率和较低的系统资源占用,秒开文件,键入时毫秒级弹出自动完成列表。

2. 开发历程

作为一名IT人,总喜欢写些东西,无论是源代码还是文章,从Linux C开发,到写博客,从分析爬虫HTML,到存放SQL命令,从字符编码检测,到建立个人技术知识库,都离不开一款轻便的文本编辑器伴我左右。我认为一款好的文本/源码编辑器,必须要—————快,如果启动要花2秒以上基本可以弃用了。

从大学毕业以来尝试过很多文本编辑器,UltraEdit是我使用比较长的一款软件,最新版本的UltraEdit带来了很多新功能,但是知名品牌“烈火”却迟迟搞不定Hack,我想,从事软件开发积累多年经验的我难道就不能自己写一个吗,需要什么功能就自己加(真香?),并以开放源代码方式发布,于是拾起大学时代的VC撸起袖子直接开干,先取个名字,不就是对标UltraEdit吗,就反过来叫EditUltra

一开始以为基于开源的富文本编辑控件Scintilla可以让我的开发工作神速推进,但阅读完其网上贫瘠的中文资料和官网上也不算丰富的英文文档后,才发现它真的只能当作VC工具箱里的一个稍微高级点的控件而已,大量功能都得自己撸,像多文件选项卡的控制(WINDOWS TABS控件不提供鼠标调整位置,自己增强呗)、远程文件直接打开和保存(Linux C开发必需)、自动完成列表的内容管理(Scintilla只提供了调用者给定列表、弹出和关闭接口,而不负责列表的筛选、管理等)。

软件开发离不开和数据库等打交道,那么发挥一下想象力(软件开发很需要想象力),文本编辑器内嵌客户端SDK连接上数据库不就能直接执行SQL了吗,避免了大量复制粘贴到数据库客户端软件里的人工操作,而且这年头数据库客户端软件还不便宜,很多看似免费也只是纯个人开发免费,广大企业/公司中开发还是要买许可,那么既然客户端SDK是免费的,就差一个用户界面把她包装一下了。

经过两个半月,每天晚上儿子睡觉后写两个小时(周末也是,白天陪全家出去玩等同于上班),一路斩荆披棘,小步迭代而来,终于从v0.0.0.1到v0.0.43.0,很快跳到v1.0.0.0发布了,还请各位看官多多支持和使用,有问题提issue或发邮件给我,我也将努力保持后续的继续迭代,毕竟现在只实现了基本功能,很多低频功能以及markdown预览、HTML预览等有待于补上。

3. 安装

3.1. 绿色安装

下载、解压绿色包

目前EditUltra只提供64位绿色版,免费下载和使用。

从以下网址可以查询最新版本更新信息

http://114.215.179.129/EditUltra/ChangeLog-CN

从以下网址可以下载到最新版本,绿色压缩包只有4.5MB

http://114.215.179.129/EditUltra/EditUltra-x64-latest.zip

把她放到软件目录中,我一般会放到专门放绿色软件的目录里

D:\Program Files\EditUltra-latest.zip

把里面所有文件解压出来,解压出来只有10MB

D:\Program Files\EditUltra\

运行主程序

直接运行里面的editultra.exe即可启动。

注意:

  • 如需内嵌Oracle客户端功能,须自行安装Oracle,并将WINDOWS环境变量PATH中加入oci.dll的所在路径。
  • 如需内嵌MySQL客户端功能,须自行安装MySQL,并将WINDOWS环境变量PATH中加入libmysql.dll的所在路径。

注册WINDOWS右键文件/目录弹出菜单项

如果需要在WINDOWS资源管理器中右键菜单增加“打开文件”功能,执行菜单环境->文件右键弹出菜单

images/EditUltra_file_popupmenu.png

注册成功后就能在WINDOWS里右键打开文件了。

images/EditUltra_explorer_openfile.png

如果需要在WINDOWS资源管理器中右键菜单增加“打开目录中所有文件”功能,执行菜单环境->目录右键弹出菜单

images/EditUltra_directory_popupmenu.png

注册成功后就能在WINDOWS里右键打开目录中所有文件了。

images/EditUltra_explorer_opendirectory.png

WINDOWS10操作系统可能会遇到“没有管理员权限”报错,解决方案是右键“以管理员身份运行”editultra.exe,再执行以上菜单即可。

3.2. 源码编译安装

如果喜欢折腾,全套源代码在

https://gitee.com/calvinwilliams/EditUltra

clone下来,用VS自行编译吧,我用的是Visual Studio 2019

编译前需要安装第三方依赖库:SciLexer、pcre、libcurl、iconv、openssl、MySQL、Oracle、hiredis。

4. 功能导览

4.1. 一级菜单"文件"

4.1.1. 文件操作

images/EditUltra_menu_file.png

一级菜单下面对文件的操作有新建打开...打开最近保存另存为...全部保存关闭关闭所有文件关闭除当前外所有文件

启用二级菜单文件变动检测可在每次文件选项卡选择该文件时自动检查文件是否变动,如果变动则重载文件。

启用二级菜单打开文件后设置为只读可在文件编辑期间临时对文件设置只读权限,防止别人打开修改。

4.1.2. 换行符风格

二级菜单新建文件换行符设置新建文件时使用的哪个操作系统风格的换行符。二级菜单全文转换换行符可在打开文件后调整文件中的换行符风格。换行符风格目前支持WINDOWS(CR+LF)MAC风格(CR)UNIX/Linux风格(LF)

4.1.3. 字符编码

二级菜单新建文件字符编码设置新建文件时使用的字符编码。二级菜单全文转换字符编码可在打开文件后调整文件中的字符编码。字符编码目前支持UTF-8GB18030BIG5

4.1.4. 远程文件管理器

images/EditUltra_remote_file_manager.png

远程文件管理器用于管理远程服务器地址簿。管理器对话框右边是远程服务器信息,填写完后点击测试远程文件服务器连接测试,如果测试通过的话,点击新建远程文件服务器连接加到左边列表中,注意连接名称中不能包含空格等白字符。更新远程文件服务器连接会把右边的信息修改到左边的列表中。左下角的删除远程文件管理器连接会删除左边列表中的当前选择项。

每个服务器连接信息对应一个配置文件conf\rfileser_(连接名称).conf

如果密码不填的话,会在每次启动后第一次展开文件资源管理器中该连接时要求输入密码,如果密码正确成功连接上,后续文件操作无需再输入密码。

4.2. 一级菜单"编辑"

images/EditUltra_menu_edit.png

4.2.1. 剪切、复制、粘贴和删除

二级菜单高级剪切的三级菜单项剪切行用于剪切当前行到剪贴板,无需事前选择,剪切粘贴行把当前行移到下一行的下面,剪贴板里遗留一份当前行内容。

二级菜单高级复制的三级菜单项复制行用于复制当前行到剪贴板,无需事前选择,复制粘贴行把当前行向下复制一份,剪贴板里遗留一份当前行内容。

二级菜单高级粘贴的三级菜单项粘贴行用于把剪贴板里的内容粘贴作为当前行,往上粘贴行则是向上粘贴。

二级菜单高级删除的三级菜单项删除行用于删除当前行,无需事前选择。

4.2.2. 合并行

二级菜单合并行把下一行拼接到当前行的末尾,无需事前选择。

4.2.3. 大小写转换

二级菜单大小写转换用于对选择文本一起转换为大写或小写。

4.2.4. 启用编辑辅助功能

二级菜单启用自动补全关闭符号当在编辑区输入([{'"时自动补全关闭符号,但光标还是定位在输入字符和关闭字符之间。

二级菜单启用自动缩进当在编辑区输入回车时,如果当前行左边有白字符(空格、TAB),下一行也会自动加入这些白字符,光标定位在自动补充的白字符后面。

4.2.5. BASE64编解码

EditUltra支持用户直接对编辑区选择的文本做BASE64编码,并自动替换原选择文本,编码和解码是可逆的。

4.2.6. 散列/消息摘要

EditUltra支持用户直接对编辑区选择的文本做散列/消息摘要,并自动替换原选择文本,摘要算法是不可逆的。目前支持的摘要算法有MD5SHA1SHA256

4.2.7. DES加解密

EditUltra支持用户直接对编辑区选择的文本做3DES加解密,弹出对话框输入密钥(24字符,非十六进制展开),加密后按十六进制展开自动替换原选择文本,解密过程同之。

4.3. 一级菜单"搜索"

images/EditUltra_menu_search.png

4.3.1. 查找和替换

二级菜单查找...弹出查找对话框

images/EditUltra_find_dialog.png

可用普通文本正则表达式作为源匹配编辑区的文本,可选项整词匹配大小写匹配匹配单词开始决定匹配方式,非模态对话框按钮查找上一个查找下一个在不关闭查找对话框时定位编辑区匹配字符串处。

二级菜单查找下一个(或快捷键F3)、查找上一个(或快捷键Ctrl+F3)在不打开查找对话框直接匹配定位编辑区查找结果。

二级菜单替换...弹出替换对话框

images/EditUltra_replace_dialog.png

非模态对话框按钮替换上一个替换下一个全部替换在不关闭替换对话框时替换所有编辑区匹配字符串处。

4.3.2. 快速选择

二级菜单全选或快捷键Ctrl+A选择全文,选择单词组或快捷键Ctrl+W全选当前位置所在单词,选择行或快捷键Ctrl+L全选当前位置所在行。

4.3.3. 高级选择

二级菜单向右累积选择单词向右累积选择单词组累积选择到下一个语句块首行用于累加调整选择文本。

假如一个变量名由三个单词组成,单词首字母大小,向右累积选择单词自动选择从当前位置到单词最后一个字母,向右累积选择单词组自动选择从当前位置到变量名结束,累积选择到下一个语句块首行自动选择从当前位置到空行分割的下一个语句块首行。

向左累积选择*亦然。

EditUltra支持定位多个位置或选择多个文本块,联动操作:输入、退格键、删除、复制等,快捷键为Ctrl+MouseLButtonClick或Ctrl+MouseLButtonDown+MouseMove+MouseLButtonUp+...。

比如拼接复制

images/EditUltra_multiselect.png

比如在HTML的TD中同时设置class

images/EditUltra_syncoper.png

EditUltra支持列选择,联动操作:输入、退格键、删除、复制等,快捷键为Alt+MouseLButton+MouseMove或Alt+Shift+Left/Right/Up/Down。

images/EditUltra_columnselect.png

作为一个合格的文本/源码编辑器,也支持选定文本后,自动高亮上下中相同的文本

images/EditUltra_indicator_highlight.png

4.3.4. 高级移动光标

同上,但是是移动光标,而不是累积选择。

这些操作配备快捷键实现与vim同等的快速处理。

4.3.5. 书签管理

二级菜单书签提供了对任意打开文件的任意行做行标记,便于事后快速跳跃。

切换书签的快捷键是F9增加书签的快捷键是Alt+F9删除书签的快捷键是Ctrl+F9删除所有书签的快捷键是Ctrl+Shift+F9

跳到上一个书签(当前文件)的快捷键是Ctrl+F2跳到下一个书签(当前文件)的快捷键是F2跳到上一个书签(所有打开的文件)的快捷键是Ctrl+Shift+F2跳到下一个书签(所有打开的文件)的快捷键是Shift+F2

4.3.6. 导航操作

二级菜单导航提供了由于鼠标点击定位而产生的位置链的快速退回功能,比如临时到另外一个文件中去复制一个字符串,然后直接跳回来。

退回到上一个位置(当前文件)的快捷键是Ctrl+Back退回到上一个位置(所有打开的文件)的快捷键是Ctrl+Shift+Back

4.4. 一级菜单"视图"

images/EditUltra_menu_view.png

4.4.1. 显示/隐藏文件资源树

二级菜单文件资源树用于显示/隐藏主窗口左边的文件资源管理器区域。

4.4.2. 调整字体颜色方案

二级菜单字体颜色方案用于调整字体颜色方案。

images/EditUltra_setfont_dialog.png

EditUltra支持编程语言语法高亮、键入时弹出自动完成框、浮动显示语法提示、快速定位到库函数名等符号定义处。字体颜色方案对话框左下角为无高亮的普通文本和当前活动行的字体颜色设置,对话框左边为编程语言(C++、Java、Python等)的字体颜色设置,对话框右边为标记语言(HTML、CSS等)的字体颜色设置。

完成支持语言列表见

4.4.3. 显示/隐藏行号/书签

二级菜单显示行号显示书签用于显示/隐藏编辑区靠左的辅助区域里的行号、书签等标记。

4.4.4. 显示/隐藏白字符

二级菜单显示白字符用于使用可见标记显示空格和TAB,显示换行符用于使用可见标记显示换行符,显示缩进线用于使用可见标记显示同一缩进行集的缩进竖线。

4.4.5. 缩放

二级菜单缩放里面的放大缩小用于调大字体显示大小,不影响打印大小,不受字体颜色方案影响。可用重置缩放恢复原大小。

4.5. 一级菜单"编程"

images/EditUltra_menu_source.png

4.5.1. 语句块折叠

二级菜单启用语句块折叠用于开启/禁用语句块折叠功能,折叠标记显示在编辑区靠左的辅助区域中。

二级菜单语句块合拢语句块展开用于合拢和展开当前层级的语句块,语句块折叠切换用于切换合拢和展开。

二级菜单全部语句块合拢全部语句块展开用于一键合拢和展开所有层级的语句块。

4.5.2. 源代码符号表

EditUltra预置了众多语言的符号提取正则表达式(位于配置文件conf/doctype_(语言名).conf中的symbol_reqular_exp配置值),匹配出来的符号显示成编辑区右边的符号列表框中,可鼠标左键双击符号直接跳到符号定义处。用户可根据需要,自行修改配置文件以调整匹配式。

二级菜单跳到符号定义或快捷键F11可直接选定光标所在位置的单词组,从符号列表中查询出编辑区行号,跳到该行。

4.5.3. 自动完成和语法提示

EditUltra预置了众多语言的关键字和库函数名,(位于配置文件conf/doctype_(语言名).conf中的autocomplete.setcalltip.add配置值),当用户键入前N个字符时EditUltra会根据优化过的算法和数据结构快速筛选出匹配前N个字符的所有autocomplete.set组合,弹出自动完成框提供用户选择,当用户键入(,EditUltra会根据匹配的calltip.add,显示语法提示。个别语言可能会有不同的用户操作差异性,比如HTML的属性名自动完成列表是在用户在标记名后键入空格就自动弹出。用户可根据需要,自行修改配置文件以扩展名字空间。

images/EditUltra_autocompleted.png

images/EditUltra_calltip.png

4.5.4. 数据库SQL文件

EditUltra约定了.sql为存放数据库SQL的文本文件,额外的,如果发现文件内容以某一特定注释格式(数据库自动连接配置头)出现,则提取相关信息作为连接数据库的参数,在打开文件完成后自动连接数据库,并获取所有能访问的表名列表以及字段信息列表显示到编辑区右边的符号树框中,用户等待连接完成后可直接选择文件后面的SQL并执行,如果执行的是SELECT语句还会把查询结果显示在编辑区下面的表格中。

images/EditUltra_database_client.png

Oracle的数据库自动连接配置头长这个样子:

-- EDITULTRA BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : Oracle
--  DBHOST : (SIG)
--  DBPORT : 0
--  DBUSER : (连接用户名)
--  DBPASS : [连接用户密码]
--  DBNAME : 
-- EDITULTRA END DATABASE CONNECTION CONFIG

以下为一个Oracle配置示例:

-- EDITULTRA BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : Oracle
--  DBHOST : CALVINDB
--  DBPORT : 0
--  DBUSER : calvin
--  DBPASS : 
--  DBNAME : calvindb
-- EDITULTRA END DATABASE CONNECTION CONFIG

MySQL的数据库自动连接配置头长这个样子:

-- EDITULTRA BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : MySQL
--  DBHOST : (ip)
--  DBPORT : (port)
--  DBUSER : (连接用户名)
--  DBPASS : [连接用户密码]
--  DBNAME : (库名)
-- EDITULTRA END DATABASE CONNECTION CONFIG

以下为一个MySQL配置示例:

-- EDITULTRA BEGIN DATABASE CONNECTION CONFIG
--  DBTYPE : MySQL
--  DBHOST : 127.0.0.1
--  DBPORT : 3306
--  DBUSER : calvin
--  DBPASS : calvin
--  DBNAME : calvindb
-- EDITULTRA END DATABASE CONNECTION CONFIG

注意:连接用户密码可不配置,在每次连接数据库时会提示输入,如果连接成功后面会记住密码,直到程序结束。

数据库自动连接配置头比较难记,二级菜单插入数据库自动连接配置头可直接插入配置模板到当前SQL文件中,所以不用刻意去记她,不过每个配置项的含义和用法还是要记忆的。

二级菜单执行选定SQL或快捷键F5用于执行选定的SQL语句。

4.5.5. REDIS文件

REDIS自动连接配置头以及一键执行同数据库。

images/EditUltra_redis_client.png

4.6. 一级菜单"环境"

images/EditUltra_menu_env.png

4.6.1. WINDOWS资源管理器右键菜单

二级菜单文件右键弹出菜单用于向WINDOWS资源管理器右键菜单注册/卸载用 EditUltra 打开文件菜单项。

二级菜单目录右键弹出菜单用于向WINDOWS资源管理器右键菜单注册/卸载用 EditUltra 打开目录中所有文件菜单项。

注意:在WINDOWS10操作系统中执行以上两个菜单项需要管理员权限,可重新以管理员身份启动EditUltra主程序。

4.6.2. 处理当前文件和当前选择文本的命令

EditUltra允许自定义格式命令用于一键处理当前文件或当前编辑区选择文本。

二级菜单配置处理文件的命令用于配置处理当前文件的格式命令,用%F占位文件名,执行处理文件的命令用于执行该命令。

二级菜单配置处理选定文本的命令用于配置处理当前选定文本的格式命令,用%T占位选定文本,执行处理选定文本的命令用于执行该命令,比如打开浏览器提交选定文本为关键字给搜索引擎。

4.7. 一级菜单"帮助"

images/EditUltra_menu_help.png

执行二级菜单关于展示EditUltra软件版权和引用第三方库列表。

images/EditUltra_version.png

4.8. 目前支持语法高亮的语言列表

语言 语法高亮 自动完成列表 语法提示 符号列表与快速定位
TXT - - - -
C/C++
C# -
Java -
JavaScript -
golang -
SWIFT -
SQL
Redis -
Python
Lua
Perl - -
Sh/Bash - -
Rust - -
Ruby - -
Lisp - -
Asm -
Cobol -
HTML - -
XML - - -
CSS - -
JSON - - -
YAML - - -
Makefile - - -
CMake - -

目前已支持25种编程语言和标记语言,每种语言的配置文件为conf/doctype_(语言名).conf,一般keywords.set配置为语法高亮单词列表,keywords2.set配置为库函数等第三方符号列表,autocomplete.set配置为键入时弹出自动完成单词列表,calltip.add为浮动显示语法提示文本,symbol_reqular_exp为正则表达式匹配源代码出符号表放到编辑区右边列表框供鼠标左键双击后直接跳到定义处行。

今后还将继续完善已有语言未实现功能,也将增加更多语言,也欢迎大家把急需的语言告知我优先添加,更欢迎大家帮我添加后PR我,谢谢。

4.9. 启动速度评测

CPU : i5-7500 3.4GHz 内存 : 16GB 操作系统 : WINDOWS 10 测试说明 : 操作系统启动后,右键测试文本文件弹出菜单中选择打开约28KB大小的文件。

- 首次启动耗时 非首次启动耗时
EditUltra 2秒 0.5秒
UltraEdit 5秒 1秒
VSCode 8秒 2秒

5. 最后

EditUltra,中国人开发开源的小巧快速又功能丰富的文本/源码编辑器(内嵌数据库客户端、Redis客户端)。

欢迎使用EditUltra,如果你使用中碰到了问题请提issue或发邮件告诉我,谢谢 ^_^

源码托管地址 : 开源中国

关于作者:厉华,成长在杭州,求学在杭州,工作在杭州,左手C,右手JAVA,写过小到性能卓越方便快捷的日志库、HTTP解析器、日志采集器等,大到交易平台/中间件等,分布式系统实践者,容器技术专研者,2003年大学毕业后一直从事Linux中后台开发,目前在某城商行负责基础架构。

通过邮箱可以联系我 : 网易Gmail

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

中国人开发开源的性能卓越的文本/源码编辑器+数据库客户端+Redis客户端 展开 收起
C++
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C++
1
https://gitee.com/xiejian601/EditUltra.git
git@gitee.com:xiejian601/EditUltra.git
xiejian601
EditUltra
EditUltra
release

搜索帮助