diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 47c68ea..104476b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -38,6 +38,7 @@
         features: [tiny, normal, huge]
         compiler: [clang, gcc]
         extra: [none]
+        luaver: [lua5.4]
         include:
           - features: tiny
             compiler: clang
@@ -54,13 +55,18 @@
             coverage: true
             extra: testgui
             uchar: true
+            luaver: lua5.4
           - features: huge
             compiler: clang
             extra: asan
+            # Lua5.1 is the most widely used version (since it's what LuaJIT is
+            # compatible with), so ensure it works
+            luaver: lua5.1
           - features: huge
             compiler: gcc
             coverage: true
             extra: unittests
+            luaver: lua5.4
           - features: normal
             compiler: gcc
             extra: vimtags
@@ -85,8 +91,8 @@
               libperl-dev \
               python2-dev \
               python3-dev \
-              liblua5.4-dev \
-              lua5.4 \
+              lib${{ matrix.luaver }}-dev \
+              ${{ matrix.luaver }} \
               ruby-dev \
               tcl-dev \
               cscope \
diff --git a/runtime/autoload/dist/vimindent.vim b/runtime/autoload/dist/vimindent.vim
index 1306d1e..a5e04a5 100644
--- a/runtime/autoload/dist/vimindent.vim
+++ b/runtime/autoload/dist/vimindent.vim
@@ -2,7 +2,7 @@
 
 # Language:     Vim script
 # Maintainer:   github user lacygoill
-# Last Change:  2023 Feb 01
+# Last Change:  2023 Jun 29
 
 # NOTE: Whenever you change the code, make sure the tests are still passing:
 #
@@ -112,10 +112,6 @@
     .. '\)'
     .. ':\%(\s\|$\)'
 
-# NOT_A_DICT_KEY {{{3
-
-const NOT_A_DICT_KEY: string = ':\@!'
-
 # END_OF_COMMAND {{{3
 
 const END_OF_COMMAND: string = $'\s*\%($\|||\@!\|{INLINE_COMMENT}\)'
@@ -197,13 +193,13 @@
     ldo\=\>!\=
     tabdo\=\>
     windo\>
-    au\%[tocmd]\>.*
-    com\%[mand]\>.*
+    au\%[tocmd]\>!\=.*
+    com\%[mand]\>!\=.*
     g\%[lobal]!\={PATTERN_DELIMITER}.*
     v\%[global]!\={PATTERN_DELIMITER}.*
 END
 
-const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%({patterns->join('\|')}\){NOT_A_DICT_KEY}'
+const HIGHER_ORDER_COMMAND: string = $'\%(^\|{BAR_SEPARATION}\)\s*\<\%({patterns->join('\|')}\)\%(\s\|$\)\@='
 
 # START_MIDDLE_END {{{3
 
@@ -254,7 +250,7 @@
         kwds->map((_, kwd: string) => kwd == ''
         ? ''
         : $'\%(^\|{BAR_SEPARATION}\|\<sil\%[ent]\|{HIGHER_ORDER_COMMAND}\)\s*'
-        .. $'\<\%({kwd}\)\>\%(\s*{OPERATOR}\)\@!'))
+        .. $'\<\%({kwd}\)\>\%(\s\|$\|!\)\@=\%(\s*{OPERATOR}\)\@!'))
 
 lockvar! START_MIDDLE_END
 
@@ -279,7 +275,7 @@
 
 const ENDS_BLOCK_OR_CLAUSE: string = '^\s*\%(' .. patterns->join('\|') .. $'\){END_OF_COMMAND}'
     .. $'\|^\s*cat\%[ch]\%(\s\+\({PATTERN_DELIMITER}\).*\1\)\={END_OF_COMMAND}'
-    .. $'\|^\s*elseif\=\>\%({OPERATOR}\)\@!'
+    .. $'\|^\s*elseif\=\>\%(\s\|$\)\@=\%(\s*{OPERATOR}\)\@!'
 
 # STARTS_NAMED_BLOCK {{{3
 
@@ -296,7 +292,7 @@
     endfor
 }
 
-const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]\s\+\)\=\%({patterns->join('\|')}\)\>{NOT_A_DICT_KEY}'
+const STARTS_NAMED_BLOCK: string = $'^\s*\%(sil\%[ent]\s\+\)\=\%({patterns->join('\|')}\)\>\%(\s\|$\|!\)\@='
 
 # STARTS_CURLY_BLOCK {{{3
 
@@ -312,7 +308,7 @@
 
 # STARTS_FUNCTION {{{3
 
