Skip to content

Releases: SpartanJ/ecode

ecode 0.5.2

01 May 21:22
Compare
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.

ecode 0.5.1

20 Feb 23:13
Compare
Choose a tag to compare

ecode 0.5.1

This release has a new big feature: Git integration plus many improvements and fixes.

General

Added Git Plugin. This is an initial integration with Git, currently providing several useful utilities:

  • Git status displayed in the status-bar, displaying current branch and number of changed lines (added/modified and removed).
  • Project tree-view will highlight currently added and modified files.
  • Git blame can be run on any line and will display a blame information tooltip.
  • When opening a folder with a Git repo a new tab will be displayed at the side panel. This tab contains two main functionalities: Branches and Status.
    * Branches: In branches you'll be able to administrate your branches doing the basic and not so basic stuffs: pull, push, fetch, commit, locally renaming branches, merging branches and creating branches, fast-forward merge branches and more. Also managing stashes and tags. Sub-repositories branches are also manegable from here.
    * Status: Status will display the current status of the locally modified files. It will allow you to: stage, unstage, discard, view diffs and more plus managing the local branch with commit, fetch, pull push. Sub-repositories can also be managed from here.
git-plugin-demo.mp4

git-blame

Added file encoding detection and selection. Currently supporting UTF-8, UTF16-LE, UTF16-BE and ISO-8859-1 (Latin1) (issue #126).

Add portable mode (issue #113). Portable mode can be invoked by command line argument with --portable or -p or by creating a file besides the ecode binary called portable_mode.txt.

Added pony, GraphQL, MoonScript and blueprint lang support.

Several general visual improvements. Tabs visibility, scrollbars auto-hide, status-bar information.
new look

Semantic highlighting is enabled by default from now on.

Added context menu for tabs.

Tab widget now always keeps visible the currently focused tab.

Fixed an issue when reloading documents (with file system change) that disabled the linter by mistake.

Several improvements in syntax-highlighting for various languages.

Tabs now overflow text. For large named files it will display an ellipsis (...) and limit the maximum width of the tab.

Added catppuccin macchiato color scheme.

File type can be set from the universal locator (status bar Locate (Alt+1)) by using ft command (issue #127).

Added command to select all words from current cursor to create multiple cursors with the default shortcut ctrl/cmd+shift+d.

Fixes in XML Tools plugin.

Added HTML formatting support with prettier.

Completed implementation for multi-language suppport (Settings -> Window -> UI Language). Currently languages are in development.

And many more bug fixes, general improvements and performance improvements.

Improved/reduced general memory usage.

Fixed an important memory leak that could be problematic for extended app usage.

Windows Fixes

Fixed critical issue ecode deleting contents of files on Windows when filenames contains non-ascii names (issue #114).

Alt-tabbing on windows causes selected text to be deleted (issue #115).

Fixed ctrl+alt combination for text input on Windows (issue #119).

macOS Fixes

Status bar color is now the app background color.

Removed titlebar separator.

Added scroll-momentum support.

Fixed opening links did not open the browser.

ecode 0.5.0

06 Nov 23:16
Compare
Choose a tag to compare

ecode 0.5.0

This is a stabilisation release and contains mostly bug fixes, but it also adds some cool new features.

General

Added Jai, Verilog, Hare and Lobster syntax highlighting.

Improved Nelua and Odin syntax highlighting.

Added IME support (very important for Chinese, Japanese, Korean and many other languages).
ime

Added font-family support. Now default fonts will use real bold and italic versions of the font, editor now supports mixing different font stylings properly (see before-styling and after-styling in "Spartan" color-scheme).

Several fixes and improvements for the build and build output system.

Greatly improved editor rendering performance (+80% performance improvement on average).

Slightly reduced memory usage of ecode.

Many fixes in all plugins.

LSP Client performance improvements.

Replaced default V LSP in favor of the new oficial LSP: v-analyzer.

Added GLSL LSP support.

Ini configuration files now load around 10x faster (used for color schemes and config files).

Improved startup time.

Fixed a critical bug that crashed the application when a same document was being opened from two different editors and the first editor opened was closed and some document command was run after that.

Critical error fix when loading files of more than 1MB, sometimes they were loaded with some incorrect data.

Fixed an issue that provoked plugins to lose its configuration.

Allow selecting the default language for an extension when the extension could represent more than one language.

Terminal history/scrollback is now configurable.

Syntax Color Scheme now can support outline styling using: outline(thickness, color).

Minimap first-pass is now asynchronous and should not lock the UI.

Many improvements in tokenization performance.

Fixes for files not reloading when changed from disk.

Optimised document search (now is always asynchronous).

Added a new option un main menu to create a new instance of ecode (New Window).

The editor will display a file locked icon if the file is set as read-only (can be triggered with ctrl/cmd+shift+l).

And many more fixes!

Windows fixes

Fixed a critical issue that would not allow the user to save the file with a false positive error of no write permissions (issue #103).

Temporal files used by linter and formatter are now hidden by default and will not flash on the project tree view.

Linux fixes

Improved flatpak support.

macOS fixes

Improved default macOS shortcuts.

Improved "Open with ecode”.

ecode now checks the PATH defined in the shell and append all pending PATHs to the current environment. This should improve binary finding (solves issue #63).

Note: ecode-macos-0.5.0-arm64.dmg has been re-uploaded on November 15 because it was incorrectly packaged.

ecode 0.4.9

12 Jul 03:31
Compare
Choose a tag to compare
  • Improved semantic syntax highlighting (also some improvements for the base syntax highlighter). Now is enabled by default for new installations given that it's more stable. The experience will vary depending on the LSP support. Some good LSPs will give the user an experience similar to or equal to a tree-sitter, given that many LSPs use a tree-sitter to implement semantic highlighting.
    improved-semantic-highlighting

  • Added support for customizable project builds / configurable build pipelines. This enables the possibility of building your project directly from ecode, reading the output in the Build Output (Alt+4), and having the list of warnings and errors listed within ecode, allowing the user to navigate easily to those errors in the Build -> Issues panel.

build-settings.mp4
  • Implemented an optional (and enabled by default) Status Bar for quick access to central functionality (each element can be accessed with the Alt + Number combination (Alt+1 -> Locate, Alt+2 -> Search, Alt+3 -> Terminal, Alt+4 -> Build)
status-bar.mp4
  • Added a quick access terminal separated from the main editors' splitter (default key bind is Alt+4).

  • Improved syntax highlighting in many languages (much better TypeScript, TSX, and JSX support).

  • Implemented navigation history. Now you can navigate your cursor history easily with Alt+Left (history back) and Alt+Right (history forward).

editor-navigation-history.mp4
  • Linter now allows navigating between errors and warnings with keyboard shortcuts (default keybinding: Ctrl/Cmd + Shift + N).
linter-error-navigation.mp4
  • Implemented a GUI for Languages Health.
    languages-health-gui

  • Improved auto-completion suggestions.

  • Added a new plugin "XML Tools". Currently provides two features: highlight matching XML elements and auto edit XML element tags. The plugin will be disabled by default since it's considered "experimental" for its first release.

xml-highlighting.mp4
  • Added "Folder/Project Settings" menu.

  • Added LSP text range formatting support.

  • Allow sharing processes between language LSPs that use the same process (for example clangd for C and C++). If you run hybrid language projects that share the same LSP, it will spawn a single LSP.

  • Improved LSP code actions. New and more precise code actions should be available for errors and warnings.

  • Improved LSP shutdown.

  • Allow disabling semantic syntax highlighting for specific languages in the LSP client configuration.

  • Added support for optional column positioning with : separator in Universal Locator (l line:col). Thanks TerminalFi!

  • Added automatic memory trimming on Linux (ecode will report less memory usage).

  • Improved editor right-click context menu. Added "Copy Error Message", "Refresh Semantic Highlighting", "Copy File And Position", and others.

  • Added an option to treat ".h" files as C++ (as per folder/project configuration).

  • Added more commands to the command palette.

  • Fixed inability to comment a single line with ctrl/cmd + /.

  • Fixed: ecode does not properly warn the user of the lack of GPU acceleration.

  • Fixed keybindings not loading the user-configured keybindings in some components.

  • Fixed find text document references not showing all the results (only opened files).

  • Fixed editor not registering commands when another editor with the same document has been closed.

  • And many bug fixes and performance improvements.

  • For this release, a lot of work has been put into eepp GUI, which will allow extending the GUI capabilities of ecode.

ecode 0.4.8

31 Mar 17:02
Compare
Choose a tag to compare
  • Added Welcome screen
    welcome-screen

  • Added new official icon and logo
    ecode-icon

  • Added LSP semantic highlighting support (disabled by default since it's an experimental feature)
    Off:
    semantic-highlighting-off
    On:
    semantic-highlighting-on

  • Added LSP quick-fix support
    quick-fix

  • Added LSP "Rename Symbol Under Cursor" support (textDocument/rename)
    https://user-images.githubusercontent.com/650416/229183559-13bed968-0eb8-4c59-81ff-55e23797c1d4.mp4

  • Added an option to show relative lines position (Tools -> Show Lines Relative Position)
    lines-relative-position

  • Added "Show Image Preview" context menu option when editing an SVG file.
    https://user-images.githubusercontent.com/650416/229183621-5628d382-1a22-4d3b-951e-eccbb6d588b5.mp4

  • Added support for TCP LSP servers (it's now possible to connect to an LSP running via TCP instead of stdio, useful for remote LSP servers, more info here)

  • Make consistent the find/search highlighting with the actual results (issue #73)
    https://user-images.githubusercontent.com/650416/229183743-f2df511e-f7c4-4158-bf72-947d5ae593b4.mp4

  • Plugins are now auto-reloaded after any configuration change happened over its configuration file

  • Fixed trim trailing white spaces on save

  • Added syntax highlighting for x86 assembly (issue #75), PICO8, PSQL, Pascal, Visual Basic and Objeck

  • Added LSP support for Haskell, elixir, Objective-C, ELM, Crystal, V, Scala, Swift, CMake and R

  • Added formatter support for Haskell, Objective-C and V

  • Added linter support for Haskell

  • Added "url" key to formatters and linters configuration. Improved the markdown report of feature health

  • LSP "command" can now be customized per platform (more info here)

  • Improved JSON syntax definition to CPP converter

  • Improved CLI options --health output

  • Improved terminal selection (now it's possible to scroll and select)

  • Improved Pop Up Menu positioning

  • Fixed gracefully handle document save failing (issue #85)

  • Fixed running the ecode in Windows 8.1 (and probably Windows 8 and 7). Terminal won't be available on those OS

  • Fixed a crash while unloading documents that were still loading

  • Fixed $NPROC in LSP client commands

  • Fixed a crash when loading big files and using the LSP

  • Fix in search + replace that crashed the editor in some very particular situations

  • Fixed a crash when closed a document and the document symbols where received after the document closed

  • Fixed signature help rendering when no suggestions are available

  • Several minor fixes in the LSP client

  • Editor now tries to detect binary files and won't display binary characters as unicode characters

  • Improved memory usage and rendering performance

  • Added CLI option --disable-file-logs to disable writing logs to a file

ecode 0.4.7

07 Mar 03:05
Compare
Choose a tag to compare
  • Added workspace symbol search
    workspace-symbol

  • Added current document symbol search
    document-symbol

  • File locate now shows the available options when opened (workspace symbols search, document symbols search, command palette search, and go to line)
    search-symbols

  • Added Julia, R, Elm, TOML, Haxe, fstab file, .htaccess file syntax highlighting support.

  • Added Solidity LSP support using solc

  • Added linter and formatter support for JSX files

  • Added the option to configure the default terminal shell at Terminal -> Configure Terminal Shell. Also powershell is now the default shell for Windows (#70)
    default-shell

  • Added a new configuration to control the behavior of new open terminals (#68)
    new-terminal-behavior

  • Added "convert-lang-path" CLI command, to convert a JSON syntax definition to CPP code (it's just a helper to help me to migrate languages definitions from other editors)

  • Added the option to create and add custom UI themes (more information here

custom-ui-themes.mp4
  • Don't open a folder when it's not requested when opening ecode (#66). Changed the default behavior
    defaultview

  • Improved "Document" and "Terminal" setting menus

  • Fixed an issue that caused to pass an incorrect root path to the LSP making unusable the LSP (issue #64)

  • Fixed when opening file+folder via CLI the specified file is not given focus (issue #59)

  • Fixed a minor issue when dropping SVG files into the editor, they weren't being opened in a new tab

  • Fixed an issue that prevented LSP processes to be terminated/killed correctly (#61)

  • Fixed matching brackets (it wasn't matching correctly if a comment or a string containing the matching bracket)

  • Reduced syntax highlighter memory footprint and improved also its performance

  • Several minor fixes and improvements

ecode 0.4.6

21 Feb 23:58
Compare
Choose a tag to compare
  • Added custom languages support
  • Added --health, --health-lang and --health-format command line parameters to get the health status of the editor features (just like hx --health). It can also be used from Tools -> Check Languages Health
    ecode-health
  • Added LSP code action support
  • Added support for opening file at a certain line+column via CLI (#54)
  • Added allow to create files in sub-folders that currently don't exists from the project tree view (for example: "New File" -> Input -> "new_folder/file" will create "file" in "new_folder"
  • Added a keybindings migration mechanism that will allow to rebind keybindings if where using the default old keybinding (some keybindings aren't ideal, I'll start to rebind some commands)
  • Added zig formatter support
  • Added elixir language syntax highlighting
  • Added --export-lang-path and --export-lang command line parameters to allow to export language definitions to JSON. It should help to create new languages from the current languages available.
  • Improved LSP textDocument/definition, declaration, implementation, typeDefinition when more than one result is returned, now it's possible to select which result to see if more than one result is available
  • Fixed LSP issues on Linux (issue #50)
  • Fixed general several LSP issues.
  • Fixed new files created outside of ecode that should be hidden in the folder view are shown (#51)
  • Fixed renaming a file extension doesn't update the language icon (#53)
  • Fixed "File already exists" when capitalizing/decapitalizing a letter of the file name on windows (#56)
  • Fixed recent Folders with & without trailing slash treated as unique folders (#57)
  • Fixed a crash when creating a terminal without a project opened and after closing the last editor
  • Fixed editor don't change cursor position on right click when there is a previous selection
  • Fixed "Execute File" from tree view on Windows
  • Fixed added shortcut text in "Remove File..." (wasn't present)

ecode 0.4.5

14 Feb 15:00
Compare
Choose a tag to compare
  • Added support for indentation guides
    indentation-guides

  • Added command palette support (default opens with Ctrl/Cmd + P)
    command-palette

  • Added Java LSP support

  • Added Vue support (Syntax Highlighting and LSP)

  • Added ARM64 support.

  • Added an option to allow project files filtered by .gitignore to be allowed in the project scan (check explanation here).

  • Improvements in the LSP implementation (implemented showMessage and showDocument messages)

  • Improvements in the Process implementation, to avoid an issue that prevented ecode from killing children processes (issue #45)

  • Improved auto close XML tags (better language support).

  • Improved menu checkbox behavior (wasn't working with keyboard)

  • Allow to delete files in the file tree view using the delete key

  • Fixed LSP client URIs on Windows (basically fixes LSPs on Windows)

  • Fixed several encoding issues on Windows.

  • Fixed sidebar file view does not automatically update when renaming file/folder inside another file/folder on Windows (issue #30)

  • Fixed renaming folder name to one with a special character garbles character (issue #31)

  • Fixed renaming file/folder with a special character in it returns "Error renaming file" (issue #32)

  • Fixed an issue where an empty file couldn't be closed if it was the only file open in the editor (issue #33)

  • Fixed can't create a new file in the root folder when there is no empty space in the UI (issue #43)

ecode 0.4.4

05 Feb 23:46
Compare
Choose a tag to compare
  • Allow ignoring files in the file system tree view.
fs-treeview-ignore.mp4
  • Added support for out-of-the-box CJK characters in the editor.
    cfk-characters

  • Added Teal language support (syntax highlighting and linter).

  • Added support for CR line endings (Classic Macintosh).

  • Added "Refresh View" option in the tree view menu.

  • Added C# LSP support via OmniShap.

  • Added text document formatting LSP support (Formatter plugin now consumes LSP text document formatting when available).

  • Added LSP "textDocument/references" command support ("Find References to Symbol Under Cursor").

  • "Open Folder" now starts in the last folder opened instead of the ecode binary path.

  • Fixed AltGr not working on Windows for key combination.

  • Fixed tree view not synchronizing with the file system on Windows.

  • Fixed a crash in the file system listener when no file system path was loaded.

  • Fixed an issue that prevented "undo" previous changes correctly when files were trimmed on save.

  • Fixed a possible crash when selecting words.

  • Fixed a crash when dragging a file from a file explorer into ecode and dropping it into the terminal.

  • Fixed a crash when right-clicking the tree view if empty.

  • Fixed issues with line endings when new lines were mixed between CRLF and LF.

  • Fixed terminals not closing when changing folders.

  • Minor fixes in the LSP implementation.

  • Plus a lot of minor fixes.

ecode 0.4.3

30 Jan 00:09
Compare
Choose a tag to compare
  • Added support for multi-cursor!
    Default keybindings:
    Alt + Up: Create a cursor above the current cursor
    Alt + Down: Create a cursor below the current cursor
    Ctrl/Cmd + D: Add next occurrence (Select word + Select Next word with a new cursor)
    Ctrl/Cmd + U: Cursor Undo
    Ctrl/Cmd + Shift + A: Select all occurrences
    Alt + Shift + Click: Create a cursor on each line between the first cursor and the clicked line
    Ctrl/Cmd + Click: Create a cursor in the clicked area
    Escape: Reset cursor
multi-cursor.mp4
multi-cursor-range-based.mp4
  • Added linter option to show error lens called "enable_error_lens" (boolean, prints error messages inline, enabled by default).
    error_lens

  • Added bash LSP support via bash-language-server.

  • Added HTML LSP support via vscode-html-languageserver.

  • Added Dockerfile LSP support via docker-langserver.

  • Added Nelua syntax highlighting and linting support.

  • Added "UI Panel Font Size" option to configure the default side panel font size.
    ui_panel_font_size

  • Added "css" command line argument to load a custom style sheet from the path (useful to customize the application UI).

  • Plugins preferences (configs, keybindings) are now all displayed in the user preferences file (you won't need to search for them in the documentation).

  • Several minor improvements in the LSP Client.

  • Improved LSP mouse hover tooltips.

  • Fixed text-shadows (very visible in white color schemes, #17).

  • Fixed several things in white color schemes (tooltips, minimap, error colors).

  • Fixed typescript-language-server.

  • Fixed an issue when dragging minimap that caused the UI to not respond to mouse events.

  • Fixed rendering issues with non-monospaced fonts in the editor.

  • Fixed https requests not working in macOS (and in consequence ecode wasn't able to check for new releases).