46 ms·
Show HN: Ecode – A minimalist and fast open-source code editor
Hi HN! I've been working on a code editor and I think that it's mature enough to catch some interest. It's using a custom GPU accelerated GUI written in C++. Currently implements some interesting features: LSP, terminal, auto-completion, linters, formatters, custom keybindings, plugins and more. It's a hobby project but still intends to be an alternative to other popular code editors like Sublime, Kate, Lapce, Lite XL (and takes inspiration from them).
The project was born as a playground for the GUI I'm developing (eepp GUI) and is advanced enough to currently be my main code editor, but it's a work in progress, and many features are still pending. Some minor hints on how to use it:
Folders are used as project (and .gitignore is used to ignore files)
The wheel icon on the top-right has all the options you need (Ctrl/Cmd + M to show).
Some keybidings to navigate any project (navigation is keyboard driven):
Ctrl/Cmd + K = Locate Files
Ctrl/Cmd + Shift + F = Global Search
Ctrl/Cmd + Number (Go to tab #)
- Semaphor 4y agoFor anyone confused why there’s no source: > Currently, the source code is located at the eepp project repository. […] At some point, it will be migrated to this repository. -- https://github.com/SpartanJ/ecode#source-code https://github.com/SpartanJ/ecode#source-code
- deleted 4y ago[deleted]
- hatmatrix 4y agoSo the extendable functionality is enabled with C++? If it were emacs lisp I would be right there already. :)
- deleted 4y ago[deleted]
- SpartanJ 4y agoAuthor here: That's correct. It's partially intentional, since I want to keep some control over the plugins ecosystem. I think it's explained somewhere in the README file: 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 product quality and performance.
- antiframe 4y agoSo there's currently no mechanism by which I can extend Ecode without your involvement?
- SpartanJ 4y agoThat depends on what you want to extend. You can expand the capabilities of the LSP, linter, and formatter by adding new configurations. You can also create new color themes for the editor and the terminal. You can also customize the UI (it won't be that easy, but you can). But, if you want to create a new plugin... since it's native code you'll need to at least fork the repository and create the plugin on your own repository. I don't plan to be a dictator, just a supervisor. And of course, I'm more than open to getting new collaborators (this is the main reason I'm publishing it), that would be great. I just want to ensure that my application branch is "safe" (no malicious code, no horrendous implementations, etc).
- diceduckmonk 4y ago> designed for modern hardware with a focus on responsiveness and performance Not sure why a text editor needs modern hardware to be performant. I’m working on a text editor myself, and aspire to vim on the performance front as it is fast as one would reasonably want. If anything, my physical body is the bottleneck. There are edge cases such as really large files (100+ million lines) or ones having super long lines that makes certain data structures choke, but vim can do random access on 180m line files just fine on my M1. Point being, performance is a weak selling point to switch text editors, and I question whether it should even be predicated on “modern” hardware ( GPU accelerated rendering ? ). The selling point has to be something else. This is why the editor wars is a dichotomy between Emacs and Vim. Emacs strives for many things, but speed isn’t one of them, and that’s perfectly okay. The main selling point of my editor, built for myself, is native support for Org-like files without the rabbithole of Emacs.
- Semaphor 4y agoMost people use neither Emacs, nor Vim [citation needed, but I’d bet some money on it]. And for me, performance is most certainly a selling point. The main reason I use my windows text editor (EmEditor [0]) despite having no formatting and only barebones syntax highlighting, is that it’s faster than any other editor I’ve ever seen (though I think the large file handler tops out at 256 GB). Well, that and its superior CSV handling, though Notepad++ comes close with plugins ;) [0]: https://www.emeditor.com/ https://www.emeditor.com/
- anticodon 4y agoI've seen voting results on one of niche Linux sites, and was surprised that majority of users use vim/neovim or vim bindings in other editors/IDEs. But I'm pretty sure that most Windows users wouldn't use any editor resembling vim.
- dividedbyzero 4y agoVisiting niche Linux sites often enough to take part in such a poll is probably introducing a very strong selection bias here.
- timeon 4y agoI'm using Sublime and as Druid fan I'm following Lapce but this one looks good too.
- LoganDark 4y ago> as Druid fan I'm following Lapce Doesn't Lapce use a custom wgpu renderer, and not Druid? Or did that change at some point?
- conaclos 4y agoFrom the Lapce's README [1]: > Lapce is written in pure Rust with a UI in Druid [1] https://github.com/lapce/lapce https://github.com/lapce/lapce
- timeon 4y agoI think it has own fork of Druid but there may be plan to use Xilem.
- panekj 4y agoyes, we plan to switch to Xilem when it's ready for us
- panekj 4y agoWe use fork of Druid that uses OpenGL. It was wgpu before instead of OpenGL but there were issues and limitations with it.
- ilrwbwrkhv 4y agoSame. Lapce is the hottest new editor and might be the only one to get me to switch away from sublime.
- progx 4y agoThe most important point is expandability. Did it has an API or is it planned to add an API to extend the editor?
- Deukhoofd 4y agoA third of the linked github readme is about how to do plugins.
- SpartanJ 4y agoAuthor here: The editor can be expanded via plugins and several features are presented as plugins (LSP, linter, formatter and auto-complete). But the plugins API it's not as friendly as other editors since I want to keep some control over the plugins. I think we already have many editors very expandable but also with very little to no control over the plugins/extensions environment, and that ends up creating a big mess for the final product (inconsistent UI, bad implementations, etc). Currently the plugins can only be implemented with C++ native code and new plugins will need to be merged into the project. I would like to keep control over the new features and supervise that the implementations are correctly done (mainly I care about plugins not locking the UI thread). I understand this can be bad for some but I want to keep a certain vision that needs some kind of control over the end product.
- stonogo 4y agoI have apparently completely lost touch with what people mean by 'minimalist' these days. Can someone help me understand why that word is applied here? Looking over the feature list and the ReadMe, this editor seems really attractive and checks most of my boxes for a good main editor, but I hit that word and cannot figure out what I'm missing here...
- chii 4y agopresumably they meant visually minimal (not that i would agree...). It is indeed minimal compared to say, intellij IDEA, or even VSCode.
- SpartanJ 4y agoAuthor here: Yes, that's what I meant. I agree it's not the most appropriate adjetive to describe the editor. But one of my intentions is to keep the UI as clean as possible (I'm not a fan of cluttered editors with several panels on screen all the time).
- jasonlotito 4y agoConsidering IntelliJ has different setups, you'd have to compare the zen or distraction mode of IntelliJ with the minimalist setup here, which seems to be more cluttered than what JetBrains is offering.
- SpartanJ 4y agoAuthor here: You can hide everything in the editor (minimap, line number info, side panel, etc). I guess could add a Zen mode that hides everything at once for simplicity. The editor will remember your view settings, so it's very doable to have a zen mode by default.
- robinsonb5 4y agoI think in 2023 "minimalist" just means "not written in something like Electron"! While this certainly doesn't match my idea of minimalist either, it does look interesting - I'm always enthusiastic about projects that target systems beyond Windows and Linux - and this one can run on Haiku.
- christophilus 4y agoThis looks great. It's nearly impossible for me to leave Neovim at this point, but I do miss a good git-aware minimap, and I miss the VS Code git diff / integration. I'd love to find an editor that has those features while being as light and snappy as Neovim with the same ability to split, navigate, and do all the things without leaving the keyboard.
- anticodon 4y agoThough not a minimap, I use gitsigns plugin for neovim that shows changed lines in the gutter. I wouldn't be surprised if there's even minimap plugin somewhere.
- carderne 4y agoHere it is (haven’t used it but looks that part): https://github.com/wfxr/minimap.vim https://github.com/wfxr/minimap.vim
- SpartanJ 4y agoAuthor here: Git integration plugins will come later, but it's planned. I hope the project gets enough visibility to get some collaborators :)
- alganet 4y agoThe demo is impressive for something running on a browser. > Planned Features > > ... > Multi-cursor support > ... I can't live without that though. SublimeText spoiled me, my editing flow is heavily based on multiple cursors.
- SpartanJ 4y agoAuthor here: I guess this is gonna be one of the most requested features. It will come sooner than later, but it's not a feature I use very often, that's probably the only reason it's not implemented yet.
- alganet 4y agoI'll keep it on my watch list! It already marks several of my editor checkboxes (LSP support, fast global search/replace, real time tree view, etc). I'll say it again, it looks very impressive.
- iddan 4y agoMore than just multi-cursor the workflows VSCode offers with them (selecting all occurrences, selecting the next occurrence) are vital for my work.
- pjerem 4y agoAren't those workflows operated by LSP Rename action rather than multi cursor ? Since Ecode supports LSP, if you only need to rename things, you should be good without multi cursor.
- rd07 4y agoI am happy to see one more open source GUI text editor that aims to be fast, minimalist, yet has some essential features (at least for me) like LSP support, minimap, and terminal support. I hope this editor will have a good plugin manager in the future.
- marssaxman 4y agoThanks for sharing. I'm going to give it a try.
- breadchris 4y agowas ed not light enough? it is the standard editor.
- sintezcs 4y agoIn modern days it's kinda shocking when you see a new UI app that was built without using the HTML+JS+Electron bullshit. Big respect for that!
- deleted 4y ago[deleted]
- microflash 4y agoAlways happy to see new source code editors. > Lightweight multi-platform C++ code editor designed for modern hardware Maybe change this description. At first blush, I thought this was a "C++ code editor" rather than an "editor written in C++". My favourite languages, Java and SQL, are not in the supported languages list but hopefully support can be added with LSP.
- deleted 4y ago[deleted]
- SpartanJ 4y agoAuthor here: Thanks for the suggestion! I forgot to change it in the repository description! It's already fixed. > My favourite languages, Java and SQL, are not in the supported languages list but hopefully support can be added with LSP. For the moment I only implemented syntax highlighting for the languages. Adding linter and LSP support is trivial. May be you can collaborate by adding it (it's just a configuration, take a look at the plugins section).
- worldsavior 4y agoThe title is misleading. Yes, a code editor, but for game development. It includes a graphics module, physics and other. For a code editor, it's not minimalist. For a game development code editor, maybe minimalist.
- deleted 4y ago[deleted]
- SpartanJ 4y agoAuthor here: No, you're incorrect. It's a general purpose code editor. What you are describing is the underlying technology used to create the editor. eepp (the library) currently is more like a Qt alternative (not at the same level, much work needs to be done yet), it's not used as a game engine (but it can be used), I simply changed my focus over time.
- worldsavior 4y agoWhat about the graphics module? It seems there are features that aren't needed for other than game development? Btw, it's still a pretty nice editor :)
- SpartanJ 4y agoThanks for the compliment! The graphics module is the core of the application (the UI consumes the Graphics module for all the rendering). There are two modules that aren't currently being used in ecode: physics and audio. I'll keep the audio module for the moment (it's very tiny and doesn't add new dependencies, and I'll probably use it for optional notifications). The physics module it will be probably moved apart as a complementary module as I did already with the "Maps" module for this release.
- worldsavior 4y agoI understand. Love it.
- stevedekorte 4y agoWould love to see one of these that used Miller Columns for navigation, and supported VSCode task and launch files.
- nerdponx 4y agoWhat code editor does support Miller columns?
- stevedekorte 4y agoThe environment I grew up in (NeXTstep with Miller Column FileBrowser + Edit + InterfaceBuilder) effectively did, but I'd love to see them tightly integrated.
- bmn__ 4y agoI have carefully set up my desktop environment the way I like it, specifically the way menus are displayed, colours, fonts, icons, keyboard shortcuts, notifications. Ecode does not even make a single attempt to adhere which was not acceptable when Winamp came out and certainly not acceptable in 2023. I have to strain to read the text because it's so small and I have no recourse against that problem. Stop "skinning" software, it is literally easier to do nothing and then the software will automatically do the correct thing and follow the rules. When I paste in text, it only shows squares, afaict only a few scripts like Latin or Cyrillic work. The input method editor does not work correctly, I can't see what I'm typing. Unusable, into the rubbish bin it goes.
- SpartanJ 4y agoAuthor here: Besides the fact that you were very rude with your comment I'll give you my point of view. > I have carefully set up my desktop environment the way I like it, specifically the way menus are displayed, colours, fonts, icons, keyboard shortcuts, notifications. Ecode does not even make a single attempt to adhere which was not acceptable when Winamp came out and certainly not acceptable in 2023. I understand what you want, but it's not an easy task I it's not something I care anymore. It's technically possible to create a theme that looks almost exactly like anyone's desktop but I don't think it is worth it. eepp, the underlying technology behind ecode is more like HTML+CSS. All the styling is done via CSS and the layouting with XML, and it's more similar to the web technology than native desktop widgets (such thing stopped to be a thing in every OS except macOS). > Stop "skinning" software, it is literally easier to do nothing and then the software will automatically do the correct thing and follow the rules. Then you don't understand the problem. > When I paste in text, it only shows squares, afaict only a few scripts like Latin or Cyrillic work. The README file clarifies this. For the moment I don't support wide-characters (Chinese, Japanese, Korean, etc) and the editor only supports UTF-8. I'll add support for it at some point. Wide-characters are only supported in the terminal for the moment. > The input method editor does not work correctly, I can't see what I'm typing. I guess you're referring to IME support. It's still pending. > Unusable, into the rubbish bin it goes. I have no problem with critics, but this is not the way to have a conversation about an open-source application. At least take the time to read the README and understand that this is work in progress. Such comments like yours are a waste of time.
- candyman 4y agoThis is a little off topic but related because I keep looking at these source code editor posts. I have always been looking for a little "sidekick" editor that is always in the background that you can invoke with a ctrl-<char> and it at least maintains just a single local data store. (It's not a general purpose text editor like Sublime.) Sort of like the old Notational Velocity but able to be invoked very quickly anytime. The file could just be synced across computers using Dropbox or similar but it would be nice if it also allowed simultaneous editing of the file.
- feiss 4y agoThe editor looks fabulous, great job! although I am actually very excited and impressed with the eepp GUI framework.. it's pretty sick! I wish we had more like this in rust..
- geenat 4y agoAs a primary sublime user for the last decade, this is the only alternative I've tried so far with promise. Runs smooth as silk, this is an editor for speed demons like me. A lot of essential features already in there. Would love to see drag-drop of files/folders in the directory panel- bonus points if you can drag between instances of ecode. Love the very slim UI. Effective use of screen real estate!!