-const STARTS_FUNCTION: string = $'^\s*\%({MODIFIERS.def}\)\=def\>{NOT_A_DICT_KEY}'
+const STARTS_FUNCTION: string = $'^\s*\%({MODIFIERS.def}\)\=def\>!\=\s\@='
 
 # ENDS_FUNCTION {{{3
 
diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt
index cc33482..dc2274c 100644
--- a/runtime/doc/undo.txt
+++ b/runtime/doc/undo.txt
@@ -111,9 +111,19 @@
 parts.  E.g., for each sentence.  |i_CTRL-G_u|
 
 Setting the value of 'undolevels' also closes the undo block.  Even when the
-new value is equal to the old value.  In |Vim9| script: >
-	&undolevels = &undolevels
+new value is equal to the old value.  Use `g:undolevels` to explicitly read
+and write only the global value of 'undolevels'. In |Vim9| script: >
+	&g:undolevels = &g:undolevels
 In legacy script: >
+	let &g:undolevels = &g:undolevels
+
+Note that the similar-looking assignment `let &undolevels=&undolevels` does not
+preserve the global option value of 'undolevels' in the event that the local
+option has been set to a different value.  For example: >
+	" Start with different global and local values for 'undolevels'.
+	let &g:undolevels = 1000
+	let &l:undolevels = 2000
+	" This assignment changes the global option to 2000:
 	let &undolevels = &undolevels
 
 ==============================================================================
@@ -366,12 +376,20 @@
 When you set 'undolevels' to -1 the undo information is not immediately
 cleared, this happens at the next change.  To force clearing the undo
 information you can use these commands: >
-	:let old_undolevels = &undolevels
-	:set undolevels=-1
+	:let old_undolevels = &l:undolevels
+	:setlocal undolevels=-1
 	:exe "normal a \<BS>\<Esc>"
-	:let &undolevels = old_undolevels
+	:let &l:undolevels = old_undolevels
 	:unlet old_undolevels
 
+Note use of `&l:undolevels` to explicitly read the local value of 'undolevels'
+and the use of `:setlocal` to change only the local option (which takes
+precedence over the corresponding global option value).  Saving the option value
+via the use of `&undolevels` is unpredictable; it reads either the local value
+(if one has been set) or the global value (otherwise).  Also, if a local value
+has been set, changing the option via `:set undolevels` will change both the
+global and local values, requiring extra work to save and restore both values.
+
 Marks for the buffer ('a to 'z) are also saved and restored, together with the
 text.
 
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 49e602f..eea55f8 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -894,6 +894,7 @@
 endif
 au BufNewFile,BufRead $HOME/.config/cabal/config setf cabalconfig
 au BufNewFile,BufRead cabal.config		setf cabalconfig
+au BufNewFile,BufRead *.persistentmodels	setf haskellpersistent
 
 " Haste
 au BufNewFile,BufRead *.ht			setf haste
@@ -948,6 +949,9 @@
 " Hosts access
 au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny  setf hostsaccess
 
+" Hurl
+au BufRead,BufNewFile *.hurl			setf hurl
+
 " Hyper Builder
 au BufNewFile,BufRead *.hb			setf hb
 
@@ -1564,6 +1568,10 @@
 " Pine config
 au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex		setf pine
 
+" Pip requirements
+au BufNewFile,BufRead *.pip			setf requirements
+au BufNewFile,BufRead requirements.txt		setf requirements
+
 " Pipenv Pipfiles
 au BufNewFile,BufRead Pipfile			setf toml
 au BufNewFile,BufRead Pipfile.lock		setf json
