Elixir IDE discussion

/an-aside

Why is it not completing the module name too? Atom’s does. Also why does it not fill in the arguments with defaults that you can <tab> between like in Atom as well? Can you ctrl+click (or some other hotkey) to go to the definition of a function call or a module as well?

/me has tried VSCode a few times and not been impressed as of yet, but it’s been a while and is always up for replacing Atom if finding at least feature-parity

I keep trying intellij’s elixir, but intellij is just soooooo sloooooooooow… :frowning:

I’ve not tried anything eclipse with elixir so I could not say, but I do know at least that intellij itself is so slow, even scrolling is laggy. ^.^;

This doesn’t make sense to me.

IntelliJ gained popularity almost entirely because it was so much faster than the alternatives. I started using it back in 2005 when I was doing Java work and Eclipse or Netbeans were the other viable options. They were both so slow they were unusable and would eventually bring my entire machine to a crawl.

IntelliJ by contrast was so fast I couldn’t believe it and it’s always continued to be fast. I’ve used RubyMine heavily over the last few years and just recently switched to IntelliJ Ultimate because I’ve got so many languages plugged in that it just made more sense…but it’s been zippy every step of the way.

The only time I ever had a performance issue was after I switched to Fedora I noticed that startup times were around 20 seconds long and it turned out to be because of lack of a hostname reference in /etc/hosts. Soon as that was taken care of, everything was great.

Oh it is faster than Netbeans and Eclipse both as a Java IDE. However ‘as an IDE’ compared to other IDE’s (I like to compare it to KDevelop, vim, and emacs, and lately atom as well, which are all ones that I use pretty heavily) and it is dog-slow in comparison to those. So yes, in comparison to other Java IDE’s, it is fast, but it is not fast in the overall IDE ecosystem. ^.^

I meant back in 2005 it was already fast and has gotten faster since. It’s still faster than any alternative with even remotely equivalent functionality. Usually the slowest part is letting it finish indexing your codebase on startup which will vary based on size. Unless you are opening/closing the entire IDE constantly I’m extremely skeptical of poor performance claims.

Well what I experience most often are 2 big things:

  1. Random freezes every few minutes where it freezes for 5-15 seconds when heavily using it.
  2. Anytime there is any decent amount of code on the screen and I scroll then it does this low-FPS jumping movement that makes me a bit motion sick.

Both of which look very bad on it.

Compared to KDevelop, which I find an absolute king of IDE’s (at least for C++). It’s intellisense is better, faster, more detailed (I can even go through multiple levels of macro nesting and see each step unfold), and better yet is it never freezes or hurgurks with low-fps when scrolling. ^.^

Even Atom does not have that slow scrolling issue (although it does freeze on occasion, but those are more around freezing for 1 second every few minutes, which is more dealable).

And I tend to keep my IDE’s (KDevelop, emacs, vim, atom, intellij) running for weeks at a time without reloading, so no reloading issue there. ^.^

Let’s see, atom has been up for 39 days, 2 hours, and 23 minutes.

This computer has been up for… er… 509 days, 17 hours, and 53 minutes, I should probably reboot… (I’d like to see my work computer be up for this long… ^.^).

But overall the slowest part of intellij is easily the rendering performance, it is pretty abysmal. The rest of it seems pretty fast though, especially compared to other IDE’s built in Java.

That’s really strange. Never experienced anything like it.

Atom on the other hand, just kills my computer if it’s left open overnight.

Probably because Atom uses GPU-accelerated rendering where IntelliJ does all Java (with some C++ bindings) rendering, thus all on CPU. Intellij’s ‘rendering’ performance problems would likely be solved if they used a decent GUI toolkit (like QT5) instead of the horror amalgamation it uses currently (a weird mix of C++, Java, and some really low level bindings last I looked, all to avoid Swing).

If so you should submit a bug report, they have been really fierce on performance bugs the past year and things like it dying become priority 1 bugs. Are you sure you do not have a bad plugin installed? It has some great debugging tools built in.

For note, KDevelop uses QT. ^.^

1 Like

I’ll give it another look. Ended up just using Sublime for a text editor though.

Good questions! I’ve never tried Atom’s elixir plugins, I’ll give them a shot today!

1 Like

I switched from Intellij to Atom when we switched from Ruby to Elixir because of the same constant freezing issues on osx. I found my computer just runs better without rubymine running. Maybe some of the differences people are seeing are due to Windows vs OSX versions?

