ecode

SpartanJMIT活跃维护

基于 Lua 的轻量级跨平台代码编辑器,面向现代硬件优化响应速度与性能,内置调试器和 LSP 客户端,适合追求启动快、占用低的开发者。

Lightweight multi-platform code editor designed for modern hardware with a focus on responsiveness and performance.

ecode-0.9.0发布于 2026-10-08 03:32 UTC1,703star +6 / 7 天31fork同步于 2026-11-10 11:47 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/SpartanJ/eepp.git && cd eepp && make ecode
硬件要求按 README 说明

README 未给出具体显存或 CPU 要求,仅说明面向现代硬件,期望低文件系统延迟(SSD)、多核心和不错的 GPU 加速

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

轻量级多平台代码编辑器,基于硬件加速 GUI,主打响应速度与性能

基于 Lua 的轻量级跨平台代码编辑器,面向现代硬件优化响应速度与性能,内置调试器和 LSP 客户端,适合追求启动快、占用低的开发者。

核心能力

  • 基于 eepp GUI 实现硬件加速渲染
  • 支持 LSP 语义高亮与 100 多种语言语法高亮
  • 内置 LSP 客户端、DAP 调试器与 Git 集成
  • 用 .gitignore 自动过滤项目索引文件
  • 支持多光标、无限分屏与命令面板

容易踩的坑