diff --git a/runtime/indent/rapid.vim b/runtime/indent/rapid.vim
new file mode 100644
index 0000000..f97ebf8
--- /dev/null
+++ b/runtime/indent/rapid.vim
@@ -0,0 +1,255 @@
+" ABB Rapid Command indent file for Vim
+" Language: ABB Rapid Command
+" Maintainer: Patrick Meiser-Knosowski <knosowski@graeffrobotics.de>
+" Version: 2.2.7
+" Last Change: 12. May 2023
+" Credits: Based on indent/vim.vim
+"
+" Suggestions of improvement are very welcome. Please email me!
+"
+" Known bugs: ../doc/rapid.txt
+"
+" TODO
+" * indent wrapped lines which do not end with an ; or special key word,
+"     maybe this is a better idea, but then () and [] has to be changed as
+"     well
+"
+
+if exists("g:rapidNoSpaceIndent")
+  if !exists("g:rapidSpaceIndent")
+    let g:rapidSpaceIndent = !g:rapidNoSpaceIndent
+  endif
+  unlet g:rapidNoSpaceIndent
+endif
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent") || get(g:,'rapidNoIndent',0)
+  finish
+endif
+let b:did_indent = 1
+
+setlocal nolisp
+setlocal nosmartindent
+setlocal autoindent
+setlocal indentexpr=GetRapidIndent()
+if get(g:,'rapidNewStyleIndent',0)
+  setlocal indentkeys=!^F,o,O,0=~endmodule,0=~error,0=~undo,0=~backward,0=~endproc,0=~endrecord,0=~endtrap,0=~endfunc,0=~else,0=~endif,0=~endtest,0=~endfor,0=~endwhile,:,<[>,<]>,<(>,<)>
+else
+  setlocal indentkeys=!^F,o,O,0=~endmodule,0=~error,0=~undo,0=~backward,0=~endproc,0=~endrecord,0=~endtrap,0=~endfunc,0=~else,0=~endif,0=~endtest,0=~endfor,0=~endwhile,:
+endif
+let b:undo_indent="setlocal lisp< si< ai< inde< indk<"
+
+if get(g:,'rapidSpaceIndent',1)
+  " Use spaces for indention, 2 is enough. 
+  " More or even tabs wastes space on the teach pendant.
+  setlocal softtabstop=2
+  setlocal shiftwidth=2
+  setlocal expandtab
+  setlocal shiftround
+  let b:undo_indent = b:undo_indent." sts< sw< et< sr<"
+endif
+
+" Only define the function once.
+if exists("*GetRapidIndent")
+  finish
+endif
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+function GetRapidIndent()
+  let ignorecase_save = &ignorecase
+  try
+    let &ignorecase = 0
+    return s:GetRapidIndentIntern()
+  finally
+    let &ignorecase = ignorecase_save
+  endtry
+endfunction
+
+function s:GetRapidIndentIntern() abort
+
+  let l:currentLineNum = v:lnum
+  let l:currentLine = getline(l:currentLineNum)
+
+  if  l:currentLine =~ '^!' && !get(g:,'rapidCommentIndent',0)
+    " If current line is ! line comment, do not change indent
+    " This may be usefull if code is commented out at the first column.
+    return 0
+  endif
+
+  " Find a non-blank line above the current line.
+  let l:preNoneBlankLineNum = s:RapidPreNoneBlank(v:lnum - 1)
+  if  l:preNoneBlankLineNum == 0
+    " At the start of the file use zero indent.
+    return 0
+  endif
+
+  let l:preNoneBlankLine = getline(l:preNoneBlankLineNum)
+  let l:ind = indent(l:preNoneBlankLineNum)
+
+  " Define add a 'shiftwidth' pattern
+  let l:addShiftwidthPattern  = '\c\v^\s*('
+  let l:addShiftwidthPattern .=           '((local|task)\s+)?(module|record|proc|func|trap)\s+\k'
+  let l:addShiftwidthPattern .=           '|(backward|error|undo)>'
+  let l:addShiftwidthPattern .=         ')'
+  "
+  " Define Subtract 'shiftwidth' pattern
+  let l:subtractShiftwidthPattern  = '\c\v^\s*('
+  let l:subtractShiftwidthPattern .=           'end(module|record|proc|func|trap)>'
+  let l:subtractShiftwidthPattern .=           '|(backward|error|undo)>'
+  let l:subtractShiftwidthPattern .=         ')'
+
+  " Add shiftwidth
+  if l:preNoneBlankLine =~ l:addShiftwidthPattern
+        \|| s:RapidLenTilStr(l:preNoneBlankLineNum, "then",     0)>=0
+        \|| s:RapidLenTilStr(l:preNoneBlankLineNum, "else",     0)>=0
+        \|| s:RapidLenTilStr(l:preNoneBlankLineNum, "do",       0)>=0
+        \|| s:RapidLenTilStr(l:preNoneBlankLineNum, "case",     0)>=0
+        \|| s:RapidLenTilStr(l:preNoneBlankLineNum, "default",  0)>=0
+    let l:ind += &sw
+  endif
+
+  " Subtract shiftwidth
+  if l:currentLine =~ l:subtractShiftwidthPattern
+        \|| s:RapidLenTilStr(l:currentLineNum, "endif",     0)>=0
+        \|| s:RapidLenTilStr(l:currentLineNum, "endfor",    0)>=0
+        \|| s:RapidLenTilStr(l:currentLineNum, "endwhile",  0)>=0
+        \|| s:RapidLenTilStr(l:currentLineNum, "endtest",   0)>=0
+        \|| s:RapidLenTilStr(l:currentLineNum, "else",      0)>=0
+        \|| s:RapidLenTilStr(l:currentLineNum, "elseif",    0)>=0
+        \|| s:RapidLenTilStr(l:currentLineNum, "case",      0)>=0
+        \|| s:RapidLenTilStr(l:currentLineNum, "default",   0)>=0
+    let l:ind = l:ind - &sw
+  endif
+
+  " First case (or default) after a test gets the indent of the test.
+  if (s:RapidLenTilStr(l:currentLineNum, "case", 0)>=0 || s:RapidLenTilStr(l:currentLineNum, "default", 0)>=0) && s:RapidLenTilStr(l:preNoneBlankLineNum, "test", 0)>=0
+    let l:ind += &sw
+  endif
+
+  " continued lines with () or []
+  let l:OpenSum  = s:RapidLoneParen(l:preNoneBlankLineNum,"(") + s:RapidLoneParen(l:preNoneBlankLineNum,"[")
+  if get(g:,'rapidNewStyleIndent',0)
+    let l:CloseSum = s:RapidLoneParen(l:preNoneBlankLineNum,")") + s:RapidLoneParen(l:currentLineNum,"]")
+  else
+    let l:CloseSum = s:RapidLoneParen(l:preNoneBlankLineNum,")") + s:RapidLoneParen(l:preNoneBlankLineNum,"]")
+  endif
+  if l:OpenSum > l:CloseSum
+    let l:ind += (l:OpenSum * 4 * &sw)
+  elseif l:OpenSum < l:CloseSum
+    let l:ind -= (l:CloseSum * 4 * &sw)
+  endif
+
+  return l:ind
+endfunction
+
+" Returns the length of the line until a:str occur outside a string or
+" comment. Search starts at string index a:startIdx.
+" If a:str is a word also add word bounderies and case insesitivity.
+" Note: rapidTodoComment and rapidDebugComment are not taken into account.
+function s:RapidLenTilStr(lnum, str, startIdx) abort
+
+  let l:line = getline(a:lnum)
+  let l:len  = strlen(l:line)
+  let l:idx  = a:startIdx
+  let l:str  = a:str
+  if l:str =~ '^\k\+$'
+    let l:str = '\c\<' . l:str . '\>'
+  endif
+
+  while l:len > l:idx
+    let l:idx = match(l:line, l:str, l:idx)
+    if l:idx < 0
+      " a:str not found
+      return -1
+    endif
+    let l:synName = synIDattr(synID(a:lnum,l:idx+1,0),"name")
+    if         l:synName != "rapidString"
+          \&&  l:synName != "rapidConcealableString"
+          \&& (l:synName != "rapidComment" || l:str =~ '^!')
+      " a:str found outside string or line comment
+      return l:idx
+    endif
+    " a:str is part of string or line comment
+    let l:idx += 1 " continue search for a:str
+  endwhile
+  
+  " a:str not found or l:len <= a:startIdx
+  return -1
+endfunction
+
+" a:lchar shoud be one of (, ), [, ], { or }
+" returns the number of opening/closing parenthesise which have no
+" closing/opening match in getline(a:lnum)
+function s:RapidLoneParen(lnum,lchar) abort
+  if a:lchar == "(" || a:lchar == ")"
+    let l:opnParChar = "("
+    let l:clsParChar = ")"
+  elseif a:lchar == "[" || a:lchar == "]"
+    let l:opnParChar = "["
+    let l:clsParChar = "]"
+  elseif a:lchar == "{" || a:lchar == "}"
+    let l:opnParChar = "{"
+    let l:clsParChar = "}"
+  else
+    return 0
+  endif
+
+  let l:line = getline(a:lnum)
+
+  " look for the first ! which is not part of a string 
+  let l:len = s:RapidLenTilStr(a:lnum,"!",0)
+  if l:len == 0
+    return 0 " first char is !; ignored
+  endif
+
+  let l:opnParen = 0
+  " count opening brakets
+  let l:i = 0
+  while l:i >= 0
+    let l:i = s:RapidLenTilStr(a:lnum, l:opnParChar, l:i)
+    if l:i >= 0
+      let l:opnParen += 1
+      let l:i += 1
+    endif
+  endwhile
+
+  let l:clsParen = 0
+  " count closing brakets
+  let l:i = 0
+  while l:i >= 0
+    let l:i = s:RapidLenTilStr(a:lnum, l:clsParChar, l:i)
+    if l:i >= 0
+      let l:clsParen += 1
+      let l:i += 1
+    endif
+  endwhile
+
+  if (a:lchar == "(" || a:lchar == "[" || a:lchar == "{") && l:opnParen>l:clsParen
+    return (l:opnParen-l:clsParen)
+  elseif (a:lchar == ")" || a:lchar == "]" || a:lchar == "}") && l:clsParen>l:opnParen
+    return (l:clsParen-l:opnParen)
+  endif
+
+  return 0
+endfunction
+
+" This function works almost like prevnonblank() but handles %%%-headers and
+" comments like blank lines
+function s:RapidPreNoneBlank(lnum) abort
+
+  let nPreNoneBlank = prevnonblank(a:lnum)
+
+  while nPreNoneBlank>0 && getline(nPreNoneBlank) =~ '\v\c^\s*(\%\%\%|!)'
+    " Previouse none blank line irrelevant. Look further aback.
+    let nPreNoneBlank = prevnonblank(nPreNoneBlank - 1)
+  endwhile
+
+  return nPreNoneBlank
+endfunction
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
+
+" vim:sw=2 sts=2 et
diff --git a/runtime/indent/testdir/rapid.in b/runtime/indent/testdir/rapid.in
new file mode 100644
index 0000000..515912e
--- /dev/null
+++ b/runtime/indent/testdir/rapid.in
@@ -0,0 +1,266 @@
+! vim: set ft=rapid :
+
+! START_INDENT
+
+%%%
+  VERSION:1
+  LANGUAGE:ENGLISH
+%%%
+  
+module LowerCaseModule
+
+task pers num n1 := 0;
+local pers num n2 := 1;
+var bool b1 := false;
+var intnum i1;
+
+! put some stuff in those strings that may confuse indentation
+const string st1 := "endmodule ("; 
+pers string st_Appl_Info{3,3}:=[
+[
+"["
+,
+"default"
+,
+"case"
+],
+[
+"else"
+,
+"then"
+,
+"endif"
+],
+[
+"do"
+,
+"}"
+,
+")"
+],
+];
+
+pers tooldata tTool1:=[TRUE, 
+[
+[97.4, 0, 223.1], 
+[0.924, 0, 0.383 ,0]
+], 
+[5, 
+[23, 0, 75], 
+[1, 0, 0, 0], 0, 0, 0
+]
+];
+const robtarget p1:=[ 
+[600, 500, 225.3], 
+[1, 0, 0, 0], 
+[1, 1, 0, 0], 
+[ 11, 12.3, 9E9, 9E9, 9E9, 9E9]
+];
+
+record myRec
+num nRecNum1
+bool bRecBool1
+endrecord
+
+proc proc1(num n1,
+num n2)
+var string st1;
+n1 := n1+1;
+MoveJSync p1, vmax, z30, tool1, "proc2";
+backward
+MoveJSync p1, v100, fine, tool1, "proc2";
+undo
+n1 := n1-1;
+error
+trynext;
+endproc
+
+func num nFunc1(
+switch s1
+|switch s2
+,num n1
+,bool b1)
+var num nVar;
+if not Present(s1) return;
+if Present(s1) then
+Incr n1;'
+elseif Present(s2) then
+b1:=false;
+else
+while n1>0 do
+Decr n1;
+test n1
+
+case 1:
+test1;
+case 2:
+test2;
+default:
+WaitUntil false;
+endtest
+endwhile
+endif
+for i from 1 to 10 step 2 do
+for j from 1 to 10 do
+st_Appl_Info{i,j} := "";
+endfor
+endfor
+!     return 1;
+return 0;
+error
+return -1;
+endfunc
+
+trap Trap1
+Reset do1;
+endtrap
+
+endmodule
+
+MODULE UpperCaseModule(SYSMODULE,NOSTEPIN)
+TASK pers num n1 := 0;
+LOCAL pers num n2 := 1;
+VAR bool b1 := false;
+VAR intnum i1;
+
+LOCAL FUNC num nFunc1(
+switch s1
+|switch s2
+,num n1
+,bool b1)
+VAR num nVar;
+IF NOT PRESENT(s1) RETURN;
+IF PRESENT(s1) THEN
+INCR n1;'
+ELSEIF PRESENT(s2) THEN
+b1:=FALSE;
+ELSE
+WHILE n1>0 DO
+DECR n1;
+TEST n1
+
+CASE 1:
+test1;
+CASE 2:
+test2;
+DEFAULT:
+WAITUNTIL FALSE;
+ENDTEST
+ENDWHILE
+ENDIF
+FOR i FROM 1 TO 10 STEP 2 DO
+FOR j FROM 1 TO 10 DO
+st_Appl_Info{i,j} := "";
+ENDFOR
+ENDFOR
+!     RETURN 1;
+RETURN 0;
+ERROR
+RETURN -1;
+ENDFUNC
+
+TRAP Trap1
+Reset do1;
+ENDTRAP
+
+ENDMODULE
+
+Module MixedCaseModule(SysModule)
+Task pers num n1 := 0;
+Local pers num n2 := 1;
+Var bool b1 := false;
+Var intnum i1;
+
+Task Func num nFunc1(
+switch s1
+|switch s2
+,num n1
+,bool b1)
+Var num nVar;
+If Not Present(s1) Return;
+If Present(s1) Then
+Incr n1;'
+ElseIf Present(s2) Then
+b1:=false;
+Else
+While n1>0 Do
+Decr n1;
+Test n1
+
+Case 1:
+test1;
+Case 2:
+test2;
+Default:
+WaitUntil false;
+EndTest
+EndWhile
+EndIf
+For i From 1 To 10 Step 2 Do
+For j From 1 To 10 Do
+st_Appl_Info{i,j} := "";
+EndFor
+EndFor
+!     Return 1;
+Return 0;
+Error
+Return -1;
+EndFunc
+
+Trap Trap1
+Reset do1;
+EndTrap
+
+EndModule
+
+! END_INDENT
+
+! START_INDENT
+! INDENT_EXE let g:rapidSpaceIndent = 0
+! INDENT_EXE set shiftwidth=4
+
+proc bla()
+var num i;
+Incr i;
+endproc
+
+! END_INDENT
+
+! START_INDENT
+! INDENT_EXE let g:rapidCommentIndent = 1
+!
+proc bla()
+! indent this first column comment because of g:rapidCommentIndent=1
+endproc
+! END_INDENT
+
+! START_INDENT
+! INDENT_EXE let g:rapidNewStyleIndent = 1
+pers string st_Appl_Info{3,3}:=
+[
+[
+"["
+,
+"default"
+,
+"case"
+]
+,
+[
+"else"
+,
+"then"
+,
+"endif"
+]
+,
+[
+"do"
+,
+"}"
+,
+")"
+]
+,
+];
+! END_INDENT
diff --git a/runtime/indent/testdir/rapid.ok b/runtime/indent/testdir/rapid.ok
new file mode 100644
index 0000000..ce33682
--- /dev/null
+++ b/runtime/indent/testdir/rapid.ok
@@ -0,0 +1,266 @@
+! vim: set ft=rapid :
+
+! START_INDENT
+
+%%%
+VERSION:1
+LANGUAGE:ENGLISH
+%%%
+
+module LowerCaseModule
+
+  task pers num n1 := 0;
+  local pers num n2 := 1;
+  var bool b1 := false;
+  var intnum i1;
+
+! put some stuff in those strings that may confuse indentation
+  const string st1 := "endmodule ("; 
+  pers string st_Appl_Info{3,3}:=[
+          [
+                  "["
+                  ,
+                  "default"
+                  ,
+                  "case"
+                  ],
+          [
+                  "else"
+                  ,
+                  "then"
+                  ,
+                  "endif"
+                  ],
+          [
+                  "do"
+                  ,
+                  "}"
+                  ,
+                  ")"
+                  ],
+          ];
+
+  pers tooldata tTool1:=[TRUE, 
+          [
+                  [97.4, 0, 223.1], 
+                  [0.924, 0, 0.383 ,0]
+                  ], 
+          [5, 
+                  [23, 0, 75], 
+                  [1, 0, 0, 0], 0, 0, 0
+                  ]
+          ];
+  const robtarget p1:=[ 
+          [600, 500, 225.3], 
+          [1, 0, 0, 0], 
+          [1, 1, 0, 0], 
+          [ 11, 12.3, 9E9, 9E9, 9E9, 9E9]
+          ];
+
+  record myRec
+    num nRecNum1
+    bool bRecBool1
+  endrecord
+
+  proc proc1(num n1,
+            num n2)
+    var string st1;
+    n1 := n1+1;
+    MoveJSync p1, vmax, z30, tool1, "proc2";
+  backward
+    MoveJSync p1, v100, fine, tool1, "proc2";
+  undo
+    n1 := n1-1;
+  error
+    trynext;
+  endproc
+
+  func num nFunc1(
+            switch s1
+            |switch s2
+            ,num n1
+            ,bool b1)
+    var num nVar;
+    if not Present(s1) return;
+    if Present(s1) then
+      Incr n1;'
+    elseif Present(s2) then
+      b1:=false;
+    else
+      while n1>0 do
+        Decr n1;
+        test n1
+
+        case 1:
+          test1;
+        case 2:
+          test2;
+        default:
+          WaitUntil false;
+        endtest
+      endwhile
+    endif
+    for i from 1 to 10 step 2 do
+      for j from 1 to 10 do
+        st_Appl_Info{i,j} := "";
+      endfor
+    endfor
+!     return 1;
+    return 0;
+  error
+    return -1;
+  endfunc
+
+  trap Trap1
+    Reset do1;
+  endtrap
+
+endmodule
+
+MODULE UpperCaseModule(SYSMODULE,NOSTEPIN)
+  TASK pers num n1 := 0;
+  LOCAL pers num n2 := 1;
+  VAR bool b1 := false;
+  VAR intnum i1;
+
+  LOCAL FUNC num nFunc1(
+            switch s1
+            |switch s2
+            ,num n1
+            ,bool b1)
+    VAR num nVar;
+    IF NOT PRESENT(s1) RETURN;
+    IF PRESENT(s1) THEN
+      INCR n1;'
+    ELSEIF PRESENT(s2) THEN
+      b1:=FALSE;
+    ELSE
+      WHILE n1>0 DO
+        DECR n1;
+        TEST n1
+
+        CASE 1:
+          test1;
+        CASE 2:
+          test2;
+        DEFAULT:
+          WAITUNTIL FALSE;
+        ENDTEST
+      ENDWHILE
+    ENDIF
+    FOR i FROM 1 TO 10 STEP 2 DO
+      FOR j FROM 1 TO 10 DO
+        st_Appl_Info{i,j} := "";
+      ENDFOR
+    ENDFOR
+!     RETURN 1;
+    RETURN 0;
+  ERROR
+    RETURN -1;
+  ENDFUNC
+
+  TRAP Trap1
+    Reset do1;
+  ENDTRAP
+
+ENDMODULE
+
+Module MixedCaseModule(SysModule)
+  Task pers num n1 := 0;
+  Local pers num n2 := 1;
+  Var bool b1 := false;
+  Var intnum i1;
+
+  Task Func num nFunc1(
+            switch s1
+            |switch s2
+            ,num n1
+            ,bool b1)
+    Var num nVar;
+    If Not Present(s1) Return;
+    If Present(s1) Then
+      Incr n1;'
+    ElseIf Present(s2) Then
+      b1:=false;
+    Else
+      While n1>0 Do
+        Decr n1;
+        Test n1
+
+        Case 1:
+          test1;
+        Case 2:
+          test2;
+        Default:
+          WaitUntil false;
+        EndTest
+      EndWhile
+    EndIf
+    For i From 1 To 10 Step 2 Do
+      For j From 1 To 10 Do
+        st_Appl_Info{i,j} := "";
+      EndFor
+    EndFor
+!     Return 1;
+    Return 0;
+  Error
+    Return -1;
+  EndFunc
+
+  Trap Trap1
+    Reset do1;
+  EndTrap
+
+EndModule
+
+! END_INDENT
+
+! START_INDENT
+! INDENT_EXE let g:rapidSpaceIndent = 0
+! INDENT_EXE set shiftwidth=4
+
+proc bla()
+    var num i;
+    Incr i;
+endproc
+
+! END_INDENT
+
+! START_INDENT
+! INDENT_EXE let g:rapidCommentIndent = 1
+!
+proc bla()
+    ! indent this first column comment because of g:rapidCommentIndent=1
+endproc
+! END_INDENT
+
+! START_INDENT
+! INDENT_EXE let g:rapidNewStyleIndent = 1
+pers string st_Appl_Info{3,3}:=
+[
+                [
+                                "["
+                                ,
+                                "default"
+                                ,
+                                "case"
+                ]
+                ,
+                [
+                                "else"
+                                ,
+                                "then"
+                                ,
+                                "endif"
+                ]
+                ,
+                [
+                                "do"
+                                ,
+                                "}"
+                                ,
+                                ")"
+                ]
+                ,
+];
+! END_INDENT
diff --git a/runtime/indent/testdir/vim.in b/runtime/indent/testdir/vim.in
index c60d2d1..c2e149a 100644
--- a/runtime/indent/testdir/vim.in
+++ b/runtime/indent/testdir/vim.in
@@ -484,6 +484,13 @@
 " END_INDENT
 
 " START_INDENT
