3 ms·
Could you provide some concrete examples? I ask because modern editors can do most things people often regard as IDE only but there is still the odd gem that’s
by Lio 5y ago
Could you provide some concrete examples?
I ask because modern editors can do most things people often regard as IDE only but there is still the odd gem that’s worth hearing about.
- sa46 5y agoI'm not familiar with state of the art for language servers but here's common IntelliJ refactors I use across Go and TypeScript (and Java a while ago): - Add a parameter to a method signature and fill it in with a default value. - Reorder method parameters. - Extract a block of code to a method that infers the correct input and output types. The most advanced refactoring I've done with IntelliJ is structural replace for Java which can do something like: for every private method matching the name "*DoThing" defined on a class that extends Foo, insert a log line at the beginning of the method: https://www.jetbrains.com/help/idea/structural-search-and-replace.html https://www.jetbrains.com/help/idea/structural-search-and-re... I make heavy use of the "integrated" aspect of IntelliJ. One of the nicer benefits is that SQL strings are type-checked against a database schema.
- bestouff 5y agoAll of these are doable with LSP. I'm a big fan of the "LSP rename" action which will rename a particular semantic item (e.g. a method) across files, or the refactoring actions (e.g. change an "if let" into a "match" in Rust).
- jen20 5y agoDo you have an example of a language server capable of structural refactoring of the type mentioned in the GP? The “semantic rename” is table stakes from ~20 years ago in IntelliJ and ReSharper, and even Eclipse.
- unrealhoang 5y agoStructural refactoring as in extract function/variable? You can find that in Rust Analyzer https://rust-analyzer.github.io/manual.html#assists-code-actions https://rust-analyzer.github.io/manual.html#assists-code-act...
- Measter 5y agoRust Analyzer can do structural search and replace [0], though I've never used it nor IntelliJ's so I can't compare how capable both features are. [0] https://rust-analyzer.github.io/manual.html#structural-search-and-replace https://rust-analyzer.github.io/manual.html#structural-searc...
- matklad 5y agoEverything is doable with LSP as it is an extensible RPC essentially. But the above things are not done in LSP generally. It doesn’t have first-class support for structural search replace. It doesn’t have support for interactive refactors which require user input.
- colordrops 5y agoI want to customize every last element of my editor, have native VI bindings for everything, and run in a terminal. What IDE does that?