mirror of
https://github.com/doomemacs/doomemacs
synced 2025-08-01 12:17:25 -05:00
80 lines
2.0 KiB
EmacsLisp
80 lines
2.0 KiB
EmacsLisp
;;; lang/scala/config.el -*- lexical-binding: t; -*-
|
|
|
|
(after! projectile
|
|
(add-to-list 'projectile-project-root-files "build.sbt"))
|
|
|
|
|
|
;;
|
|
;;; Packages
|
|
|
|
(defun +scala-common-config (mode)
|
|
(set-formatter! 'scalafmt '("scalafmt" "--stdin")
|
|
:modes (list mode))
|
|
(set-repl-handler! mode #'+scala/open-repl
|
|
:persist t)
|
|
(set-ligatures! mode
|
|
;; Functional
|
|
:def "def"
|
|
:composition "compose"
|
|
;; HKT
|
|
:lambda "Lambda"
|
|
;; Types
|
|
:null "none"
|
|
:null "None"
|
|
:true "true"
|
|
:false "false"
|
|
:int "Int"
|
|
:str "String"
|
|
:float "Float"
|
|
:bool "Boolean"
|
|
:list "List"
|
|
;; Flow
|
|
:for "for"
|
|
:not "!"
|
|
:and "&&"
|
|
:or "||"
|
|
:yield "yield"
|
|
;; Other
|
|
:union "union"
|
|
:intersect "intersect"
|
|
:diff "diff")
|
|
|
|
(when (modulep! +lsp)
|
|
(add-hook (intern (format "%s-local-vars-hook" mode)) #'lsp! 'append)))
|
|
|
|
|
|
(after! scala-mode
|
|
(setq scala-indent:align-parameters t
|
|
;; indent block comments to first asterix, not second
|
|
scala-indent:use-javadoc-style t)
|
|
|
|
(setq-hook! 'scala-mode-hook
|
|
comment-line-break-function #'+scala-comment-indent-new-line-fn
|
|
lsp-enable-indentation nil)
|
|
|
|
(+scala-common-config 'scala-mode))
|
|
|
|
|
|
(use-package! scala-ts-mode
|
|
:when (modulep! +tree-sitter)
|
|
:when (fboundp 'treesit-available-p)
|
|
:defer t
|
|
:init
|
|
(set-tree-sitter! 'scala-mode 'scala-ts-mode
|
|
'((scala :url "https://github.com/tree-sitter/tree-sitter-scala")))
|
|
|
|
:config
|
|
(when (modulep! +lsp)
|
|
(setq-hook! 'scala-ts-mode-hook lsp-enable-indentation nil)
|
|
(add-hook 'scala-ts-mode-local-vars-hook #'lsp! 'append))
|
|
|
|
;; HACK: Rely on `major-mode-remap-defaults'.
|
|
(cl-callf2 assq-delete-all 'scala-ts-mode auto-mode-alist)
|
|
|
|
(+scala-common-config 'scala-ts-mode))
|
|
|
|
|
|
(use-package! sbt-mode
|
|
:after scala-mode
|
|
:config (set-repl-handler! '(scala-mode scala-ts-mode) #'+scala/open-repl :persist t))
|