JuliaEditorSupport/julia-emacs@d360ad5285 -> JuliaEditorSupport/julia-emacs@2aca8cf585 ProofGeneral/PG@3a99da2755 -> ProofGeneral/PG@b30d65de80 abo-abo/org-download@19e166f0a8 -> abo-abo/org-download@c8be261178 agda/agda@4f82f9b90a -> agda/agda@819993172d ananthakumaran/tide@b38dfc3f8f -> ananthakumaran/tide@6a35fe355f babashka/neil@6728367eff -> babashka/neil@78ffab1868 beancount/beancount-mode@7b437abcf0 -> beancount/beancount-mode@452621fa1f cdominik/cdlatex@33770dec73 -> cdominik/cdlatex@fac070f016 clojure-emacs/cider@8fdb53e8be -> clojure-emacs/cider@c228dec27d davazp/graphql-mode@ef4aecaead -> davazp/graphql-mode@c3baca9280 diml/utop@384b3098c8 -> diml/utop@b490baca21 emacs-geiser/guile@5a856c2982 -> emacs-geiser/guile@a0f111f8de emacs-geiser/mit@4e90e9ae81 -> emacs-geiser/mit@ddd2ba733e emacs-jupyter/jupyter@f97f4b5d8c -> emacs-jupyter/jupyter@e966c5d3d6 emacs-lsp/lsp-dart@9ffbafb7dc -> emacs-lsp/lsp-dart@7e3d342941 emacs-lsp/lsp-haskell@ba49fa9822 -> emacs-lsp/lsp-haskell@6981f8d122 emacs-lsp/lsp-metals@0dc938be11 -> emacs-lsp/lsp-metals@b5139c9593 emacs-lsp/lsp-pyright@0c0d72aedd -> emacs-lsp/lsp-pyright@dd54b3ae7c emacs-php/composer.el@791a7104be -> emacs-php/composer.el@6c7e19256f emacs-php/php-mode@59814bd80c -> emacs-php/php-mode@31f702ee2d emacs-rustic/rustic@d765680373 -> emacs-rustic/rustic@9fdf5c76b2 emacs-straight/auctex@08881d08ce -> emacs-straight/auctex@0de9730957 emacs-typescript/typescript.el@fc3a4f3b27 -> emacs-typescript/typescript.el@dd10f702d4 emacsmirror/org-contrib@ccd4212866 -> emacsmirror/org-contrib@f22bdd6a58 emacsmirror/paredit@037b9b8acb -> emacsmirror/paredit@af075775af emacsorphanage/dart-mode@44beb628e5 -> emacsorphanage/dart-mode@02e919c1cf emacsorphanage/macrostep@4939d88779 -> emacsorphanage/macrostep@419873665f erlang/otp@c66bf53cde -> erlang/otp@094260aba7 flatwhatson/scheme-mode@51e586e5f1 -> flatwhatson/scheme-mode@a713b253d2 godotengine/emacs-gdscript-mode@32086df833 -> godotengine/emacs-gdscript-mode@bee7f99c6f greghendershott/racket-mode@dba66c4536 -> greghendershott/racket-mode@c5bee6895b hakimel/reveal.js@472535065c -> hakimel/reveal.js@0d02d8a303 haskell/haskell-mode@727f72a2a4 -> haskell/haskell-mode@1a285fc4c5 hniksic/emacs-htmlize@ed5e5b05fd -> hniksic/emacs-htmlize@8e3841c837 jimhourihan/glsl-mode@9b2e5f28e4 -> jimhourihan/glsl-mode@c5f2c2e7ed jrblevin/markdown-mode@6102ac5b73 -> jrblevin/markdown-mode@b8637bae07 jwiegley/emacs-async@43f97d7e68 -> jwiegley/emacs-async@af47d6f930 kaushalmodi/ox-hugo@c4156d9d38 -> kaushalmodi/ox-hugo@98421a1298 ledger/ledger-mode@a6be7a2d79 -> ledger/ledger-mode@356d8049ed necaris/conda.el@ce748a53f9 -> necaris/conda.el@05de0c8f0c non-Jedi/eglot-jl@1d9cab6823 -> non-Jedi/eglot-jl@7c968cc61f nonsequitur/inf-ruby@b234625c85 -> nonsequitur/inf-ruby@6399a36682 ocaml/dune@a7924e322e -> ocaml/dune@5ac095c7c0 ocaml/merlin@e016abfac6 -> ocaml/merlin@a36f42a5b1 org-noter/org-noter@6f292d7f1e -> org-noter/org-noter@691efc3ed4 org-roam/org-roam@0b9fcbc97b -> org-roam/org-roam@2a630476b3 purcell/flycheck-ledger@628e25ba66 -> purcell/flycheck-ledger@48bed9193c purcell/flycheck-package@75efa098cf -> purcell/flycheck-package@a52e4e95f3 purcell/less-css-mode@c7fa3d56d8 -> purcell/less-css-mode@c78b88ff9a purescript-emacs/purescript-mode@eacc61aaaf -> purescript-emacs/purescript-mode@d187b3d4bb rust-lang/rust-mode@c87f6f82bd -> rust-lang/rust-mode@542f1755d8 seagle0128/grip-mode@9adac9c989 -> seagle0128/grip-mode@d6c7e33e40 senny/rbenv.el@588b817d51 -> senny/rbenv.el@4afe1dc6bd swift-emacs/swift-mode@b06c97b909 -> swift-emacs/swift-mode@ab189d6e89 technomancy/fennel-mode@f4bd34e1c3 -> technomancy/fennel-mode@259470b297 tpapp/julia-repl@801d0fc3d8 -> tpapp/julia-repl@bb90cc1fce wbolster/emacs-python-pytest@dcdaec6fe2 -> wbolster/emacs-python-pytest@25d9801562 yoshiki/yaml-mode@7b5ce294fb -> yoshiki/yaml-mode@d91f878729 ziglang/zig-mode@f55e42536a -> ziglang/zig-mode@f0b4a48753
:lang scala
Description unfold
This module adds scala and sbt support to Doom Emacs.
Through the power of Metals (LSP) this module offers:
- Goto Definition
- Completions
- Hover
- Paremeter Hints
- Find References
- Run/Debug
- Find Implementations
- Rename Symbol
- Code Actions
- Document Symbols
- Formatting
- Folding
- Organize Imports
Maintainers
This module has no dedicated maintainers. Become a maintainer?
Module flags
- +lsp
-
Enable LSP support for
scala-mode
. Requires doom-module::tools lsp and a langserver (supports metals). - +tree-sitter
- Leverages tree-sitter for better syntax highlighting and structural text editing. Requires doom-module::tools tree-sitter.
Hacks
No hacks documented for this module.
TODO Changelog
This module does not have a changelog yet.
Installation
Enable this module in your doom!
block.
+lsp
Integration
To set up LSP support for Scala you'll need the Metals LSP server. To install it you need Coursier installed first:
Coursier
Coursier is only required to install Metals. If you're on Arch linux this step can be skipped.
Ubuntu / Debian / Fedora
curl -fLo cs https://git.io/coursier-cli-linux &&
chmod +x cs &&
./cs
MacOS
curl -fLo cs https://git.io/coursier-cli-macos &&
chmod +x cs &&
(xattr -d com.apple.quarantine cs || true) &&
./cs
Arch Linux
yay -S coursier
Metals
Ubuntu / Debian / Fedora / MacOS
Update following command to latest version of metals found here.
coursier bootstrap \
--java-opt -Xss4m \
--java-opt -Xms100m \
--java-opt -Dmetals.client=emacs \
org.scalameta:metals_2.12:0.9.4 \
-r bintray:scalacenter/releases \
-r sonatype:snapshots \
-o /usr/local/bin/metals -f
Arch Linux
yay -S metals
Formatter
Formatting is handled using the doom-module::editor format module via scalafmt.
TODO Usage
This module has no usage documentation yet. Write some?
TODO Configuration
This module has no configuration documentation yet. Write some?
Troubleshooting
- Projects are required to have scala version
2.11.12
,2.12.8
,2.13.0
or greater. - Latest version of sbt is recommended.
- Running
M-x lsp-metals-doctor-run
helps diagnose problems. - Full reference here: https://scalameta.org/metals/docs/editors/emacs.html
Frequently asked questions
This module has no FAQs yet. Ask one?
TODO Appendix
This module has no appendix yet. Write one?