summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2023-07-04 19:33:37 +1000
committerMaxime Coste <mawww@kakoune.org>2023-07-04 19:33:37 +1000
commit3fae7cd7c045f0a574ce83da574f0b678d1bc0ad (patch)
tree4a621c7ffccc91f01efd0fd841f02cf1456a8fe7
parent96ff68aeae0f21ab9b1e717987f867d17344c8bf (diff)
parent3cca4c5098605964f839769c2169f04820bf1908 (diff)
Merge remote-tracking branch 'arrufat/zig-auto-remove-empty-comments'
-rw-r--r--rc/filetype/zig.kak20
1 files changed, 16 insertions, 4 deletions
diff --git a/rc/filetype/zig.kak b/rc/filetype/zig.kak
index fe1df7ac..afdeb521 100644
--- a/rc/filetype/zig.kak
+++ b/rc/filetype/zig.kak
@@ -101,10 +101,22 @@ define-command -hidden zig-trim-indent %{
}
define-command -hidden zig-insert-on-new-line %<
- evaluate-commands -draft -itersel %<
- # copy // or /// comments prefix or \\ string literal prefix and following whitespace
- try %< execute-keys -draft k x s ^\h*\K(///?|\\\\)\h* <ret> y gh j P >
- >
+ try %[
+ evaluate-commands -draft -save-regs '/"' %[
+ # copy // or /// comments prefix or \\ string literal prefix and following whitespace
+ execute-keys -save-regs '' k x1s^\h*((///?|\\\\)+\h*)<ret> y
+ try %[
+ # if the previous comment isn't empty, create a new one
+ execute-keys x<a-K>^\h*//+\h*$<ret> jxs^\h*<ret>P
+ ] catch %[
+ # if there is no text in the previous comment, remove it completely
+ execute-keys d
+ ]
+ ]
+
+ # trim trailing whitespace on the previous line
+ try %[ execute-keys -draft k x s\h+$<ret> d ]
+ ]
>
define-command -hidden zig-indent-on-new-line %<