ECODE ist ein leichtgewichtiger Multi-Plattform-Code-Editor für moderne Hardware mit Schwerpunkt auf Reaktionsfähigkeit und Leistung. Es wurde mit der Hardware-beschleunigten EEPP-GUI entwickelt, die die Kerntechnologie für den Herausgeber bietet. Das Projekt ist das erste ernsthafte Projekt, das die EEPP -GUI verwendet, und es wird derzeit entwickelt, um die EEPP -GUI -Bibliothek als Teil eines seiner Hauptziele zu verbessern.
Weitere Screenshots -Checkouts auf macOS, auf Windows ausgeführt, auf Haiku, niedrigem DPI, Code -Abschluss, Terminal, Datei -Locator, Dateiformate, globales Finden, globaler Ersatz, Linter.
.gitignore -Unterstützung * Ecode behandelt Ordner als Projekte, wie viele andere Herausgeber. Der Hauptunterschied besteht darin, dass es auch versucht, die Projektdateien automatisch zu beruhigen, indem alle Dateien herausgefiltert werden, in denen sie in den Repository .gitignore -Dateien gefiltert werden. Die Idee ist, die .gitignore -Datei als Projekteinstellung zu verwenden. Die Projektdateien sind diejenigen, die zum Suchen von Dateien im Projekt und zur Durchführung globaler Suchanfragen verwendet werden. Normalerweise führt dies zu viel besseren Ergebnissen für jede projektbezogene Suche. Es gibt auch einen sehr einfachen Mechanismus, um die Sichtbarkeit gefilterter Dateien durch den .gitignore zu ermöglichen, indem eine Datei mit den zulässigen gefilterten Mustern in einem Unterordner über den geladenen Ordner hinzugefügt wird, wodurch eine Datei in .ecode/.prjallowed mit den erforderlichen GLOB -Mustern erstellt wird, die es ermöglichen, die gefilterten Muster zu ermöglichen. Ecode fügt nur Dateien hinzu, die vom Editor unterstützt werden. Der Editor wird nicht versuchen, etwas mit Dateien zu tun, die nicht offiziell unterstützt werden.
Einige Punkte, um die Projektphilosophie zu veranschaulichen:
Ecode kann zu WASM zusammengestellt und in jedem modernen Browser ausgeführt werden. Es gibt keine Pläne, die Entwicklung auf die Webversion (zumindest momentan) zu konzentrieren, da es da draußen viele gute Lösungen gibt. Aber Sie können es versuchen:
Demo hier
Derzeit befindet sich der Quellcode im EEPP -Projektrepository. Die Ecode -Editor -Quelle befindet sich bei SRC/Tools/Ecode. Ecode wird verwendet, um die EEPP -GUI -Bibliothek aktiv zu verbessern und zu iterieren. Irgendwann wird es in dieses Repository migriert. Das Ecode -Repository sollte für Probleme und Dokumentation verwendet werden. PRS für ECODE wird im EEPP -Repository akzeptiert.
Es gibt Skripte für jede unterstützte Plattform, die bereit ist, die Anwendung zu erstellen. Für Linux und MacOS ist es trivial, das Projekt zu erstellen. Sie müssen nur GCC/Clang installieren lassen und auch die Entwicklungsbibliothek von libsdl2. Das Windows Build-Skript ist derzeit ein Cross-Compiling-Skript und verwendet Mingw64. Es kann aber auch einfach mit den installierten Entwicklungsbibliotheken von Visual Studio und Libsdl2 entwickelt werden. Weitere Informationen zum manuellen Bau eines Projekts finden Sie in den EEPP -Build -Anweisungen. Der Projektname ist immer ecode (wenn Sie also mit Make bauen, müssen Sie ausführen, make ecode ).
build.app.sh wird versuchen, das AppImage -Paket und tar.gz mit der komprimierten Anwendung zu erstellen. ecode -Ordner enthält die unkomprimierte Anwendung.build.app.sh erstellt ecode.app . Führen Sie create.dmg.sh aus, um die dmg -Datei zu erstellen. ecode.app -Ordner enthält die unkomprimierte Anwendung.build.app.sh erstellt eine zip -Datei mit dem Reißverschlusspaket. ecode -Ordner enthält die unkomprimierte Anwendung. Um aus Fenstern zu erstellen, folgen Sie den Anweisungen hier.build.app.sh wird versuchen, mit der komprimierten Anwendung einen tar.gz zu erstellen. ecode.app -Ordner enthält die unkomprimierte Anwendung.build.app.sh wird versuchen, mit der komprimierten Anwendung einen tar.gz zu erstellen. ecode.app -Ordner enthält die unkomprimierte Anwendung. Nightly Builds werden hier für die ungeduldigeren Benutzer verteilt. ECODE wird aktiv entwickelt, nächtliche Builds sind möglicherweise nicht für die tägliche Verwendung stabil, es sei denn, es ist ein unveröffentlichtes Fix für den Benutzer erforderlich.
ECODE fügt ständig mehr Sprachenunterstützung hinzu und unterstützt auch die Erweiterung der Sprachunterstützung über Konfigurationsdateien (für jede Funktion: Syntax -Hervorhebung, LSP, Linter und Formatierer).
| Sprache | Highlight | Lsp | Linter | Formatierer |
|---|---|---|---|---|
| .htaccess | ✓ | Keiner | Keiner | Keiner |
| .NIGNORE -Datei | ✓ | Keiner | Keiner | Keiner |
| [x] es! | ✓ | Keiner | Keiner | Keiner |
| geschickt | ✓ | Adeptlsp | Keiner | Keiner |
| Engelskript | ✓ | Keiner | Keiner | Keiner |
| awk Skript | ✓ | Keiner | Keiner | Keiner |
| Schläger | ✓ | Keiner | Keiner | Keiner |
| Basel | ✓ | Keiner | Keiner | Keiner |
| biegen | ✓ | Keiner | Keiner | Keiner |
| Entwurf | ✓ | Keiner | Keiner | Keiner |
| Brainfuck | ✓ | Keiner | Keiner | Keiner |
| summen | ✓ | Keiner | Keiner | Keiner |
| C | ✓ | klang | cppcheck | Klangformat |
| Kohlenstoff | ✓ | Keiner | Keiner | Keiner |
| Clojure | ✓ | Clojure-lsp | Keiner | Keiner |
| cmake | ✓ | cmake-language-server | Keiner | Keiner |
| CPP | ✓ | klang | cppcheck | Klangformat |
| Kristall | ✓ | kristallin | Keiner | Keiner |
| CSHARP | ✓ | Omnisharp | Keiner | Keiner |
| CSS | ✓ | Emmet-Sprach-Server | Keiner | einheimisch |
| D | ✓ | serve-d | Keiner | Keiner |
| Pfeil | ✓ | Dart-Sprachserver | Keiner | Keiner |
| diff | ✓ | Keiner | Keiner | Keiner |
| Dockerfile | ✓ | Docker-Langserver | Keiner | Keiner |
| Elixier | ✓ | ELIXIR-LS | Keiner | Keiner |
| Ulme | ✓ | Elm-Sprach-Server | Keiner | Keiner |
| Umgebungsdatei | ✓ | Keiner | Keiner | Keiner |
| Fantom | ✓ | Keiner | Keiner | Keiner |
| Forran | ✓ | Fortls | Keiner | Keiner |
| fstab | ✓ | Keiner | Keiner | Keiner |
| gdscript | ✓ | Keiner | Keiner | Keiner |
| GLSL | ✓ | GLSL_Analyzer | Keiner | Keiner |
| gehen | ✓ | GOPLS | Keiner | GOPLS |
| Graphql | ✓ | Keiner | Keiner | Keiner |
| groovig | ✓ | Keiner | Keiner | Keiner |
| Hase | ✓ | Keiner | Keiner | Keiner |
| Haskell | ✓ | Haskell-Sprache-Server | hlint | Messingbeschläge |
| Haxe | ✓ | Keiner | Keiner | Keiner |
| Haxe Compiler Argumente | ✓ | Keiner | Keiner | Keiner |
| HLSL | ✓ | Keiner | Keiner | Keiner |
| html | ✓ | Emmet-Sprach-Server | Keiner | hübscher |
| Ini | ✓ | Keiner | Keiner | Keiner |
| Jai | ✓ | Keiner | Keiner | Keiner |
| Java | ✓ | jdtls | Keiner | Klangformat |
| JavaScript | ✓ | Typscript-Sprache-Server | Eslint | hübscher |
| JavascripTreact | ✓ | Typscript-Sprache-Server | Keiner | Keiner |
| JSON | ✓ | Keiner | JQ | einheimisch |
| Julia | ✓ | Languagesserver.jl | Keiner | Keiner |
| Kotlin | ✓ | Kotlin-Sprache-Server | ktlint | ktlint |
| Latex | ✓ | Texlab | Keiner | Keiner |
| Hummer | ✓ | Keiner | Keiner | Keiner |
| Lua | ✓ | Lua-Sprache-Server | Luacheck | Keiner |
| Makefile | ✓ | Keiner | Keiner | Keiner |
| Markdown | ✓ | Keiner | Keiner | Keiner |
| Meson | ✓ | Keiner | Keiner | Keiner |
| Moonskript | ✓ | Keiner | Keiner | Keiner |
| Nelua | ✓ | Keiner | Nelua | Keiner |
| nim | ✓ | nimlsp | nim | Keiner |
| Beacy | ✓ | Keiner | Keiner | Keiner |
| Ziel-C | ✓ | klang | Keiner | Klangformat |
| ocaml | ✓ | Ocaml-lsp | Keiner | Keiner |
| Odin | ✓ | OLS | Keiner | Keiner |
| OpenScad | ✓ | Keiner | Keiner | Keiner |
| Pascal | ✓ | Keiner | Keiner | Keiner |
| Perl | ✓ | Perlnavigator | Keiner | Keiner |
| Php | ✓ | Phpaktor | Php | Keiner |
| Pico-8 | ✓ | Keiner | Keiner | Keiner |
| Klartext | ✓ | Keiner | Keiner | Keiner |
| po | ✓ | Keiner | Keiner | Keiner |
| Pony | ✓ | Keiner | Keiner | Keiner |
| PostgreSQL | ✓ | Keiner | Keiner | Keiner |
| Powershell | ✓ | Keiner | Keiner | Keiner |
| Python | ✓ | pylsp | Halskrause | Schwarz |
| R | ✓ | r Languagesserver | Keiner | Keiner |
| Ring | ✓ | Keiner | Keiner | Keiner |
| Rubin | ✓ | Solargraph | Keiner | Keiner |
| Rost | ✓ | Rost-Analyzer | Keiner | Rustfmt |
| Sass | ✓ | Emmet-Sprach-Server | Keiner | Keiner |
| Scala | ✓ | Metalle | Keiner | Keiner |
| Shellscript | ✓ | Bash-Sprach-Server | Keiner | Keiner |
| Kleinbasik | ✓ | Keiner | Keiner | Keiner |
| Solidität | ✓ | Solc | Solhint | Keiner |
| sql | ✓ | Keiner | Keiner | Keiner |
| schnell | ✓ | SourceKit-LSP | Keiner | Keiner |
| tcl | ✓ | Keiner | Keiner | Keiner |
| blaugrün | ✓ | Keiner | tl | Keiner |
| Toml | ✓ | Keiner | Keiner | Keiner |
| Typoskript | ✓ | Typscript-Sprache-Server | Eslint | hübscher |
| TypecripTreact | ✓ | Typscript-Sprache-Server | Keiner | Keiner |
| v | ✓ | V-Analyzer | Keiner | v |
| Vala | ✓ | Vala-Sprach-Server | Keiner | Keiner |
| Verilog | ✓ | Keiner | Keiner | Keiner |
| Visual Basic | ✓ | Keiner | Keiner | Keiner |
| Vue | ✓ | VLS | Keiner | Keiner |
| Zaunkönig | ✓ | Keiner | Keiner | Keiner |
| x86 Montage | ✓ | Keiner | Keiner | Keiner |
| xml | ✓ | Emmet-Sprach-Server | einheimisch | einheimisch |
| Xtend | ✓ | Keiner | Keiner | Keiner |
| Yaml | ✓ | Yaml-Sprache-Server | Keiner | Keiner |
| Zick | ✓ | ZLS | Zick | Zick |
Native Tag bedeutet, dass die Funktion von Ecode nativ unterstützt wird und kein externes Werkzeug benötigt wird, um zu funktionieren.
Ecode bringt ein Tool mit, um die aktuelle Gesundheit der Sprachunterstützung anzuzeigen. Aus Ecode können Sie den Gesundheitszustand aus Settings -> Tools -> Check Language Health überprüfen, und von der CLI können Sie die Flagge --health : ecode --health verwenden. Verwenden Sie das Health Check -Flag, um fehlende Sprachserver, Linter und Formatierungen zu beheben.
Überprüfen Sie die Gesundheit aller Sprachen mit ecode --health oder fragen Sie nach Einzelheiten zu einer bestimmten Sprache mit ecode --health-lang=<lang> .
Plugins erweitert die Funktionalität des Basiscode -Editors. Derzeit sind alle Plugins standardmäßig aktiviert, sind jedoch optional und können jederzeit deaktiviert werden. Ecode implementiert ein internes Protokoll, mit dem Plugins miteinander kommunizieren können. Das LSP -Protokoll wird als Basis zur Implementierung der Plugin -Kommunikation verwendet. Und zum Beispiel wird das Linter -Plugin das LSP konsumieren, um seine Diagnose zu verbessern. Außerdem fordert das automatische vollständige Modul, falls verfügbar, bei der LSP Unterstützung an, um die Fertigstellung zu verbessern und Signaturhilfe zu leisten.
Die Support für die Verluste erfolgt durch Ausführen bereits fester Linter aus jeder Sprache. Ecode unterstützt standardmäßig mehrere Sprachen und kann durch Erweiterung der Konfiguration der linters.json leicht erweitert werden. linters.json Standardkonfiguration kann von hier aus erhalten werden. Um neue Linter zu konfigurieren, können Sie im Standardkonfigurationspfad von Ecode eine neue linters.json -Datei erstellen.
linters.json -FormatDas Format ist ein sehr einfaches JSON -Objekt mit einem Konfigurationsobjekt und einem Array von Objekten, die die unterstützten Dateiformate enthalten, das LUA -Muster, um einen von der Verbrecher zum STDOut gedruckten Fehler, die Position jeder Gruppe des Musters und den Befehl zum Ausführen zu finden. Es unterstützt auch einige optionale zusätzliche Objektschlüssel.
JavaScript -Linterbeispiel (mit 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 "
}
]
} Das ist alles, was wir brauchen, um einen funktionierenden Linter in Ecode zu haben. Linter Executables müssen vom Benutzer manuell installiert werden, Linter werden nicht mit dem Editor geliefert und müssen auch für die ausführbare Datei sichtbar sein. Dies bedeutet, dass es sich um PATH Pfadumgebungsvariable handelt oder der Weg zum Binärer absolut.
Bitte überprüfen Sie die Sprachunterstützungstabelle
"disable_lsp_languages": ["lua", "python"] , deaktiviert Lua und Python."disable_languages": ["lua", "python"] , deaktiviert Luacheck und Ruff. Das Formatier-Plugin funktioniert genau wie das Linter-Plugin, führt jedoch Tools aus, die automatisch formatieren. Ecode bietet standardmäßig mehrere Sprachen, die standardmäßig durch Erweiterung der Konfiguration formatters.json erweitert werden können. formatters.json Standardkonfiguration kann von hier erhalten werden. Es unterstützt auch einige Formatierer nativ. Dies bedeutet, dass das Formatierer mit Ecode geliefert wird, ohne dass eine externe Abhängigkeit erforderlich ist. Außerdem unterstützt die Formatierung von LSP -Textdokumenten, was bedeutet, dass auch die Formatierung verfügbar ist, wenn Sie eine LSP ausführen, die Formatierungsdokumente unterstützt. Um neue Formatter zu konfigurieren, können Sie im Standardkonfigurationspfad von Ecode eine neue formatters.json -Datei erstellen.
formatters.json Format {
"config" : {
"auto_format_on_save" : false
},
"keybindings" : {
"format-doc" : " alt+f "
},
"formatters" : [
{
"file_patterns" : [ " %.js$ " , " %.ts$ " ],
"command" : " prettier $FILENAME "
}
]
}Bitte überprüfen Sie die Sprachunterstützungstabelle
Der LSP -Support erfolgt durch Ausführen bereits stabiler LSP aus jeder Sprache. Ecode unterstützt standardmäßig mehrere Sprachen und kann durch Erweiterung der Konfiguration lspclient.json leicht erweitert werden. lspclient.json Standardkonfiguration kann von hier erhalten werden. Um neue LSPs zu konfigurieren, können Sie im Standardkonfigurationspfad von Ecode eine neue lspclient.json -Datei erstellen.
Wichtiger Hinweis: LSP -Server können sehr ressourcenintensiv sein und sind möglicherweise nicht immer die beste Option für einfache Projekte.
Implementierungsdetails: LSP -Server werden nur bei Bedarf geladen. Es wird kein Prozess geöffnet, bis eine unterstützte Datei im Projekt geöffnet wird.
lspclient.json Format Das Format folgt dem gleichen Muster wie alle vorherigen Konfigurationsdateien. Die Konfiguration wird in einer JSON -Datei mit drei Hauptschlüssel dargestellt: config , keybindings , servers .
Beispiel für C- und C ++ - LSP -Server (mit 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$ " ]
}
]
} Das ist alles, was wir brauchen, um einen funktionierenden LSP in Ecode zu haben. LSPS Executables müssen vom Benutzer manuell installiert werden, LSPs werden nicht mit dem Editor geliefert und müssen auch für die ausführbare Datei sichtbar sein. Dies bedeutet, dass es sich um PATH Pfadumgebungsvariable handelt oder der Weg zum Binärer absolut.
Bitte überprüfen Sie die Sprachunterstützungstabelle
lspclient.json deklariert wird. Es ist auch möglich, einen anderen Befehl für jede Plattform anzugeben, da er sich in einigen Ocassionen pro Plattform ändern kann. In diesem Fall sollte ein Objekt verwendet werden, wobei jeder Schlüssel eine Plattform ist, und es gibt auch eine Wildcard -Plattform, die eine andere Plattform angibt, die nicht mit der Plattformdefinition übereinstimmt. Zum Beispiel verwendet sourcekit-lsp : "command": {"macos": "xcrun sourcekit-lsp","other": "sourcekit-lsp"}{"name": "clangd","command_parameters": "--background-index-priority=background --malloc-trim"} versucht, einige Befehlszeilenargumente an Clang anzugreifen Ecode bietet eine grundlegende GIT -Integration (weitere Funktionen werden in Zukunft kommen). Der Hauptzweck ist es, dem Benutzer zu helfen, mit Git die Grundlagenvorgänge auszuführen. Einige der aktuellen unterstützten Funktionen: Git-Status- und Statistikvisualisierung (Dateienzustände), Festlegen, Push, Checkout, Pull, Fetch, Fast-Forward-Verschmelzung, Erstellen von+Umbenennung+Niederlassungen, Verwaltung von Vorhandungen. Alle Statistiken werden in Echtzeit automatisch aktualisiert/aktualisiert. Es gibt auch eine grundlegende Konfiguration. Das Plugin verlangt vom Benutzer, dass ein git -Binärer installiert und in PATH Pfadumgebungsvariable verfügbar ist.
git.json Format Das Format folgt dem gleichen Muster wie alle vorherigen Konfigurationsdateien. Die Konfiguration wird in einer JSON -Datei mit drei Hauptschlüssel dargestellt: config , keybindings , servers .
Beispiel für C- und C ++ - LSP -Server (mit 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 -Verzeichnis erkannt werden).Das Auto-Complete-Plugin ist für die Bereitstellung von Vorschlägen für Code-Abschluss und Signaturhilfe verantwortlich.
Das XML Tools -Plugin (standardmäßig deaktiviert) bietet einige nette Verbesserungen beim Bearbeiten von XML -Inhalten.
Ecode respektiert die Standardkonfigurationspfade in jedem Betriebssystem:
XDG_CONFIG_HOME , normalerweise übersetzt ~/.config/ecode/pluginsApplication Support in HOME , in der Regel übersetzt ~/Library/Application Support/ecode/pluginsAPPDATA , übersetzt normalerweise in C:Users{username}AppDataRoamingecodepluginsAlle Plugin -Konfigurationen sind so konzipiert, dass sie vom Benutzer überschrieben werden können. Dies bedeutet, dass die Standardkonfiguration durch benutzerdefinierte Konfigurationen vom Benutzer ersetzt werden kann. Wenn der Benutzer beispielsweise einen anderen Linter verwenden möchte, muss er nur eine neue Linterdefinition in seiner eigenen Linterkonfigurationsdatei deklarieren. Gleiches gilt für Formatter- und LSPS -Server. Plugins implementiert immer eine "Konfiguration" für die Plugins -Anpassung und implementiert immer einen "Schlüsselbindungen", um benutzerdefinierte Schlüsselbindungen zu konfigurieren.
Benutzerdefinierte Editor -Farbschemata können im Verzeichnis der Benutzerfarbe hinzugefügt werden, das gefunden wurde:
XDG_CONFIG_HOME , übersetzt normalerweise ~/.config/ecode/editor/colorschemesApplication Support in HOME , übersetzt in der Regel zu ~/Library/Application Support/ecode/editor/colorschemesAPPDATA , übersetzt normalerweise C:Users{username}AppDataRoamingecodeeditorcolorschemesJede im Verzeichnis geschriebene Datei wird als Editor -Farbscheme -Datei behandelt. Jede Datei kann eine beliebige Anzahl von Farbschemata enthalten.
Das Format eines Farbschemas kann von hier aus gelesen werden.
Benutzerdefinierte Farbschemata können im Benutzer -Farbschemata -Verzeichnis der Benutzeranterminal hinzugefügt werden.
XDG_CONFIG_HOME , normalerweise übersetzt ~/.config/ecode/terminal/colorschemesApplication Support in HOME , in der Regel über ~/Library/Application Support/ecode/terminal/colorschemes übersetztAPPDATA , übersetzt normalerweise C:Users{username}AppDataRoamingecodeterminalcolorschemesJede im Verzeichnis geschriebene Datei wird als Terminal -Farbscheme -Datei behandelt. Jede Datei kann eine beliebige Anzahl von Farbschemata enthalten.
Das Format eines Farbschemas kann von hier aus gelesen werden.
Benutzerdefinierte UI -Schemata können im Verzeichnis der Benutzer UI -Themen hinzugefügt werden, die gefunden wurden:
XDG_CONFIG_HOME , normalerweise übersetzt ~/.config/ecode/themesApplication Support in HOME , übersetzt in der Regel zu ~/Library/Application Support/ecode/themesAPPDATA , übersetzt normalerweise C:Users{username}AppDataRoamingecodethemes Eine benutzerdefinierte UI -Themendatei muss die Erweiterung .css haben. Ecode sucht nach allen Dateien mit .css -Erweiterung im Verzeichnis. Der Benutzername ist der Dateiname ohne Erweiterung. Das neue Thema wird in Settings -> Window -> UI Theme angezeigt.
Benutzerdefinierte UI -Themen ermöglichen das Anpassen des Editors nach dem Willen des Benutzers. Da Ecode CSS verwendet, um alle Elemente der Benutzeroberfläche zu stylen, ist es ziemlich einfach, neue Themen zu erstellen. Es ist möglich, nur die Farbpalette anzupassen, aber es ist auch möglich, alle UI -Elemente bei Wunsch anzupassen. Das Anpassen des gesamten UI -Themas kann umfangreich sein, aber das Anpassen der Farben ist so einfach wie das Ändern der Werte der CSS -Variablen, die zur Färbung der Benutzeroberfläche verwendet werden. Als Referenz ist hier das von Ecode verwendete komplette Basis -UI -Thema zu sehen. Der wichtigste Selektor wäre der :root -Selektor, bei dem alle Variablen definiert sind. Farbvariablen können leicht aus dieser Datei extrahiert werden.
Ein einfaches Beispiel für ein benutzerdefiniertes UI -Thema, das nur die Farbfarben verändert. Nennen wir es Breeze Light Red.css :
: root {
--inherit-base-theme : true;
--primary : # e93d66 ;
--scrollbar-button : # a94074 ;
--item-hover : # 502834 ;
--tab-hover : # 5e3347 ;
} Das würde effektiv ein neues UI -Thema mit hellroten Farben erzeugen/hinzufügen. Ein sehr wichtiges Detail ist, dass, wenn das UI-Thema die vollständige Definition des Standardthemas erben muss, wir --inherit-base-theme: true für das :root Element, ansonsten hinzufügen müssen, ansonsten muss das UI-Thema vollständig definiert werden, was bedeutet, dass jedes Widget von Grund auf neu gestaltet werden muss (nicht empfohlen angesichts seiner Komplexität). Es ist auch möglich, den Stil der verschiedenen Widgets zu überschreiben, die ihre Eigenschaften mit den üblichen Regeln neu definieren, die für die bekannte CSS-Spezifikation gelten (auch bekannt als mit angemessener Spezifität und wahrscheinlich das Missbrauch des! Wichtigen Flags).
Die Unterstützung für benutzerdefinierte Sprachen kann im Sprachenverzeichnis hinzugefügt werden, das gefunden wurde unter:
XDG_CONFIG_HOME , übersetzt normalerweise ~/.config/ecode/languagesApplication Support in HOME , übersetzt in der Regel in ~/Library/Application Support/ecode/languagesAPPDATA , übersetzt normalerweise C:Users{username}AppDataRoamingecodelanguages Ecode liest jede Datei in diesem Verzeichnis mit json -Erweiterung. Jede Datei kann eine oder mehrere Sprachen enthalten. Um mehrere Sprachen festzulegen, sollte das Stammelement der JSON -Datei ein Array sein, das ein Objekt für jede Sprache enthält. Andernfalls sollte es die Sprachdefinition enthalten, wenn das Stammelement ein Objekt ist. Sprachdefinitionen können jede derzeit unterstützte Definition überschreiben. Ecode priorisieren benutzerdefinierte Definitionen.
{
"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 verwendet das gleiche Format für die Sprachdefinition wie Lite- und Lite-XL-Redakteure. Dies erleichtert Ecode viel einfacher, neue Sprachen hinzuzufügen. Es gibt auch ein Helfer -Tool, das hier von Ecode Repository heruntergeladen werden kann, mit dem eine Lite -Sprachdefinition direkt in das in Ecode verwendete JSON -Dateiformat exportiert werden kann.
Es ist möglich, jede Sprachdefinition leicht zu erweitern, indem sie sie mit den angegebenen CLI-Argumenten exportieren: --export-lang und --export-lang-path . Ein Benutzer, der eine Sprachdefinition erweitern oder verbessern möchte, kann sie exportieren, ändern und die Definition mit einer .json -Erweiterung im benutzerdefinierten Sprachenpfad installieren. Um den vue zu erweitern, müssen Sie beispielsweise ausgeführt werden: ecode --export-lang=vue --export-lang-path=./vue.json , beenden Sie die exportierte Datei und verschieben Sie sie in den benutzerdefinierten Sprachenpfad.
{
"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 " }
]
}Für komplexere Syntax -Definitionen finden Sie in der Definition aller von Ecode unterstützten Muttersprachen.
In keiner bestimmten Reihenfolge aufgeführt:
Der Autor ist mehr als offen für Kooperationen. Jede Person, die an dem Projekt interessiert ist, ist zur Teilnahme eingeladen. Viele Funktionen stehen noch aus, und das Projekt wird im Laufe der Zeit viel mehr wachsen. Bitte arbeiten Sie zusammen. =))
Einige Unicode -Zeichen werden im Editor nicht außerhalb der Box gerendert. Sie müssen die standardmäßige Monospace -Schriftart zugunsten einer Schriftart ändern, die die Charaktere unterstützt, die Sie sehen möchten, die nicht gerendert werden. Sie können auch die Standard -Fallback -Schriftart ändern, wenn Sie eine traditionelle monospact -Schriftart verwenden möchten. Die Standard -Fallback -Schrift sollte eine breite Palette von Sprachen abdecken, aber Sie könnten eine spezielle Schriftart benötigen (derzeit deckt CJK -Sprachen ab).
*1 Aktuelle EEPP -Merkmalsbeschränkungen.
*2 Ich bin kein Fan von Subpixel. Aber ich bin mehr als bereit, es umzusetzen, ich bin in dieser Angelegenheit nicht sehr vertraut, daher wird jede Hilfe geschätzt.
*3 Ich mag Ligaturen nicht wirklich. Ich bin offen für PRs, die sie implementieren.
*4 Ich bin kein VIM -Benutzer und ich bin nicht qualifiziert, den VIM -Modus oder eine modale Bearbeitung zu implementieren. PRs sind herzlich eingeladen, dies zu unterstützen.
*5 Bessere textförmige Unterstützung wird mit der Zeit geliefert, aber im Moment ohne Ansturm. Die EEPP -Architektur ist bereit, Harfbuzz -Unterstützung hinzuzufügen.
Dieser Herausgeber hat eine tief verwurzelte Inspiration von den Redakteuren von Lite, Lite-XL, QTCreator und Sublime. Basierend auf den Lite/Lite-XL-Implementierungen wurden mehrere Merkmale entwickelt. Einige Funktionen können direkt von Lite portiert werden: Farbschemen und Syntax-Highlighting-Muster (EEPP-Implementierung erweitert die ursprüngliche Lite-Implementierung, um viele weitere Funktionen hinzuzufügen).
Ecode wird hauptsächlich unter Linux und MacOS verwendet, es ist in Windows nicht gut getestet. Wenn Sie Probleme mit dem Editor finden, melden Sie es bitte hier.
Dies ist eine laufende Arbeit, Stabilität ist nicht garantiert. Bitte verwenden Sie es nicht für kritische Aufgaben. Ich benutze den Redakteur täglich und ist stabil genug für mich, benutze ihn aber auf eigenes Risiko.
Niels Lohmann für JSON für moderne C ++
Neil Henning für Subprozess.H
Alle Autoren des saugenlosen Terminalsemulators
Fredrik Aleksander für Hexe Terminal
RXI für Lite
Franko und alle Mitarbeiter für Lite-XL
Andreas Kling für Serenityos
Und viel mehr Leute!
MIT -Lizenz