That one factor was a deal-breaker and I went back to Atom (though I still use vim just as often as Atom, since I don't have every project open in Atom at any given time, and sometimes I just need to edit one file really quick and check it in).
VSCode is very good. But, as long as it's got a one-project model, I can't do anything with it.
I used to use Atom a lot but being that I regularly am pulling and investigating large files that was a deal breaker.
The biggest file I regularly work with in the editor is 10,631 lines long (I just checked, and it's longer than I thought). Atom works fine with it, including syntax highlighting, and cutting/pasting/typing/etc.
Actually...out of curiosity, I just opened up a ~110,000 line file (a log I had laying around). It seems to work fine. It took a little longer to open than it would in vim (which is effectively instant), but not as long as I would have expected. It was well under a second, and within my comfort zone for opening files. Switching tabs seems maybe a little more sluggish with it loaded, but not uncomfortably so.
I think I have to accept Atom into the category of editors that can work with pretty large files. I can't imagine having a source file any longer than that 10,000 line file I work with regularly (and I would never make a file that large, but historic codebases sometimes have weird things in them), but it seems like it'll work even if someone did.
Package system doesn't get much better than Atom. I think my code looks better on Atom (still not better than Sublime). I also ran into setup problems with VSCode git support on Linux.
* functions not really being first-class citizens * great collection methods with LINQ, but why did they give them such weird names? (map = select, filter = where, reduce = aggregate?) * took them a while to come up with a great async model (async/await), so legacy c# asynchronous code can be hard to figure out at first
Just my opinion but it seems like more recent languages like Swift have done a better job implementing ideas from functional programming. It's still light years ahead of Java to me though.
SQL.
Thus you clearly have not learned F#, nor any other (superior) Standard ML descendant (e.g. OCaml or Rust).
(Why is F# inferior, you ask? CLR interoperation requires using types and datastructures defined in C# code, which overall mean that you will use an unidiomatic style. Hence, F# is basically "a usually-less-annoying C#", unlike other SML-likes. Except Scala, whose best description is "F# on the JVM".)
Does this include the Embrace+Extend+Extinguish strategy?
And how does anyone, other than via sheer forgetfulness, think that Microsoft doesn't have similar nefariousness on today's drawing board? The revelation of the 3E strategy showed they are inherently and absolutely untrustworthy.
It's a big company, and they are not 100% evil because no company is 100% anything.
And honestly, I believe any company with a stranglehold on any market will behave badly. Rather than being salty at Microsoft in particular, let's make sure no company ever has such a stranglehold on computing again.
Actually, what with Google duplicating more and more of Android's core open-source functionality into their proprietary apps and then leaving the open-source code to rot ... Microsoft isn't unique in that way, either.
But more importantly...
> let's make sure no company ever has such a stranglehold on computing again.
That's a long road ahead, since Google has a monopoly on the average user's very mind. And don't forget that Microsoft hasn't lost their stranglehold either, except among programmers and similar personnel. They may be behind on mobile, but they've held onto largely the same markets+marketshares that they had in the late 90's (plus more, though not at monopoly scale, thanks to Azure), and desktops+laptops won't be dying anytime soon.
Atom just could not handle big files well, and years of waiting sadly didn't yield big enough results.
I based a lot of my setup on this gist [1]. My dotfiles are here [2]. I have it set up so that ‘zc’ connects to an nREPL, ‘zb’ evaluates the top block under the cursor, and ‘zz’ evaluates the entire file.
1: https://gist.github.com/jasongilman/d1f70507bed021b48625 2: https://gitlab.com/jakebasile/dotfiles
Another co-worker is the one who put together proto-repl for Atom so you'll see a lot of similar functionality in the two. I still use Atom and proto-repl just because I've been too lazy to get familiar with VSCode. But when James has demoed the debugger functionality in his VSCode plugin it looks great.