runtime(vim): Fix indent after :silent! function

See https://github.com/vim/vim/commit/35699f17497dcdcfdd747fedaef28f208ac6eb5f#commitcomment-148816912

closes: #16009

Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/runtime/autoload/dist/vimindent.vim b/runtime/autoload/dist/vimindent.vim
index 07b2153..727e983 100644
--- a/runtime/autoload/dist/vimindent.vim
+++ b/runtime/autoload/dist/vimindent.vim
@@ -2,10 +2,11 @@
 
 # Language:     Vim script
 # Maintainer:   github user lacygoill
-# Last Change:  2023 Jun 29
+# Last Change:  2024 Nov 08
 #
-# Includes Changes from Vim:
+# Includes changes from The Vim Project:
 #  - 2024 Feb 09: Fix indent after literal Dict (A. Radev via #13966)
+#  - 2024 Nov 08: Fix indent after :silent! function (D. Kearns via #16009)
 
 # NOTE: Whenever you change the code, make sure the tests are still passing:
 #
@@ -295,7 +296,7 @@
     endfor
 }
 
-const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]\s\+\)\=\%({patterns->join('\|')}\)\>\%(\s\|$\|!\)\@='
+const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]!\=\s\+\)\=\%({patterns->join('\|')}\)\>\%(\s\|$\|!\)\@='
 
 # STARTS_CURLY_BLOCK {{{3
 
diff --git a/runtime/indent/testdir/vim.in b/runtime/indent/testdir/vim.in
index 1ff2d0d..a3c8c92 100644
--- a/runtime/indent/testdir/vim.in
+++ b/runtime/indent/testdir/vim.in
@@ -951,3 +951,12 @@
 call prop_type_add('indent_after_literal_dict', #{ foo: 'bar' })
 call prop_type_delete('indent_after_literal_dict')
 " END_INDENT
+
+" START_INDENT
+silent function Foo()
+return 42
+endfunction
+silent! function Bar()
+return 42
+endfunction
+" END_INDENT
diff --git a/runtime/indent/testdir/vim.ok b/runtime/indent/testdir/vim.ok
index fa8869b..56f3d98 100644
--- a/runtime/indent/testdir/vim.ok
+++ b/runtime/indent/testdir/vim.ok
@@ -951,3 +951,12 @@
 call prop_type_add('indent_after_literal_dict', #{ foo: 'bar' })
 call prop_type_delete('indent_after_literal_dict')
 " END_INDENT
+
+" START_INDENT
+silent function Foo()
+    return 42
+endfunction
+silent! function Bar()
+    return 42
+endfunction
+" END_INDENT