+if true
+var d = {
+end: 0}
+endif
+" END_INDENT
+
+" START_INDENT
 nunmap <buffer> (
 nunmap <buffer> )
 inoremap [ {
diff --git a/runtime/indent/testdir/vim.ok b/runtime/indent/testdir/vim.ok
index 57f0dbf..b10e081 100644
--- a/runtime/indent/testdir/vim.ok
+++ b/runtime/indent/testdir/vim.ok
@@ -484,6 +484,13 @@
 " END_INDENT
 
 " START_INDENT
+if true
+    var d = {
+	end: 0}
+endif
+" END_INDENT
+
+" START_INDENT
 nunmap <buffer> (
 nunmap <buffer> )
 inoremap [ {
diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim
index 25bfdeb..e26d3a1 100644
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -298,6 +298,7 @@
     handlebars: ['file.hbs'],
     hare: ['file.ha'],
     haskell: ['file.hs', 'file.hsc', 'file.hs-boot', 'file.hsig'],
+    haskellpersistent: ['file.persistentmodels'],
     haste: ['file.ht'],
     hastepreproc: ['file.htpp'],
     hb: ['file.hb'],
@@ -316,6 +317,7 @@
     html: ['file.html', 'file.htm', 'file.cshtml'],
     htmlm4: ['file.html.m4'],
     httest: ['file.htt', 'file.htb'],
+    hurl: ['file.hurl'],
     i3config: ['/home/user/.i3/config', '/home/user/.config/i3/config', '/etc/i3/config', '/etc/xdg/i3/config'],
     ibasic: ['file.iba', 'file.ibi'],
     icemenu: ['/.icewm/menu', 'any/.icewm/menu'],
@@ -564,6 +566,7 @@
     readline: ['.inputrc', 'inputrc'],
     rego: ['file.rego'],
     remind: ['.reminders', 'file.remind', 'file.rem', '.reminders-file'],
+    requirements: ['file.pip', 'requirements.txt'],
     rescript: ['file.res', 'file.resi'],
     resolv: ['resolv.conf'],
     reva: ['file.frt'],
diff --git a/src/testdir/test_lua.vim b/src/testdir/test_lua.vim
index 2f9e21f..81e9262 100644
--- a/src/testdir/test_lua.vim
+++ b/src/testdir/test_lua.vim
@@ -616,10 +616,10 @@
 func Test_lua_blob()
   call assert_equal(0z, luaeval('vim.blob("")'))
   call assert_equal(0z31326162, luaeval('vim.blob("12ab")'))
-  call assert_equal(0z00010203, luaeval('vim.blob("\x00\x01\x02\x03")'))
-  call assert_equal(0z8081FEFF, luaeval('vim.blob("\x80\x81\xfe\xff")'))
+  call assert_equal(0z00010203, luaeval('vim.blob("\000\001\002\003")'))
+  call assert_equal(0z8081FEFF, luaeval('vim.blob("\128\129\254\255")'))
 
-  lua b = vim.blob("\x00\x00\x00\x00")
+  lua b = vim.blob("\000\000\000\000")
   call assert_equal(0z00000000, luaeval('b'))
   call assert_equal(4, luaeval('#b'))
   lua b[0], b[1], b[2], b[3] = 1, 32, 256, 0xff
diff --git a/src/testdir/test_mapping.vim b/src/testdir/test_mapping.vim
index f9c21bb..e81173d 100644
--- a/src/testdir/test_mapping.vim
+++ b/src/testdir/test_mapping.vim
@@ -1341,13 +1341,13 @@
   call assert_equal(['lines', 'of test text'], getline(1, '$'))
   call assert_equal(['some short '], getreg('"', 1, 1))
   " create a new undo point
-  let &undolevels = &undolevels
+  let &g:undolevels = &g:undolevels
 
   call feedkeys(".", 'xt')
   call assert_equal(['test text'], getline(1, '$'))
   call assert_equal(['lines', 'of '], getreg('"', 1, 1))
   " create a new undo point
-  let &undolevels = &undolevels
+  let &g:undolevels = &g:undolevels
 
   call feedkeys("uu", 'xt')
   call assert_equal(['some short lines', 'of test text'], getline(1, '$'))
diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim
index 95e8d44..ffde9b8 100644
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -1658,7 +1658,7 @@
 
   " Break the undo. Otherwise the undo operation below will undo all the
   " changes made by this function.
-  let &undolevels=&undolevels
+  let &g:undolevels=&g:undolevels
 
   " Delete the line with the sign
   call deletebufline('', 4)
@@ -1671,7 +1671,7 @@
   call assert_equal(5, l[0].signs[0].lnum)
 
   " Break the undo
-  let &undolevels=&undolevels
+  let &g:undolevels=&g:undolevels
 
   " Delete few lines at the end of the buffer including the line with the sign
   " Sign line number should not change (as it is placed outside of the buffer)
diff --git a/src/version.c b/src/version.c
index 6903b26..34f1203 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1683,
+/**/
     1682,
 /**/
     1681,
