diff --git a/runtime/indent/systemverilog.vim b/runtime/indent/systemverilog.vim
index f6114dc..a5f4d5b 100644
--- a/runtime/indent/systemverilog.vim
+++ b/runtime/indent/systemverilog.vim
@@ -2,7 +2,7 @@
 " Language:    SystemVerilog
 " Maintainer:  kocha <kocha.lsifrontend@gmail.com>
 " Last Change: 05-Feb-2017 by Bilal Wasim
-"		2022 April: b:undo_indent added by Doug Kearns
+"              03-Aug-2022 Improved indent
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -15,7 +15,7 @@
 setlocal indentkeys+==endmodule,=endfunction,=endtask,=endspecify
 setlocal indentkeys+==endclass,=endpackage,=endsequence,=endclocking
 setlocal indentkeys+==endinterface,=endgroup,=endprogram,=endproperty,=endchecker
-setlocal indentkeys+==`else,=`endif
+setlocal indentkeys+==`else,=`elsif,=`endif
 
 let b:undo_indent = "setl inde< indk<"
 
@@ -27,6 +27,9 @@
 let s:cpo_save = &cpo
 set cpo&vim
 
+let s:multiple_comment = 0
+let s:open_statement = 0
+
 function SystemVerilogIndent()
 
   if exists('b:systemverilog_indent_width')
@@ -40,6 +43,12 @@
     let indent_modules = 0
   endif
 
+  if exists('b:systemverilog_indent_ifdef_off')
+    let indent_ifdef = 0
+  else
+    let indent_ifdef = 1
+  endif
+
   " Find a non-blank line above the current line.
   let lnum = prevnonblank(v:lnum - 1)
 
@@ -54,48 +63,55 @@
   let last_line2 = getline(lnum2)
   let ind  = indent(lnum)
   let ind2 = indent(lnum - 1)
-  let offset_comment1 = 1
   " Define the condition of an open statement
   "   Exclude the match of //, /* or */
   let sv_openstat = '\(\<or\>\|\([*/]\)\@<![*(,{><+-/%^&|!=?:]\([*/]\)\@!\)'
   " Define the condition when the statement ends with a one-line comment
   let sv_comment = '\(//.*\|/\*.*\*/\s*\)'
-  if exists('b:verilog_indent_verbose')
-    let vverb_str = 'INDENT VERBOSE:'
+  if exists('b:systemverilog_indent_verbose')
+    let vverb_str = 'INDENT VERBOSE: '. v:lnum .":"
     let vverb = 1
   else
     let vverb = 0
   endif
 
-  " Indent according to last line
-  " End of multiple-line comment
-  if last_line =~ '\*/\s*$' && last_line !~ '/\*.\{-}\*/'
-    let ind = ind - offset_comment1
-    if vverb
-      echo vverb_str "De-indent after a multiple-line comment."
-    endif
+  " Multiple-line comment count
+  if curr_line =~ '^\s*/\*' && curr_line !~ '/\*.\{-}\*/'
+    let s:multiple_comment += 1
+    if vverb | echom vverb_str "Start of multiple-line commnt" | endif
+  elseif curr_line =~ '\*/\s*$' && curr_line !~ '/\*.\{-}\*/'
+    let s:multiple_comment -= 1
+    if vverb | echom vverb_str "End of multiple-line commnt" | endif
+    return ind
+  endif
+  " Maintain indentation during commenting.
+  if s:multiple_comment > 0
+    return ind
+  endif
 
   " Indent after if/else/for/case/always/initial/specify/fork blocks
-  elseif last_line =~ '`\@<!\<\(if\|else\)\>' ||
-    \ last_line =~ '^\s*\<\(for\|case\%[[zx]]\|do\|foreach\|forever\|randcase\)\>' ||
+  if last_line =~ '^\s*\(end\)\=\s*`\@<!\<\(if\|else\)\>' ||
+    \ last_line =~ '^\s*\<\(for\|while\|repeat\|case\%[[zx]]\|do\|foreach\|forever\|randcase\)\>' ||
     \ last_line =~ '^\s*\<\(always\|always_comb\|always_ff\|always_latch\)\>' ||
     \ last_line =~ '^\s*\<\(initial\|specify\|fork\|final\)\>'
