title "编辑器" spark `作为一个功能完备的工具系统,编辑器是必不少的工具。 web.code.vimer 就是 Contexts 自带的编辑器,具有语法高亮、语法模板、语法补全、语法跳转等功能。 web.code.vimer 也是一个编辑器框架,默认已经支持 Contexts 用到的语言 Golang、Javascript、HTML、CSS、sh、shy 等, 如需其它语言,直接添加语法模块即可。` spark `Contexts 中所有的工具,都可以被当成插件,在编辑器中使用。` spark `http://localhost:9020/chat/cmd/web.code.vimer` field web.code.vimer chapter "目录与文件" section "目录结构" spark `在 Contexts 中,当前空间的所有的代码和文档都保存在 ./src/ 目录下,但有时会用户外部依赖库,并且根据当前需要去更改依赖库的代码。 可以使用 web.code.git.repos 命令,来管理这些依赖库。这些依赖库,全部直接保存在 ./usr/ 目录下。 ` section "工具参数" spark `web.code.vimer 最核心的功能,当然是展示目录结构与文件内容。 所以定义了三个参数 path、file、file。这样 vimer 在使用的地方,就可以通过这三个参数进行控制。 vimer 也会根据场景有不同的界面。如在命令网页中,vimer 会占据整个网页显示完整的功能。在架构图的工具中使用时,则只展示文件内容。` section "目录列表" spark `在左边导航区,显示目录列表,是由参数 path 指定的目录,加上代码仓库管理工具 web.code.git.repos 返回的代码仓库列表中的目录。 vimer 也实现了延时加载,默认只加载项目列表与当前目录下的文件列表,只有点击打开了目录,才会请求此目录下的文件列表。` chapter "语法与插件" spark `vimer 在加载文件内容时,会根据文件的扩展名,自动的加载语法插件。` chapter "预览与输出" spark `每种语法的文件,使用方式是不一样的。所以在 vimer 里实现了一种语法引擎的框架,可加载各种语法的模块,并分发各种处理事件。 每种语法模块,都可以定义当前文件的预览界面与输出界面如何显示。` order ` .shy 的语法模块,就定义了 .shy 的文件预览效果,是生成一个网页来显示文档的效果。 .go 的语法模块,就会根据文件名,查找出它生成的软件工具,在预览界面中展示此工具。 .js 的语法模块,也会根据文件名,查找出它关联的后端模块,并在预览界面中展示此工具。 .html 的语法模块,会直接用文件内容生成一个网页,展示出来。 ` chapter "模块与插件" spark `Contexts 是一个工具系统,内置了大量的软件工具。这些工具既要完全独立,又要能和其它所有工具更深度的配合。这就是为什么 Contexts 要自研前后端框架的动力。` spark `Contexts 中的所有前端、后端的各种工具,都可以直接在编辑器中使用。但为了更好的和编辑配合起来,实现更高效的互动,在编辑器的代码添加了很多框架性的功能。 如编译时 vimer 调用编译工具 web.code.compile 执行编译后,有时会生成一些错误提示信息,这时 vimer 就会根据这些信息实现跳转的功能。 ` chapter "分屏与按键" spark `vim 是一个非常高效且强大的编辑器,所以 Contexts 为了致敬 vim,便将自己的编辑器命名为 vimer,很多编辑器的操作,都是借鉴了 vim 的习惯。`