]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(kdl): fix KdlIndent and kdlComment in indent script (#15019)
authorYinzuo Jiang <jiangyinzuo@foxmail.com>
Sun, 16 Jun 2024 06:47:47 +0000 (14:47 +0800)
committerGitHub <noreply@github.com>
Sun, 16 Jun 2024 06:47:47 +0000 (08:47 +0200)
Signed-off-by: Yinzuo Jiang <jiangyinzuo@foxmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/indent/kdl.vim
runtime/syntax/kdl.vim

index b1b004d0a2d71e0fac492b22ba0af31dbfd9d70e..b0a6bd90d9acba4142ecd7e431232db0d26d6015 100644 (file)
@@ -2,7 +2,7 @@
 " Language:         KDL
 " Author:           Aram Drevekenin <aram@poor.dev>
 " Maintainer:       Yinzuo Jiang <jiangyinzuo@foxmail.com>
-" Last Change:      2024-06-11
+" Last Change:      2024-06-16
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -14,13 +14,17 @@ setlocal indentexpr=KdlIndent()
 let b:undo_indent = "setlocal indentexpr<"
 
 function! KdlIndent(...)
-  let line = getline(v:lnum)
+  let line = substitute(getline(v:lnum), '//.*$', '', '')
   let previousNum = prevnonblank(v:lnum - 1)
-  let previous = getline(previousNum)
+  let previous = substitute(getline(previousNum), '//.*$', '', '')
 
-  if previous =~ "{" && previous !~ "}" && line !~ "}" && line !~ ":$"
-    return indent(previousNum) + shiftwidth()
-  else
-    return indent(previousNum)
+  let l:indent = indent(previousNum)
+  if previous =~ "{" && previous !~ "}"
+    let l:indent += shiftwidth()
   endif
+  if line =~ "}" && line !~ "{"
+    let l:indent -= shiftwidth()
+  endif
+  return l:indent
 endfunction
+" vim: sw=2 sts=2 et
index a36bb9e927f2aaf3565caf882db2851991008903..97e8f93b61846096581fdf5954c0f772ad7ad143 100644 (file)
@@ -2,7 +2,7 @@
 " Language: KDL
 " Maintainer: Aram Drevekenin <aram@poor.dev>
 " Maintainer: Yinzuo Jiang <jiangyinzuo@foxmail.com>
-" Latest Revision: 2024-06-10
+" Latest Revision: 2024-06-16
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -13,7 +13,8 @@ syn match kdlNode '\v(\w|-|\=)' display
 syn match kdlBool '\v(true|false)' display
 
 syn keyword kdlTodo contained TODO FIXME XXX NOTE
-syn match kdlComment "//.*$" contains=kdlTodo
+syn region  kdlComment start="//"  end="$"   contains=kdlTodo,@Spell
+syn region  kdlComment start="/\*" end="\*/" contains=kdlTodo,@Spell
 
 " Regular int like number with - + or nothing in front
 syn match kdlNumber '\d\+'
@@ -22,17 +23,17 @@ syn match kdlNumber '[-+]\d\+'
 " Floating point number with decimal no E or e (+,-)
 syn match kdlNumber '\d\+\.\d*' contained display
 syn match kdlNumber '[-+]\d\+\.\d*' contained display
+
 " Floating point like number with E and no decimal point (+,-)
 syn match kdlNumber '[-+]\=\d[[:digit:]]*[eE][\-+]\=\d\+' contained display
 syn match kdlNumber '\d[[:digit:]]*[eE][\-+]\=\d\+' contained display
+
 " Floating point like number with E and decimal point (+,-)
 syn match kdlNumber '[-+]\=\d[[:digit:]]*\.\d*[eE][\-+]\=\d\+' contained display
 syn match kdlNumber '\d[[:digit:]]*\.\d*[eE][\-+]\=\d\+' contained display
 
 syn region kdlString start='"' end='"' skip='\\\\\|\\"' display
+
 syn region kdlChildren start="{" end="}" contains=kdlString,kdlNumber,kdlNode,kdlBool,kdlComment
 
 hi def link kdlTodo        Todo
@@ -43,3 +44,5 @@ hi def link kdlString      String
 hi def link kdlNumber      Number
 
 let b:current_syntax = "kdl"
+
+" vim: sw=2 sts=2 et