-    if last_line !~ '\(;\|\<end\>\)\s*' . sv_comment . '*$' ||
+    if last_line !~ '\(;\|\<end\>\|\*/\)\s*' . sv_comment . '*$' ||
       \ last_line =~ '\(//\|/\*\).*\(;\|\<end\>\)\s*' . sv_comment . '*$'
       let ind = ind + offset
-      if vverb | echo vverb_str "Indent after a block statement." | endif
+      if vverb | echom vverb_str "Indent after a block statement." | endif
     endif
   " Indent after function/task/class/package/sequence/clocking/
   " interface/covergroup/property/checkerprogram blocks
   elseif last_line =~ '^\s*\<\(function\|task\|class\|package\)\>' ||
     \ last_line =~ '^\s*\<\(sequence\|clocking\|interface\)\>' ||
     \ last_line =~ '^\s*\(\w\+\s*:\)\=\s*\<covergroup\>' ||
-    \ last_line =~ '^\s*\<\(property\|checker\|program\)\>'
+    \ last_line =~ '^\s*\<\(property\|checker\|program\)\>' ||
+    \ ( last_line =~ '^\s*\<virtual\>' && last_line =~ '\<\(function\|task\|class\|interface\)\>' ) ||
+    \ ( last_line =~ '^\s*\<pure\>' &&  last_line =~ '\<virtual\>' && last_line =~ '\<\(function\|task\)\>' )
     if last_line !~ '\<end\>\s*' . sv_comment . '*$' ||
       \ last_line =~ '\(//\|/\*\).*\(;\|\<end\>\)\s*' . sv_comment . '*$'
       let ind = ind + offset
       if vverb
-	echo vverb_str "Indent after function/task/class block statement."
+        echom vverb_str "Indent after function/task/class block statement."
       endif
     endif
 
@@ -103,13 +119,13 @@
   elseif last_line =~ '^\s*\(\<extern\>\s*\)\=\<module\>'
     let ind = ind + indent_modules
     if vverb && indent_modules
-      echo vverb_str "Indent after module statement."
+      echom vverb_str "Indent after module statement."
     endif
     if last_line =~ '[(,]\s*' . sv_comment . '*$' &&
       \ last_line !~ '\(//\|/\*\).*[(,]\s*' . sv_comment . '*$'
       let ind = ind + offset
       if vverb
-	echo vverb_str "Indent after a multiple-line module statement."
+        echom vverb_str "Indent after a multiple-line module statement."
       endif
     endif
 
@@ -119,7 +135,7 @@
     \ ( last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' ||
     \ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . sv_comment . '*$' )
     let ind = ind + offset
-    if vverb | echo vverb_str "Indent after begin statement." | endif
+    if vverb | echom vverb_str "Indent after begin statement." | endif
 
   " Indent after a '{' or a '('
   elseif last_line =~ '[{(]' . sv_comment . '*$' &&
@@ -127,7 +143,21 @@
     \ ( last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' ||
     \ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . sv_comment . '*$' )
     let ind = ind + offset
