Table of Contents

kotlin layer

Table of ContentsClose


1. Description

This layer adds support for Kotlin to Spacemacs.

1.1. Features:

  • Syntax highlighting
  • Auto-completion
  • Syntax-checking with ktlint and flycheck-kotlin
  • Navigation with ggtags

2. Install

2.1. Layer

To use this configuration layer, add it to your ~/.spacemacs. You will need to add kotlin to the existing dotspacemacs-configuration-layers list in this file.

2.2. Ktlint

You must install ktlint and make sure that the ktlint binary is on Emacs exec-path

3. Configuration

All layer configurations can be done by setting layer variables in your dotfile. No custom user config lines are necessary

3.1. Choosing a backend

This layer provides two alternative backends to choose from.

3.1.1. Company-kotlin

This is the default choice if nothing is set and no lsp layer is loaded in your dotfile. This mode only provides very limited IDE capabilities. Used best if only small applications are edited. To set explicitly set the following in your dotfile:

(kotlin :variables kotlin-backend 'company-kotlin)

3.1.2. LSP

For proper IDE support this backend should be used. It is based on an external server which will be started automatically by emacs, once a kotlin file is opened. The key bindings are the same for all lsp modes so if you are already familiar with one you should be able to work the same in all modes.

To set explicitly do the following in your dotfile:

(kotlin :variables
        kotlin-backend 'lsp
        kotlin-lsp-jar-path "path/to/kotlin/installdir/install/server/bin/kotlin-language-server")

For this to work you will also need to obtain the latest version of the lsp server from here. The path to the server jar must be given in the layer variable kotlin-lsp-jar-path.

Maybe you want to set the kotlin-language-server path in user-config, you can put the following in your dotfile:

(setq lsp-clients-kotlin-server-executable "path/to/kotlin/installdir/install/server/bin/kotlin-language-server")

You can check the emacs-lsp document for more configurations at official document page

NOTE: put lsp-clients-kotlin-server-executable in layer variables will also be ok, but the reverse that set kotlin-lsp-jar-path in user-config will not work.

NOTE: Key bindings for LSP are defined in the LSP layer. Also it is advisable to have a look at the autocomplete layer for an optimal intellisense config for LSP.

Author: root

Created: 2024-05-17 Fri 04:17