summaryrefslogtreecommitdiff
path: root/autoload/filetype/svelte.kak
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/filetype/svelte.kak')
-rw-r--r--autoload/filetype/svelte.kak35
1 files changed, 35 insertions, 0 deletions
diff --git a/autoload/filetype/svelte.kak b/autoload/filetype/svelte.kak
new file mode 100644
index 0000000..a4469f2
--- /dev/null
+++ b/autoload/filetype/svelte.kak
@@ -0,0 +1,35 @@
+hook global BufCreate .*\.svelte %[
+ set-option buffer filetype svelte
+]
+
+hook global WinSetOption filetype=(svelte) %{
+ require-module html
+
+ hook window ModeChange pop:insert:.* -group "svelte-trim-indent" html-trim-indent
+ hook window InsertChar '>' -group "svelte-indent" html-indent-on-greater-than
+ hook window InsertChar \n -group "svelte-indent" html-indent-on-new-line
+
+ hook -once -always window WinSetOption "filetype=.*" "
+ remove-hooks window ""svelte-.+""
+ "
+}
+
+hook -group svelte-highlight global WinSetOption filetype=(svelte) %{
+ add-highlighter "window/svelte" ref svelte
+ hook -once -always window WinSetOption "filetype=.*" "
+ remove-highlighter ""window/svelte""
+ "
+}
+
+add-highlighter shared/svelte regions
+add-highlighter shared/svelte/comment region <!-- --> fill comment
+add-highlighter shared/svelte/tag region < > regions
+add-highlighter shared/svelte/style region <style\b.*?>\K (?=</style>) ref css
+add-highlighter shared/svelte/script region <script\b.*?>\K (?=</script>) ref javascript
+
+add-highlighter shared/svelte/block region \{((#|:|/)\w+)? \} regions
+add-highlighter shared/svelte/block/ default-region fill meta
+add-highlighter shared/svelte/block/inner region -recurse \{ \{((#|:|/)\w+)?\K (?=\}) ref javascript
+
+add-highlighter shared/svelte/tag/base default-region ref html/tag
+add-highlighter shared/svelte/tag/block region -recurse \{ \{ \} ref svelte/block