-    if vverb | echo vverb_str "Indent after begin statement." | endif
+    if vverb | echom vverb_str "Indent after begin statement." | endif
+
+  " Ignore de-indent for the end of one-line block
+  elseif ( last_line !~ '\<begin\>' ||
+    \ last_line =~ '\(//\|/\*\).*\<begin\>' ) &&
+    \ last_line2 =~ '\<\(`\@<!if\|`\@<!else\|for\|always\|initial\|do\|foreach\|forever\|final\)\>.*' .
+      \ sv_comment . '*$' &&
+    \ last_line2 !~ '\(//\|/\*\).*\<\(`\@<!if\|`\@<!else\|for\|always\|initial\|do\|foreach\|forever\|final\)\>' &&
+    \ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' &&
+    \ ( last_line2 !~ '\<begin\>' ||
+    \ last_line2 =~ '\(//\|/\*\).*\<begin\>' ) &&
+    \ last_line2 =~ ')*\s*;\s*' . sv_comment . '*$'
+    if vverb
+      echom vverb_str "Ignore de-indent after the end of one-line statement."
+    endif
 
   " De-indent for the end of one-line block
   elseif ( last_line !~ '\<begin\>' ||
@@ -136,39 +166,29 @@
       \ sv_comment . '*$' &&
     \ last_line2 !~ '\(//\|/\*\).*\<\(`\@<!if\|`\@<!else\|for\|always\|initial\|do\|foreach\|forever\|final\)\>' &&
     \ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$' &&
+    \ last_line2 !~ '\(;\|\<end\>\|\*/\)\s*' . sv_comment . '*$' &&
     \ ( last_line2 !~ '\<begin\>' ||
     \ last_line2 =~ '\(//\|/\*\).*\<begin\>' )
     let ind = ind - offset
     if vverb
-      echo vverb_str "De-indent after the end of one-line statement."
+      echom vverb_str "De-indent after the end of one-line statement."
     endif
 
-    " Multiple-line statement (including case statement)
-    " Open statement
-    "   Ident the first open line
-    elseif  last_line =~ sv_openstat . '\s*' . sv_comment . '*$' &&
-      \ last_line !~ '\(//\|/\*\).*' . sv_openstat . '\s*$' &&
-      \ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$'
-      let ind = ind + offset
-      if vverb | echo vverb_str "Indent after an open statement." | endif
+  " Multiple-line statement (including case statement)
+  " Open statement
+  "   Ident the first open line
+  elseif  last_line =~ sv_openstat . '\s*' . sv_comment . '*$' &&
+   \ last_line !~ '\(//\|/\*\).*' . sv_openstat . '\s*$' &&
+   \ last_line2 !~ sv_openstat . '\s*' . sv_comment . '*$'
+    let ind = ind + offset
+    let s:open_statement = 1
+    if vverb | echom vverb_str "Indent after an open statement." | endif
 
-    " Close statement
-    "   De-indent for an optional close parenthesis and a semicolon, and only
-    "   if there exists precedent non-whitespace char
-    elseif last_line =~ ')*\s*;\s*' . sv_comment . '*$' &&
-      \ last_line !~ '^\s*)*\s*;\s*' . sv_comment . '*$' &&
-      \ last_line !~ '\(//\|/\*\).*\S)*\s*;\s*' . sv_comment . '*$' &&
-      \ ( last_line2 =~ sv_openstat . '\s*' . sv_comment . '*$' &&
-      \ last_line2 !~ ';\s*//.*$') &&
-      \ last_line2 !~ '^\s*' . sv_comment . '$'
-      let ind = ind - offset
-      if vverb | echo vverb_str "De-indent after a close statement." | endif
-
-  " `ifdef and `else
-  elseif last_line =~ '^\s*`\<\(ifdef\|else\)\>'
+  " `ifdef or `ifndef or `elsif or `else
+  elseif last_line =~ '^\s*`\<\(ifn\?def\|elsif\|else\)\>' && indent_ifdef
     let ind = ind + offset
     if vverb
-      echo vverb_str "Indent after a `ifdef or `else statement."
+      echom vverb_str "Indent after a `ifdef or `ifndef or `elsif or `else statement."
     endif
 
   endif
@@ -177,17 +197,21 @@
 
   " De-indent on the end of the block
   " join/end/endcase/endfunction/endtask/endspecify
-  if curr_line =~ '^\s*\<\(join\|join_any\|join_none\|\|end\|endcase\|while\)\>' ||
+  if curr_line =~ '^\s*\<\(join\|join_any\|join_none\|\|end\|endcase\)\>' ||
       \ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\|endclass\)\>' ||
       \ curr_line =~ '^\s*\<\(endpackage\|endsequence\|endclocking\|endinterface\)\>' ||
