Commit: runtime(karel): improve indent plugin

Christian Brabandt <[email protected]> Wed, 29 Jul 2026 20:30:07 +0200
Newsgroups gmane.editors.vim.devel
Message-ID <[email protected]>
runtime(karel): improve indent plugin

Commit: https://github.com/vim/vim/commit/f26970ce56f73a7770aa74a9c84f9ddd5ba84e6f
Author: Patrick Meiser-Knosowski <[email protected]>
Date:   Tue Jul 28 20:36:22 2026 +0000

    runtime(karel): improve indent plugin
    
    closes: https://github.com/vim/vim/issues/20873
    
    Signed-off-by: Patrick Meiser-Knosowski <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/runtime/indent/karel.vim b/runtime/indent/karel.vim
index 991360757..e6a407abc 100644
--- a/runtime/indent/karel.vim
+++ b/runtime/indent/karel.vim
@@ -2,7 +2,7 @@
 " Language: Fanuc Karel
 " Maintainer: Patrick Meiser-Knosowski <[email protected]>
 " Version: 1.0.0
-" Last Change: 28. May 2026
+" Last Change: 29. Jul 2026
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -64,7 +64,7 @@ function GetKarelIndent() abort
   let addShiftwidthPattern   ..=               '|type>'
   let addShiftwidthPattern   ..=               '|var>'
   let addShiftwidthPattern   ..=               '|begin>'
-  let addShiftwidthPattern   ..=               '|routine>'
+  let addShiftwidthPattern   ..=               '|%(routine\s+\w+>)%(.*<from\s+\w+>\s*$)@!'
   if get(g:, 'karelIndentBetweenPrg', 1)
     let addShiftwidthPattern ..=               '|program>'
   endif
diff --git a/runtime/indent/testdir/karel.in b/runtime/indent/testdir/karel.in
index edee2bdbb..d60a0121a 100644
--- a/runtime/indent/testdir/karel.in
+++ b/runtime/indent/testdir/karel.in
@@ -23,18 +23,39 @@ VAR
 i1 :integer
 b1 :boolean
 fhCh :file
-ROUTINE prg1()
+ROUTINE WAITFOR(strucvar : MyStruct; STATUS : BOOLEAN; timeout : INTEGER) : BOOLEAN FROM otherkarel
+ROUTINE WAITFOR2 : BOOLEAN FROM otherkarel
+ROUTINE WAITFOR3 FROM otherkarel
+ROUTINE prg1(b:BOOLEAN)
 VAR
 i :integer
 BEGIN
         --
 END prg1
-ROUTINE fcnt1( s :string ) :string
+ROUTINE prg2
+VAR
+i :integer
+BEGIN
+        --
+END prg2
+ROUTINE fcnt1 ( s :string ) :string
 VAR
 i :integer
 BEGIN
 RETURN ' '
 END fcnt1
+ROUTINE fcnt2 :string
+VAR
+i :integer
+BEGIN
+RETURN ' '
+END fcnt2
+ROUTINE fcnt3:string
+VAR
+i :integer
+BEGIN
+RETURN ' '
+END fcnt3
 BEGIN
 IF b1 THEN
         --
@@ -93,18 +114,39 @@ var
 i1 :integer
 b1 :boolean
 fhCh :file
-routine prg1()
+routine WAITFOR(strucvar : MyStruct; STATUS : BOOLEAN; timeout : INTEGER) : BOOLEAN from otherkarel
+routine WAITFOR2 : BOOLEAN from otherkarel
+routine WAITFOR3 from otherkarel
+routine prg1(b:BOOLEAN)
 var
 i :integer
 begin
         --
 end prg1
-routine fcnt1( s :string ) :string
+routine prg2
+var
+i :integer
+begin
+        --
+end prg2
+routine fcnt1 ( s :string ) :string
 var
 i :integer
 begin
 return ' '
 end fcnt1
+routine fcnt2 :string
+var
+i :integer
+begin
+return ' '
+end fcnt2
+routine fcnt3:string
+var
+i :integer
+begin
+return ' '
+end fcnt3
 begin
 if b1 then
         --
@@ -163,18 +205,39 @@ Var
 i1 :integer
 b1 :boolean
 fhCh :file
