I'm working on a multi-platform code editor similar to notepad++ and some new editors like Zed, called ecode, that tries to be a fresh take on code editors using some modern tools and technologies like LSPs. I started working on it after using Geany (which was the closest alternative to notepad++ in Linux) for many years but finding Geany lacking some essential features for my needs. ecode is developed with speed in mind and has a very fast startup time. It might be a good fit for your search.
Shameless plug: I'm working on a multi-platform code editor similar to NP++ and some new editors like Zed called ecode, that tries to be a fresh take on code editors using some modern tools and technologies like LSPs. I started working on it after using Geany for many years but finding Geany lacking some essential features for my needs. ecode is developed with speed in mind and has a very fast startup time.
Thanks! Currently it does not but it's not something particularly complex to implement so I can add it if there's interest! I haven't used NP++ in some time so I don't remember exactly how it behaves but I'll take a look.
It's also important to mention that given that the projected inflation for 2024 is above 200% and historically this taxes are not properly annually updated, the most probable scenario is that in a year or a few months most people that were benefited are going to pay income taxes again. So this are just populist measures to get some votes for the incoming elections (also mostly forced by the liberal party that is leading the polls), but won't last much.
I'm working on an code editor with a similar philosophy (or at least I'm trying to achieve similar goals) but it's completely open-source (MIT licence). It's called ecode and can be found here: https://github.com/SpartanJ/ecode . It's also GPU accelerated, native code (no electron), has LSP integration and has many similar feature set.
I'm looking for collaborators, if someone is interested please message me.
This is an ongoing trend that will continue until some of the new GUI-backed UIs gain some popularity. What we need right now is a real alternative to Electron based applications, and probably carrying new technologies. I know that we already have alternatives, like Qt, which is an amazing framework, but it doesn't fit all developer's needs and sometimes looks also "too big". I think that many devs are saturated of the HTML+CSS+JS ecosystem and want something new, maybe something less bloated in the sense of the tech specs. I celebrate the numerous projects that are appearing these days, to name a few: egui, iced, imgui, GuiLite, RmlUI, elements. They need more exposure, more collaborators, and more development, they need to grow.
Having said that, I'm working on an alternative GPU accelerated and retained-mode GUI called eepp (https://github.com/SpartanJ/eepp/) while I work on a new code editor similar to Zed called ecode (https://github.com/SpartanJ/ecode). The framework still needs a lot of work but presents some ideas that might be interesting to some. Retained-mode GUIs are a complex beast and it's hard to achieve simplicity (I think immediate-mode GUIs can't be beaten in that regard, but they have their own downsides). So I invite anyone interested in GPU accelerated GUIs to take a look at my projects (online demos are available), I'm looking for collaborators! (sadly C++ isn't very appealing these days, but my code-base is huge and I can't write everything from scratch in a new fancy and cool language).
Author 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.
Just jumping in to say that you sound like an amazing maintainer and a really great person, for responding so constructively to something so toxic. Building one's own UI engine is not for the faint of heart, and the amount of features and cross-platform compatibility you've built is quite a feat! I'll be following the project, and don't let comments like this one get you down.
You made a very nice editor, dismiss that clown. You are clearly also a great person. Do you have a channel for us to provide feedback or interact with the community? like a Matrix server, or should we just open issues in your repo?.
Thank you for your kind words! Almost no one knew the project until some hours ago so there was no community to communicate with, there's nothing available for the moment. I would love to have a place to chat if people is interested in the project. As for now, just open new issues, we can use that for feature requests, ideas, and of course bug reports.
Author 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.
What 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 :)
Thanks 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.
Author 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).
Author here: This is interesting to me. I usually solve all the multi-cursor usage with a range based search and replace (that it's supported in ecode by selecting the range and Ctr/Cmd + F to search and replace over that range). I would like to see how it's used by other users to have a better idea on how it should behave a multi-cursor feature. If you know how to record a video of you editing in the way you explained it would be awesome to see it.
Thanks
I use for things that I could do with find and replace (often requiring regex) but I find it faster/easier to just use multiple cursors. With multiple cursors I can convert a PHP array to JSON or JS very easily or take a list of params and turn it in to an object. I do this often when creating client-side TypeScript interfaces for the data the server is going to spit back at me. Example:
* I just select `public` on my first PHP class property
* Use multiple cursors to select all `public`'s that are before the properties I want (Normally by adding 1 selection at a time since I only want the props, not the public methods)
* Arrow over right 3 times (Now my cursor is right before the property names, after the `$`, this is PHP remember)
* Hold shift + control
* Arrow once more to the right (now the variable names are selected)
* Hit Cmd+c (copy all variable names)
* Open new IMyInterfaceDTO.ts file
* Type `export interface IMyInterfaceDTO { <cursor is here now> }`
* Paste in all my variables between the `{}`
* Select the new-line between each variable (I want a cursor before each variable name)
* Then add in `: string;` after each variable (string is the most common, I then manually change it to number/boolean/etc on the props that need it)
Done, now I have a TypeScript interface that matches my php class that gets turned into JSON.
Yes, I could accomplish the same thing with find and replace using a regex but this lets me see each step of the transformation and react easier. Maybe if I was a regex pro I'd feel differently but this method works really well for me and how my brain works. I know it's a lot of steps but I do it reflexively almost on autopilot verses having to stop and think about a regex.
1. Replace the prefix of several variables from `$mock` to `$stub`
2. Added a prefix to all properties of the object `$r`, which left the camelCasing missing an uppercase letter, I selected that letter on all properties and used "Transform To Uppercase" action on VSCode to camelCase it properly back again.
3. Aligned some keys of two arrays. I selected them, placed some minimal spacing, then hit `Home` to align the cursors to indentation, then used `Ctrl+Delete` to trim the added spaces.
I'll try the range based search, I never used something like that and might like it.
Author 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.
[1] https://github.com/SpartanJ/ecode/