Skip to content

Releases: SpartanJ/ecode

ecode 0.7.3

17 Oct 03:43

Choose a tag to compare

Changelog

Added

  • Drag & drop to move files/folders in the sidebar, plus copy/paste support for file management (#71).
drag_and_drop_files.mp4
  • 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).
image_viewer.mp4
  • Audio preview support (#96).
audio_support.mp4
  • 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).
native_dialogs.mp4
  • 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).
  • Added commands move-to-previous-paragraph, move-to-next-paragraph, select-paragraph, delete-paragraph (#670).
  • Added commands fold, unfold, toggle-fold, fold-all, unfold-all (#683).
  • Crash reports are now stored inside the user profile directory (#639).
  • Added a way to quit the shell and close the terminal tab in one step (Settings -> Terminal -> Close Terminal Tab on Exit) (#643).
  • Better default behavior when closing a terminal tab with a running command (Settings -> Terminal -> Warn Before Closing Tab) (#644).

Improved

  • macOS startup time
  • Internal windows shadows

Fixed

  • A lot of invalid memory access bugs that could provoke crashes (a lot of work has been put into this).
  • Segmentation fault when working with split panes (#650).
  • Fixed issue where plugins could crash on reload.
  • Fixed a crash when typing > at beginning of line in front of another character #622.
  • Fix possible dead-lock while closing / destructing in LinterPlugin.
  • Fixed a bug when dragging of zero-sized files into ecode (#623).
  • Fixed a bug where there were duplicate entries in the command palette after filtering (#680).

ecode 0.7.2

20 Jul 15:18

Choose a tag to compare

Added

  • Syntax highlighting for:
  • Support for inheriting patterns and repositories from other syntax definitions (#553)
  • .ecode/.prjdisallowed support to disallow files allowed in the project (#563)
  • Registered additional file extensions:
  • "Buffer Only Mode" for Global Search & Replace (#545)
bufferonlyreplace.mp4
  • Tab jump modes, including a Tab Switcher (#469)
tab-switcher.mp4
  • Font hinting and anti-aliasing configuration options
  • Option to hide the Tab Bar (#477)
  • "Build & Run" and "Build & Debug" buttons
  • DAP multi-session support and Node.js debugging support
  • Support for setting environment variables in the terminal process
  • WebP image format support (#483)
  • Basic TextMate grammar support for $language.tmLanguage.json files
  • Typst LSP support
  • Option to limit auto-completion to current document symbols (#482)
  • AI Assistant remembers last used model
  • PATH extraction from default SHELL for Linux and BSD
  • Warning for missing binary paths in project build steps
  • Exit code display on process run failure
  • German translation updates (SpartanJ/eepp#107, #115)
  • Rave syntax updates: more SIMD types, fixed typos, added builtins (#114)
  • Ü syntax highlighting improvements (#116)

Improved

  • Handling of binary files opened via drag and drop or tree-view (#589)
  • Syntax Tokenizer performance
  • YAML, Vala, and CMake syntax highlighting
  • LSP restart stability
  • MenuBar buttons spacing and sub-menu positioning (#535)
  • oxlint set as default JS/TS linter
  • German translation retrofitted for missing keys (#107, #115)

Fixed

  • Signature help display bug
  • LSP mouse hover conflict with linter errors
  • Emscripten file parameter parsing
  • Tab key-press not switching widgets with non-main modifiers
  • Menu bar pop-up not hiding properly
  • TextDocument creating unnecessary undo/redo history on cut
  • Theme switching and cached properties
  • Sub-menu positioning
  • Input methods relying on OpenKey, Unikey, etc (#478)
  • Crash when closing ecode with duplicate tab names on Windows
  • Auto-close brackets with multiple cursors
  • Folding ranges crash
  • Tab-stops wrapping
  • IME location updates during file loading (SpartanJ/eepp#111)
  • Highlighting of if() as functions in C, C++, JS, and TS
  • lldb path hack for macOS
  • PATH resetting
  • LSPClientServerManager locks
  • malloc_trim usage when unavailable
  • CreateProcessW usage and absolute path resolution on Windows (#461)

Changed

  • Removed "Flash Cursor" feature
  • Syntax Definitions loaded on-demand to reduce memory usage and load times
  • And much more, there were too many changes too not forget about some of them

Note for macOS Users

To run ecode.app on macOS Sequoia, you need to perform a one-time step due to Apple's security requirements for unsigned apps:

  1. Copy ecode.app to /Applications.
  2. Open Terminal and run:
    xattr -cr /Applications/ecode.app
    
  3. Launch ecode.app. If prompted, approve it in System Settings > Privacy & Security.

We're working on signing the app with an Apple Developer ID for a smoother experience in future updates.

ecode 0.7.1

13 Apr 20:03

Choose a tag to compare

New Features

  • AI Assistant Plugin: (Docs) Interact directly with a wide range of local and remote Large Language Models (LLMs) from providers like Google, xAI, OpenAI, Anthropic (Claude), Mistral, Ollama, and LM Studio. This initial version provides a dedicated chat UI within the editor. Future updates will focus on deeper project integration (e.g., context awareness).
2025-04-12.20-40-56.mp4
  • Discord Rich Presence Plugin: Showcase your coding activity in Discord! This plugin integrates with your Discord client to display your current file and status. (Huge thanks to @bytequill for this contribution!)

  • Expanded Syntax Highlighting: Added support for 17 new languages: Blade, C3, CovScript, Fennel, Flow9, Janet, Jule, Lisp, Modula 2, Modula 3, Rave, Squirrel, Svelte, V1, YueScript, Zephir, and Ü.

  • New Language Server Protocol (LSP) Support: Enhanced code intelligence (completion, diagnostics, etc.) for C3, Lisp, Markdown, and Ü.

  • Debugging Support: Added debugging capabilities for the Ü language.

  • Tab Stop Alignment: Implemented proper tab stop support, ensuring consistent alignment when using tab characters (SpartanJ/ecode#55).

  • Document Transformation Commands: Added commands to quickly transform text:

    • escape / unescape
    • to-base64 / from-base64
      (These operate on the current selection or the entire document if no text is selected).
  • Improved Fuzzy Matching: Introduced a new, more effective fuzzy matching algorithm (inspired by Sublime Text's approach) for significantly better results when searching for files, symbols, commands, etc.

  • Open All Files in Folder: Added a convenient context menu option (Right-click > Open All Files in Folder) in the file tree view.

Improvements

  • Documentation: Significantly improved documentation coverage and clarity across the project.

  • Git Plugin: Enhanced stability and functionality. For example, the branch list now indicates if a tracked remote branch no longer exists (origin gone).

  • Emoji Rendering: Color emoji fonts now render correctly with the proper size and color, even within monospaced text contexts.

  • Performance: Optimized whitespace rendering performance on wrapped lines, making it as fast as non-wrapped lines.

  • User Experience: Improved handling of user-defined fallback-font settings, ensuring the default fallback font is always loaded reliably.

  • Build System: Addressed issue where specifying a non-existent working directory for a build step was not handled gracefully (SpartanJ/ecode#432).

Bug Fixes

  • Fixed text wrapping not updating correctly after zooming when 'Wrap to Line Breaking Column' was enabled (SpartanJ/ecode#390).

  • Fixed a crash when using 'Cursor Undo' (Ctrl/Cmd+U) with only one cursor present (SpartanJ/ecode#389).

  • Fixed a potential crash when pasting from an empty clipboard (SpartanJ/ecode#428).

  • Fixed a crash when running ecode in terminal mode (ecode -t) (SpartanJ/ecode#391).

  • Fixed the file tree view not updating correctly after renaming a folder.

  • Fixed numerous issues within the debugger plugin for increased stability.

  • Fixed the debugger gutter background sometimes not rendering correctly.

  • Fixed the horizontal scrollbar sometimes appearing unnecessarily on wrapped documents.

  • Fixed an issue where syntax highlighting could be incorrect on the first line of a file.

  • Fixed issues with project search path filters not applying correctly.

  • Fixed a rare issue preventing scrollbars from appearing in the project view.

  • Includes numerous other minor stability improvements and fixes.

ecode 0.7.0

09 Feb 16:19

Choose a tag to compare

  • Added debugging support via a new plugin that implements the Debug Adapter Protocol. This is the first revision of the protocol implementation so can't promise it's perfect.
2025-02-05.23-55-41.mp4
  • Added: Allow to split editors views by dragging tabs into the tab widget corners.
2025-02-09.13-21-47.mp4
  • Added Ada syntax highlighting and LSP support.
  • Side panel tabs order now is persisted between sessions.
  • Fixed several bugs with multi-cursor editing (#365).
  • Fixed terminal not working in Ubuntu Unity 24.10 (#366).
  • ecode now will load if exists a user provided CSS stylesheet from the ecode configuration path ~/.config/ecode/style.css (#370), like Firefox userChrome.css.
  • Fixed a some styling issues when switching color-scheme (#371).
  • Fixed / improved line comments toggle (#384).
  • Fixed a crash when clearing menu items (#386).
  • Fixed window title color not matching user configuration on Windows 11 (#385).
  • Fixes for file extensions (improperly filtering file extensions).
  • Fixes .txt files not being added into the project files.
  • Fixed highlighting issue in Javascript and TypeScript.
  • Fixed a rare crash in the LSP.
  • Fixed a crash when trying to highlight matching bracket where its line was hidden.
  • Fixed enable/disable vertical scrollbar in editor not updating line-wrap.
  • Fixed incorrectly adding watches of subfolders of currently loading directory creating the issue of not actually observing some folder files changes.
  • Fixes in Git plugin staging.
  • Fixed broken multiline function signature (#388).
  • Line-wrap fix performance issue with updates over extremely long lines.
  • Added incognito option parameter (#373).
  • Added "delete-to-end-of-line" to text document commands (not binded by default).
  • Added ${current_doc_dir} build variable (issue #383).
  • Added: "flash cursor" command, this displays an animation to easily locate the current cursor, you can press 5 control (or add a keybinding for "flash-cursor" command), it can also be disabled in global document settings.
  • Fixes in global search to avoid searching text in images.
  • Fixed unexpected tab bar scrolling while clicking on a tab.
  • Unactive tabs now shade text color a little bit.
  • Fixed some window size issues on macOS.
  • Speed up load times by loading asynchronously some resources before window creation and avoiding creating some of the largest submenues in settings menu.
  • Fixed multi-line search in buffer bug.
  • Added: display new line character in selection.
  • Worked on several performance optimizations.
  • Several minor fixes hard to mention.
  • Cleaned up the project documentation

ecode 0.6.4

01 Dec 19:02

Choose a tag to compare

Yet another small release with bug fixes and performance improvements

  • Added OCaml syntax highlighting support (thanks to @mdales!) and ocaml-lsp support.
  • Added Julia LSP support using LanguageServer.jl.
  • Added Fortran LSP support using fortls, plus some syntax highlighting improvements.
  • Added perl LSP support using PerlNavigator, plus some syntax highlighting improvements..
  • Added double click over the tab bar (on an empty space) will now open a new untitled document (issue #361).
  • Added animated gif support in image previews.
  • Allow to locate and open image files from the universal locator.
  • Optimized multiple cursors selection (issue #356).
  • Optimized how the file system directory is fetched when loading a single file from file system, now it will load asynchronously, avoiding hanging the application on very large directories (issue #357).
  • Fixed using new line with multi-cursors in the same line (#364).
  • Fixed linter errors and warnings being incorrectly positioned when the line was wrapped.
  • Fixed how EINTR signal is handled, fixes LSP and Git plugins on Haiku (issue #83).
  • Fixed selected text being deleted when switching to another application on some Linux window managers (issue #355).
  • Fixed IME suggestions positioning.
  • Fixed a rare crash when loading empty file from disk.
  • Fixed a rare dead-lock when trying to rise the window on Linux.
  • Fixed a crash when opening a file from the "Build Issues" view.
  • Fixed a crash when re running "Build & Run" when a "Run" application process is still running.
  • More general optimizations related to heap allocs (to improve general rendering performance).

ecode 0.6.3

03 Nov 16:27

Choose a tag to compare

This release is a hot-fix for a crash that can happen very easily while switching folders or any multi-threaded event.

Please read 0.6.2 release logs for more information about what's new.

ecode 0.6.2

30 Oct 04:28

Choose a tag to compare

Another small release with some nice improvements and many important fixes.

  • When files are opened from a file explorer or from the command line and there is currently a running ecode instance files will be loaded in the last ecode instance instead of launching a new ecode instance. Option to toggle this is at Settings -> Window -> Open Files in New Window, which is disabled by default (issue #58).
  • Added Regular Expressions support in all searches (document and global) (issue #147).
  • Added Regular Expressions support in syntax highlighter (issue #225).
  • Display subfolder hint/info when two or more files have the same file name but different paths.

subfolder-hint

  • ecode now offers nightly builds available from here.
  • ecode releases can now be triggered from Github Actions, simplifying the work required for new releases (this will probably translate in more frequent releases).
  • Improvements in syntax highlighting for CMake files and Makefiles.
  • Improved theming support, now changing themes during the same instance should work correctly (before this some colors glitched and were not applied properly, a restart was needed).
2024-10-30.00-43-06.mp4
  • Added a glob match for path and extension search in the "Locate" bar (write "g your_glob_match") (issue #336).
  • Added keybindings to the Auto Complete plugin. Now user can customize how auto-complete is triggered and consumed (issue #336).
  • Improvements in command palette fuzzy search.
  • Added a new document command to select a whole line ("select-single-line"), this differs from the normal "select-line" command that will select only the contents in the line without the last new line character (issue #340).
  • Added support for Windows Shortcuts (.lnk files).
  • Added Windows arm64 builds.
  • Updated German translation (thanks to @NullPlane).
  • Fixed a critical crash ocurred when the application was run on low-memory scenarios due to an invalid memory access, it was critical when ecode was run from Haiku (issue #292).
  • Fixed a critical crash when files were closed during its loading (issue #330).
  • Fixed cursor selection not selecting while hovering over minimap (issue #333).
  • Fixed general performance issues in Haiku (this was causing huge load times).
  • Fixed Recent Files and Recent Folders buttons in Welcome Screen not being reactive (issue #339).
  • Fixed a crash in build settings when adding or removing build steps and then writting into another step settings.
  • Several performance optimizations for big files, large lines and also for rendering.
  • And many more minor changes.

ecode 0.6.1

12 Sep 01:09

Choose a tag to compare

ecode 0.6.1

This is a small release with several bug fixes and minor improvements plus a few new features.

  • Added support for editor breadcrumb plus a search symbol window that displays the symbol-tree of the document (trigger with ctrl+alt+l if using LSP, this feature is an LSP plugin feature).
breadcrumb.mp4
  • Added support for custom tab visualization, now the user can customize the aligment and character used (issue #37).
indenttabcharacter.mp4
  • Added AWK syntax highlighting.
  • Added support for FreeBSD builds.
  • Allow to drag folder into the editor and it will load the folder (issue #314).
  • Allow opening multiple files from "Open File" (issue #252).
  • Don't open welcome tab when documents are already opened in a new session (issue #325).
  • Highlight fix for comments in a few languages (issue #326).
  • Added "create-new-welcome-tab" command to open the "Welcome" page anytime (issue #323).
  • Greatly improved performance drawing whitespaces when using line-wrap on large lines.
  • Flag the document as modified until saved when changing it's line ending (issue #315).
  • Fixes in Build Settings, there were some crashes related to UI element bindings.
  • Fixes an error initializing typescript-language-server on windows (issue #310).
  • Fixes a "New Folder" bug in Open File / Folder dialogs that ended up in a crash (issue #306).
  • Fixed custom color-schemes not loading properly (issue #301, fixes Ini file load bug).
  • Fixed double click selection on locked documents.
  • Fix crash when reloading plugins and triggering subscribed events.
  • Fixed multiline commit text not being visible after the first line.
  • Keep folded regions on folding ranges refresh even if the folded region disappears from the new folded regions. This will prevent ecode from crashing.
  • Display signature help if avialable and not symbol info is available when pressing lsp-symbol-info (F1).
  • Improved auto-close brackets behavior on selection (when you select a range an insert an open-close bracket).
  • File locator now displays the relative path to the open folder instead of the full path of a file.
  • Improve universal locator options when no folder is open (fixes #303).
  • Highlight LANGUAGE in CMake files (issues #293)
  • Several minor bugfixes don't worth mention in detail but that will help with ecode's stability.
  • Performance improvements when editing big files.

ecode 0.6.0

20 Jul 05:21

Choose a tag to compare

ecode 0.6.0

This release adds some of the pending fundamental features for a code-editor.

General

Features

Added soft-wrap / line-wrap support (#12)

soft-wrap.mp4

Added code-folding support (#231)

code-folding.mp4

Added support for session snapshots & periodic backup (editor will allow closing modified documents and restore its last state) (#220)

session-snapshots.mp4

Improved distinction between modified and unmodified documents (#69 and #287)
Added Shift-JIS encoding support (#276)
Added bend language syntax-highlighting support

Fixes / Minor improvements

Fix Vue codes in <script> doesn't have syntax highlight (#275)
Fix don't run program if compilation failed when using project-build-and-run command (#278)
Allow to disable the Welcome Tab/Screen (and opening ecode with a blank document) (#279)

welcome-screen-settings.mp4

Added Java Formatter-Support (#283)
Improvements in keywords for LSP Client ($FILEPATH and others) (#284)
Wrap text in linter tooltip (#289)
Fix pasting single-line text with multi-cursor
Fix haskell lsp command call
Fix a couple of rare crashes with observed file system changes
Plus many small improvements

Notice

This new release could be a little bit more unstable than usual given that the new features represent a big change over the editor and text document components, adding document virtual views. I've using it for a couple of months, I'm confident with the soft-wrap implementation but not so much with code-folding given that I don't particularly use the feature very often. Please, as usual, report any issue. Also please note that code-folding is enabled in most languages but not all of them (tag based languages as XML/HTML are still pending unless you configure an LSP with fold support). Code-folding is provided from two different providers: ecode own implementation for languages with folding based in braces and indentation and also via LSP folding provider. If LSP fold provider is present ecode will prioritise it (it's expected to be better and faster). Tag based folding has not been implemented due to the processing cost it has (will need more dedication for an optimised implementation).

ecode 0.5.2

01 May 21:22

Choose a tag to compare

ecode 0.5.2

This release adds some minor new features plus many bug fixes and minor improvements. It closes 40 issues!

General

Features

Added menu bar support (#128).

2024-05-01_18-02-51.mp4

Added a Run step to the Build Settings (#222). Applications can now be opened from ecode.

2024-05-01_18-04-05.mp4

Added the possibility to add path filters to the global search with glob patterns (#150). You can filter by file extensions by simply *.ext or ignore some extension with -*.ext, and filter or exclude complete folder paths for example like: src/**/include and -src/**/exclude.
Added the possibility to search and replace by replacing captures from Lua Pattern, for example, searching for: function (%w+)%(%) and replacing for fn $1() will replace the function declaration from function (functionName)() to fn (functionName)(). This feature is supported on all searchs (local and global).
Added vala-language-server support (#138), and in consequence formatter (#139) and linter support (#140).
Added clojure-lsp support for Clojure.
Added emmet-language-server support and in consequence emmet support for editing HTML, XML, CSS, SASS and SCSS files.
Added syntax-highlighting for Carbon, Fortran, SmallBasic, Vala (#137), Buzz, Clojure, Groovy, Brython (#172), Adept, Fantom and Xtend.
Added German and Chinese translations. First revision, still incomplete but very much functional, thanks to all the collaborators! :)
Added native linter support for XML.
Added case insensitive languages support.
Implemented global search and replace with dirty open documents support (#149).
Implement terminal fallback for legacy Windows users (#153).

Fixes / Minor Improvements

Some UI visual improvements.
Many fixe to the Git plugin.
Fix crash when picking a color, pressing escape closing the picker and picking some color right after.
Several changes to improve editor input latency.
LSP tooltip now wraps its contents.
Editor now tries to display an error when when the
Added menu bar support (solves #128). LSP Server fails to initialize.
Make auto-reload on disk change configurable (#197).
Fixes: meson_options.txt is treated as plain text (#165).
Save File As improvements (#171).
Set default folder for the Save file dialog (#183).
Syntax highlighting for PKGBUILD (#186)
Makefile detection improvement (#185)
Open File improvement (#184)
Improved LSP client close/exit.
Fixes broken IME support regression (#189).
Fixed JSON Linter.
Fixes not reloading loaded document from an file system modified event after the first reload (#196).
Fix bug in LSP Plugin when opening a same document in a split and then closing the original document, keybinds were lost after that.
Fix bug in ProjectDirectoryTree when a file is renamed with a name that it's part of the gitignore, now it will properly not remove the file from the files list.
Fix project search error incorrectly counting the result line number when searching with the wholeword flag.
Improve triple click on code editor.
Improved project search UI.
Implemented Closing Symbol Override (#121), improved the auto-close bracket to be balanced.
Fixes in automatic language selection.
Fix invalid memory access in accepted patterns fro the ProjectDirectoryTree.
Improved performance in document longest line detection.
Fix TypeScript React and JavasSript React files in LSP, they were recognized as TypeScript and JavaScript files so it was incorrectly parsed.
Fix crash when deleting an item in build settings.
Several improvements on the default menu to make it fit on small screens (#242).
Fixed single finger tap clicks not working on touchpads (#219).
Fix: When using letter keys to navigate file selector only the filenames with the capital of said letter can be selected (#241).
Fix for Global Settings not being saved if no editor is open (#248).
Single click navigation in file dialogs (#256).
And many more minor improvements.
Added predefined variables for build: ${current_doc}: The last or current focused document path. ${current_doc_name}: The last or current focused document name (without extension).
Added horizontal scrolling with shift + mouse wheel (#181).
Fix: Newly created file is not included in Recent Files (#260).
Fixed a crash provoked by the Linter and an improper management of the file-system reported file changes (#270).

Windows

Fixes an editor freeze when interacting with broken or closed LSPs (#129 and #227).
Fixes Windows Clipboard History not working (#123).

macOS

Fix spawned processes and terminal using wrong architecture in arm64 build.