源码不在本仓库,实际位于 eepp 仓库的 src/tools/ecode 目录;构建需先安装 GCC/Clang 和 libSDL2 开发库;Linter、LSP、调试器等插件依赖外部进程,需自行安装对应语言工具

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本ecode-0.9.0
  1. ecode-0.9.0ecode 0.9.0最新正式版2026-10-08 · 2026-10-08 03:32 UTC

    ecode 0.9.0 is one of the largest releases in the project's history. It significantly expands ecode's Git tooling, editor customization, terminal capabilities, debugging workflow, system integration, and performance, while also incorporating a large amount of stability and rendering work from eepp.

    Major additions include the ability to run the complete ecode GUI directly inside compatible terminals, VS Code-compatible user snippets, an integrated Git conflict resolver and Git History browser, a centralized searchable Settings interface, Zen Mode, persistent and navigable Markdown previews, configurable file associations, richer debugger layouts, Git diff indicators, improved font and text rendering controls, and a substantially upgraded integrated terminal.

    Highlights

    Run the full ecode GUI inside a terminal

    ecode can now run its complete graphical interface directly inside a terminal that supports the Kitty graphics protocol.

    Launch it with:

    EEPP_RUNTIME=terminal ecode
    

    This is not a separate TUI implementation or a simplified terminal frontend. ecode runs through the same eepp application, widget, editor, rendering, and input architecture used by the native desktop application.

    In terminal runtime mode, eepp renders the application into an offscreen framebuffer and presents the resulting RGB frames through the Kitty graphics protocol. Terminal input is translated back into the normal eepp input pipeline, including keyboard, mouse, focus, and resize events.

    The runtime includes:

    • Full ecode GUI rendering inside the terminal
    • Kitty graphics framebuffer presentation
    • Persistent Kitty image updates
    • Tile-based damage detection and unchanged-frame suppression
    • Adaptive zlib compression and chunked Base64 frame streaming
    • Kitty keyboard protocol input
    • SGR pixel mouse input
    • Focus events
    • Terminal pixel-size resize handling
    • Cross-platform terminal lifecycle support
    • Hidden native graphics-context hosts where required by the platform

    Because this is implemented at the eepp runtime layer rather than specifically in ecode, the same terminal runtime architecture can also be used by other eepp GUI applications.

    And, yes: ecode can now run inside ecode. Launching EEPP_RUNTIME=terminal ecode from ecode's own integrated terminal renders a fully interactive ecode instance inside the terminal of another ecode instance. Apart from being a fun demonstration, it is also a useful illustration of the fact that terminal mode is a real application runtime rather than a separate text-based frontend.

    This enables workflows that normally require a native graphical session while retaining the ergonomics of terminal environments, including terminal multiplexers, remote shells, and terminal-managed tabs and sessions.

    As far as we know, ecode is the first native GUI code editor to ship this capability as a built-in application runtime rather than through a separate terminal frontend or browser-based wrapper.

    https://github.com/user-attachments/assets/cf6d2987-7300-4832-abe5-d638b7fb57f1

    Zen Mode

    ecode now includes a Zen Mode for distraction-free editing.

    Zen Mode can be toggled from the View menu, through its keyboard command, or started directly with:

    ecode --zen-mode
    

    While active, ecode hides the side panel, status bar, menu controls, tab bar, and document information, leaving the editor content as the focus. Leaving Zen Mode restores the previously configured visibility of those interface elements.

    This also provides a much lighter single-file editing experience when ecode is launched from a file manager or used as a quick editor.

    SpartanJ/ecode#964

    VS Code-compatible user snippets

    ecode now supports user-defined snippets in addition to snippets provided by language servers.

    Snippets can be loaded from language-specific and global configuration, project-local .ecode files, and compatible `.vs

  2. ecode-0.8.1ecode 0.8.12026-07-21 · 2026-07-21 02:18 UTC
    查看更新说明

    Changelog

    ecode 0.8.1 adds LSP snippet support, a built-in scientific calculator, a new system font picker, configurable tab placement, date and time insertion, new syntax definitions, and numerous improvements to stability, performance, file dialogs, AI assistance, localization, and editor behavior.

    Highlights

    LSP snippet support

    ecode now expands snippets received through LSP completion responses.

    The new snippet editing mode supports:

    • Tab stops and final cursor positions
    • Linked placeholders
    • Placeholder choices
    • Snippet variables and transformations
    • Visual placeholder feedback
    • Navigation using Tab and Shift+Tab
    • Multi-cursor snippet insertion

    This currently applies to snippets provided by language servers. Support for user-defined snippets is planned separately.

    SpartanJ/ecode#111, SpartanJ/ecode#933

    Built-in scientific calculator

    The Universal Bar can now evaluate mathematical expressions directly, without opening a terminal or leaving the editor.

    It supports common arithmetic operations, constants, and scientific functions such as trigonometric functions, logarithms, powers, and square roots.

    SpartanJ/ecode#701

    New system font picker

    ecode now includes a full font picker dialog capable of discovering installed system fonts and selecting the font family, style, and size with a live preview.

    The new dialog is used by ecode’s font-selection settings and replaces the previous basic file-oriented font selection workflow.

    SpartanJ/ecode#903

    Configurable new-tab placement

    A new New Tab Position setting controls where newly opened tabs are placed.

    Available positions include:

    • After the active tab
    • Before the active tab
    • At the beginning of the tab bar
    • At the end of the tab bar

    The selected behavior now applies consistently to all newly created tabs.

    SpartanJ/ecode#904

    Insert date and time

    New editor commands can insert the current date, time, or date and time into the active document.

    The commands are available from Edit → Insert Date and can also be assigned custom keybindings.

    SpartanJ/ecode#173

    Editor improvements

    • Added optional documentation display to the LSP signature-help popup. Documentation is enabled by default. SpartanJ/ecode#911
    • Fixed a crash that could occur while displaying LSP signature help or autocomplete information. SpartanJ/ecode#902
    • Improved overriding of inherited LSP server configurations, including command_parameters, making it possible to customize language-specific configurations without modifying their parent template. SpartanJ/ecode#913
    • Fixed custom keybindings being overwritten or removed when ecode merged newly introduced default bindings into the user configuration. SpartanJ/ecode#914
    • Recently closed files now preserve their cursor and focus state when reopened during the same session. State is tracked independently for each editor view. SpartanJ/ecode#893
    • Fixed horizontal scrolling remaining available when line wrapping was configured to break at a specific column. SpartanJ/ecode#915
    • Improved the display of keyboard shortcuts in menus for commands that previously omitted them.
    • Fixed a use-after-free condition in the code-editor splitter.
    • Improved handling of mixed or unexpected line endings in files otherwise detected as CRLF.

    File dialogs

    • Pasting an absolute directory path into the file-name field of the folder chooser now navigates to and opens that directory when valid. SpartanJ/ecode#872
    • Improved file-picker behavior and integration throughout ecode.
    • Fixed row selection behavior when interacting with the file dialog’s text input.
    • Improved dropdown-list scrolling used by dialogs and other interface elements.

    AI Assistant

    • Fixed a crash that could occur while cancelling an AI Assistant request. SpartanJ/ecode#906
    • Improved AI Assistant request handling and error behavior.
    • Added further confi
  3. ecode-0.8.0ecode 0.8.02026-04-26 · 2026-04-26 17:44 UTC
    查看更新说明

    Changelog

    Added

    • Visual diff / patch / file comparison (#130)

    https://github.com/user-attachments/assets/28abd925-4618-4c03-b2b6-f84f692ebf31

    https://github.com/user-attachments/assets/d556acc4-e1d0-424c-b1e9-3856fac9c635

    https://github.com/user-attachments/assets/dfc4acb1-05ab-44fd-a58b-39350a007fb3

    • Auto-indent support (Settings -> Document -> Global Settings -> Auto-Indent -> Smart) (#294)

    • UI Themes based on the Syntax Color Scheme (Settings -> Window -> UI Theme -> Syntax Color Scheme) (#661)

    https://github.com/user-attachments/assets/16879b99-1a66-4fbe-88a3-8e1aa4b1bd95

    • Added Color Box support (Renders a background box of the parsed color directly behind the text itself) (#825)

    color box

    • Added live Markdown Preview support and markdown rendering support across the editor
    • Added Agent Client Protocol / ACP to the AI Assistant plugin

    • Native Linter/Formatter support for JSON (#828)

    • Native Linter/Formatter support for YAML (#829)

    • Code highlighting for WebAssembly (#842)

    • Code highlighting for WIT (Web Assembly Interface Types) (#844)

    • Code highlighting for CPS (#851)

    • Added clear-indentation command (#854)

    • Option to open new terminals in the active document’s directory (#857)

    • Added code folding for XML + HTML (#870)

    • Added terminal text reflow support

    • Add woff2 font format support

    Improved

    • Do not purge erroneous config in plugins (#827)

    • Select multiple items in side panel treeview (#869)

    • Directory chooser: pasting full path does not use it (#872)

    • About dialog: can't be closed by key press (#873)

    • Improved documentation visibility, now will find the best place possible to render and auto-adjust its width (#874)

    https://github.com/user-attachments/assets/3a229691-61c3-40ab-afd9-29889a9cbdf5

    • Improved signature helper positioning and now allows to render in multiple lines (enabled by default)

    https://github.com/user-attachments/assets/9ea34720-dfe4-48d7-aed6-341061c0ac9d

    • Expose an environment variable to let shells detect the embedded terminal (#878)

    • Auto-Close brackets improvements:

      • Word boundary behavior: Typing an opening bracket directly preceding an alphanumeric character prevents auto-closing. (e.g. typing ( before word correctly inserts ( without closing it).
      • Whitespace boundary behavior: Typing an opening bracket before a space triggers normal auto-closing.
      • Forward unbalanced brackets: Typing an opening bracket when there's an unmatched closing bracket ahead on the same line prevents auto-closing (so typing ( when the line is () ) doesn't insert an extra )).
      • Balanced brackets: Regular auto-closing when brackets are completely matched.
      • Quote balancing: If the line already has balanced quotes and your cursor is right before a quote, typing a quote will just overwrite/step over the right quote instead of adding a new pair.
    • Major refactor in AI Asssitant plugin (improved UX)

    • Added tilde support for files and folders passed as parameters from the CLI in ecode

    • Terminal scroll position does not change on terminal resize

    • Improved crash stack-traces saving on Windows (#835)

    • Greatly improved crash window on Windows, now displays the stack-trace and let the user go to report it

    • Fix text-selection in opencode and many other CLI applications

    • Allow to load multiple files and folders from the CLI

    • Update app title when focusing any new tab that it's not an editor or a terminal

    Fixed

    • Press backspace button on collapsed code blocks crashed ecode (#836)

    • Allow ft in palette outside of projects (#853)

    • Fix copy paste in tree-view (#855)

    • Fix crea

  4. ecode-0.7.4ecode 0.7.42026-01-11 · 2026-01-11 22:05 UTC
    查看更新说明

    Changelog

    Added

    • Added text shaping and text segmentation support.
    • Added duplicate-line-or-selection text document command.
    • Added an option to reuse the previously launched terminal (#710).
    • Added the option to link files in AI Assistant chat (instead of attaching directly).
    • Added terminal cursor styles selection at Settings -> Terminal -> Cursor Styles.
    • Added scrollbar type and mode options for the terminal.
    • Added an option to configure the Settings -> Window -> "Use editor font in input fields" (this is enabled by default but not always convenient).
    • Added an option to "Use status bar terminal" in the Run configuration.
    • Light/dark theme now follows the system default configuration (#754).
    • Terminal status bar now is a tab widget and can create any number of terminals.
    • Added an option to configure to open new terminals in status bar panel (Settings -> Terminal -> New Terminal Behavior.
    • Added option to force opening documents in main split (Settings -> Window -> Open Documents in Main Split).
    • Added syntax highlighting for Vim Language, FreeBASIC, QB64.
    • Added strip ANSI Codes option in build and run settings (for the build and run outputs).
    • Added an option to set to always open terminal in exclusve mode (#800).
    • Added reset-global-file-associations (Window -> Reset Global File Associations) and reset-project-file-associations (Window -> Reset Project File Associations) commands to reset language extension priorities for languages that can be represented by more than one language grammar.
    • Added support for maximizing the current tab widget (commands: maximize-tab-widget and restore-maximized-tab-widget), it can also be triggered right clicking a tab -> Maximize Tab Widget (#651).
    • Added an option to reset panel layout (#675).

    Improved

    • AI Chat UI has been slightly improved / redesigned.
    • Improve editor "add-cursor-above" and "add-cursor-below" behavior.
    • Grammars in many languages: C, C++, C#, Objective-C, Objective-C++, Markdown, PowerShell, SmallBasic, and more.
    • Terminal emulator capabilities.
    • File Save now defaults to the most recent save location (#734).
    • Side Panel: right click on a directory and open it on new window (#736).
    • Side Panel right click context menu improvements (#712).
    • Side Panel: Right click on a sub-directory and "Find in folder..." (#720).
    • LM Studio models are now supported in AI Assistant plugin.
    • Show the ecode version on the Welcome Screen (#752).
    • Improved drop-down lists width in several locations.
    • Add auto-scroll when selecting and mouse cursor moves out of vertical view range in terminal.
    • Improve bitmap fonts support.
    • Enabled syntax highlighting in auto-complete list by default (for the newly created profiles).
    • Allow to expand/contract status bar panel.
    • Language extension priorities are now per-project (this is when you pick which language grammar use when more than one is available for an specific file extension).
    • Display a download progress window when download-file-web is used. Also support loading images and sounds from downloads.

    Fixed

    • Many fixes for the LSP plugin implementation which brings better general support to LSPs, which also fixes #694, #742 and #766.
      • Implemented workspace/didChangeConfiguration command in LSP client. Now it's possible to set LSP settings for this command (#694).
      • Prevent dead-locks in LSP very heavy usage scenarios
    • Many fixes to the terminal emulator (closes issues #740 and #800).
      • In TerminalEmulator allow to select text outside the visible range.
      • Fix minor bug when changing terminal font and creating a new terminal was still using the old font.
      • Terminal: multiple issues with the copy/paste operations fixed. Now uses the primary selection when corresponds (middle mouse click, shift+insert). Fixed paste operation, it does not hang the app, pastes instantly contents and behaves exactly the same as other
  5. ecode-0.7.3ecode 0.7.32025-10-17 · 2025-10-17 03:43 UTC
    查看更新说明

    Changelog

    Added

    • Drag & drop to move files/folders in the sidebar, plus copy/paste support for file management (#71).

    https://github.com/user-attachments/assets/8fb05963-8406-4cd7-8737-5ebf7ecee96d

    • Improved image viewer Images are now opened as in a gallery of images, you can change between the images in the same directory and zoom, rotate and mirror them (#96).

    https://github.com/user-attachments/assets/ba176d62-ef73-4a57-901f-28dacbd5f057

    • Audio preview support (#96).

    https://github.com/user-attachments/assets/8f374b9e-c2f2-4981-b35d-bc8457797a27

    • Support for native file dialogs: This is not enabled by default given that it's too new, but it can be activated at Settings -> Window -> Enable Native File Dialogs (#653).

    https://github.com/user-attachments/assets/68a00178-30c8-4183-922c-47ba25d1e7d0

    • Added spell checker plugin.
    • Added custom mouse gestures bindings support (#602).
    • Added an option to reuse the first instance instead of the last when opening files (#659).
    • Open Project in New Window action (#654).
    • Feature to duplicate the current buffer (#632).
    • Move Tab functionality to reorder tabs in the editor (#630).
    • Added “Close All Tabs” action to quickly clean the workspace (#664).
    • New option to open recent projects directly from the welcome screen (#658).
    • Added command palette action to reload the window (#656).
    • Added a new option to set files associations in projects (#585).
    • Added .m4, configure.ac and configure.in syntax highlighting support (#564).
    • Added gnuplot scripts syntax highlighting support (#613).
    • Added Objective C++ syntax highlighting support (#616).
    • Added Universal Configuration Language syntax highlighting support (#617).
    • Added Assembly (ARM) syntax highlighting support (#78).
    • New JEdit syntax color scheme (#660).
    • Added a visual feedback when an open buffer has been deleted from disk (#608).
    • Added automatic detection of the language used in .h files and the possibility of picking the language manually if necessary (Settings -> Folder/Project Settings -> Treat .h files as...) (#614).
    • Command-line option --no-plugins to launch without plugins (#635).
    • Command-line option --profile to start with a specific profile (#634).
    • Added command toggle-block-comment #604.
    • Added commands convert-indentation-to-tabs and convert-indentation-to-spaces (#667).
    • Added command delete-to-start-of-line (#668).
    • Added command join-lines ([#669](https://gi

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    ecode is a lightweight multi-platform code editor designed for modern hardware with a focus on responsiveness and performance. It has been developed with the hardware-accelerated eepp GUI, which provides the core technology for the editor. The project comes as the first serious project using the eepp GUI, and it's currently being developed to improve the eepp GUI library as part of one of its main objectives.

    Screenshots

    ecode - Code Editor

    For more screenshots checkout running on macOS, running on Windows, running on Haiku, low dpi, code completion, terminal, file locator, file formats, global find, global replace, linter.

    Notable Features

    • Lightweight
    • Portable
    • Uncluttered GUI
    • Syntax Highlighting (including nested syntax highlighting, supporting over 100 languages and LSP semantic highlighting)
    • Multi-cursor support
    • LSP support
    • Debugger support via Debug Adapter Protocol
    • Git integration
    • Terminal support
    • Command Palette
    • Auto-Completion
    • Customizable Linter support
    • Customizable Formatter support
    • Customizable Color-Schemes
    • Customizable keyboard bindings
    • Configurable build pipelines
    • Fast global search (and replace)
    • AI Assistant plugin with ACP support
    • Minimap
    • Unlimited editor splitting
    • Easily extendable language support
    • Customizable and scalable (non-integer) GUI (thanks to eepp GUI)
    • Dark & Light Mode
    • File system Tree View (with real-time file system changes)
    • Smart hot-reload of files
    • Folders as Projects with .gitignore support *
    • Per Project Settings
    • Smart and fast project file locator
    • Multiline search and replace
    • Project/Folder state persist between sessions
    • Soft-wrap
    • Code-folding
    • Session Snapshot & Periodic Backup
    • Perl Regular Expressions and Lua pattern searches support
    • Snippets support
    • Plugins support (linter, spell checker, LSP, DAP, Git, and more).

    Folder / Project Settings (*)

    In ecode, folders are treated as projects, similar to other code editors. However, ecode distinguishes itself by using the repository's .gitignore file as a project configuration to streamline file management.

    Automatic File Filtering

    ecode automatically excludes files listed in the .gitignore file when indexing project files. This ensures that only relevant files are considered for project-wide searches and navigation, resulting in faster and more accurate search outcomes.

    Customizing File Inclusion

    To override .gitignore filtering, ecode supports two configuration files in the .ecode/ subfolder:

    • .prjallowed: Add glob patterns to include files ignored by .gitignore, making them available for indexing and searching.
    • .prjdisallowed: Add glob patterns to exclude files that are not ignored by .gitignore, providing precise control over file visibility.
    Supported File Types

    By default, ecode indexes only file types it officially supports. Unsupported files are excluded unless their patterns are explicitly added to the .ecode/.prjallowed file.

    This approach ensures an efficient and tailored project management experience with flexible customization options.

    Philosophy

    Some points to illustrate the project philosophy:

    • Extendable functionality but in a controlled environment. New features and new plugins are accepted, but the author will supervise any new content that might affect the application quality and performance.
    • Load as few files and resources as possible and load asynchronously as many resources as possible. Startup time of the application is considered critical.
    • Use the machine resources but not abuse them.
    • The editor implementation will try to prioritize performance and memory usage over simplicity.
    • Developed with modern hardware in mind: expected hardware should have low file system latency (SSD), high cores count and decent GPU acceleration.
    • Plugins and non-main functionality should never lock the main thread (GUI thread) or at least should block it as little as possible.
    • Terminals are part of the developer workflow.

    Live Demo

    ecode can be compiled to WASM and run in any modern browser. There are no plans to focus the development on the web version (at least for the moment) since there are plenty of good solutions out there. But you can give it a try:

    Demo here

    Demo Clarifications

    • You'll need a modern browser with SharedArrayBuffer support
    • Linter, Formatter, LSP Client and Debugger plugins won't work since they work by running other processes (except for the native formatters that are available)
    • WebGL renderer isn't optimized, so it's not as fast as it could/should be (still, performance is good in chromium based browsers)
    • Demo is designed for desktop resolutions (mobile is unusable, IME keyboard won't show up due to an emscripten limitation)

    Source Code

    Currently, the source code is located at the eepp project repository. ecode editor source is located at src/tools/ecode. ecode is being used to actively improve and iterate the eepp GUI library. At some point, it will be migrated to this repository. The ecode repository should be used for issues and documentation. PRs for ecode will be accepted at the eepp repository.

    Build from Source

    There are scripts for each supported platform ready to build the application. For Linux and macOS it is trivial to build the project, you'll just need to have GCC/Clang installed and also the development library from libSDL2. Windows build script is currently a cross-compiling script and it uses mingw64. But it also can be easily built with Visual Studio and libSDL2 development libraries installed. For more information on how to build manually a project please follow the eepp build instructions. The project name is always ecode (so if you are building with make, you'll need to run make ecode).

    • Linux build script can be found here. Running build.app.sh will try to build the AppImage package and tar.gz with the compressed application. ecode folder will contain the uncompressed application.
    • macOS build script can be found here. Running build.app.sh will create ecode.app. Run create.dmg.sh to create the dmg file. ecode.app folder will contain the uncompressed application.
    • Windows cross-compiling build script can be found here. Running build.app.sh will create a zip file with the zipped application package. ecode folder will contain the uncompressed application. To build from Windows follow the instructions here.
    • FreeBSD build script can be found here. Running build.app.sh will try to build a tar.gz with the compressed application. ecode.app folder will contain the uncompressed application.
    • Haiku build script can be found here. Running build.app.sh will try to build a tar.gz with the compressed application. ecode.app folder will contain the uncompressed application.

    Nightly Builds

    Nightly builds are being distributed here for the more impatient users. ecode is being developed actively, nightly builds may not be stable for daily usage unless there's a pending unreleased fix required for the user.

    Plugins

    Plugins extend the base code editor functionality. Currently all plugins are enabled by default, but they are optional and they can be disabled at any time. ecode implements an internal protocol that allow plugins to communicate with each other. The LSP protocol is going to be used as a base to implement the plugin communication. And, for example, the Linter plugin will consume the LSP to improve its diagnostics. Also the Auto Complete module will request assistance from the LSP, if available, to improve the completions and to provide signature help.

    Linter

    Linter support is provided by executing already stablished linters from each language. ecode provides support for several languages by default and can be extended easily by expanding the linters.json configuration.

    For more information read the linter documentation.

    LSP Client

    LSP support is provided by executing already stablished LSP from each language. ecode provides support for several languages by default and can be extended easily by expanding the lspclient.json configuration.

    For more information read the lsp client documentation.

    Debugger

    Debugger support is provided by the implementation the Debug Adapter Protocol. ecode is able to debug any language implementing this protocol, although the protocol is generic sometimes requires to support some of the languages some specific adaptation is needed, so initially the support is limited to the languages mentoined in the support list.

    For more information on how to use the debugger read the debugger documentation.

    Git integration

    ecode provides some basic Git integration (more features will come in the future). Its main purpose is to help the user to do the most basics operations with Git. Some of the current features supported: git status and stats visualization (files states), commit, push, checkout, pull, fetch, fast-forward merge, creating+renaming+deleting branches, managing stashes. All stats will be automatically updated/refreshed in real time. There's also some basic configuration available.

    For more information read the git integration documentation.

    Auto Formatter

    The formatter plugin works exactly like the linter plugin, but it will execute tools that auto-format code. ecode provides support for several languages by default with can be extended easily by expanding the formatters.json configuration.

    For more information read the formatter documentation.

    Auto Complete

    The auto-complete plugin is in charge of providing suggestions for code-completion and signature help.

    For more information read the auto-complete documentation.

    AI Assistant

    The AI Assistant is a simple but effective LLM Chat UI. You'll be able to chat with different models from within the editor.

    For more information read the AI assistant documentation.

    Spell Checker

    The spell checker plugin uses the typos specialized tool for code spell checking.

    For more information read the Spell Checker documentation.

    XML Tools

    The XML Tools plugin (disabled by default) provides some nice to have improvements when editing XML content.

    For more information read the xml tools documentation.

    Plugins configuration files location

    ecode respects the standard configuration paths on each OS:

    • Linux: uses XDG_CONFIG_HOME, usually translates to ~/.config/ecode/plugins
    • macOS: uses Application Support folder in HOME, usually translates to ~/Library/Application Support/ecode/plugins
    • Windows: uses APPDATA, usually translates to C:\Users\{username}\AppData\Roaming\ecode\plugins

    Plugins important behaviors

    All plugin configurations are designed to be overwritable by the user. This means that the default configuration can be replaced with custom configurations from the user. For example, if the user wants to use a different linter, it just needs to declare a new linter definition in its own linter configuration file. The same applies to formatters and LSPs servers. Plugins will always implement a "config" for plugins customization, and will always implement a "keybindings" key to configure custom keybindings.

    UI Customizations

    ecode is highly customizable and extendable thanks to its several configuration files. If you're interested in creating new color schemes for the editor or terminal, or in creating new UI themes please check our documentation:

    For more information read the UI Customization documentation.

    Language support

    ecode is constantly adding more languages support and also supports extending it's language support via configuration files (for every feature: syntax highlighting, LSP, linter and formatter).

    Language support table

    LanguageHighlightLSPLinterFormatterDebugger
    .htaccess✓NoneNoneNoneNone
    .ignore file✓NoneNoneNoneNone
    [x]it!✓NoneNoneNoneNone
    ada✓ada_language_serverNoneNoneNone
    adept✓AdeptLSPNoneNoneNone
    angelscript✓NoneNoneNoneNone
    arm assembly✓NoneNoneNoneNone
    awk script✓NoneNoneNoneNone
    bat✓NoneNoneNoneNone
    bazel✓NoneNoneNoneNone
    bend✓NoneNoneNoneNone
    blade✓NoneNoneNoneNone
    blueprint✓NoneNoneNoneNone
    bolt✓NoneNoneNoneNone
    brainfuck✓NoneNoneNoneNone
    buzz✓NoneNoneNoneNone
    c✓clangdcppcheckclang-formatgdb / lldb-dap
    c2✓NoneNoneNoneNone
    c3✓c3-lspNoneNoneNone
    carbon✓NoneNoneNoneNone
    clojure✓clojure-lspNoneNoneNone
    cmake✓neocmakelspNoneNoneNone
    cmakecache✓NoneNoneNoneNone
    covscript✓NoneNoneNoneNone
    cpp✓clangdcppcheckclang-formatgdb / lldb-dap
    crystal✓crystallineNoneNoneNone
    csharp✓OmniSharpNoneNoneNone
    css✓emmet-language-serverNonenativeNone
    csv✓NoneNoneNoneNone
    curry✓NoneNoneNoneNone
    d✓serve-dNoneNonegdb
    dart✓dart language-serverNoneNonedart
    diff✓NoneNoneNoneNone
    dockerfile✓docker-langserverNoneNoneNone
    ec✓NoneNoneNoneNone
    elena✓NoneNoneNoneNone
    elixir✓elixir-lsNoneNoneNone
    elm✓elm-language-serverNoneNoneNone
    environment file✓NoneNoneNoneNone
    fantom✓NoneNoneNoneNone
    fennel✓NoneNoneNoneNone
    fixscript✓NoneNoneNoneNone
    flow9✓NoneNoneNoneNone
    fortran✓fortlsNoneNonegdb
    freebasic✓NoneNoneNoneNone
    fstab✓NoneNoneNoneNone
    gdscript✓NoneNoneNoneNone
    gemini✓NoneNoneNoneNone
    gleam✓NoneNoneNoneNone
    glsl✓glsl_analyzerNoneNoneNone
    gn✓NoneNoneNoneNone
    gnuplot✓NoneNoneNoneNone
    go✓goplsNonegoplsgdb / delve
    graphql✓NoneNoneNoneNone
    groovy✓NoneNoneNoneNone
    hare✓NoneNoneNoneNone
    haskell✓haskell-language-serverhlintormoluNone
    haxe✓NoneNoneNoneNone
    hlsl✓NoneNoneNoneNone
    html✓emmet-language-servernativeprettierNone
    idl✓NoneNoneNoneNone
    ini✓NoneNoneNoneNone
    ispc✓NoneNoneNoneNone
    jai✓NoneNoneNoneNone
    janet✓NoneNoneNoneNone
    java✓jdtlsNoneclang-formatNone
    javascript✓typescript-language-serveroxlintprettiernode
    javascriptreact✓typescript-language-serverNoneNoneNone
    json✓NonenativenativeNone
    jule✓NoneNoneNoneNone
    julia✓LanguageServer.jlNoneNoneNone
    koka✓NoneNoneNoneNone
    kotlin✓kotlin-language-serverktlintktlintNone
    l.b. stanza✓NoneNoneNoneNone
    latex✓texlabNoneNoneNone
    lisp✓NoneNonerosNone
    lobster✓NoneNoneNoneNone
    lua✓lua-language-serverluacheckNoneNone
    m4✓NoneNoneNoneNone
    makefile✓NoneNoneNoneNone
    markdown✓marksmanNoneNoneNone
    meson✓NoneNoneNoneNone
    modula2✓NoneNoneNoneNone
    modula3✓NoneNoneNoneNone
    moonscript✓NoneNoneNoneNone
    msbuild solution✓NoneNoneNoneNone
    nelua✓NoneneluaNoneNone
    nim✓nimlspnimNoneNone
    nix✓NoneNoneNoneNone
    objc✓NoneNoneNoneNone
    objeck✓NoneNoneNoneNone
    objective-cpp✓clangdNoneclang-formatNone
    ocaml✓OCaml-LSPNoneNoneNone
    odin✓olsNoneNonelldb-dap
    openscad✓NoneNoneNoneNone
    pascal✓NoneNoneNonegdb
    perl✓PerlNavigatorNoneNoneperl-ls
    php✓phpactorphpNoneNone
    pico-8✓NoneNoneNoneNone
    pkg-config✓NoneNoneNoneNone
    plaintext✓NoneNoneNoneNone
    po✓NoneNoneNoneNone
    pony✓NoneNoneNoneNone
    postgresql✓NoneNoneNoneNone
    powershell✓NoneNoneNoneNone
    python✓pylspruffruffdebugpy
    qb64✓NoneNoneNoneNone
    qbs✓NoneNoneNoneNone
    qmake✓NoneNoneNoneNone
    r✓r languageserverNoneNoneNone
    racket✓racket-langserverNoneNoneNone
    rave✓NoneNoneNoneNone
    rc script✓NoneNoneNoneNone
    rescript✓NoneNoneNoneNone