-Routine prg1()
+Routine WAITFOR(strucvar : MyStruct; STATUS : BOOLEAN; timeout : INTEGER) : BOOLEAN From otherkarel
+Routine WAITFOR2 : BOOLEAN From otherkarel
+Routine WAITFOR3 From otherkarel
+Routine prg1(b:BOOLEAN)
 Var
 i :integer
 Begin
         --
 End prg1
-Routine fcnt1( s :string ) :string
+Routine prg2
+Var
+i :integer
+Begin
+        --
+End prg2
+Routine fcnt1 ( s :string ) :string
 Var
 i :integer
 Begin
 Return ' '
 End fcnt1
+Routine fcnt2 :string
+Var
+i :integer
+Begin
+Return ' '
+End fcnt2
+Routine fcnt3:string
+Var
+i :integer
+Begin
+Return ' '
+End fcnt3
 Begin
 If b1 Then
         --
diff --git a/runtime/indent/testdir/karel.ok b/runtime/indent/testdir/karel.ok
index a7b5e9fa6..a09968c91 100644
--- a/runtime/indent/testdir/karel.ok
+++ b/runtime/indent/testdir/karel.ok
@@ -23,18 +23,39 @@ VAR
   i1 :integer
   b1 :boolean
   fhCh :file
-  ROUTINE prg1()
+  ROUTINE WAITFOR(strucvar : MyStruct; STATUS : BOOLEAN; timeout : INTEGER) : BOOLEAN FROM otherkarel
+  ROUTINE WAITFOR2 : BOOLEAN FROM otherkarel
+  ROUTINE WAITFOR3 FROM otherkarel
+  ROUTINE prg1(b:BOOLEAN)
   VAR
     i :integer
   BEGIN
     --
   END prg1
-  ROUTINE fcnt1( s :string ) :string
+  ROUTINE prg2
+  VAR
+    i :integer
+  BEGIN
+    --
+  END prg2
+  ROUTINE fcnt1 ( s :string ) :string
   VAR
     i :integer
   BEGIN
     RETURN ' '
   END fcnt1
+  ROUTINE fcnt2 :string
+  VAR
+    i :integer
+  BEGIN
+    RETURN ' '
+  END fcnt2
+  ROUTINE fcnt3:string
+  VAR
+    i :integer
+  BEGIN
+    RETURN ' '
+  END fcnt3
 BEGIN
   IF b1 THEN
     --
@@ -93,18 +114,39 @@ var
   i1 :integer
   b1 :boolean
   fhCh :file
-  routine prg1()
+  routine WAITFOR(strucvar : MyStruct; STATUS : BOOLEAN; timeout : INTEGER) : BOOLEAN from otherkarel
+  routine WAITFOR2 : BOOLEAN from otherkarel
+  routine WAITFOR3 from otherkarel
+  routine prg1(b:BOOLEAN)
   var
     i :integer
   begin
     --
   end prg1
-  routine fcnt1( s :string ) :string
+  routine prg2
+  var
+    i :integer
+  begin
+    --
+  end prg2
+  routine fcnt1 ( s :string ) :string
   var
     i :integer
   begin
     return ' '
   end fcnt1
+  routine fcnt2 :string
+  var
+    i :integer
+  begin
+    return ' '
+  end fcnt2
+  routine fcnt3:string
+  var
+    i :integer
+  begin
+    return ' '
+  end fcnt3
 begin
   if b1 then
     --
@@ -163,18 +205,39 @@ Var
   i1 :integer
   b1 :boolean
   fhCh :file
-  Routine prg1()
+  Routine WAITFOR(strucvar : MyStruct; STATUS : BOOLEAN; timeout : INTEGER) : BOOLEAN From otherkarel
+  Routine WAITFOR2 : BOOLEAN From otherkarel
+  Routine WAITFOR3 From otherkarel
+  Routine prg1(b:BOOLEAN)
   Var
     i :integer
   Begin
     --
   End prg1
-  Routine fcnt1( s :string ) :string
+  Routine prg2
+  Var
+    i :integer
+  Begin
+    --
+  End prg2
+  Routine fcnt1 ( s :string ) :string
   Var
     i :integer
   Begin
     Return ' '
   End fcnt1
+  Routine fcnt2 :string
+  Var
+    i :integer
+  Begin
+    Return ' '
+  End fcnt2
+  Routine fcnt3:string
+  Var
+    i :integer
+  Begin
+    Return ' '
+  End fcnt3
 Begin
   If b1 Then
     --

-- 
-- 
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/E1wp92d-002rNa-7o%40256bit.org.