Ecode是一種輕巧的多平台代碼編輯器,專為現代硬件而設計,重點是響應能力和性能。它是使用硬件加速的EEEPP GUI開發的,EEPEP GUI為編輯提供了核心技術。該項目是使用EEPEP GUI的第一個嚴肅項目,目前正在開發該項目以改善EEPEP GUI庫,這是其主要目標之一。
有關在MacOS上運行的更多屏幕截圖,請在Windows上運行,在Haiku上運行,低DPI,代碼完成,終端,文件定位器,文件格式,全局查找,全局替換,Linter。
.gitignore支持的項目 * Ecode像許多其他編輯一樣將文件夾視為項目。主要區別在於,它還試圖通過濾除在.gitignore庫中過濾的任何文件來自動消毒項目文件。這個想法是將.gitignore文件用作項目設置。項目文件將是用於查找項目中文件並進行全局搜索的文件。通常,對於任何與項目相關的搜索,這都可以轉化為更好的結果。還有一個非常簡單的機制,可以通過在加載的文件夾中添加帶有允許的過濾模式的文件,允許.gitignore對.gitignore的過濾文件可見性,從而在.ecode/.prjallowed中使用必要的球模式創建文件,從而允許過濾的模式“未過濾””。 Ecode只會添加由編輯器支持的文件,編輯器不會嘗試使用不正式支持的文件來執行任何操作。
一些要說明項目理念的要點:
可以將Ecode彙編為WASM並在任何現代瀏覽器中運行。沒有計劃將開發集中在網絡版本上(至少目前),因為那裡有很多好的解決方案。但是您可以嘗試一下:
演示在這裡
當前,源代碼位於EEPP項目存儲庫中。 Ecode編輯器源位於SRC/Tools/ecode。 Ecode被用來積極改善和迭代EEEPP GUI庫。在某個時候,它將遷移到此存儲庫。 Ecode存儲庫應用於問題和文檔。 EEPP存儲庫將接受ECODE的PRS。
每個受支持的平台都有準備構建應用程序的腳本。對於Linux和MacOS,構建該項目是微不足道的,您只需要安裝GCC/Clang以及LIBSDL2的開發庫即可。 Windows Build腳本當前是一個交叉編譯腳本,它使用MingW64。但是它也可以輕鬆地使用安裝的Visual Studio和LibsDL2開發庫來構建。有關如何手動構建項目的更多信息,請遵循EEPP構建說明。項目名稱始終是Ecode (因此,如果您使用Make構建,則需要運行make ecode )。
build.app.sh將嘗試使用壓縮應用程序構建AppImage軟件包和tar.gz ecode文件夾將包含未壓縮的應用程序。build.app.sh將創建ecode.app 。運行create.dmg.sh以創建dmg文件。 ecode.app文件夾將包含未壓縮的應用程序。build.app.sh將使用zipped應用程序包創建一個zip文件。 ecode文件夾將包含未壓縮的應用程序。從Windows構建,請按照此處的說明進行操作。build.app.sh將嘗試使用壓縮應用程序構建tar.gz ecode.app文件夾將包含未壓縮的應用程序。build.app.sh將嘗試使用壓縮應用程序構建tar.gz ecode.app文件夾將包含未壓縮的應用程序。 夜間構建正在這里為更不耐煩的用戶分發。正在積極開發Ecode,除非用戶需要未決的修復程序,否則每天的構建可能不會穩定。
Ecode不斷添加更多的語言支持,還支持通過配置文件擴展其語言支持(對於每個功能:語法突出顯示,LSP,Linter和Formatter)。
| 語言 | 強調 | LSP | Linter | 格式化 |
|---|---|---|---|---|
| .htaccess | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| .ignore文件 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| [x]它! | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 熟練 | ✓ | Adeptlsp | 沒有任何 | 沒有任何 |
| Angelscript | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 尷尬腳本 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 蝙蝠 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 巴澤爾 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 彎曲 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 藍圖 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 腦力 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 嗡嗡聲 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| c | ✓ | clangd | CPPCHECK | 叮噹聲 |
| 碳 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 克洛傑爾 | ✓ | clojure-lsp | 沒有任何 | 沒有任何 |
| cmake | ✓ | CMAKE語言服務器 | 沒有任何 | 沒有任何 |
| CPP | ✓ | clangd | CPPCHECK | 叮噹聲 |
| 水晶 | ✓ | 結晶 | 沒有任何 | 沒有任何 |
| CSHARP | ✓ | 無所不能 | 沒有任何 | 沒有任何 |
| CSS | ✓ | emmet語言服務器 | 沒有任何 | 本國的 |
| d | ✓ | 服務-D | 沒有任何 | 沒有任何 |
| 鏢 | ✓ | 飛鏢語言服務器 | 沒有任何 | 沒有任何 |
| 差異 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Dockerfile | ✓ | Docker-Langserver | 沒有任何 | 沒有任何 |
| 長生不老藥 | ✓ | elixir-ls | 沒有任何 | 沒有任何 |
| 榆樹 | ✓ | Elm語言服務器 | 沒有任何 | 沒有任何 |
| 環境文件 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 幻想 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Fortran | ✓ | 堡壘 | 沒有任何 | 沒有任何 |
| FSTAB | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| gdscript | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| glsl | ✓ | GLSL_ANALYZER | 沒有任何 | 沒有任何 |
| 去 | ✓ | gopls | 沒有任何 | gopls |
| GraphQl | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Groovy | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 野兔 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 哈斯克爾 | ✓ | Haskell語言服務器 | hlint | Ormolu |
| 哈克斯 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| HAXE編譯器論點 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| HLSL | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| html | ✓ | emmet語言服務器 | 沒有任何 | 更漂亮 |
| ini | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 傑伊 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 爪哇 | ✓ | JDTLS | 沒有任何 | 叮噹聲 |
| JavaScript | ✓ | 打字稿 - 語言服務器 | eslint | 更漂亮 |
| JavasCripTreact | ✓ | 打字稿 - 語言服務器 | 沒有任何 | 沒有任何 |
| JSON | ✓ | 沒有任何 | JQ | 本國的 |
| 朱莉婭 | ✓ | 語言ERGAGESERVER.JL | 沒有任何 | 沒有任何 |
| 科特林 | ✓ | 科特林語言服務器 | ktlint | ktlint |
| 乳膠 | ✓ | Texlab | 沒有任何 | 沒有任何 |
| 龍蝦 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 盧阿 | ✓ | Lua語言服務器 | 盧阿切克 | 沒有任何 |
| makefile | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 降價 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 介子 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 月經 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 內魯亞 | ✓ | 沒有任何 | 內魯亞 | 沒有任何 |
| 尼姆 | ✓ | nimlsp | 尼姆 | 沒有任何 |
| Objeck | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Objective-C | ✓ | clangd | 沒有任何 | 叮噹聲 |
| OCAML | ✓ | OCAML-LSP | 沒有任何 | 沒有任何 |
| 奧丁 | ✓ | OLS | 沒有任何 | 沒有任何 |
| OPENSCAD | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 帕斯卡 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 珀爾 | ✓ | perlnavigator | 沒有任何 | 沒有任何 |
| php | ✓ | Phpactor | php | 沒有任何 |
| Pico-8 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 明文 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| po | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 小馬 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Postgresql | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Powershell | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Python | ✓ | pylsp | 拉夫 | 黑色的 |
| r | ✓ | R語言服務器 | 沒有任何 | 沒有任何 |
| 戒指 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 紅寶石 | ✓ | Solargraph | 沒有任何 | 沒有任何 |
| 銹 | ✓ | 生鏽的分析儀 | 沒有任何 | rudfmt |
| Sass | ✓ | emmet語言服務器 | 沒有任何 | 沒有任何 |
| Scala | ✓ | 金屬 | 沒有任何 | 沒有任何 |
| ShellScript | ✓ | Bash語言服務器 | 沒有任何 | 沒有任何 |
| 小基礎 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 堅固 | ✓ | Solc | Solhint | 沒有任何 |
| SQL | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 迅速 | ✓ | sourcekit-lsp | 沒有任何 | 沒有任何 |
| TCL | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 藍綠色 | ✓ | 沒有任何 | TL | 沒有任何 |
| 湯姆 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 打字稿 | ✓ | 打字稿 - 語言服務器 | eslint | 更漂亮 |
| 類型進行反應 | ✓ | 打字稿 - 語言服務器 | 沒有任何 | 沒有任何 |
| v | ✓ | V-Analyzer | 沒有任何 | v |
| 瓦拉 | ✓ | 瓦拉語言服務器 | 沒有任何 | 沒有任何 |
| Verilog | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| 視覺基本 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| Vue | ✓ | VLS | 沒有任何 | 沒有任何 |
| 鷦 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| x86組件 | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| XML | ✓ | emmet語言服務器 | 本國的 | 本國的 |
| XTEND | ✓ | 沒有任何 | 沒有任何 | 沒有任何 |
| yaml | ✓ | Yaml語言服務器 | 沒有任何 | 沒有任何 |
| ZIG | ✓ | ZLS | ZIG | ZIG |
本機標籤意味著該功能由Ecode本機支持,並且不需要任何外部工具才能運行。
Ecode帶來了顯示當前語言支持健康的工具。從Ecode您可以從Settings -> Tools -> Check Language Health狀況中檢查其健康狀況,並且可以從CLI使用--health標誌: ecode --health 。使用健康檢查標誌對缺少語言服務器,襯里和格式化器進行故障排除。
用ecode --health或詢問有關具有ecode --health-lang=<lang> 。
插件擴展了基本代碼編輯器功能。目前,默認情況下所有插件都啟用,但它們是可選的,可以隨時禁用。 Ecode實現了內部協議,該協議允許插件相互通信。 LSP協議將用作實現插件通信的基礎。例如,Linter插件將消耗LSP來改善其診斷。此外,自動完成模塊將要求LSP(如果有)提供幫助,以改善完成並提供簽名幫助。
通過從每種語言中執行已經穩定的襯裡來提供襯裡支持。默認情況下, Ecode提供了對幾種語言的支持,並且可以通過擴展linters.json配置輕鬆擴展。 linters.json默認配置可以從此處獲得。要配置新的Linters,您可以在Ecode的默認配置路徑中創建一個新的linters.json文件。
linters.json格式該格式是一個非常簡單的JSON對象,具有配置對象和包含支持的文件格式的對像數組,LUA模式,以查找Linter在Stdout上打印的任何錯誤,圖案的每個組的位置以及執行的命令。它還支持一些可選的額外對象鍵。
JavaScript Linter示例(使用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 "
}
]
}這就是我們需要在Ecode中使用一個工作的襯裡。 Linters的可執行文件必須由用戶手動安裝,編輯器不會隨附襯裡,並且還需要可見的。這意味著它必須在PATH環境變量上,否則二進制的路徑必須是絕對的。
請檢查語言支持表
"disable_lsp_languages": ["lua", "python"] ,禁用lua和python。"disable_languages": ["lua", "python"] ,分別禁用Luacheck和Ruff。格式插件的工作原理與Linter插件完全一樣,但是它將執行自動編碼的工具。默認情況下, Ecode可以通過擴展formatters.json配置來輕鬆擴展對幾種語言的支持。 formatters.json可以從此處獲得默認配置。它還本地支持某些格式化,這意味著格式配方帶有ecode,而無需任何外部依賴。並且還支持LSP文本文檔格式化,這意味著,如果您正在運行支持格式化文檔的LSP,則格式也將可用。要配置新格式器,您可以在Ecode的默認配置路徑中創建一個新的formatters.json文件。
formatters.json格式{
"config" : {
"auto_format_on_save" : false
},
"keybindings" : {
"format-doc" : " alt+f "
},
"formatters" : [
{
"file_patterns" : [ " %.js$ " , " %.ts$ " ],
"command" : " prettier $FILENAME "
}
]
}請檢查語言支持表
通過執行每種語言已經穩定的LSP來提供LSP支持。默認情況下, Ecode提供了對幾種語言的支持,並且可以通過擴展lspclient.json配置輕鬆擴展。 lspclient.json默認配置可以從此處獲得。要配置新的LSP,您可以在Ecode的默認配置路徑中創建一個新的lspclient.json文件。
重要說明:LSP服務器可能是非常重要的資源密集型,並且可能不是簡單項目的最佳選擇。
實施詳細信息:僅在需要時加載LSP服務器,直到項目中打開支持的文件之前,不會打開任何過程。
lspclient.json格式格式遵循與所有以前的配置文件相同的模式。配置在帶有三個主要鍵的JSON文件中表示: config , keybindings , servers 。
C和C ++ LSP服務器示例(使用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$ " ]
}
]
}這就是我們需要在Ecode中使用的LSP。 LSPS可執行文件必須由用戶手動安裝,LSP不會隨附編輯器,並且還需要可見的可執行文件。這意味著它必須在PATH環境變量上,否則二進制的路徑必須是絕對的。
請檢查語言支持表
lspclient.json配置中聲明服務器來覆蓋默認LSP命令。鑑於每個平台可能會在每個平台上更改,也可以為每個平台指定一個不同的命令。在這種情況下,應使用一個對象,每個鍵是一個平台,還有一個通配符平台“其他”來指定與平台定義不匹配的任何其他平台。例如, sourcekit sourcekit-lsp使用: "command": {"macos": "xcrun sourcekit-lsp","other": "sourcekit-lsp"}{"name": "clangd","command_parameters": "--background-index-priority=background --malloc-trim"}Ecode提供了一些基本的GIT集成(將來會有更多功能)。其主要目的是幫助用戶使用GIT進行最大的基礎操作。當前支持的一些功能:GIT狀態和統計數據可視化(文件狀態),提交,推送,結帳,拉力,獲取,快速合併,創建+重命名+重命名+刪除分支,管理藏匿處。所有統計數據將自動實時更新/刷新。還有一些基本配置。該插件要求用戶在PATH環境變量中安裝git二進制並提供。
git.json格式格式遵循與所有以前的配置文件相同的模式。配置在帶有三個主要鍵的JSON文件中表示: config , keybindings , servers 。
C和C ++ LSP服務器示例(使用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目錄中檢測到更改時才觸發更新)。自動完整插件負責為代碼完成和簽名幫助提供建議。
XML工具插件(默認情況下為禁用)在編輯XML內容時提供了一些改進的功能。
Ecode尊重每個OS上的標準配置路徑:
XDG_CONFIG_HOME ,通常轉換為~/.config/ecode/pluginsHOME中使用Application Support文件夾,通常轉化為~/Library/Application Support/ecode/pluginsAPPDATA ,通常轉換為C:Users{username}AppDataRoamingecodeplugins所有插件配置均設計為用戶可以覆蓋。這意味著可以用用戶的自定義配置替換默認配置。例如,如果用戶想使用其他襯裡,它只需要在其自己的Linter配置文件中聲明新的Linter定義即可。格式和LSPS服務器也適用。插件將始終為插件自定義實現“配置”,並始終實現“鑰匙限制”鍵來配置自定義鍵鍵。
自定義編輯器配色方案可以在用戶配色方案目錄中添加:
XDG_CONFIG_HOME ,通常轉換為~/.config/ecode/editor/colorschemesHOME中使用Application Support文件夾,通常轉化為~/Library/Application Support/ecode/editor/colorschemesAPPDATA ,通常轉換為C:Users{username}AppDataRoamingecodeeditorcolorschemes目錄中編寫的任何文件都將被視為編輯配色方案文件。每個文件都可以包含任何數量的配色方案。
可以從這裡讀取配色方案的格式。
自定義終端配色方案可以在用戶終端配色方案目錄中添加:
XDG_CONFIG_HOME ,通常轉換為~/.config/ecode/terminal/colorschemesHOME中使用Application Support文件夾,通常轉化為~/Library/Application Support/ecode/terminal/colorschemesAPPDATA ,通常轉換為C:Users{username}AppDataRoamingecodeterminalcolorschemes目錄中編寫的任何文件都將被視為終端配色文件。每個文件都可以包含任何數量的配色方案。
可以從這裡讀取配色方案的格式。
可以在用戶UI主題目錄中添加自定義UI方案:
XDG_CONFIG_HOME ,通常轉化為~/.config/ecode/themesHOME中使用Application Support文件夾,通常轉化為~/Library/Application Support/ecode/themesAPPDATA ,通常轉換為C:Users{username}AppDataRoamingecodethemes自定義UI主題文件必須具有擴展名.css ,Ecode將在目錄中使用.css擴展名來查找所有文件,UI主題名稱是沒有擴展名的文件名。新主題將出現在Settings -> Window -> UI Theme中。
自定義UI主題允許在用戶的意願下自定義編輯器。由於Ecode使用CSS來設計UI的所有元素,因此創建新主題非常容易。可以僅自定義調色板,但也可以根據需要自定義所有UI元素。自定義整個UI主題可能是廣泛的,但是自定義顏色就像更改用於為UI上色的CSS變量的值一樣簡單。作為參考,可以在此處看到Ecode使用的完整基礎UI主題。最重要的選擇器將是:root選擇器,其中所有變量被定義。顏色變量可以輕鬆從該文件中提取。
自定義UI主題的一個簡單示例,該主題僅更改色調顏色,讓我們稱其為Breeze Light Red.css :CSS:
: root {
--inherit-base-theme : true;
--primary : # e93d66 ;
--scrollbar-button : # a94074 ;
--item-hover : # 502834 ;
--tab-hover : # 5e3347 ;
}這有效地將創建/添加帶有淺紅色的新UI主題。一個非常重要的細節是,如果UI主題必須繼承默認主題的完整定義,我們必須補充--inherit-base-theme: true to to :root元素,否則必須完全定義UI主題,這意味著,每個小部件都必須從scratch中進行造型(不推薦使用其複雜性)。還可以使用適用於眾所周知的CSS規範的通常規則(又稱使用足夠特異性,可能濫用!重要的標誌)的通常規則重新定義其屬性的不同小部件的樣式。
可以在以下語言目錄中添加自定義語言支持:
XDG_CONFIG_HOME ,通常轉化為~/.config/ecode/languagesHOME中使用Application Support文件夾,通常轉化為~/Library/Application Support/ecode/languagesAPPDATA ,通常轉換為C:Users{username}AppDataRoamingecodelanguages Ecode將使用json擴展名讀取位於該目錄的每個文件。每個文件可以包含一種或幾種語言。為了設置幾種語言,JSON文件的根元素應該是一個數組,其中包含每個語言的一個對象,否則如果根元素是一個對象,則應包含語言定義。語言定義可以覆蓋當前支持的任何定義。 Ecode將優先考慮用戶定義的定義。
{
"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使用與Lite和Lite-XL編輯器相同的語言定義格式。這使在Ecode中添加新語言變得更加容易。還有一個輔助工具可以從此處的Ecode存儲庫中下載,該工具允許將Lite語言定義直接導出到Ecode中使用的JSON文件格式。
可以使用提供的CLI參數來輕鬆擴展任何語言定義: --export-lang和--export-lang-path 。想要擴展或改進語言定義的用戶可以將其導出,對其進行修改並使用.json擴展名中的定義語言路徑。例如,要擴展語言vue ,您需要運行: ecode --export-lang=vue --export-lang-path=./vue.json ,退出導出的文件並將其移動到自定義語言路徑。
{
"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 " }
]
}有關更複雜的語法定義,請參閱此處由Ecode支持的所有母語的定義。
沒有特定順序列出:
作者不僅僅是對合作開放。邀請對該項目感興趣的任何人參加。許多功能仍在待處理中,隨著時間的流逝,項目將越來越多。請協作。 =)
開箱即用的編輯器中不會呈現一些Unicode字符。您需要更改默認的單拼字體,而有利於支持您想要看到的字符的字體。如果您想使用傳統的單型字體,您也可以更改默認的後備字體。默認的後備字體應涵蓋多種語言,但您可能需要一些特殊的字體(目前涵蓋CJK語言)。
*1當前EEP的特徵限制。
*2我不喜歡子像素暗示。但是我非常願意實施它,我並不是很精通此事,因此任何幫助都將不勝感激。
*3我真的不喜歡韌帶。我願意實施PRS。
*4我不是VIM用戶,也沒有資格實現VIM模式或任何模態編輯。歡迎PRS支持這一點。
*5更好的文本支持會隨著時間的推移而出現,但目前卻沒有急事。 EEPP架構準備添加Harfbuzz支持。
該編輯器具有Lite,Lite-XL,QTCreator和Sublime Text Editor的深刻根深蒂固的靈感。基於Lite/Lite-XL實現開發了幾個功能。某些功能可以直接從Lite移植:顏色式和語法高光模式(EEPP實現擴展了原始的Lite實現,以添加更多功能)。
Ecode主要用於Linux和MacOS,在Windows中未經過很好的測試。如果您發現編輯器的任何問題,請在此處報告。
這是一項正在進行的工作,無法保證穩定性。請不要將其用於關鍵任務。我每天都使用編輯器,對我來說足夠穩定,但要自負地使用它。
Niels Lohmann為現代C ++的JSON
尼爾·亨寧(Neil Henning)
所有的無味終端仿真器的作者
弗雷德里克·亞歷山大(Fredrik Aleksander)
RXI用於Lite
Franko和Lite-XL的所有合作者
安德烈亞斯·克林(Andreas Kling)
還有更多的人!
麻省理工學院許可證