Development setup
Jul. 13th, 2022 11:35Over the course of my software engineer career I continue to do code related tasks most of my time, so development setup is an integral part of my work environment.
Even with my latest project, where I'm a "one-man army" of a data engineering unit and I oversee whole process and wear a variety of role hats, this is still true and setup efficiency affects me every day.
For different reasons, including my detestment of the JetBrains company as elitist group no different from Google themselves and also being a Russian company, few years ago I left their products completely, after being a legit paying user for quite some time. I could not say that I didn't like IDEA at the time, but everything has an end and IDEA had its own point of no return to me.
Since then I took more marginalized approach (which is more mainstream nowadays though) and base my setup on Neovim editor with relevant to a programming language of a moment set of plugins and configurations. One who's interested to see, feel free to roam through its configuration.
In short, my setup includes Neovim (usually latest build from master branch) with all LSP ecosystems wihin Neovim itself and from languages I use like Scala/Metals, Java/JDTLS, Rust/Rust-Analyzer, Python/Pyright and others.
Such an approach allows to unify editing experience while easily switching between very different programming ecosystems. And don't forget that it enables actual ergonomics in how you type and move your hands (so stuff like RSI is delayed).
no subject
on 2022-07-13 10:57 (UTC)Weird. Do you mean you can do big refactorings in Neovim? Easy reformattings of all kinds of file types? Creating run configurations from .pom files?
no subject
on 2022-07-13 12:13 (UTC)Most of the tasks are boiled down to motions or actions that are natural to editor or to LSP client, so they are either done within the file by editor or by LSP server or related tool and provided to editor.
It depends on the support of LSP features by a particular LSP server, but in general mature languages has all what you need from completion to refactoring actions to specific operations like swapping arguments of a fuction or extracting a value (when you extract a value from a statement and introduce new named one).
Changeset in PR for a Beam project was done completely in Neovim with a JDTLS server for Java, for example, and for an experienced user it's not harder than if it'd be done in IDEA or other IDE.