diff --git a/runtime/indent/kotlin.vim b/runtime/indent/kotlin.vim
new file mode 100644
index 0000000..590a507
--- /dev/null
+++ b/runtime/indent/kotlin.vim
@@ -0,0 +1,60 @@
+" Vim indent file
+" Language:     Kotlin
+" Maintainer:   Alexander Udalov
+" URL:          https://github.com/udalov/kotlin-vim
+" Last Change:  7 November 2021
+"               2023 Sep 17 by Vim Project (undo_indent)
+
+if exists('b:did_indent')
+    finish
+endif
+let b:did_indent = 1
+
+setlocal cinoptions& cinoptions+=j1,L0
+setlocal indentexpr=GetKotlinIndent()
+setlocal indentkeys=0},0),!^F,o,O,e,<CR>
+setlocal autoindent " TODO ?
+
+let b:undo_indent = "setlocal autoindent< cinoptions< indentexpr< indentkeys<"
+
+" TODO teach it to count bracket balance, etc.
+function! GetKotlinIndent()
+    if v:lnum == 0
+        return 0
+    endif
+
+    let prev_num = prevnonblank(v:lnum - 1)
+    let prev = getline(prev_num)
+    let prev_indent = indent(prev_num)
+    let cur = getline(v:lnum)
+
+    if cur =~ '^\s*\*'
+        return cindent(v:lnum)
+    endif
+
+    if prev =~ '^\s*\*/'
+        let st = prev
+        while st > 1
+            if getline(st) =~ '^\s*/\*'
+                break
+            endif
+            let st = st - 1
+        endwhile
+        return indent(st)
+    endif
+
+    let prev_open_paren = prev =~ '^.*(\s*$'
+    let cur_close_paren = cur =~ '^\s*).*$'
+    let prev_open_brace = prev =~ '^.*\({\|->\)\s*$'
+    let cur_close_brace = cur =~ '^\s*}.*$'
+
+    if prev_open_paren && !cur_close_paren || prev_open_brace && !cur_close_brace
+        return prev_indent + shiftwidth()
+    endif
+
+    if cur_close_paren && !prev_open_paren || cur_close_brace && !prev_open_brace
+        return prev_indent - shiftwidth()
+    endif
+
+    return prev_indent
+endfunction
