Ecode es un editor de código multiplataforma ligero diseñado para hardware moderno con un enfoque en la capacidad de respuesta y el rendimiento. Se ha desarrollado con la GUI EEPP acelerado de hardware, que proporciona la tecnología central para el editor. El proyecto se produce como el primer proyecto serio utilizando la GUI EEPP, y actualmente se está desarrollando para mejorar la Biblioteca EEPP GUI como parte de uno de sus principales objetivos.
Para obtener más capturas de pantalla, el pago en MacOS, que se ejecuta en Windows, que se ejecuta en Haiku, bajo DPI, finalización de código, terminal, localizador de archivos, formatos de archivo, Find Global, Reemplazo global, Linter.
.gitignore Support * Ecode trata las carpetas como proyectos, como muchos otros editores. La principal diferencia es que también intenta desinfectar automáticamente los archivos del proyecto filtrando cualquier archivo que esté filtrado en el repositorio .gitignore archivos. La idea es usar el archivo .gitignore como configuración de proyecto. Los archivos del proyecto serán los utilizados para encontrar archivos en el proyecto y realizar búsquedas globales. Por lo general, esto se traduce en resultados mucho mejores para cualquier búsqueda relacionada con el proyecto. También hay un mecanismo muy simple para permitir la visibilidad de los archivos filtrados por el .gitignore , agregando un archivo con los patrones filtrados permitidos en una subcarpeta sobre la carpeta cargada, creando un archivo en .ecode/.prjallowed con los patrones de globos necesarios que permiten que los patrones filtrados se "sin filtrar". Ecode solo agregará archivos que son compatibles con el editor, el editor no intentará hacer nada con archivos que no sean compatibles oficialmente.
Algunos puntos para ilustrar la filosofía del proyecto:
Ecode se puede compilar a WASM y ejecutar en cualquier navegador moderno. No hay planes de enfocar el desarrollo en la versión web (al menos por el momento) ya que hay muchas buenas soluciones. Pero puedes intentarlo:
Demostración aquí
Actualmente, el código fuente se encuentra en el repositorio del proyecto EPP. La fuente del editor de Ecode se encuentra en SRC/Tools/Ecode. Ecode se está utilizando para mejorar e iterar activamente la biblioteca EEPP GUI. En algún momento, se migrará a este repositorio. El repositorio de ECODE debe usarse para problemas y documentación. PRS para ECODE se aceptará en el repositorio de EPP.
Hay scripts para cada plataforma compatible lista para crear la aplicación. Para Linux y MacOS , es trivial construir el proyecto, solo necesitará tener instalado GCC/Clang y también la biblioteca de desarrollo de LibsDL2. Windows Build Script es actualmente un script de compilación cruzada y utiliza MingW64. Pero también se puede construir fácilmente con las bibliotecas de desarrollo de Visual Studio y LibsDL2 instaladas. Para obtener más información sobre cómo construir manualmente un proyecto, siga las instrucciones de compilación de EPP. El nombre del proyecto siempre es Ecode (por lo que si está construyendo con Make, deberá ejecutar make ecode ).
build.app.sh intentará crear el paquete AppImage y tar.gz con la aplicación comprimida. La carpeta ecode contendrá la aplicación sin comprimir.build.app.sh creará ecode.app . Ejecute create.dmg.sh para crear el archivo dmg . La carpeta ecode.app contendrá la aplicación sin comprimir.build.app.sh creará un archivo zip con el paquete de aplicaciones con zonas adherentes. La carpeta ecode contendrá la aplicación sin comprimir. Para construir desde Windows, siga las instrucciones aquí.build.app.sh intentará construir un tar.gz con la aplicación comprimida. La carpeta ecode.app contendrá la aplicación sin comprimir.build.app.sh intentará construir un tar.gz con la aplicación comprimida. La carpeta ecode.app contendrá la aplicación sin comprimir. Las construcciones nocturnas se distribuyen aquí para los usuarios más impacientes. Ecode se está desarrollando activamente, las construcciones nocturnas pueden no ser estables para el uso diario a menos que haya una solución inédita pendiente requerida para el usuario.
Ecode agrega constantemente más soporte de idiomas y también admite extender su soporte de lenguaje a través de archivos de configuración (para cada característica: resaltado de sintaxis, LSP, Live y Formatter).
| Idioma | Destacar | LSP | Intervalor | Formatero |
|---|---|---|---|---|
| .htaccess | ✓ | Ninguno | Ninguno | Ninguno |
| archivo .ignore | ✓ | Ninguno | Ninguno | Ninguno |
| [x] ¡! | ✓ | Ninguno | Ninguno | Ninguno |
| adepto | ✓ | Adeptlsp | Ninguno | Ninguno |
| angelscript | ✓ | Ninguno | Ninguno | Ninguno |
| guión AWK | ✓ | Ninguno | Ninguno | Ninguno |
| murciélago | ✓ | Ninguno | Ninguno | Ninguno |
| bazelo | ✓ | Ninguno | Ninguno | Ninguno |
| doblar | ✓ | Ninguno | Ninguno | Ninguno |
| cianotipo | ✓ | Ninguno | Ninguno | Ninguno |
| Brailfuck | ✓ | Ninguno | Ninguno | Ninguno |
| zumbido | ✓ | Ninguno | Ninguno | Ninguno |
| do | ✓ | estrecho | CPPCHECK | formato de rango |
| carbón | ✓ | Ninguno | Ninguno | Ninguno |
| clojure | ✓ | clojure-lsp | Ninguno | Ninguno |
| CMake | ✓ | cmake-lengua-servidor | Ninguno | Ninguno |
| CPP | ✓ | estrecho | CPPCHECK | formato de rango |
| cristal | ✓ | cristalino | Ninguno | Ninguno |
| csharp | ✓ | Omnisharp | Ninguno | Ninguno |
| CSS | ✓ | servidor de lengua emmet | Ninguno | nativo |
| d | ✓ | servir | Ninguno | Ninguno |
| dardo | ✓ | servidor de idiomas dart | Ninguno | Ninguno |
| diferencia | ✓ | Ninguno | Ninguno | Ninguno |
| dockfile | ✓ | Docker-langserver | Ninguno | Ninguno |
| elixir | ✓ | Elixir-LS | Ninguno | Ninguno |
| olmo | ✓ | servidor de lenguaje de olmo | Ninguno | Ninguno |
| archivo de entorno | ✓ | Ninguno | Ninguno | Ninguno |
| fantom | ✓ | Ninguno | Ninguno | Ninguno |
| fortano | ✓ | fortaleza | Ninguno | Ninguno |
| fstab | ✓ | Ninguno | Ninguno | Ninguno |
| gdscript | ✓ | Ninguno | Ninguno | Ninguno |
| GLSL | ✓ | Glsl_analyzer | Ninguno | Ninguno |
| ir | ✓ | gopls | Ninguno | gopls |
| gráfico | ✓ | Ninguno | Ninguno | Ninguno |
| groovy | ✓ | Ninguno | Ninguno | Ninguno |
| liebre | ✓ | Ninguno | Ninguno | Ninguno |
| Haskell | ✓ | servidor de haskell-lengua | hlint | bronce dorado |
| haxe | ✓ | Ninguno | Ninguno | Ninguno |
| argumentos del compilador haxe | ✓ | Ninguno | Ninguno | Ninguno |
| HLSL | ✓ | Ninguno | Ninguno | Ninguno |
| html | ✓ | servidor de lengua emmet | Ninguno | más bonito |
| ini | ✓ | Ninguno | Ninguno | Ninguno |
| Jai | ✓ | Ninguno | Ninguno | Ninguno |
| Java | ✓ | jdtls | Ninguno | formato de rango |
| javascript | ✓ | servidor de idioma mecanografiado | eslint | más bonito |
| JavaScriptreact | ✓ | servidor de idioma mecanografiado | Ninguno | Ninguno |
| json | ✓ | Ninguno | JQ | nativo |
| Julia | ✓ | Lenguajeerver.jl | Ninguno | Ninguno |
| kotlín | ✓ | servidor de kotlin-lengua | ktlint | ktlint |
| látex | ✓ | texlab | Ninguno | Ninguno |
| langosta | ✓ | Ninguno | Ninguno | Ninguno |
| lua | ✓ | Lua-lengua-servidor | Luacheck | Ninguno |
| makfile | ✓ | Ninguno | Ninguno | Ninguno |
| reducción | ✓ | Ninguno | Ninguno | Ninguno |
| mesón | ✓ | Ninguno | Ninguno | Ninguno |
| lunar | ✓ | Ninguno | Ninguno | Ninguno |
| nelua | ✓ | Ninguno | nelua | Ninguno |
| nim | ✓ | nimlsp | nim | Ninguno |
| objeco | ✓ | Ninguno | Ninguno | Ninguno |
| Objetivo-C | ✓ | estrecho | Ninguno | formato de rango |
| ocaml | ✓ | OCAML-LSP | Ninguno | Ninguno |
| odín | ✓ | OLS | Ninguno | Ninguno |
| OpenScad | ✓ | Ninguno | Ninguno | Ninguno |
| pascal | ✓ | Ninguno | Ninguno | Ninguno |
| perl | ✓ | Perlnavigador | Ninguno | Ninguno |
| php | ✓ | phpactor | php | Ninguno |
| pico-8 | ✓ | Ninguno | Ninguno | Ninguno |
| texto sin formato | ✓ | Ninguno | Ninguno | Ninguno |
| correos | ✓ | Ninguno | Ninguno | Ninguno |
| poni | ✓ | Ninguno | Ninguno | Ninguno |
| postgresql | ✓ | Ninguno | Ninguno | Ninguno |
| powershell | ✓ | Ninguno | Ninguno | Ninguno |
| pitón | ✓ | pylsp | fallar | negro |
| riñonal | ✓ | R Languageserver | Ninguno | Ninguno |
| anillo | ✓ | Ninguno | Ninguno | Ninguno |
| rubí | ✓ | solargrafía | Ninguno | Ninguno |
| óxido | ✓ | Anyalzer de óxido | Ninguno | rustfmt |
| hablar con descaro a | ✓ | servidor de lengua emmet | Ninguno | Ninguno |
| escala | ✓ | rieles | Ninguno | Ninguno |
| shellscript | ✓ | servidor de lenguaje basura | Ninguno | Ninguno |
| pequeño | ✓ | Ninguno | Ninguno | Ninguno |
| solidez | ✓ | solc | soldintio | Ninguno |
| sql | ✓ | Ninguno | Ninguno | Ninguno |
| rápido | ✓ | SourceKit-LSP | Ninguno | Ninguno |
| TCL | ✓ | Ninguno | Ninguno | Ninguno |
| verde azulado | ✓ | Ninguno | TL | Ninguno |
| toml | ✓ | Ninguno | Ninguno | Ninguno |
| mecanografiado | ✓ | servidor de idioma mecanografiado | eslint | más bonito |
| typescriptreact | ✓ | servidor de idioma mecanografiado | Ninguno | Ninguno |
| V | ✓ | Analyzer V | Ninguno | V |
| Vala | ✓ | servidor de vala-idioma | Ninguno | Ninguno |
| verilog | ✓ | Ninguno | Ninguno | Ninguno |
| Visual Basic | ✓ | Ninguno | Ninguno | Ninguno |
| vue | ✓ | VLS | Ninguno | Ninguno |
| reyezuelo | ✓ | Ninguno | Ninguno | Ninguno |
| ensamblaje X86 | ✓ | Ninguno | Ninguno | Ninguno |
| xml | ✓ | servidor de lengua emmet | nativo | nativo |
| xtend | ✓ | Ninguno | Ninguno | Ninguno |
| yaml | ✓ | servidor de lenguaje yaml | Ninguno | Ninguno |
| zigza | ✓ | ZLS | zigza | zigza |
La etiqueta nativa significa que la función es compatible de forma nativa por Ecode y no necesita ninguna herramienta externa para funcionar.
Ecode trae una herramienta para mostrar la salud actual del soporte del idioma. Desde Ecode puede verificar su estado de salud desde Settings -> Tools -> Check Language Health , y desde la CLI puede usar el indicador --health : ecode --health . Use el indicador de verificación de salud para solucionar problemas de servidores de idiomas faltantes, revestimientos y formateros.
Verifique la salud de todos los idiomas con ecode --health o solicite detalles sobre un lenguaje específico con ecode --health-lang=<lang> .
Los complementos extienden la funcionalidad del editor de código base. Actualmente, todos los complementos están habilitados de forma predeterminada, pero son opcionales y se pueden deshabilitar en cualquier momento. Ecode implementa un protocolo interno que permite que los complementos se comuniquen entre sí. El protocolo LSP se utilizará como base para implementar la comunicación del complemento. Y, por ejemplo, el complemento de la línea consumirá el LSP para mejorar sus diagnósticos. Además, el módulo Auto Complete solicitará asistencia del LSP, si está disponible, para mejorar las finalizaciones y proporcionar ayuda de firma.
El soporte de la pinza se proporciona ejecutando revestimientos ya estables desde cada idioma. ECODE proporciona soporte para varios idiomas de forma predeterminada y se puede extender fácilmente expandiendo la configuración linters.json . linters.json La configuración predeterminada se puede obtener desde aquí. Para configurar nuevas revestimientos, puede crear un nuevo archivo de linters.json en la ruta de configuración predeterminada de Ecode .
linters.jsonEl formato es un objeto JSON muy simple con un objeto de configuración y una matriz de objetos que contienen los formatos de archivo compatibles, el patrón LUA para encontrar cualquier error impreso por el enlace al stDout, la posición de cada grupo del patrón y el comando para ejecutar. También admite algunas teclas de objetos adicionales opcionales.
Ejemplo de la eterna JavaScript (usando Eslint)
{
"config" : {
"delay_time" : " 0.5s "
},
"linters" : [
{
"file_patterns" : [ " %.js$ " , " %.ts$ " ],
"warning_pattern" : " [^:]:(%d+):(%d+): ([^%[]+)%[([^ n ]+) " ,
"warning_pattern_order" : { "line" : 1 , "col" : 2 , "message" : 3 , "type" : 4 },
"command" : " eslint --no-ignore --format unix $FILENAME "
}
]
} Eso es todo lo que necesitamos para tener un enlace de trabajo en Ecode . Los ejecutables de los revestimientos deben ser instalados manualmente por el usuario, las puntas no vendrán con el editor y también deben ser visibles para el ejecutable. Esto significa que debe estar en el entorno PATH variable o la ruta al binario debe ser absoluto.
Consulte la tabla de soporte del idioma
"disable_lsp_languages": ["lua", "python"] , deshabilita Lua y Python."disable_languages": ["lua", "python"] , deshabilita Luacheck y Ruff respectivamente. El complemento de Formatter funciona exactamente como el complemento del enlace, pero ejecutará herramientas ese código de formato automático. Ecode proporciona soporte para varios idiomas de forma predeterminada, se puede extender fácilmente expandiendo la configuración formatters.json . formatters.json La configuración predeterminada se puede obtener desde aquí. También es compatible con algunos formateros de forma nativa, esto significa que el formato viene con Ecode sin requerir ninguna dependencia externa. Y también admite el formato de documento de texto LSP, lo que significa que si está ejecutando un LSP que admite documentos de formato, el formato también estará disponible. Para configurar nuevos Formatermos, puede crear un nuevo archivo formatters.json en la ruta de configuración predeterminada de Ecode .
formatters.json format {
"config" : {
"auto_format_on_save" : false
},
"keybindings" : {
"format-doc" : " alt+f "
},
"formatters" : [
{
"file_patterns" : [ " %.js$ " , " %.ts$ " ],
"command" : " prettier $FILENAME "
}
]
}Consulte la tabla de soporte del idioma
El soporte de LSP se proporciona ejecutando LSP ya estable desde cada idioma. Ecode proporciona soporte para varios idiomas de forma predeterminada y se puede extender fácilmente expandiendo la configuración lspclient.json . lspclient.json La configuración predeterminada se puede obtener desde aquí. Para configurar nuevos LSP, puede crear un nuevo archivo lspclient.json en la ruta de configuración predeterminada de Ecode .
Nota importante: los servidores LSP pueden ser muy intensivos en recursos y pueden no ser siempre la mejor opción para proyectos simples.
Detalles de implementación: los servidores LSP solo se cargan cuando sea necesario, no se abrirá ningún proceso hasta que se abra un archivo compatible en el proyecto.
lspclient.json El formato sigue el mismo patrón que todos los archivos de configuración anteriores. La configuración se representa en un archivo JSON con tres claves principales: config , keybindings , servers .
Ejemplo de servidor C y C ++ LSP (usando CLANGD)
{
"config" : {
"hover_delay" : " 0.5s "
},
"servers" : [
{
"language" : " c " ,
"name" : " clangd " ,
"url" : " https://clangd.llvm.org/ " ,
"command" : " clangd -log=error --background-index --limit-results=500 --completion-style=bundled " ,
"file_patterns" : [ " %.c$ " , " %.h$ " , " %.C$ " , " %.H$ " , " %.objc$ " ]
},
{
"language" : " cpp " ,
"use" : " clangd " ,
"file_patterns" : [ " %.inl$ " , " %.cpp$ " , " %.hpp$ " , " %.cc$ " , " %.cxx$ " , " %.c++$ " , " %.hh$ " , " %.hxx$ " , " %.h++$ " , " %.objcpp$ " ]
}
]
} Eso es todo lo que necesitamos para tener un LSP en funcionamiento en Ecode . Los ejecutables de LSPS deben ser instalados manualmente por el usuario, LSPS no vendrá con el editor y también deben ser visibles para el ejecutable. Esto significa que debe estar en el entorno PATH variable o la ruta al binario debe ser absoluto.
Consulte la tabla de soporte del idioma
lspclient.json . También es posible especificar un comando diferente para cada plataforma, dado que podría cambiar en algunas ocasiones por plataforma. En ese caso, se debe usar un objeto, con cada clave como una plataforma, y también hay una plataforma comodín "otra" para especificar cualquier otra plataforma que no coincida con la definición de la plataforma. Por ejemplo, sourcekit-lsp usa: "command": {"macos": "xcrun sourcekit-lsp","other": "sourcekit-lsp"}{"name": "clangd","command_parameters": "--background-index-priority=background --malloc-trim"} Ecode proporciona una integración básica de Git (más características vendrán en el futuro). Su objetivo principal es ayudar al usuario a hacer las operaciones más básicas con GIT. Algunas de las características actuales admitidas: estado de Git y visualización de estadísticas (estados de archivos), confirmación, empuje, pago, extracción, búsqueda, fusión rápida, creación de ramas+renombres+eliminación de ramas, gestión de alturas. Todas las estadísticas se actualizarán/actualizarán automáticamente en tiempo real. También hay una configuración básica disponible. El complemento requiere que el usuario tenga un binario git instalado y disponible en la variable de entorno PATH .
git.json El formato sigue el mismo patrón que todos los archivos de configuración anteriores. La configuración se representa en un archivo JSON con tres claves principales: config , keybindings , servers .
Ejemplo de servidor C y C ++ LSP (usando CLANGD)
{
"config" : {
"silent" : false ,
"status_recurse_submodules" : true ,
"statusbar_display_branch" : true ,
"statusbar_display_modifications" : true ,
"ui_refresh_frequency" : " 5s "
},
"keybindings" : {
"git-blame" : " alt+shift+b "
}
}.git ).El complemento Auto-Complete está a cargo de proporcionar sugerencias para la compañía de código y la ayuda de firma.
El complemento de herramientas XML (deshabilitado de forma predeterminada) proporciona algunas mejoras agradables al editar contenido XML.
Ecode respeta las rutas de configuración estándar en cada sistema operativo:
XDG_CONFIG_HOME , generalmente se traduce en ~/.config/ecode/pluginsApplication Support en HOME , generalmente se traduce en ~/Library/Application Support/ecode/pluginsAPPDATA , generalmente se traduce en C:Users{username}AppDataRoamingecodepluginsTodas las configuraciones de complementos están diseñadas para ser sobrescribibles por el usuario. Esto significa que la configuración predeterminada se puede reemplazar con configuraciones personalizadas del usuario. Por ejemplo, si el usuario desea usar un enlace diferente, solo necesita declarar una nueva definición de un enlace en su propio archivo de configuración de la punta. Lo mismo se aplica a formatters y servidores LSPS. Los complementos siempre implementarán una "configuración" para la personalización de los complementos, y siempre implementarán una tecla "Keybindings" para configurar las transferencias personalizadas.
Los esquemas de color del editor personalizado se pueden agregar en el directorio de esquemas de color del usuario que se encuentra en:
XDG_CONFIG_HOME , generalmente se traduce en ~/.config/ecode/editor/colorschemesApplication Support en HOME , generalmente se traduce en ~/Library/Application Support/ecode/editor/colorschemesAPPDATA , generalmente se traduce a C:Users{username}AppDataRoamingecodeeditorcolorschemesCualquier archivo escrito en el directorio será tratado como un archivo de esquema de color del editor. Cada archivo puede contener cualquier número de esquemas de color.
El formato de un esquema de color se puede leer desde aquí.
Se pueden agregar esquemas de color terminal personalizados en el directorio de esquemas de color terminal del usuario que se encuentra en:
XDG_CONFIG_HOME , generalmente se traduce en ~/.config/ecode/terminal/colorschemesApplication Support en HOME , generalmente se traduce en ~/Library/Application Support/ecode/terminal/colorschemesAPPDATA , generalmente se traduce en C:Users{username}AppDataRoamingecodeterminalcolorschemesCualquier archivo escrito en el directorio será tratado como un archivo de esquema de color terminal. Cada archivo puede contener cualquier número de esquemas de color.
El formato de un esquema de color se puede leer desde aquí.
Se pueden agregar esquemas de interfaz de usuario personalizados en el directorio de temas de usuario de usuario que se encuentra en:
XDG_CONFIG_HOME , generalmente se traduce en ~/.config/ecode/themesApplication Support en HOME , generalmente se traduce en ~/Library/Application Support/ecode/themesAPPDATA , generalmente se traduce en C:Users{username}AppDataRoamingecodethemes Un archivo de tema de interfaz de usuario personalizado debe tener la extensión .css , Ecode buscará todos los archivos con la extensión .css en el directorio, el nombre del tema de la interfaz de usuario es el nombre del archivo sin la extensión. El nuevo tema aparecerá en Settings -> Window -> UI Theme .
Los temas de UI personalizados permiten personalizar el editor a voluntad del usuario. Dado que Ecode usa CSS para diseñar todos los elementos de la interfaz de usuario, crear nuevos temas es bastante fácil. Es posible personalizar solo la paleta de colores, pero también es posible personalizar todos los elementos de la interfaz de usuario si lo desea. Personalizar todo el tema de la interfaz de usuario puede ser extenso, pero personalizar los colores es tan simple como cambiar los valores de las variables CSS utilizadas para colorear la interfaz de usuario. Como referencia, el tema de interfaz de usuario base completo utilizado por Ecode se puede ver aquí. El selector más importante sería el :root , donde se definen todas las variables. Las variables de color se pueden extraer fácilmente de ese archivo.
Un ejemplo simple de un tema de interfaz de usuario personalizado que cambia solo los colores del tinte, llamemos Breeze Light Red.css :
: root {
--inherit-base-theme : true;
--primary : # e93d66 ;
--scrollbar-button : # a94074 ;
--item-hover : # 502834 ;
--tab-hover : # 5e3347 ;
} Eso efectivamente crearía/agregaría un nuevo tema de UI con colores rojos claros. Un detalle muy importante es que si el tema de la interfaz de usuario debe heredar la definición completa del tema predeterminado, debemos agregar --inherit-base-theme: true a :root , de lo contrario, el tema de la interfaz de usuario debe definirse por completo, lo que significa que cada widget debe diseñarse desde cero (no recomendado dada su complejidad). También es posible anular el estilo de los diferentes widgets que redefinen sus propiedades con las reglas habituales que se aplican a la especificación CSS bien conocida (también conocida como usando una especificidad adecuada y probablemente abusando de la bandera importante).
El soporte de idiomas personalizados se puede agregar en el directorio de idiomas que se encuentra en:
XDG_CONFIG_HOME , generalmente se traduce en ~/.config/ecode/languagesApplication Support en HOME , generalmente se traduce en ~/Library/Application Support/ecode/languagesAPPDATA , generalmente se traduce en C:Users{username}AppDataRoamingecodelanguages Ecode leerá cada archivo ubicado en ese directorio con json Extension. Cada archivo puede contener uno o varios idiomas. Para establecer varios idiomas, el elemento raíz del archivo JSON debe ser una matriz, que contenga un objeto para cada idioma, de lo contrario, si el elemento raíz es un objeto, debe contener la definición del idioma. Las definiciones de idioma pueden anular cualquier definición compatible actualmente. ECODE priorizará las definiciones definidas por el usuario.
{
"name" : " language_name " ,
"files" : [ " Array of file extensions supported " ],
"comment" : " Sets the comment string used for auto-comment functionality. " ,
"patterns" : [
{ "pattern" : " lua_pattern " , "type" : " type_name " },
{ "pattern" : " no_capture(pattern_capture_1)(pattern_capture_2) " , "type" : { " no_capture_type_name " , " capture_1_type_name " , " capture_2_type_name " } },
{ "pattern" : [ " lua_pattern_start " , " lua_pattern_end " , " escape_character " ], "type" : " type_name " }
],
"symbols" : [
{ "symbol_name" : " type_name " }
],
"visible" : true , /* sets if the language is visible as a main language in the editor, optional parameter, true by default */
"auto_close_xml_tag" : false , /* sets if the language defined supports auto close XML tags, optional parameter, false by default */
"lsp_name" : " sets the LSP name assigned for the language, optional parameter, it will use the _name_ in lowercase if not set "
}ECODE utiliza el mismo formato para la definición del idioma que los editores Lite y Lite-XL. Esto hace mucho más fácil agregar nuevos idiomas a Ecode. También hay una herramienta auxiliar que se puede descargar desde el repositorio de Ecode ubicado aquí que permite exportar directamente una definición de lenguaje Lite en el formato de archivo JSON utilizado en Ecode.
Es posible extender fácilmente cualquier definición de idioma exportando la exportación de los argumentos CLI proporcionados: --export-lang y --export-lang-path . Un usuario que desee extender o mejorar una definición de idioma puede exportarlo, modificarlo e instalar la definición con una extensión .json en la ruta de idiomas personalizados. Por ejemplo, para extender el lenguaje vue que deberá ejecutar: ecode --export-lang=vue --export-lang-path=./vue.json , salga del archivo exportado y muévalo a la ruta de idiomas personalizados.
{
"name" : " Elixir " ,
"files" : [ " %.ex$ " , " %.exs$ " ],
"comment" : " # " ,
"patterns" : [
{ "pattern" : " #.* n " , "type" : " comment " },
{ "pattern" : [ " : " " , " " " , " \ " ], "type" : " number " },
{ "pattern" : [ " """ " , " """ " , " \ " ], "type" : " string " },
{ "pattern" : [ " " " , " " " , " \ " ], "type" : " string " },
{ "pattern" : [ " ' " , " ' " , " \ " ], "type" : " string " },
{ "pattern" : [ " ~%a[/ " |'%(%[%{<] " , " [/ " |'%)%]%}>] " , " \ " ], "type" : " string " },
{ "pattern" : " -?0x%x+ " , "type" : " number " },
{ "pattern" : " -?%d+[%d%.eE]*f? " , "type" : " number " },
{ "pattern" : " -?%.?%d+f? " , "type" : " number " },
{ "pattern" : " : " ?[%a_][%w_]* " ? " , "type" : " number " },
{ "pattern" : " [%a][%w_!?]*%f[(] " , "type" : " function " },
{ "pattern" : " %u%w+ " , "type" : " normal " },
{ "pattern" : " @[%a_][%w_]* " , "type" : " keyword2 " },
{ "pattern" : " _%a[%w_]* " , "type" : " keyword2 " },
{ "pattern" : " [%+%-=/%*<>!|&] " , "type" : " operator " },
{ "pattern" : " [%a_][%w_]* " , "type" : " symbol " }
],
"symbols" : [
{ "def" : " keyword " },
{ "defp" : " keyword " },
{ "defguard" : " keyword " },
{ "defguardp" : " keyword " },
{ "defmodule" : " keyword " },
{ "defprotocol" : " keyword " },
{ "defimpl" : " keyword " },
{ "defrecord" : " keyword " },
{ "defrecordp" : " keyword " },
{ "defmacro" : " keyword " },
{ "defmacrop" : " keyword " },
{ "defdelegate" : " keyword " },
{ "defoverridable" : " keyword " },
{ "defexception" : " keyword " },
{ "defcallback" : " keyword " },
{ "defstruct" : " keyword " },
{ "for" : " keyword " },
{ "case" : " keyword " },
{ "when" : " keyword " },
{ "with" : " keyword " },
{ "cond" : " keyword " },
{ "if" : " keyword " },
{ "unless" : " keyword " },
{ "try" : " keyword " },
{ "receive" : " keyword " },
{ "after" : " keyword " },
{ "raise" : " keyword " },
{ "rescue" : " keyword " },
{ "catch" : " keyword " },
{ "else" : " keyword " },
{ "quote" : " keyword " },
{ "unquote" : " keyword " },
{ "super" : " keyword " },
{ "unquote_splicing" : " keyword " },
{ "do" : " keyword " },
{ "end" : " keyword " },
{ "fn" : " keyword " },
{ "import" : " keyword2 " },
{ "alias" : " keyword2 " },
{ "use" : " keyword2 " },
{ "require" : " keyword2 " },
{ "and" : " operator " },
{ "or" : " operator " },
{ "true" : " literal " },
{ "false" : " literal " },
{ "nil" : " literal " }
]
}Para obtener definiciones de sintaxis más complejas, consulte la definición de todos los idiomas nativos compatibles con Ecode aquí.
Listado sin orden en particular:
El autor está más que abierto a colaboraciones. Cualquier persona interesada en el proyecto está invitada a participar. Muchas características aún están pendientes, y el proyecto crecerá mucho más con el tiempo. Por favor, colabore. =)
Algunos personajes de Unicode no se presentarán en el editor fuera de la caja. Deberá cambiar la fuente monoespacial predeterminada a favor de una fuente que admite los personajes que desea ver que no se están representando. También puede cambiar la fuente alternativa predeterminada en el caso de que desee usar una fuente tradicional monoespaciada. La fuente alternativa predeterminada debe cubrir una amplia gama de idiomas, pero podría necesitar una fuente especial (actualmente cubre los idiomas CJK).
*1 Limitaciones actuales de características EPP.
*2 No soy fanático de las sugerencias de subpíxeles. Pero estoy más que dispuesto a implementarlo, no estoy muy versado en el asunto, por lo que se agradecerá cualquier ayuda.
*3 Realmente no me gustan las ligaduras. Estoy abierto a los PRS implementándolos.
*4 No soy un usuario de VIM, y no estoy calificado para implementar el modo VIM o cualquier edición modal. Los PR son bienvenidos para apoyar esto.
*5 Mejor soporte de forma de texto vendrá con el tiempo, pero sin prisa por el momento. La arquitectura EEPP está lista para agregar soporte HARFBuzz.
Este editor tiene una inspiración profundamente arraigada de los editores de texto Lite, Lite-XL, QtCreator y Sublime. Se desarrollaron varias características basadas en las implementaciones Lite/Lite-XL. Algunas características se pueden portarse directamente desde Lite: esquemas de color y patrones de iluminación de sintaxis (la implementación de EPP expande la implementación original de Lite para agregar muchas más características).
Ecode se usa principalmente en Linux y macOS, no está bien probado en Windows. Si encuentra algún problema con el editor, infórmelo aquí.
Este es un trabajo en progreso, la estabilidad no está garantizada. No lo use para tareas críticas. Estoy usando el editor diariamente y es lo suficientemente estable para mí, pero úselo bajo su propio riesgo.
Niels Lohmann para JSON para C ++ moderno
Neil Henning para subproceso. H
Todos los autores del emulador terminal sin chupar
Fredrik Aleksander para Hexe Terminal
rxi para lite
Franko y todos los colaboradores de Lite-XL
Andreas Kling para Serenityos
¡Y mucha más gente!
Licencia de MIT