JetBrains is good for stuff I rarely do in the editor, like certain types of debugging, but otherwise feels too heavy, expensive, and hard to configure across installs. Finding a particular config option is always a hunt.
JetBrains is good for stuff I rarely do in the editor, like certain types of debugging, but otherwise feels too heavy, expensive, and hard to configure across installs. Finding a particular config option is always a hunt.
My dad was a vim user since the 90s and he ended up switching to IntelliJ a few years ago as well. It’s just significantly less hassle and has way more intelligent intellisense/autocomplete.
I used to meticulously maintain a vim config for the 8 or so languages I switch between, but eventually realised that for me the good part of vim is modal editing, and that IdeaVIM gives me that without having to fuss with it. My vimrc is now empty and it’s relegated to commit messages and fixing merge conflicts…
One option is to use their sync service with your Jetbrain account, but you can also use git[1]
It definitely makes it easier to move machines when your settings and plugins are kept in sync with it.
[1] https://www.jetbrains.com/help/idea/sharing-your-ide-setting...
(Emacs, of course, has best in class discoverability via M-x and C-h, which allow you to find and introspect basically everything that's available to you, but then Emacs is an OS, not an editor)
Do you know you can search for an option in the settings menu? Actually, you can search just about everywhere.
You can also set your IDE to store your config in a git repo so that it's the same everywhere you use it.
Apologies if you have accessibility needs and that’s the reason, but otherwise what is so unique about your editing requirements that requires such extreme customisation? I just use tools as they come. I try not to change anything. Less entropy in my life.
You should be debugging alongside development to gain deep understanding and reduce errors. No amount of "test" coverage can replace that.
I'm always skeptical about people who don't use IDEs and I'm almost always right about them. And it's not the good kind of being right.
Can it:
- assign (scenario, subsystem, level, description) to breakpoints and watches, so they can be turned on/off or selected in groups for debugging without removal?
- commit these scenarios of bps and watches into a repository?
- edit/read them in a textual form to patch or share over an IM?
- store traces of previous sessions and diff them to find out what changed?
Does anything even remotely similar exist? Most debuggers are just test-pause-and-inspect tools with “integration” in the form of eval on mouse hover. Their ux and dx sucks and the only reason I could find to use them were slow build times and too low-level runtimes, which are no more today.
Pretty sure most people avoid debuggers not because they are too hard to learn (they aren’t), but because they are too dumb to be useful, given that you can ‘if (cond) log.level(…)’ and restart instantly.
In Jetbrain's tools they definitely can. I can
* create a bunch of breakpoints
* give them descriptions
* only have them break on execution under certain conditions (conditions stated via the programming language being debugged, so `my_struct.some_func() == 5`)
* disable and enable breakpoints with a click of a button
* have a breakpoint only become active when another breakpoint got hit (and therefore only cause the debugging logic to execute in certain code paths
* Have a breakpoint not stop execution when it gets hit, which is useful because I can then
* Log when a breakpoint gets hit, including it's stack trace (so I can see exactly the flow that got me to that breakpoint)
* Evaluate some variable when a breakpoint is hit and log that evaluation.
All of this with an extremely simple UI that can be manipulated without any recompiles and while the application is running. I've gotten tons of value of debugging complex scenarios in both C# and Rust via this constructs.
So while I'm not going to convince you that debuggers are worthwhile, to call them "too dumb to be useful" is pretty naive.
The problem that debuggers solve is simply not a big problem anymore, in my experience. Definitely not worth the setup hassle when actively working on multiple platforms.
As a fellow debugger lover, having to basically use log statements instead of being able to reach in and debug was a rude awakening. Some people probably don’t know that debugging can be easy with the right combination of IDE and language. Or the billion software layers mean that the debugger fails to attach for some reason which can’t be figured out.
Debugging and using IDEs are entirely orthogonal. DTrace and lldb are far more valuable to me than a graphical step debugger, which I effectively never use. As it happens I use JetBrains IDEs full time.