runtime(yaml): update YAML indentation for mapping keys inside list items

Commit: 
https://github.com/vim/vim/commit/9179ddc0608813e9dd7cf9ba856d61669d6f0e3a
Author: Cezar Dimoiu <[email protected]>
Date:   Thu Jan 8 20:05:07 2026 +0000

    runtime(yaml): update YAML indentation for mapping keys inside list items
    
    When a list item contains a mapping key (e.g., '- element1:'), the
    content under that key was incorrectly indented. The indent function
    was not accounting for the '- ' prefix when calculating indentation
    for nested content.
    
    Example that now works correctly:
      list:
        - element1:
            foo: bar  # Now correctly at indent 6, not 4
    
    The fix adds special handling in two places:
    1. When previous line ends with ':' and starts with '- '
    2. When looking up previous mapping key that is a list item
    
    Fixes indentation to account for the 2-character '- ' prefix.
    
    fixes:  #18943
    closes: #19133
    
    Signed-off-by: Cezar Dimoiu <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/runtime/indent/testdir/yaml.in b/runtime/indent/testdir/yaml.in
index bf99668da..32b56a73f 100644
--- a/runtime/indent/testdir/yaml.in
+++ b/runtime/indent/testdir/yaml.in
@@ -18,3 +18,11 @@ map: |
 line1
 line2
 # END_INDENT
+
+# START_INDENT
+list:
+  - element1:
+    foo: bar
+  - element2:
+      foo: bar
+# END_INDENT
diff --git a/runtime/indent/testdir/yaml.ok b/runtime/indent/testdir/yaml.ok
index 8b38633e7..0bfabfc16 100644
--- a/runtime/indent/testdir/yaml.ok
+++ b/runtime/indent/testdir/yaml.ok
@@ -18,3 +18,11 @@ map: |
   line1
   line2
 # END_INDENT
+
+# START_INDENT
+list:
+  - element1:
+      foo: bar
+  - element2:
+      foo: bar
+# END_INDENT
diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim
index c38712745..fb0f055dc 100644
--- a/runtime/indent/yaml.vim
+++ b/runtime/indent/yaml.vim
@@ -5,6 +5,7 @@
 " Last Change: 2022 Jun 17
 " 2024 Feb 29 by Vim project: disable mulitline indent by default
 " 2024 Aug 14 by Vim project: fix re-indenting when commenting out lines
+" 2026 Jan 08 by Vim project: fix object indentation in array
 
 " Only load this indent file when no other was loaded.
 if exists('b:did_indent')
@@ -114,7 +115,13 @@ function GetYAMLIndent(lnum)
         "
         " - |-
         "     Block scalar without indentation indicator
-        return previndent+shiftwidth()
+        if prevline =~# '^\s*-\s.*:$'
+            " Special case: list item with mapping key (- key:)
+            " Need to account for the "- " prefix
+            return previndent + 2 + shiftwidth()
+        else
+            return previndent+shiftwidth()
+        endif
     elseif prevline =~# ' [:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$'
         " - |+2
         "   block scalar with indentation indicator
@@ -136,7 +143,10 @@ function GetYAMLIndent(lnum)
         let prevmapline = s:FindPrevLEIndentedLineMatchingRegex(a:lnum,
                     \                                           s:mapkeyregex)
         if getline(prevmapline) =~# '^\s*- '
-            return indent(prevmapline) + 2
+            " Previous mapping key is in a list item (- key:)
+            " The key effectively starts at indent + 2 (after "- ")
+            " Content under it should be indented relative to the key position
+            return indent(prevmapline) + 2 + shiftwidth()
         else
             return indent(prevmapline)
         endif

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1vdwPP-003A5T-8C%40256bit.org.

Raspunde prin e-mail lui