6 ms·
Escape IntelliJ: Scala and Kotlin LSPs on Emacs Eglot
- roegerle 2mo agousers should just turn off all the plugins they'll never or rarely use.
- sawrtagy 2mo ago[dead]
- phmx 2mo agoThe Metals documentation includes instructions for setting it up with Emacs. I followed them, and everything works, including worksheets. https://scalameta.org/metals/docs/editors/emacs https://scalameta.org/metals/docs/editors/emacs
- marginalia_nu 2mo agoThe fact we still don't have a decent Java language server is one of my canaries for the fact that LLMs still, generally speaking, can't ship. There is undeniably demand for this sort of thing, but nobody is coming to meet it. (jdtls, bless it for trying, is just not good)
- TiredOfLife 2mo agoThe one in VS Code seems fine. It's not quite intellij level, but what is. And speaking on llm and lsp. The new PHP lsp PHPantom (with help of llms) is approaching jetbrains offering fast.
- marginalia_nu 2mo agoThat's just a wrapper for jdtls. I mean it works on some projects, but fails on many gradle builds and is basically just running the Eclipse IDE headlessly. This is probably the one contender: https://github.com/georgewfraser/java-language-server https://github.com/georgewfraser/java-language-server and it kinda works, but it's also a bit lacking.
- Squarex 2mo agooracle has some lsp based on netbeans, but it's not great either
- spockz 2mo agoMetal, the Scala LSP, seems to do Java just fine. When using it in VSC, I feel the limitations compared to IntelliJ are more coming from VSC than from the LSP. Dependencies etc just resolve fine, it is just the UI that is not as polished as IntelliJ’s. I try VSC with Metal twice a year. It works fine for small projects. But for bigger projects it lacks the more holistic approach that IntelliJ has and feels more like a text editor with smarts bolted on than an IDE. I’m using Zed a lot as well for Golang and a bit for Rust. For Java it is also hard to use and lacking the same polish.
- pjmlp 2mo agoThe problem is using Gradle, for starters.
- marginalia_nu 2mo agoI do enjoy my 3s build times though, even if it comes at a considerable cost of sanity points whenever anything needs changing or doing in the build.
- deleted 2mo ago[deleted]
- AJenbo 2mo agoWhat's missing from PHPantom?
- timanderson 2mo agoHow is the Oracle one? It has better reviews in VS Code marketplace than the Red Hat one (jdtls)
- whazor 2mo agowhy do you need a java language server? Let them use the same tooling you would use in CI
- Cthulhu_ 2mo agoThese are two different things; a language server would be a standardized intermediate layer between said CI tooling and any editor for inline / realtime checking, code suggestions and formatting.
- adamddev1 2mo agoExactly. I've been trying to say this. Some people think that because people can write CRUD APIs and end-user apps with AI, no-one will need to write code anymore. There is so much to be built in terms of tooling and libraries where we need tight, solid, well-crafted, original, unique code.
- marginalia_nu 2mo agoThey have a real weakness when it comes to designing something that doesn't have a design precedent. There are no good java language servers, so it can't design a good java language server. You can also show this with by e.g. asking an LLM to design an internet search engine in Java, for which there doesn't exist very many examples, and my own Marginalia Search and my devlog is one of few design examples it has to reach for. Even mentioning nothing of MS just using similar constraints, you'll get a nearly identical design to Marginalia Search. Algorithm choices will be the same. Document and term IDs will encoded in a similar succinct fashion (in one of my experiments, the chosen design was binary compatible). Architecture will be the same. Services and components will to a significant degree have the same names and even using the same non-standard vocabulary. It isn't word for word identical, there sure are a lot of coincidental similarities that notably don't exist with search engines implemented in other languages.
- jlgarhdez 2mo agoI am actively working on a fast language server for Java and kotlin. I’m driving it daily and it’s much faster than IJ for what I need, although it doesn’t provide all the diagnostics that IJ does… It’s on github.com/pepegar/ktlsp if you’re curious.
- jlgarhdez 2mo agoTo be clear, it’s not supported by a compiler, but rather plain tree sitter syntax parsing. I’m embarking on a bigger project to create a linter (and integrate) without relying on JVM or a compiler at all, but IDK when that’s gonna come.
- dtech 2mo agoNah, there is little demand for it that's the reason. LLMs don't need a LSP, they work better without it often. Most Java devs use IntelliJ or another IDE with its inbuilt thing. For everyone else the existing one is good enough for incidental usage. So ~no one cares
- marginalia_nu 2mo agoI care, which is existence proof that someone cares.
- dtech 2mo ago~no one == approximately no one
- marginalia_nu 2mo agoThere are multiple questionable attempts at solving this problem in this comment thread. Where did they come from? We're also commenting on a blog post that is discussing an adjacent problem to this. ... which you decided to comment on?
- Jataman606 2mo ago> LLMs don't need a LSP, they work better without it often How could LLM's work better without LSP when LSP is something don't interact with?
- mechanicum 2mo agoMy understanding was the biggest issue has always been that javac is a poor foundation for any kind of live tooling like LSPs? It’s less “make me a Java LSP” than “rewrite javac around incremental compilation and exposing a semantic DB”. Which sounds like a much harder problem.
- marginalia_nu 2mo agoWe have a java compiler API nowadays that solves this.
- mechanicum 2mo agoIt looks like that was added in Java SE 6, and doesn’t materially change the underlying problem. Have there been more recent developments?
- marginalia_nu 2mo agoI was thinking of JEP 484, which I guess technically isn't a compiler API as much as it is a class file API, but that's kind of a big deal for this type of work as probably the primary work the parts of the classpath you currently aren't editing, moreso than parsing a single .java-file, and the kludges we had before this API (e.g. ASM) were incredibly fragile.
- lilbigdoot 2mo agoI had this thought yesterday where I wondered if there was a way to run an Android app in the browser (definitely non trivial, but something I would expect to exist in some form) and nothing. If LLMs are as good as people say they are, I should be seeing plenty of useful projects like that popping up but.... I just see harnesses and other random things
- TiredOfLife 2mo ago> and forces you into a closed proprietary ecosystem https://github.com/jetbrains/intellij-community https://github.com/jetbrains/intellij-community ?
- deleted 2mo ago[deleted]
- jillesvangurp 2mo agoExactly, I've been using their community edition for years for Kotlin development. Works fine for normal day to day development needs. I had a paid subscription for a while that I just let expire because I rely more on agentic coding tools these days and I just don't write a lot of code by hand at this point. The paid version adds a lot of deeper integrations and tools that you may or may not need. Personally, I don't really miss most of that. These days the community edition and the paid edition are the same. But if you don't take a subscription, the paid stuff is unavailable. As a company, Jetbrains is a private company. It's one of the few large software companies that managed to get there without selling out to VCs or the vultures on the stock market. Of course they want to make a profit but they also create a lot of value for developers. Including a lot of open source things. I think it's nice that it's still possible to create a business by bootstrapping and without compromising your values.
- pjmlp 2mo agoI keep finding interesting that some devs refuse to pay for tooling like every other profession, yet they don't take pull requests as salary either.
- ares623 2mo agooh I thought this was somehow extracting the proprietary LSP engine that IntelliJ has and using it with Emacs.
- andylynch 2mo agoI think Jetbrains did that already; the Kotlin LSP server is derived from the (also open source) IntelliJ plugin
- sajithdilshan 2mo ago> But what do you actually get with IntelliJ? A massive, monolithic Java application that frequently hogs 8GB+ of RAM, locks up your system while “indexing pre-built binaries,” and forces you into a closed proprietary ecosystem. This is just exaggeration. I use IntelliJIDEA everyday (on mac) with multiple projects open and tbh they have optimized the IDE a lot to make it faster. I'm not saying it's perfect, but it's getting better. Also it's not closed source. The core of the IDE is open source (https://github.com/jetbrains/intellij-community https://github.com/jetbrains/intellij-community) and for some specific framework support (e.g. Spring) are available on Ultimate.
- CafeRacer 2mo agoThis is actually not an exaggeration. Ive been using WebStorm when it worked well, then it became progressively slower to the point of being unusable even on small projects.
- Bishonen88 2mo agoCounterpoint: use intellij on full stack apps with cdk, react, sqls and whatnot, multiple open at a time, without any problem.
- affenape 2mo agoI've tried using RustRover over WSL2 multiple times with every new release, but it's been a huge disappointment every time. My fans constantly spin like crazy, memory vanishes into thin air, and typing is super laggy - it even overwrites random sections of the file sometimes. On top of that, the built-in terminal is totally unusable because it craps out and freezes the app whenever there's a large output. PyCharm, on the other hand, was always great to use. But since VS Code gives me pretty much everything I need for my daily work without demanding too much from my system, I've finally moved away from JetBrains.
- jyounker 2mo agoIt sounds like IntelliJ is out of memory and the GC is thrashing. Increase the IDE's heap size(1), and it will probably work fine. (1) It's a menu option these days.
- tecleandor 2mo agoI'm trying to avoid IntelliJ because I only need it for editing TeamCity build configuration files, that are written in a Kotlin based DSL [0], and autocomplete and linting are be very helpful. I've tried Eclipse and VS Code but I don't get them to autocomplete or detect syntax correctly. Would any LSP help me with that? As I have no idea about Java, Kotlin or Gradle, everything is kinda confusing to me... -- 0: https://www.jetbrains.com/help/teamcity/kotlin-dsl.html
- anthk 2mo agoCan Java developers run a GUI builder outside the IDE and then use any other editor for the rest and then compile a project with Maven and the like?
- pjmlp 2mo agoOf course, at least those of us that know Java since 1996, and the only thing we got was the 1.0.2 JDK on a magazine cover CD ROM.
- rs_rs_rs_rs_rs 2mo agoIntelliJ Git integration is so good I wish it would be a standalone client.
- 0x1ceb00da 2mo agoYou can do "idea diff file1 file1" to open a popup with their diff tool.
- wiether 2mo agoFunnily that's the one feature I dislike in IntelliJ and thus relies on another GUI Otherwise I like having everything in one place: code, containers, databases, remotes...
- rs_rs_rs_rs_rs 2mo agoWhat are you using instead?
- wiether 2mo agohttps://git-fork.com/ https://git-fork.com/ on MacOS/Win https://sourcegit-scm.github.io/ https://sourcegit-scm.github.io/ on Linux
- koiueo 2mo agoAnd I hate it with a passion. The fact they they introduced their own terminology, their own lifecycle, always makes me doubt what will happen when I use any feature of their client. Magit OTOH stays much closer to the true git. Although for anything slightly more esoteric I still prefer native git cli.
- jbvlkt 2mo agoSometimes I also feel that Idea is too slow, especially for smaller projects or languages where I do not need top tier support. ie. I am backend rust and python programmer. I also have to work with JS/TS and C++ projects but I mostly only read through them. I started using neovim with plugins if syntax highlighting and good navigation is enough. I have also set up ideavim configuration to be as close to neovim as possible. Now I can easily switch between Idea and neovim with almost the same workflow.
- DrProtic 2mo agoPeople will go to great lengths to avoid paying for what is, arguably, an outstanding product from a great company, then think nothing of spending the same amount at Starbucks. I don’t think I’ve ever seen a company scrutinized and nitpicked as much as JetBrains.
- phplovesong 2mo agoWell its a russian company, and took part in the solarwinds hack, that was directly funded by the fsb. So, yeah, it should ve scrutinized, nitpicked and avoided at all costs. Its 2026, there is no need for a proprieraty IDE that is stuck in the early 2000s.
- marand23 2mo agoThey closed all their russian office locations at the start of the Ukraine war afaik so I wouldn't call it russian any more.
- phplovesong 2mo agoOnce russian, always russian. You cant remove the ruski once its rooted.
- denisw 2mo agoJetBrains is and has always been a Czech (and, thus, EU) company, not a Russian one. Yes, the founders are Russian, but that does not make the company so. They did have Russian offices, but closed them after the start of the Ukraine war [1]. The only confirmed link to the SolarWinds attack seems to be that SolarWinds was using TeamCity (JetBrains' CI/CD product) and that this was alledgedly used as a "gateway" to SolarWinds' systems - which doesn't require any cooperation from JetBrains, just an unpatched security issue. In fact, a patch by JetBrains for the exploited issue seems to have been available, but was not installed [2]. So while any company deserves scrutiny, these particular allegations against JetBrains smell like FUD to me. See also JetBrains' own statements on the SolarWinds thing: https://blog.jetbrains.com/blog/2021/01/06/statement-on-the-story-from-the-new-york-times-regarding-jetbrains-and-solarwinds/ https://blog.jetbrains.com/blog/2021/01/06/statement-on-the-... [1]: https://en.wikipedia.org/wiki/JetBrains https://en.wikipedia.org/wiki/JetBrains [2]: https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-347a https://www.cisa.gov/news-events/cybersecurity-advisories/aa...
- laszlojamf 2mo agoI agree that IntelliJ is a monster of a resource hog, but I have yet to find an editor where code navigation is as good. That's basically all I use it for these days, in the days of LLMs, and I still think it's worth it. VSCode, especially for golang, is terrible. I might be holding it wrong, but I've really tried, and it's just not good enough. Before LLMs, when I still refactored by hand, coworkers who were using vim or vscode used to ask me to do big refactors, because IntelliJ always got it right, whereas with the other editors it was hit-or-miss.
- terminalbraid 2mo agoThis is my experience and it really sucks that Jetbrains has devolved into such a poorly run company. It's clear a lot of their real talent who cared about the programming side and refactoring left years ago. Now it seems like all their product decisions are from bog standard non-technical business people who chase buzzwords. This is a major problem for them because they fragmented their IDE codebase so much properly maintaining it requires resources and people they don't have and would have to invest years of effort to replace. But that doesn't maximize quarterly profit, so it's left to decay and we get hourly LLM plugin updates.
- cmrdporcupine 2mo agoI've used IntelliJ since 2004 and it's always been a resource hog and always perpetually just beyond the faculties of the typical developer workstation. They've struggled with it since forever. I don't think they've devolved at all. They've always been a mix of brilliance (far ahead of everyone else on refactoring and semantic analysis, etc) and challenges. And it has a lot to do I think with just being a relatively small team. And the wave of LLM/agentic stuff has been a serious threat to them. Their efforts with Junie and the things before that have been faltering steps. I do think it's beyond the point where they probably should just rewrite the core things they do in Rust. Their issue since day one has been it seems they're in a perpetual fight with the JVM garbage collector.
- selivanovp 2mo agoSignificant portion of their staff left in 2022, when they decided to relocate from Russia and they keep bleeding engineers ever since. Despite registration in Prague, JetBrains has always been a Russian company with dominantly Russian employees.
- phplovesong 2mo agoSame for the jetbrains PHP based IDE (iirc named something in the likes of webstorm, or phpwind etc) is super slow and hogs ram like crazy. Also most devs using it have really, relly poor skills. Its weird i know, but i see it time and time again.
- WalterGR 2mo ago> Also most devs using it have really, relly poor skills. Its weird i know, but i see it time and time again. Specifically in the PHP community? Legitimately curious...
- vanyaland 2mo agoworth noting the kotlin-lsp here is jetbrains own, basically intellij analysis engine running headless. you're just dropping the intellij gui
- hocuspocus 2mo agoJava LSPs are essentially the same approach, headless Eclipse JDT or NetBeans. While Metals for Scala was an overhaul from the former Eclipse plugin (and Ensime) plus early experiments embedded in the Scala 3 compiler. And Metals v2 is yet another rewrite. Metals is architectured in a completely different way, see the BSP: https://build-server-protocol.github.io https://build-server-protocol.github.io
- mastermage 2mo agoI enjoy JetBrains IDEs alot. Altough I mainly use Dataspell and Datagrip and not Intellij but they make my life easier. Specifically when connecting to new DBs
- minraws 2mo agoI wrote an LSP for kotlin and java recently and it's so annoying how tightly coupled all the LSP stuff is in IntelliJ to the IDE itself they have a outside LSP project which seems to be going very slow or nowhere is very sad. Note I tried to use IntelliJ to build it the performance was not nearly as nice as I would have liked still better than a lot of LSPs but still. I know a bunch of folks have tried it but I think only Jetbrains can build a good one, unless someone actually goes all in on solving this for a few months and rebuilds the parsing and types systems outside of the Jetbrains toolchain and ecosystem. Java is likely easier but it's also quite jank in terms of how existing solutions work. But I like projects like this, I am not against IntelliJ it must be great had been great when I was learning but I want a lsp to use for scripts and the small edits, opening a massive IDE is very overkill for the kinds of small changes I like to make now.
- pjmlp 2mo agoI will quote the blog post announcing Kotlin as project, so naturally it is tied to InteliJ. "The next thing is also fairly straightforward: we expect Kotlin to drive the sales of IntelliJ IDEA. We’re working on a new language, but we do not plan to replace the entire ecosystem of libraries that have been built for the JVM. So you’re likely to keep using Spring and Hibernate, or other similar frameworks, in your projects built with Kotlin. And while the development tools for Kotlin itself are going to be free and open-source, the support for the enterprise development frameworks and tools will remain part of IntelliJ IDEA Ultimate, the commercial version of the IDE. And of course the framework support will be fully integrated with Kotlin." https://blog.jetbrains.com/kotlin/2011/08/why-jetbrains-needs-kotlin/ https://blog.jetbrains.com/kotlin/2011/08/why-jetbrains-need...
- minraws 2mo agoGiven how much outside support they have received they could also make a paid lsp available like they had Resharper, I would be willing to pay for a paid lsp if I use the language enough. 10$ a month for an LSP with all the bells and whistles, should be easier to maintain than an entire IDE tbh. And they can sell me on advanced features in their IDEs through it. I just don't want to have to open a bulky IDE anymore, IDEs just suck for me as a development tool.
- microflash 2mo agoAs a very heavy user of IntelliJ and associated family of IDEs, I’d say they are extremely bloated compared to a few years ago. My latest annoyance with IDEA has been extremely slow disk sync. If I edit something outside the IDE, it takes a while to appear in it. They should cut down the binary size and ship a leaner version without all the bundled plugins. They should improve performance on extremely large projects (both memory and IO). Although I have let my personal Ultimate subscription expire, I still use it at work because debugger, codenav and autocompletion are still best in class.
- mcv 2mo agoIt's great that Emacs gets more support of course, but personally I've never really got the hang of it. I actually like IntelliJ. To the point that I can't even bear VS Code. And for simple editing, vi is still my thing. I don't think that will ever change. I assume Emacs sits somewhere between the two.
- sevenzero 2mo agoI was thinking of unsubscribing from IntelliJ just today because my file tree doesn't update for like 5 minutes when I create new files with my terminal. Its utterly broken.
- koiueo 2mo agoLet me guess, macos?
- sevenzero 2mo agoNah Lenovo ThinkPad
- koiueo 2mo agoHave you increased the number of inotify watches? I'm having issue on mac, but never had it on Linux after setting inotify limits sufficiently high
- sevenzero 2mo agoHmm I could try that, but honestly I dont see why I should pay 30€ a month for an IDE that I have to manually tweak for :/
- c16 2mo agoI've been using Goland/IntelliJ since I graduated. Been paying for it for years. But the resource hog and I guess focus on writing a mediocre AI side panel really killed it for me. The main improvements lately were: - line/function prediction - Claude Code plugin And I can use Claude Code in any terminal. So I've switched to zed.dev and use Claude there. Wish it had the line prediction though.
- btreecat 2mo agoYour writing Scala, let's be real your ide resources are not your primary concern. The way it actually understands your interface is.