emacs-lsp / lsp-metals

lsp-mode :heart: metals
https://emacs-lsp.github.io/lsp-metals
GNU General Public License v3.0
58 stars 34 forks source link

Missing ability to configure metals JVM options #108

Open jypma opened 1 month ago

jypma commented 1 month ago

Metals (at least on arch linux) defaults to a heap size of -XX:MaxRAMPercentage=25.0, which can be quite significant. This can be customized by setting the METALS_JAVA_OPTS environment variable when launching metals.

lsp-metals could provide a defcustom where such JVM options can be configured.

As for implementation, that might not be obvious, since lsp-stdio-connection expects a single command with arguments. env or bash could be used here, but that would be linux-specific. Not sure how to do that platform-independently.

kurnevsky commented 1 month ago

You can do it in a bit hacky way replacing metals command with env, see https://github.com/kurnevsky/nixfiles/blob/b153ac54f0a3491e4802d13627f1a8e36564a36a/modules/emacs/init.el#L1509 for the example.

jypma commented 1 month ago

Ah, creative, thanks for the tip. I ended up writing a small script wrapping metals myself.

Should we keep the topic open? It's still something that could be more user-friendly, especially since the requirement to add environment variables to an lsp server might be needing a small patch in lsp-mode itself.