My ideal code editor :077:

Here is my personal list:

  1. Real multi-thread support. Panel, sidebar or file tab should not freeze whole app and OS.

  2. Access to symbolic links for directories only on request, open them in another sidebar tab, don’t read them recursively and don’t index them - at least by default or add timeout for it.

  3. Command palette :smile:

  4. Version bigger than or equal to 1.0.0 should have everything configurable through GUI (unlike Atom editor) - it’s ok to make configurable editor using json configuration files at start, but I mostly don’t have a time for it and want simply use checkbox.

  5. Color scheme editor almost like in Intellij.

  6. Fully integrated compiler for every supported language - no regex-based syntax highlighting - in Elixir case support additional style(s) for:
    a) macro calls
    b) private function calls
    c) core lang modules
    d) modules from dependencies
    e) not aliased modules

  7. All-in-one truly advanced color picker. Of course for base work any is ok, but for example when working with CSS it could be really uncomfortable.
    Good picker should allow to choose picker type (for example triangle), preferred input and output format.

  8. A little, just little better prompts. For example for: String. with caps lock disabled editor should not show: String.Chars prompt and similarly for enabled caps lock. It’s really uncomfortable for longer session when every time I see modules filling all prompt places. Also extra prompts for structs.

  9. Need for speed support! :smile: Some editors have really big performance problems with lots of small files and/or really big file(s).

  10. Built-in minifier and beautifier + support for new Elixir formatter

  11. Auto-recompile file on input or on save.

  12. Good integration with documentation. For example on hover editor should show pop-up with first paragraph of docs description + provide a link (opened in sidebar) for full documentation.

  13. Support for Friday black kittens - i.e. automatically find bugs and performance issues, hahah :077:

  14. Really good support for Git. GUI shortcuts for rebase features, collision resolver, better diffs like in ExUnit and more.

  15. Support for most-popular code hosting services like: BitBucket, GitHub and GitLab -
    adding comments, creating snippets, issues and pull requests + notifications should be minimum for every editor. :smiley:

  16. Support for preview generated code when using meta-programming.

  17. Suport for mix tasks

  18. Connection with internet checker.

  19. Support for iex helpers. For example one-letter helpers in command palette.

  20. Good integration with OS (default language, apps etc)

  21. Markdown support + preview

  22. Built-in multi-communicator with code quoting :smiley:

  23. Advanced find and replace tool - support for preview and multiple files changing.

  24. Support for auto file updating - for example auto update on new version pushed to

  25. Hidden mini-games, Adblock and other Easter eggs :077:

  26. Code refactoring tools like find duplicates or auto rename project and/or module after move/rename directory or file.

  27. Good dark theme

  28. Time is up! - notification error for specified in configuration time - just to make sure that we have enough time for sleep :smiley:

  29. Tips for example for weird atoms:
    TIP: Change atom at line … column … from :exampleAtom to :example_atom.

  30. Code templates - for example GenServer template

  31. CSS style generator (like in developer tools)

  32. Vertical tabs with grouping support

  33. Customizable menus

  34. Achievements support :smile:

  35. Ecto migration and model GUI generator

  36. Builtin configuration preview, observer and other debug/statistic tools

  37. José Valim's watermark signature below combo counter :077:

  38. Forum integration - writing new posts and replies + notifications

  39. Rest time! Block editor for x minutes every y hours.

  40. Spy tools to analyze what parts of code we read too long. :smiley:


Most of these requirements just scream for Emacs …


and here I am, with almost bare bones Vim set up.


me to :slight_smile:


Here is my personal list:

I like to allocate the maximum amount of “space in my head” to focusing on solving the problem at hand, so I’m loath to reserve any amount of that space towards remembering how to interact with some overwrought Editor/IDE.

If there are repetitive tasks that need automating there is probably a way to script it in the shell or Vim/Emacs.

To get sufficient mileage out of “full featured” products you are either drowning in a medium with way too much boilerplate and/or your are just cranking out “nearly” the same thing over and over again.

And lets remember that sometimes repetition is a good thing because that is how we learn (or get motivated to do things in a better way next time).


Some people can’t live without their editors to the extent that they’d rather spend a day fixing their configuration to working with a feature that does not work after some upgrade. And stuff breaks after upgrades. I’ve been told someone didn’t do something assigned because their editor broke before, and for me it’s just plain crazy.


Exactly, current editors and IDE’s requires lots of hours to prepare and/or learn commands/shortcuts. I don’t have enough time to do that, so I end up with making some things manually.