-      \ curr_line =~ '^\s*\<\(endgroup\|endproperty\|endchecker\|endprogram\)\>' ||
-      \ curr_line =~ '^\s*}'
+      \ curr_line =~ '^\s*\<\(endgroup\|endproperty\|endchecker\|endprogram\)\>'
     let ind = ind - offset
-    if vverb | echo vverb_str "De-indent the end of a block." | endif
+    if vverb | echom vverb_str "De-indent the end of a block." | endif
+    if s:open_statement == 1
+      let ind = ind - offset
+      let s:open_statement = 0
+      if vverb | echom vverb_str "De-indent the close statement." | endif
+    endif
   elseif curr_line =~ '^\s*\<endmodule\>'
     let ind = ind - indent_modules
     if vverb && indent_modules
-      echo vverb_str "De-indent the end of a module."
+      echom vverb_str "De-indent the end of a module."
     endif
 
   " De-indent on a stand-alone 'begin'
@@ -202,25 +226,46 @@
       \ last_line =~ sv_openstat . '\s*' . sv_comment . '*$' )
       let ind = ind - offset
       if vverb
-	echo vverb_str "De-indent a stand alone begin statement."
+        echom vverb_str "De-indent a stand alone begin statement."
+      endif
+      if s:open_statement == 1
+        let ind = ind - offset
+        let s:open_statement = 0
+        if vverb | echom vverb_str "De-indent the close statement." | endif
       endif
     endif
 
-  " De-indent after the end of multiple-line statement
-  elseif curr_line =~ '^\s*)' &&
-    \ ( last_line =~ sv_openstat . '\s*' . sv_comment . '*$' ||
-    \ last_line !~ sv_openstat . '\s*' . sv_comment . '*$' &&
-    \ last_line2 =~ sv_openstat . '\s*' . sv_comment . '*$' )
+  " " Close statement
+  " "   De-indent for an optional close parenthesis and a semicolon, and only
+  " "   if there exists precedent non-whitespace char
+  " elseif last_line =~ ')*\s*;\s*' . sv_comment . '*$' &&
+  "   \ last_line !~ '^\s*)*\s*;\s*' . sv_comment . '*$' &&
+  "   \ last_line !~ '\(//\|/\*\).*\S)*\s*;\s*' . sv_comment . '*$' &&
+  "   \ ( last_line2 =~ sv_openstat . '\s*' . sv_comment . '*$' &&
+  "   \ last_line2 !~ ';\s*//.*$') &&
+  "   \ last_line2 !~ '^\s*' . sv_comment . '$'
+  "   let ind = ind - offset
+  "   if vverb | echom vverb_str "De-indent after a close statement." | endif
+
+  " " De-indent after the end of multiple-line statement
+  " elseif curr_line =~ '^\s*)' &&
+  "  \ ( last_line =~ sv_openstat . '\s*' . sv_comment . '*$' ||
+  "  \ last_line !~ sv_openstat . '\s*' . sv_comment . '*$' &&
+  "  \ last_line2 =~ sv_openstat . '\s*' . sv_comment . '*$' )
+  "   let ind = ind - offset
+  "   if vverb
+  "     echom vverb_str "De-indent the end of a multiple statement."
+  "   endif
+
+  " De-indent `elsif or `else or `endif
+  elseif curr_line =~ '^\s*`\<\(elsif\|else\|endif\)\>' && indent_ifdef
     let ind = ind - offset
-    if vverb
-      echo vverb_str "De-indent the end of a multiple statement."
+    if vverb | echom vverb_str "De-indent `elsif or `else or `endif statement." | endif
+    if b:systemverilog_open_statement == 1
+      let ind = ind - offset
+      let b:systemverilog_open_statement = 0
+      if vverb | echom vverb_str "De-indent the open statement." | endif
     endif
-
-  " De-indent `else and `endif
-  elseif curr_line =~ '^\s*`\<\(else\|endif\)\>'
-    let ind = ind - offset
-    if vverb | echo vverb_str "De-indent `else and `endif statement." | endif
-
   endif
 
   " Return the indentation
@@ -231,3 +276,4 @@
 unlet s:cpo_save
 
 " vim:sw=2
+
