doomemacs/modules/lang/scala/config.el
2022-05-22 21:26:03 +01:00

58 lines
1.4 KiB
EmacsLisp

;;; lang/scala/config.el -*- lexical-binding: t; -*-
(after! projectile
(add-to-list 'projectile-project-root-files "build.sbt"))
;;
;;; Packages
(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)
(when (featurep! +lsp)
(setq-hook! 'scala-mode-hook lsp-enable-indentation nil)
(add-hook 'scala-mode-local-vars-hook #'lsp! 'append))
(set-ligatures! 'scala-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"))
(use-package! sbt-mode
:after scala-mode
:config (set-repl-handler! 'scala-mode #'+scala/open-repl :persist t))
;; Tree sitter
(eval-when! (featurep! +tree-sitter)
(add-hook! 'scala-mode-hook
#'turn-on-tree-sitter-mode
#'+tree-sitter-keys-mode))