Atom’s not perfect either - not having an Elixir formatter is an annoyance, and I can’t figure out how to select a string in my iex window, but on the whole it’s a much smoother experience.

It feels like this discussion has derailed a bit, perhaps the IDE discussion should be split into a new thread?

Very true, done. ^.^

1 Like

Thanks! I was going to suggest the same thing :slight_smile:

I’ve been using Atom most of the morning and the autocomplete is pretty good! Are there any customizations you’ve made, or are you rolling with stock elixir extensions?

Bumping up the maximum allowed memory for the Intellij JVM usually makes it perform better. JVM loves chewing memory.

Does the Atom package work with umbrella projects? Autocompletion isn’t currently working for me.

I tried Atom, but it’s really slow for me, and i have no idea how to change this stupid default behaviour of cmd+click on osx which put’s another cursor when it’s clicked. There seems to be, sadly, no way to redefine this to something actually useful.

I use daily Rubymine for work, and the only slowdown I see is when I open a new project that was never yet indexed by Rubymine, it takes teens of seconds for bigger projects, but then works without any slowdown. And it’s go to definition, or go to usage has no match actually, and let me navigate code very swiftly. That is why I tried IDEA for Elixir and I am really satisfied with what it offers. I tried vs-code with elixir plugin too, and it was OK too, but IDEA plugin made by @KronicDeth is simply better.

I tried to use IntelliJ’s plugin but it wasn’t that good as I expected (issues with autocompletion and coloring syntax). Atom is a bit crashy, but for me it’s the best one with Elixir & Phoenix plugins.

1 Like

The Autocomplete items list seems to mostly update on compile, so I try to compile often. The build-elixir package is good for that. Compile on save was a bad idea for me though, it was very disruptive.

I also use linter-elixir-credo and atom-elixir.

Emacs with Alchemist mode. I’ve tried the other editors, but the key chords in Emacs are what I’m comfortable with.

I wanted to have a cool text editor with a cool theme, but I’ve just settled down with Emacs with the default theme and a few choice customizations :slight_smile:

1 Like

Hmm, I have a lot of extensions, let me list the ones that are obviously elixir related or buff it (I might be missing some):

  • atom-autocomplete-erlang
  • atom-elixir
  • atom-elixir-playground
  • auto-complete-elixir
  • autocomplete-erlang
  • build-elixir
  • busy-signal
  • elixir-cmd
  • elixir-pry
  • file-icons
  • git-status
  • git-time-machine
  • highlight-selected
  • iex
  • intentions
  • language-elixir
  • language-erlang
  • linter
  • linter-elixir-credo
  • linter-elixirc
  • linter-ui-default
  • minimap
  • minimap-bookmarks
  • minimap-cursorline
  • minimap-find-and-replace
  • minimap-git-diff
  • minimap-highlight-selected
  • minimap-linter
  • minimap-pigments
  • minimap-selection
  • minimap-titles
  • phoenix-elixir-snippets
  • tree-view-git-status

And an absolute TON more for things like ocaml, javascript, ton of base file types, etc… etc… I have many hundreds of packages installed. ^.^;

I very much had to do that with mine when I edited a few java projects last, kept crashing until I did. Also not a professional indicator. ^.^;

Not tried, I don’t use umbrella’s. I prefer making individual distinct libraries then a ‘mega’ project that just depends on all of those (with little to no code in it). It’s a pattern I’ve used since the erlang days, but it works wonderfully with it.

That is configurable. You can hit Ctrl+. to turn on the key resolver, then do ‘something’ and it pops up at the bottom what was bound and what happened, and you can just rebind those keys in your settings or so. My Ctrl+Click, since I use the hyperclick package (and lots of addons, I forgot to list it above), will open up the definition file for whatever I clicked on.

This is something a lot of people keep saying is the indexing, but I never noticed that slowing down Intellij, it ran in the background just fine without slowing anything down (intellisense did not work until it was done, but eh) so that was actually a slow-down that I never experienced with Intellij, it’s background processing seems just fine.

Post the crash logs. It should absolutely not crash, they are hard on that currently.

I like compile-on-save, I use a linter that lints that along with credo’s linter. What is disruptive?

Heh, I use elixir via emacs a lot too, it is very nice, just lacks a few features I use too often in atom. ^.^;

2 Likes