Sublime Text 3 is fine, but with really big number of files in one directory it requires lots of time just after every start. At least it allows to have those files in tree.

IntelliJ is configurable, but too slow for same situation and I need to prevent loading such directories.

Emacs and Vim requires time learn and change habits.


You do not have to change habits if your first programming experience was C written in vim in first place.


I’m on the Emacs side of things. Took me a while… but I’m glad I did go all in on Emacs.

My current line of though is that every programmer should master at least one good programming text editor (not a full featured IDE like IntelliJ but one pure text editor like Emacs/Vim/Kate/Notepad++/Etc). This is good skill for being productive. You should be really good at shortcuts, text search/replace/count/selection/etc.

Then, if you feel the need, go to an IDE. Not before dealing with a pure “text buffer” oriented text editor.

Just a tip: do not try to learn a new language while learning Emacs… I tried to learn Erlang and Emacs together (there were no Eclipses/IntelliJs at the time for Erlang) coming from a Java OO world with all the tools that Java provides… Boy that was a baaaaaad decision… but after a while (could have been a shorter while…) I feel comfortable with Emacs. The typing hands position thing truly makes sense when you think about it…


I had only used TextMate and after that Atom - I had tried emacs twice and always stopped because of “habits”. Just force yourself to use it, go through the tutorial inside emacs itself, install alchemist & elixir mode and start using it. You’ll probably end up adding stuff as you go and you’ll probably don’t want to go back (Except for very long html documents, or vue templates :p)


The important thing is to bet on a safe horse :smiley:

I was lucky so that I initially used emacs and then swapped to vim. I learned these editors 15-20 years ago and the good thing is: They haven’t changed.

My shell hasn’t changed, man pages haven’t changed, find, grep, sed haven’t changed. Which means I spent some time learning things and I can still use them as it was 20 years ago.

A unix like environment is my IDE and it hasn’t changed and I think that in 10 years time I can still use the same tools. So well spent time learning.

During this time lots of IDEs and text editors have gone by but they never last. I can’t see VSCode or Atom live for long either. Same thing with chat environments I guess. The only one left from 25 years ago is IRC. Gone are all the other hyped one in between.


Also preparing for Emacs.

I started from Kate/Kwrite (for real developing). Also agree that big IDE at start is bad idea. Now I need a well configured editor. I don’t care about default settings/shortcuts - I would like to prepare menus and shortcuts on my own - only in that way I’m most productive.

Yeah, taking a two bigger things to learn at same time is also bad idea - I fully agree.

Similar here, but I tried more editors and IDE(s) and yes I will probably end up as you said. :smile:
Big (static) HTML documents is (at least for me) bad way. I prefer to generate all stuff except core things like layout.

I prefer to configure editor on my own rather than stay with “someone habits” all the time. There is no default configuration that everyone will love - especially not me. I have a really good gaming keyboard and mouse with lots of extra keys, so it’s time to use them. I will probably don’t need other menus that context menu, so any default configuration with other menus visible is not good for me. :smiley:

1 Like

I’m still rather surprised that Spacemacs finally converted me from VIM. ^.^;

Similar features between what I used before, but it is just faster and more streamlined, I quite like.

However, regardless of the editor, my main issue with every-single-code-editor-out right now is crappy input. We still have to type, like physically move fingers around a bulky keyboard and all. I want a good brain-machine interface so I can just think commands and they get done as fast as I think them. ^.^


Well … it really hasn’t has it?
Evil-mode allows you to stay in Vim-land while taking advantage of the Emacs ecosystem. So I expect it should be fairly easy to go full-Vim when you need speed for some quick editing tasks - especially on systems where you don’t have (Spac)emacs configured.

I want a good brain-machine interface so I can just think commands and they get done as fast as I think them. ^.^

I’d imagine most people’s stream of consciousness is pretty messy so I’d expect the output to be fairly garbled and error-laden. Usually there needs to be more thinking before/while coding/refactoring so typing may be a justifiable speed governor.


This is interesting. Just looking at it, but still I’m not Emacs or VIM user.
I’m not used to have everything under shortcuts and commands.

Look, in every program first thing that I’m doing is browsing menus looking for options, then browsing options looking for this one that will be useful for me like theme or shortcuts. Finally I set all options on my own and don’t care about default settings - almost never I used default settings.
Spacemacs looks really interesting, because it gives me few options at start. I can see nice dark theme at start (good as default). But for beginner it’s still another world. :smile:
For example I always think that M-x means Meta+x when it really means Alt+x (in Linux). Emacs looks really interesting, but now I have justified fears that wrong key combination could run something like: rm * command in current directory. :smiley:

At start it installs lots of packages - I don’t even know what they are doing and don’t see a list of them to find info about them. This default setup is fine for someone that knows it, but new people like me seeing only hell in dark theme. :smiley:

This could be good if it will look really similar, but:

  1. Allows custom mode - if I don’t know emacs or vim then I could do it on my own. I have keyboard with lots of extra keys that just waits for a shortcut editor. :smile:
  2. Ask for every package - probably I will not use more than half of them
  3. Ask for every default shortcut and allow to skip if not needed now

Now I need to look at configuration/script files or browse documentation for commands to change shortcuts (if any).

I would like to configure quickly configure emacs for my needs (just few base shortcuts), so I could edit first files and see which settings change I need the most. Now I need to read documentation, learn and remember before first edit.

Maybe you know a “5 min.” emacs tutorial, so I do not need to read whole documentation now.

The nice thing about Spacemacs is that almost everything is already there. You simply enable the layer in the configuration and if you open an unconfigured file type it asks you whether it should enable the layer.

It has three editing modes: Vim, Emacs and Hybrid. Tutorial

That being said Vim (i.e. the plain editor) is faster and more lightweight and probably more prolific - I just didn’t acclimatize to the “Vim modal user interface” quickly enough - Emacs simply made more sense to me (but some people switch to Vim to avoid Emacs Pinky syndrome).


It keeps most of the keys and syntax, but the options and other things are just entirely non-existent in Spacemacs, I’ve gotten over ‘most’ of them but I keep finding myself trying to :set wrap/:set nowrap on occasion (I just get a weird error now)… ^.^;

I would say again for you to first do the Tutorial inside emacs, it will take you a few minutes, and will make you come to grips with the basic navigational keys/commands. After the tutorial a few things always worth keeping in mind Esc-Esc-Esc either collapses all buffers, leaving only 1, or quites whatever command you’re writing, and C-g quits whatever command you’re doing. C-_ undo’es, you can move through ALL changes you have made in a buffer (to invert the direction of the undo just C-g or any other do-nothing command and continue using C-_).

Then you’ll probably want to install (besides alchemist and elixir mode), projectile (for easy navigation on folders /files), smex, tagedit and magit. And whenever you find something that doesn’t work as you would like just google it, probably someone already did something, or you’ll figure out how to get that done. You can basically bind and create your own commands and key-sequences so you have plenty of room to customise it


The problem when you say you’re not an Emacs or Vim user is that then you’ll get a zillion of their users trying to convert you and convince you why you should use Emacs or Vim. They’re both great if you like their way of doing things. I’ve used Emacs for specific purposes about five lengthy times in the past 20 years. I’ve never taken to it primarily because it gets in my way. I can hear Emacs users sighing and see them rolling their eyes. The thing is, Emacs is amazingly configurable and has powerful features, but I don’t want to spend hours and hours and days and days and weeks working on my editor. I want to do my work. Spacemacs is a big step in the right direction, but I still found myself spending 10, 15 minutes or longer trying to find out how to do something simple that I would have finished in 5 seconds in Atom or TextMate. I used Spacemacs for well over a month and just got tired of spending my time on Spacemacs/Emacs once again. I use Vim on remote servers for lightweight editing and love it for that.

There’s no perfect editor solution. I think people fall in to three camps:

  1. Semi-GUI editors like Atom, Sublime, and TextMate
  2. Heavily configurable editors like Emacs
  3. IDEs like Intellij

I’ve used all three categories in anger and unless I have a specific need (before Atom with its Clojure plugin, Emacs was the best editor for Clojure), I always end up back in category 1. In the early 00’s when I did heavy Java work, I first used Visual Age for Java and later Intellij. They were great for that environment and Emacs was great for Clojure.


Vim bindings is my most important requirement. Using a mouse to navigate code is just plain silly. And learning the all the nav keys for a new editor is just too distracting.

My second requirement is for good mouse support for navigating windows and panes. I’m too old to remember all the shortcuts. And even when I do learn new ones, there are times when I’m too lazy to use them, reverting back to the mouse. I find the recol of new commands breaks me out of my coding flow.

I’ve tried most of the popular editors like Spacemacs, VScode, atom, and Vim. But I keep coming back to ST 3. I just can’t get a workflow that works for me better in the other editors. They all bring some nice features which I wish I could have in Sublime…

Out of all there others, I found Spacemacs the most promising, and VSCode the most familiar. At one point I thought I might stay with VSCode (despite it being a MS project), but I just could not get it to work as well as Sublime.