diff options
Diffstat (limited to 'user/kakoune')
| -rw-r--r-- | user/kakoune/default.nix | 16 | ||||
| -rw-r--r-- | user/kakoune/kakrc | 2 | ||||
| -rw-r--r-- | user/kakoune/qml.kak | 28 |
3 files changed, 44 insertions, 2 deletions
diff --git a/user/kakoune/default.nix b/user/kakoune/default.nix index 8ccad3e..2a76f7a 100644 --- a/user/kakoune/default.nix +++ b/user/kakoune/default.nix @@ -15,18 +15,28 @@ { commands = "lsp-enable-window"; name = "WinSetOption"; - option = "filetype=(javascript|kotlin|typescript|zig)"; + option = "filetype=(javascript|kotlin|qml|typescript|zig)"; } { commands = '' set-option buffer lsp_servers %{ [kotlin-language-server] - root_globs = ["build.gradle.kts"] + root_globs = ["build.gradle.kts"] } ''; name = "BufSetOption"; option = "filetype=kotlin"; } + { + commands = '' + set-option buffer lsp_servers %{ + [qmlls] + root_globs = ["shell.qml"] + } + ''; + name = "BufSetOption"; + option = "filetype=qml"; + } ]; keyMappings = [ @@ -57,4 +67,6 @@ kakoune-lsp ]; }; + + xdg.configFile."kak/qml.kak".source = ./qml.kak; } diff --git a/user/kakoune/kakrc b/user/kakoune/kakrc index b327805..fa3152a 100644 --- a/user/kakoune/kakrc +++ b/user/kakoune/kakrc @@ -1,2 +1,4 @@ enable-auto-pairs eval %sh{kak-lsp --kakoune -s $kak_session} +# hacky workaround for kakoune seemingly only loading from one autoload dir +source /home/rosa/.config/kak/qml.kak diff --git a/user/kakoune/qml.kak b/user/kakoune/qml.kak new file mode 100644 index 0000000..697467f --- /dev/null +++ b/user/kakoune/qml.kak @@ -0,0 +1,28 @@ +hook global BufCreate .+\.qml %{ + set-option buffer filetype qml +} + +hook global WinSetOption filetype=qml %{ + require-module qml + add-highlighter window/qml ref qml + hook -once global WinSetOption filetype=.+\.(?!qml) %{ + remove-highlighter window/qml + } +} + +provide-module qml %{ + add-highlighter shared/qml regions + add-highlighter shared/qml/comment-line region '//' '\n' fill comment + add-highlighter shared/qml/comment-block region '/\*' '\*/' fill comment + add-highlighter shared/qml/string region '"' '"' fill string + add-highlighter shared/qml/other default-region group + add-highlighter shared/qml/other/keywords regex \ + \b(import|as|property|final|readonly|required|default)\b 0:keyword + add-highlighter shared/qml/other/numbers regex -?[0-9]+(\.[0-9]+)? 0:value + add-highlighter shared/qml/other/booleans regex true|false 0:value + # this one was kind of annoying :( + add-highlighter shared/qml/other/type regex '([a-zA-Z]+ *)(\{.*\})' 1:type + add-highlighter shared/qml/other/builtin-types regex \ + \b(bool|date|double|int|list|real|string|url|var(iant)?|void)\b 0:type + add-highlighter shared/qml/other/function regex ([a-zA-Z]+[a-zA-Z0-9]*)\(.*\) 1:function +} |
