Update runtime files.

Includes changing &sw to shiftwidth() for all indent scripts.
diff --git a/runtime/indent/ada.vim b/runtime/indent/ada.vim
index 5019f0b..1ca7fba 100644
--- a/runtime/indent/ada.vim
+++ b/runtime/indent/ada.vim
@@ -87,7 +87,7 @@
       endwhile
    endwhile
    " Fallback - just move back one
-   return a:prev_indent - &sw
+   return a:prev_indent - shiftwidth()
 endfunction MainBlockIndent
 
 " Section: s:EndBlockIndent {{{1
@@ -131,7 +131,7 @@
       endwhile
    endwhile
    " Fallback - just move back one
-   return a:prev_indent - &sw
+   return a:prev_indent - shiftwidth()
 endfunction EndBlockIndent
 
 " Section: s:StatementIndent {{{1
@@ -213,15 +213,15 @@
       endif
       " Move indent in
       if ! false_match
-	 let ind = ind + &sw
+	 let ind = ind + shiftwidth()
       endif
    elseif line =~ '^\s*\(case\|exception\)\>'
       " Move indent in twice (next 'when' will move back)
-      let ind = ind + 2 * &sw
+      let ind = ind + 2 * shiftwidth()
    elseif line =~ '^\s*end\s*record\>'
       " Move indent back to tallying 'type' preceeding the 'record'.
       " Allow indent to be equal to 'end record's.
-      let ind = s:MainBlockIndent( ind+&sw, lnum, 'type\>', '' )
+      let ind = s:MainBlockIndent( ind+shiftwidth(), lnum, 'type\>', '' )
    elseif line =~ '\(^\s*new\>.*\)\@<!)\s*[;,]\s*$'
       " Revert to indent of line that started this parenthesis pair
       exe lnum
@@ -235,10 +235,10 @@
       exe v:lnum
    elseif line =~ '[.=(]\s*$'
       " A statement continuation - move in one
-      let ind = ind + &sw
+      let ind = ind + shiftwidth()
    elseif line =~ '^\s*new\>'
       " Multiple line generic instantiation ('package blah is\nnew thingy')
-      let ind = s:StatementIndent( ind - &sw, lnum )
+      let ind = s:StatementIndent( ind - shiftwidth(), lnum )
    elseif line =~ ';\s*$'
       " Statement end (but not 'end' ) - try to find current statement-start indent
       let ind = s:StatementIndent( ind, lnum )
@@ -256,17 +256,17 @@
    elseif continuation && line =~ '^\s*('
       " Don't do this if we've already indented due to the previous line
       if ind == initind
-	 let ind = ind + &sw
+	 let ind = ind + shiftwidth()
       endif
    elseif line =~ '^\s*\(begin\|is\)\>'
       let ind = s:MainBlockIndent( ind, lnum, '\(procedure\|function\|declare\|package\|task\)\>', 'begin\>' )
    elseif line =~ '^\s*record\>'
-      let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\<use\>', '' ) + &sw
+      let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\<use\>', '' ) + shiftwidth()
    elseif line =~ '^\s*\(else\|elsif\)\>'
       let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' )
    elseif line =~ '^\s*when\>'
       " Align 'when' one /in/ from matching block start
-      let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + &sw
+      let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + shiftwidth()
    elseif line =~ '^\s*end\>\s*\<if\>'
       " End of if statements
       let ind = s:EndBlockIndent( ind, lnum, 'if\>', 'end\>\s*\<if\>' )
diff --git a/runtime/indent/awk.vim b/runtime/indent/awk.vim
index 6f6b70c..aad73ee 100644
--- a/runtime/indent/awk.vim
+++ b/runtime/indent/awk.vim
@@ -60,7 +60,7 @@
    " 'pattern { action }' (simple check match on /{/ increases the indent then)
 
    if s:Get_brace_balance( prev_data, '{', '}' ) > 0
-      return ind + &sw
+      return ind + shiftwidth()
    endif
 
    let brace_balance = s:Get_brace_balance( prev_data, '(', ')' )
@@ -99,7 +99,7 @@
 	  return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum))
        else
 	 " if/for/while without '{'
-	 return ind + &sw
+	 return ind + shiftwidth()
        endif
      endif
    endif
@@ -140,7 +140,7 @@
 
    " Decrease indent if this line contains a '}'.
    if getline(v:lnum) =~ '^\s*}'
-      let ind = ind - &sw
+      let ind = ind - shiftwidth()
    endif
 
    return ind
diff --git a/runtime/indent/bst.vim b/runtime/indent/bst.vim
index be1f63e..47e3058 100644
--- a/runtime/indent/bst.vim
+++ b/runtime/indent/bst.vim
@@ -69,7 +69,7 @@
     endif
     let fakeline = substitute(line,'^}','','').matchstr(cline,'^}')
     let ind = indent(lnum)
-    let ind = ind + &sw * s:count(line,'{')
-    let ind = ind - &sw * s:count(fakeline,'}')
+    let ind = ind + shiftwidth() * s:count(line,'{')
+    let ind = ind - shiftwidth() * s:count(fakeline,'}')
     return ind
 endfunction
diff --git a/runtime/indent/bzl.vim b/runtime/indent/bzl.vim
index 24e5b87..6904bfd 100644
--- a/runtime/indent/bzl.vim
+++ b/runtime/indent/bzl.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Bazel (http://bazel.io)
 " Maintainer:	David Barnett (https://github.com/google/vim-ft-bzl)
-" Last Change:	2015 Aug 11
+" Last Change:	2017 Jun 13
 
 if exists('b:did_indent')
   finish
@@ -41,11 +41,8 @@
     if exists('g:pyindent_open_paren')
       let l:pyindent_open_paren = g:pyindent_open_paren
     endif
-    " Vim 7.3.693 and later defines a shiftwidth() function to get the effective
-    " shiftwidth value. Fall back to &shiftwidth if the function doesn't exist.
-    let l:sw_expr = exists('*shiftwidth') ? 'shiftwidth()' : '&shiftwidth'
-    let g:pyindent_nested_paren = l:sw_expr . ' * 2'
-    let g:pyindent_open_paren = l:sw_expr . ' * 2'
+    let g:pyindent_nested_paren = 'shiftwidth() * 2'
+    let g:pyindent_open_paren = 'shiftwidth() * 2'
   endif
 
   let l:indent = -1
diff --git a/runtime/indent/cdl.vim b/runtime/indent/cdl.vim
index 5ec2a7b..5fae7b9 100644
--- a/runtime/indent/cdl.vim
+++ b/runtime/indent/cdl.vim
@@ -47,7 +47,7 @@
   let thisline = getline(a:lnum)
   if match(thisline, '^\s*\(\k\+\|\[[^]]*]\)\s*\(,\|;\s*$\)') >= 0
     " it's an attributes line
-    return &sw
+    return shiftwidth()
   elseif match(thisline, '^\c\s*\([{}]\|\/[*/]\|dimension\|schedule\|group\|hierarchy\|class\)') >= 0
     " it's a header or '{' or '}' or a comment
     return 0
@@ -71,13 +71,13 @@
     let c = line[inicio-1]
     " ')' and '=' don't change indent and are useless to set 'f'
     if c == '{'
-      return &sw
+      return shiftwidth()
     elseif c != ')' && c != '='
       let f = 1 " all but 'elseif' are followed by a formula
       if c ==? 'n' || c ==? 'e' " 'then', 'else'
-	let ind = ind + &sw
+	let ind = ind + shiftwidth()
       elseif strpart(line, inicio-6, 6) ==? 'elseif' " elseif, set f to conditional
-	let ind = ind + &sw
+	let ind = ind + shiftwidth()
 	let f = 0
       end
     end
@@ -98,16 +98,16 @@
       let ind = 0
       let f = 1
     elseif c == ')' || c== ';' || strpart(line, inicio-5, 5) ==? 'endif'
-      let ind = ind - &sw
+      let ind = ind - shiftwidth()
     elseif c == '(' || c ==? 'f' " '(' or 'if'
-      let ind = ind + &sw
+      let ind = ind + shiftwidth()
     else " c == '='
       " if it is an asignment increase indent
       if f == -1 " we don't know yet, find out
 	let f = CdlAsignment(lnum, strpart(line, 0, inicio))
       end
       if f == 1 " formula increase it
-	let ind = ind + &sw
+	let ind = ind + shiftwidth()
       end
     end
   endw
@@ -115,13 +115,13 @@
   " CURRENT LINE, if it starts with a closing element, decrease indent
   " or if it starts with '=' (asignment), increase indent
   if match(thisline, '^\c\s*\(else\|then\|endif\|[);]\)') >= 0
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   elseif match(thisline, '^\s*=') >= 0
     if f == -1 " we don't know yet if is an asignment, find out
       let f = CdlAsignment(lnum, "")
     end
     if f == 1 " formula increase it
-      let ind = ind + &sw
+      let ind = ind + shiftwidth()
     end
   end
 
diff --git a/runtime/indent/chaiscript.vim b/runtime/indent/chaiscript.vim
index 247e1a6..445281c 100644
--- a/runtime/indent/chaiscript.vim
+++ b/runtime/indent/chaiscript.vim
@@ -31,19 +31,19 @@
   let flag = 0
   let prevline = getline(lnum)
   if prevline =~ '^.*{.*'
-    let ind = ind + &shiftwidth
+    let ind = ind + shiftwidth()
     let flag = 1
   endif
 
   " Subtract a 'shiftwidth' after lines containing a { followed by a }
   " to keep it balanced
   if flag == 1 && prevline =~ '.*{.*}.*'
-    let ind = ind - &shiftwidth
+    let ind = ind - shiftwidth()
   endif
 
   " Subtract a 'shiftwidth' on lines ending with }
   if getline(v:lnum) =~ '^\s*\%(}\)'
-    let ind = ind - &shiftwidth
+    let ind = ind - shiftwidth()
   endif
 
   return ind
diff --git a/runtime/indent/clojure.vim b/runtime/indent/clojure.vim
index 7592b10..7c4186e 100644
--- a/runtime/indent/clojure.vim
+++ b/runtime/indent/clojure.vim
@@ -261,7 +261,7 @@
 		call cursor(paren)
 
 		if s:is_method_special_case(paren)
-			return [paren[0], paren[1] + &shiftwidth - 1]
+			return [paren[0], paren[1] + shiftwidth() - 1]
 		endif
 
 		if s:is_reader_conditional_special_case(paren)
@@ -299,19 +299,19 @@
 		let ww = s:strip_namespace_and_macro_chars(w)
 
 		if &lispwords =~# '\V\<' . ww . '\>'
-			return [paren[0], paren[1] + &shiftwidth - 1]
+			return [paren[0], paren[1] + shiftwidth() - 1]
 		endif
 
 		if g:clojure_fuzzy_indent
 			\ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
 			\ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
-			return [paren[0], paren[1] + &shiftwidth - 1]
+			return [paren[0], paren[1] + shiftwidth() - 1]
 		endif
 
 		call search('\v\_s', 'cW')
 		call search('\v\S', 'W')
 		if paren[0] < line(".")
-			return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
+			return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : shiftwidth() - 1)]
 		endif
 
 		call search('\v\S', 'bW')
diff --git a/runtime/indent/cmake.vim b/runtime/indent/cmake.vim
index 421afcb..93a131b 100644
--- a/runtime/indent/cmake.vim
+++ b/runtime/indent/cmake.vim
@@ -68,19 +68,19 @@
     let ind = ind
   else
     if previous_line =~? cmake_indent_begin_regex
-      let ind = ind + &sw
+      let ind = ind + shiftwidth()
     endif
     if previous_line =~? cmake_indent_open_regex
-      let ind = ind + &sw
+      let ind = ind + shiftwidth()
     endif
   endif
 
   " Subtract
   if this_line =~? cmake_indent_end_regex
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
   if previous_line =~? cmake_indent_close_regex
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   return ind
diff --git a/runtime/indent/cobol.vim b/runtime/indent/cobol.vim
index 8dce3cd..c08444a 100644
--- a/runtime/indent/cobol.vim
+++ b/runtime/indent/cobol.vim
@@ -52,11 +52,11 @@
         if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin
             let ind = indent(lastclause)
         elseif lastclause > 0
-            let ind = indent(lastclause) + &sw
-            "let ind = ind + &sw
+            let ind = indent(lastclause) + shiftwidth()
+            "let ind = ind + shiftwidth()
         endif
     elseif line =~? clauses && cline !~? end
-        let ind = ind + &sw
+        let ind = ind + shiftwidth()
     endif
     return ind
 endfunction
@@ -98,8 +98,8 @@
                 let num = matchstr(line,'^\s*\zs\d\+\>')
                 if 0+cnum == num
                     return lindent
-                elseif 0+cnum > num && default < lindent + &sw
-                    let default = lindent + &sw
+                elseif 0+cnum > num && default < lindent + shiftwidth()
+                    let default = lindent + shiftwidth()
                 endif
             elseif lindent < bshft && lindent >= ashft
                 break
@@ -135,13 +135,13 @@
     if line =~? '^PERFORM\>'
         let perfline = substitute(line, '\c^PERFORM\s*', "", "")
         if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$'
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
         elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$'
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
         endif
     endif
     if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>'
-        let ind = ind + &sw
+        let ind = ind + shiftwidth()
     endif
     let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR')
     let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION')
@@ -157,10 +157,10 @@
             "&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>'
             let ind = indent(lastclause)
         elseif lastclause > 0
-            let ind = indent(lastclause) + &sw
+            let ind = indent(lastclause) + shiftwidth()
         endif
     elseif line =~? '^WHEN\>'
-        let ind = ind + &sw
+        let ind = ind + shiftwidth()
     endif
     "I'm not sure why I had this
     "if line =~? '^ELSE\>-\@!' && line !~? '\.$'
@@ -168,7 +168,7 @@
     "endif
     if cline =~? '^\(END\)\>-\@!'
         " On lines with just END, 'guess' a simple shift left
-        let ind = ind - &sw
+        let ind = ind - shiftwidth()
     elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!'
         call cursor(a:lnum,indent(a:lnum))
         let match = searchpair('\c-\@<!\<IF\>','\c-\@<!\%(THEN\|ELSE\)\>','\c-\@<!\<END-IF\>\zs','bnW',s:skip)
@@ -209,7 +209,7 @@
         if match > 0
             let ind = indent(match)
         elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>'
-            let ind = ind - &sw
+            let ind = ind - shiftwidth()
         endif
     endif
     return ind < bshft ? bshft : ind
diff --git a/runtime/indent/cucumber.vim b/runtime/indent/cucumber.vim
index 999b8d6..ad28a67 100644
--- a/runtime/indent/cucumber.vim
+++ b/runtime/indent/cucumber.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Cucumber
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2016 Aug 29
+" Last Change:	2017 Jun 13
 
 if exists("b:did_indent")
   finish
@@ -27,7 +27,7 @@
   let line  = getline(prevnonblank(v:lnum-1))
   let cline = getline(v:lnum)
   let nline = getline(nextnonblank(v:lnum+1))
-  let sw = exists('*shiftwidth') ? shiftwidth() : &sw
+  let sw = exists('*shiftwidth') ? shiftwidth() : shiftwidth()
   let syn = s:syn(prevnonblank(v:lnum-1))
   let csyn = s:syn(v:lnum)
   let nsyn = s:syn(nextnonblank(v:lnum+1))
diff --git a/runtime/indent/dylan.vim b/runtime/indent/dylan.vim
index 0afcbea..6811ec4 100644
--- a/runtime/indent/dylan.vim
+++ b/runtime/indent/dylan.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Dylan
 " Version:	0.01
-" Last Change:	2003 Feb 04
+" Last Change:	2017 Jun 13
 " Maintainer:	Brent A. Fulgham <bfulgham@debian.org>
 
 " Only load this indent file when no other was loaded.
@@ -45,13 +45,13 @@
 
   " If previous line was a 'define', indent
   if prevline =~? '\(^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)\|\s*\S*\s*=>$\)'
-    let chg = &sw
+    let chg = shiftwidth()
   " local methods indent the shift-width, plus 6 for the 'local'
   elseif prevline =~? '^\s*local'
-    let chg = &sw + 6
+    let chg = shiftwidth() + 6
   " If previous line was a let with no closing semicolon, indent
   elseif prevline =~? '^\s*let.*[^;]\s*$'
-    let chg = &sw
+    let chg = shiftwidth()
   " If previous line opened a parenthesis, and did not close it, indent
   elseif prevline =~ '^.*(\s*[^)]*\((.*)\)*[^)]*$'
     return = match( prevline, '(.*\((.*)\|[^)]\)*.*$') + 1
@@ -75,13 +75,13 @@
     " line doesn't start with an indentable command:
     let curr_str = getline(curr_line)
     if curr_str =~? '^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)'
-      let chg = &sw
+      let chg = shiftwidth()
     endif
   endif
 
   " If a line starts with end, un-indent (even if we just indented!)
   if cline =~? '^\s*\(cleanup\|end\|else\|elseif\|exception\|finally\|otherwise\)'
-    let chg = chg - &sw
+    let chg = chg - shiftwidth()
   endif
 
   return ind + chg
diff --git a/runtime/indent/erlang.vim b/runtime/indent/erlang.vim
index 7569fe9..9228f18 100644
--- a/runtime/indent/erlang.vim
+++ b/runtime/indent/erlang.vim
@@ -669,7 +669,7 @@
     call s:Pop(a:stack)
     if empty(a:stack)
       call s:Log('    Stack is ["when"], so LTI is in a guard -> return')
-      return [1, a:stored_vcol + &sw + 2]
+      return [1, a:stored_vcol + shiftwidth() + 2]
     else
       return [1, s:UnexpectedToken(a:token, a:stack)]
     endif
@@ -678,7 +678,7 @@
     call s:Pop(a:stack)
     if empty(a:stack)
       call s:Log('    Stack is ["->"], so LTI is in function body -> return')
-      return [1, a:stored_vcol + &sw]
+      return [1, a:stored_vcol + shiftwidth()]
     elseif a:stack[0] ==# ';'
       call s:Pop(a:stack)
       if empty(a:stack)
@@ -797,7 +797,7 @@
 
       elseif token ==# 'begin'
         let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
-                                            \stored_vcol, 'end', &sw)
+                                            \stored_vcol, 'end', shiftwidth())
         if ret | return res | endif
 
       " case EXPR of BRANCHES end
@@ -848,11 +848,11 @@
         elseif stack == ['->']
           call s:Log('    LTI is in a branch after ' .
                     \'"of/receive/after/if/catch" -> return')
-          return stored_vcol + &sw
+          return stored_vcol + shiftwidth()
         elseif stack == ['when']
           call s:Log('    LTI is in a guard after ' .
                     \'"of/receive/after/if/catch" -> return')
-          return stored_vcol + &sw
+          return stored_vcol + shiftwidth()
         else
           return s:UnexpectedToken(token, stack)
         endif
@@ -888,7 +888,7 @@
           if empty(stack)
             call s:Log('    LTI is in a condition; matching ' .
                       \'"case/if/try/receive" found')
-            let stored_vcol = curr_vcol + &sw
+            let stored_vcol = curr_vcol + shiftwidth()
           elseif stack[0] ==# 'align_to_begin_element'
             call s:Pop(stack)
             let stored_vcol = curr_vcol
@@ -897,23 +897,23 @@
                       \'"case/if/try/receive" found')
             call s:Pop(stack)
             call s:Pop(stack)
-            let stored_vcol = curr_vcol + &sw
+            let stored_vcol = curr_vcol + shiftwidth()
           elseif stack[0] ==# '->'
             call s:Log('    LTI is in a branch; matching ' .
                       \'"case/if/try/receive" found')
             call s:Pop(stack)
-            let stored_vcol = curr_vcol + 2 * &sw
+            let stored_vcol = curr_vcol + 2 * shiftwidth()
           elseif stack[0] ==# 'when'
             call s:Log('    LTI is in a guard; matching ' .
                       \'"case/if/try/receive" found')
             call s:Pop(stack)
-            let stored_vcol = curr_vcol + 2 * &sw + 2
+            let stored_vcol = curr_vcol + 2 * shiftwidth() + 2
           endif
 
         endif
 
         let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
-                                            \stored_vcol, 'end', &sw)
+                                            \stored_vcol, 'end', shiftwidth())
         if ret | return res | endif
 
       elseif token ==# 'fun'
@@ -930,7 +930,7 @@
           " stack = ['when']  =>  LTI is in a guard
           if empty(stack)
             call s:Log('    LTI is in a condition; matching "fun" found')
-            let stored_vcol = curr_vcol + &sw
+            let stored_vcol = curr_vcol + shiftwidth()
           elseif len(stack) > 1 && stack[0] ==# '->' && stack[1] ==# ';'
             call s:Log('    LTI is in a condition; matching "fun" found')
             call s:Pop(stack)
@@ -938,15 +938,15 @@
           elseif stack[0] ==# '->'
             call s:Log('    LTI is in a branch; matching "fun" found')
             call s:Pop(stack)
-            let stored_vcol = curr_vcol + 2 * &sw
+            let stored_vcol = curr_vcol + 2 * shiftwidth()
           elseif stack[0] ==# 'when'
             call s:Log('    LTI is in a guard; matching "fun" found')
             call s:Pop(stack)
-            let stored_vcol = curr_vcol + 2 * &sw + 2
+            let stored_vcol = curr_vcol + 2 * shiftwidth() + 2
           endif
 
           let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
-                                              \stored_vcol, 'end', &sw)
+                                              \stored_vcol, 'end', shiftwidth())
           if ret | return res | endif
         else
           " Pass: we have a function reference (e.g. "fun f/0")
@@ -1220,7 +1220,7 @@
             "   when A,
             "        LTI
             let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
-                                                       \stored_vcol, &sw)
+                                                       \stored_vcol, shiftwidth())
             if ret | return res | endif
           else
             " Example:
@@ -1252,7 +1252,7 @@
           " If LTI is between an 'after' and the corresponding
           " 'end', then let's return
           let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
-                                                     \stored_vcol, &sw)
+                                                     \stored_vcol, shiftwidth())
           if ret | return res | endif
         endif
 
diff --git a/runtime/indent/eruby.vim b/runtime/indent/eruby.vim
index afabd4f..5058325 100644
--- a/runtime/indent/eruby.vim
+++ b/runtime/indent/eruby.vim
@@ -47,11 +47,7 @@
 
 function! GetErubyIndent(...)
   " The value of a single shift-width
-  if exists('*shiftwidth')
-    let sw = shiftwidth()
-  else
-    let sw = &sw
-  endif
+  let sw = shiftwidth()
 
   if a:0 && a:1 == '.'
     let v:lnum = line('.')
diff --git a/runtime/indent/falcon.vim b/runtime/indent/falcon.vim
index 84b16d5..b34e7cf 100644
--- a/runtime/indent/falcon.vim
+++ b/runtime/indent/falcon.vim
@@ -339,7 +339,7 @@
 
     " If the previous line ended with a block opening, add a level of indent.
     if s:Match(lnum, s:block_regex)
-	return indent(s:GetMSL(lnum)) + &sw
+	return indent(s:GetMSL(lnum)) + shiftwidth()
     endif
 
     " If it contained hanging closing brackets, find the rightmost one, find its
@@ -350,20 +350,20 @@
 	if opening.pos != -1
 	    if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
 		if col('.') + 1 == col('$')
-		    return ind + &sw
+		    return ind + shiftwidth()
 		else
 		    return virtcol('.')
 		endif
 	    else
 		let nonspace = matchend(line, '\S', opening.pos + 1) - 1
-		return nonspace > 0 ? nonspace : ind + &sw
+		return nonspace > 0 ? nonspace : ind + shiftwidth()
 	    endif
 	elseif closing.pos != -1
 	    call cursor(lnum, closing.pos + 1)
 	    normal! %
 
 	    if s:Match(line('.'), s:falcon_indent_keywords)
-		return indent('.') + &sw
+		return indent('.') + shiftwidth()
 	    else
 		return indent('.')
 	    endif
@@ -392,7 +392,7 @@
     let col = s:Match(lnum, s:falcon_indent_keywords)
     if col > 0
 	call cursor(lnum, col)
-	let ind = virtcol('.') - 1 + &sw
+	let ind = virtcol('.') - 1 + shiftwidth()
 	" TODO: make this better (we need to count them) (or, if a searchpair
 	" fails, we know that something is lacking an end and thus we indent a
 	" level
@@ -422,9 +422,9 @@
     " TODO: this does not take into account contrived things such as
     " module Foo; class Bar; end
     if s:Match(lnum, s:falcon_indent_keywords)
-	let ind = msl_ind + &sw
+	let ind = msl_ind + shiftwidth()
 	if s:Match(lnum, s:end_end_regex)
-	    let ind = ind - &sw
+	    let ind = ind - shiftwidth()
 	endif
 	return ind
     endif
@@ -433,7 +433,7 @@
     " closing bracket, indent one extra level.
     if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\s*\([\])}]\|end\)')
 	if lnum == p_lnum
-	    let ind = msl_ind + &sw
+	    let ind = msl_ind + shiftwidth()
 	else
 	    let ind = msl_ind
 	endif
diff --git a/runtime/indent/gitconfig.vim b/runtime/indent/gitconfig.vim
index 480c96d..6a670ee 100644
--- a/runtime/indent/gitconfig.vim
+++ b/runtime/indent/gitconfig.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	git config file
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2016 Aug 29
+" Last Change:	2017 Jun 13
 
 if exists("b:did_indent")
   finish
@@ -20,7 +20,7 @@
 endif
 
 function! GetGitconfigIndent()
-  let sw    = exists('*shiftwidth') ? shiftwidth() : &sw
+  let sw    = shiftwidth()
   let line  = getline(prevnonblank(v:lnum-1))
   let cline = getline(v:lnum)
   if line =~  '\\\@<!\%(\\\\\)*\\$'
diff --git a/runtime/indent/gitolite.vim b/runtime/indent/gitolite.vim
index 33b7c9f..2d24b59 100644
--- a/runtime/indent/gitolite.vim
+++ b/runtime/indent/gitolite.vim
@@ -2,7 +2,7 @@
 " Language:	gitolite configuration
 " URL:		https://github.com/tmatilai/gitolite.vim
 " Maintainer:	Teemu Matilainen <teemu.matilainen@iki.fi>
-" Last Change:	2011-12-24
+" Last Change:	2017 Jun 13
 
 if exists("b:did_indent")
   finish
@@ -27,11 +27,11 @@
   let cline = getline(v:lnum)
 
   if cline =~ '^\s*\(C\|R\|RW\|RW+\|RWC\|RW+C\|RWD\|RW+D\|RWCD\|RW+CD\|-\)[ \t=]'
-    return &sw
+    return shiftwidth()
   elseif cline =~ '^\s*config\s'
-    return &sw
+    return shiftwidth()
   elseif pline =~ '^\s*repo\s' && cline =~ '^\s*\(#.*\)\?$'
-    return &sw
+    return shiftwidth()
   elseif cline =~ '^\s*#'
     return indent(prevln)
   elseif cline =~ '^\s*$'
diff --git a/runtime/indent/go.vim b/runtime/indent/go.vim
index 412ac87..bf9ff75 100644
--- a/runtime/indent/go.vim
+++ b/runtime/indent/go.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Go
 " Maintainer:	David Barnett (https://github.com/google/vim-ft-go)
-" Last Change:	2014 Aug 16
+" Last Change:	2017 Jun 13
 "
 " TODO:
 " - function invocations split across lines
@@ -23,18 +23,6 @@
   finish
 endif
 
-" The shiftwidth() function is relatively new.
-" Don't require it to exist.
-if exists('*shiftwidth')
-  function s:sw() abort
-    return shiftwidth()
-  endfunction
-else
-  function s:sw() abort
-    return &shiftwidth
-  endfunction
-endif
-
 function! GoIndent(lnum)
   let l:prevlnum = prevnonblank(a:lnum-1)
   if l:prevlnum == 0
@@ -51,17 +39,17 @@
 
   if l:prevl =~ '[({]\s*$'
     " previous line opened a block
-    let l:ind += s:sw()
+    let l:ind += shiftwidth()
   endif
   if l:prevl =~# '^\s*\(case .*\|default\):$'
     " previous line is part of a switch statement
-    let l:ind += s:sw()
+    let l:ind += shiftwidth()
   endif
   " TODO: handle if the previous line is a label.
 
   if l:thisl =~ '^\s*[)}]'
     " this line closed a block
-    let l:ind -= s:sw()
+    let l:ind -= shiftwidth()
   endif
 
   " Colons are tricky.
@@ -69,7 +57,7 @@
   " We ignore trying to deal with jump labels because (a) they're rare, and
   " (b) they're hard to disambiguate from a composite literal key.
   if l:thisl =~# '^\s*\(case .*\|default\):$'
-    let l:ind -= s:sw()
+    let l:ind -= shiftwidth()
   endif
 
   return l:ind
diff --git a/runtime/indent/haml.vim b/runtime/indent/haml.vim
index c3935af..e6416e6 100644
--- a/runtime/indent/haml.vim
+++ b/runtime/indent/haml.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Haml
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2016 Aug 29
+" Last Change:	2017 Jun 13
 
 if exists("b:did_indent")
   finish
@@ -37,7 +37,7 @@
   let line = substitute(line,'^\s\+','','')
   let indent = indent(lnum)
   let cindent = indent(v:lnum)
-  let sw = exists('*shiftwidth') ? shiftwidth() : &sw
+  let sw = shiftwidth()
   if cline =~# '\v^-\s*%(elsif|else|when)>'
     let indent = cindent < indent ? cindent : indent - sw
   endif
diff --git a/runtime/indent/hamster.vim b/runtime/indent/hamster.vim
index 93e7db4..b27a173 100644
--- a/runtime/indent/hamster.vim
+++ b/runtime/indent/hamster.vim
@@ -27,13 +27,13 @@
   " Add a shiftwidth to statements following if,  else, elseif,
   " case, select, default, do, until, while, for, start
   if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>' 
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   " Subtract a shiftwidth from else, elseif, end(if|while|for), until
   let line = getline(v:lnum)
   if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   return ind
diff --git a/runtime/indent/hog.vim b/runtime/indent/hog.vim
index 02ac7d4..ece587d 100644
--- a/runtime/indent/hog.vim
+++ b/runtime/indent/hog.vim
@@ -47,7 +47,7 @@
     " Continuation of a line that wasn't indented
     let prevline = getline(prevlnum)
     if prevline =~ '^\k\+.*\\\s*$'
-        return &sw 
+        return shiftwidth() 
     endif
 
     " Continuation of a line that was indented
@@ -58,13 +58,13 @@
     " Indent the next line if previous line contained a start of a block
     " definition ('{' or '(').
     if prevline =~ '^\k\+[^#]*{}\@!\s*$' " TODO || prevline =~ '^\k\+[^#]*()\@!\s*$'
-        return &sw
+        return shiftwidth()
     endif
 
     " Match inside of a block
     if s:IsInBlock(v:lnum)
         if prevline =~ "^\k\+.*$"
-            return &sw
+            return shiftwidth()
         else
             return indent(prevlnum)
         endif
diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim
index 57ba53e..3769784 100644
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -2,7 +2,7 @@
 " Header: "{{{
 " Maintainer:	Bram Moolenaar
 " Original Author: Andy Wokula <anwoku@yahoo.de>
-" Last Change:	2017 Jan 17
+" Last Change:	2017 Jun 13
 " Version:	1.0
 " Description:	HTML indent script with cached state for faster indenting on a
 "		range of lines.
@@ -51,15 +51,6 @@
   finish
 endif
 
-" shiftwidth() exists since patch 7.3.694
-if exists('*shiftwidth')
-  let s:ShiftWidth = function('shiftwidth')
-else
-  func! s:ShiftWidth()
-    return &shiftwidth
-  endfunc
-endif
-
 " Allow for line continuation below.
 let s:cpo_save = &cpo
 set cpo-=C
@@ -123,7 +114,7 @@
 
   let indone = {"zero": 0
               \,"auto": "indent(prevnonblank(v:lnum-1))"
-              \,"inc": "b:hi_indent.blocktagind + s:ShiftWidth()"}
+              \,"inc": "b:hi_indent.blocktagind + shiftwidth()"}
 
   let script1 = ''
   if exists("b:html_indent_script1")
@@ -358,7 +349,7 @@
     endif
     let b:hi_newstate.blocklnr = v:lnum
     " save allover indent for the endtag
-    let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * s:ShiftWidth()
+    let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * shiftwidth()
     if a:ind == 3
       return "SCRIPT"    " all except this must be lowercase
       " line is to be checked again for the type attribute
@@ -480,7 +471,7 @@
       let state.blocklnr = stopline
       " check preceding tags in the line:
       call s:CountITags(tagline[: stopcol-2])
-      let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * s:ShiftWidth()
+      let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * shiftwidth()
       return state
     elseif stopline == state.lnum
       " handle special case: previous line (= state.lnum) contains a
@@ -490,7 +481,7 @@
       if !swendtag
         let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bnW")
         call s:CountITags(tolower(getline(bline)[: bcol-2]))
-        let state.baseindent = indent(bline) + (s:curind + s:nextrel) * s:ShiftWidth()
+        let state.baseindent = indent(bline) + (s:curind + s:nextrel) * shiftwidth()
         return state
       endif
     endif
@@ -511,7 +502,7 @@
     if found == 2
       let state.baseindent = b:hi_indent.baseindent
     endif
-    let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth()
+    let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth()
     return state
   endif
 
@@ -530,7 +521,7 @@
       let text = tolower(getline(comlnum)[: comcol-2])
     endif
     call s:CountITags(text)
-    let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth()
+    let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth()
     " TODO check tags that follow "-->"
     return state
   endif
@@ -550,9 +541,9 @@
         let text = getline(start_lnum)
         let swendtag = match(text, '^\s*</') >= 0
         call s:CountITags(text[: col('.') - 2])
-        let state.baseindent += s:nextrel * s:ShiftWidth()
+        let state.baseindent += s:nextrel * shiftwidth()
         if !swendtag
-          let state.baseindent += s:curind * s:ShiftWidth()
+          let state.baseindent += s:curind * shiftwidth()
         endif
       endif
       return state
@@ -565,9 +556,9 @@
   let text = getline(state.lnum)
   let swendtag = match(text, '^\s*</') >= 0
   call s:CountITags(tolower(text))
-  let state.baseindent = indent(state.lnum) + s:nextrel * s:ShiftWidth()
+  let state.baseindent = indent(state.lnum) + s:nextrel * shiftwidth()
   if !swendtag
-    let state.baseindent += s:curind * s:ShiftWidth()
+    let state.baseindent += s:curind * shiftwidth()
   endif
   return state
 endfunc "}}}
@@ -646,7 +637,7 @@
 
   " add indent after {
   let brace_counts = HtmlIndent_CountBraces(prev_lnum)
-  let extra = brace_counts.c_open * s:ShiftWidth()
+  let extra = brace_counts.c_open * shiftwidth()
 
   let prev_text = getline(prev_lnum)
   let below_end_brace = prev_text =~ '}\s*$'
@@ -663,7 +654,7 @@
       " if the current line is not a comment or starts with @ (used by template
       " systems) reduce indent if previous line is a continuation line
       if !prev_hasfield && !prev_special
-        let extra = -s:ShiftWidth()
+        let extra = -shiftwidth()
       endif
     else
       let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:'
@@ -671,14 +662,14 @@
       if !cur_hasfield && (prev_hasfield || prev_unfinished)
         " Continuation line has extra indent if the previous line was not a
         " continuation line.
-        let extra = s:ShiftWidth()
+        let extra = shiftwidth()
         " Align with @if
         if prev_text =~ '^\s*@if '
           let extra = 4
         endif
       elseif cur_hasfield && !prev_hasfield && !prev_special
         " less indent below a continuation line
-        let extra = -s:ShiftWidth()
+        let extra = -shiftwidth()
       endif
     endif
   endif
@@ -699,10 +690,10 @@
     if special
       " do not reduce indent below @{ ... }
       if extra < 0
-        let extra += s:ShiftWidth()
+        let extra += shiftwidth()
       endif
     else
-      let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * s:ShiftWidth()
+      let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * shiftwidth()
     endif
   endif
 
@@ -710,10 +701,10 @@
   if extra == 0
     if brace_counts.p_open > brace_counts.p_close
       " previous line has more ( than ): add a shiftwidth
-      let extra = s:ShiftWidth()
+      let extra = shiftwidth()
     elseif brace_counts.p_open < brace_counts.p_close
       " previous line has more ) than (: subtract a shiftwidth
-      let extra = -s:ShiftWidth()
+      let extra = -shiftwidth()
     endif
   endif
 
@@ -816,7 +807,7 @@
   let idx = match(prevtext, '^\s*\zs<!--')
   if idx >= 0
     " just below comment start, add a shiftwidth
-    return idx + s:ShiftWidth()
+    return idx + shiftwidth()
   endif
 
   " Some files add 4 spaces just below a TODO line.  It's difficult to detect
@@ -837,7 +828,7 @@
       return indent(lnum)
     endif
   endif
-  return b:hi_indent.baseindent + s:ShiftWidth()
+  return b:hi_indent.baseindent + shiftwidth()
 endfunc "}}}
 
 " When the "lnum" line ends in ">" find the line containing the matching "<".
@@ -947,7 +938,7 @@
   endif
 
   let curtext = tolower(getline(v:lnum))
-  let indentunit = s:ShiftWidth()
+  let indentunit = shiftwidth()
 
   let b:hi_newstate = {}
   let b:hi_newstate.lnum = v:lnum
@@ -1030,9 +1021,9 @@
         if col('.') > 2
           let swendtag = match(text, '^\s*</') >= 0
           call s:CountITags(text[: col('.') - 2])
-          let indent += s:nextrel * s:ShiftWidth()
+          let indent += s:nextrel * shiftwidth()
           if !swendtag
-            let indent += s:curind * s:ShiftWidth()
+            let indent += s:curind * shiftwidth()
           endif
         endif
       else
diff --git a/runtime/indent/idlang.vim b/runtime/indent/idlang.vim
index b4c6ae6..7402e86 100644
--- a/runtime/indent/idlang.vim
+++ b/runtime/indent/idlang.vim
@@ -1,6 +1,6 @@
 " IDL (Interactive Data Language) indent file.
 " Language: IDL (ft=idlang)
-" Last change:	2012 May 18
+" Last change:	2017 Jun 13
 " Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
 
 " Only load this indent file when no other was loaded.
@@ -34,25 +34,25 @@
    " Indenting of continued lines.
    if getline(pnum) =~ '\$\s*\(;.*\)\=$'
       if getline(pnum2) !~ '\$\s*\(;.*\)\=$'
-	 let curind = curind+&sw
+	 let curind = curind+shiftwidth()
       endif
    else
       if getline(pnum2) =~ '\$\s*\(;.*\)\=$'
-	 let curind = curind-&sw
+	 let curind = curind-shiftwidth()
       endif
    endif
 
    " Indenting blocks of statements.
    if getline(v:lnum) =~? '^\s*\(endif\|endelse\|endwhile\|endfor\|endrep\)\>'
       if getline(pnum) =~? 'begin\>'
-      elseif indent(v:lnum) > curind-&sw
-	 let curind = curind-&sw
+      elseif indent(v:lnum) > curind-shiftwidth()
+	 let curind = curind-shiftwidth()
       else
 	 return -1
       endif
    elseif getline(pnum) =~? 'begin\>'
-      if indent(v:lnum) < curind+&sw
-	 let curind = curind+&sw
+      if indent(v:lnum) < curind+shiftwidth()
+	 let curind = curind+shiftwidth()
       else
 	 return -1
       endif
diff --git a/runtime/indent/ishd.vim b/runtime/indent/ishd.vim
index f55f7dc..531244b 100644
--- a/runtime/indent/ishd.vim
+++ b/runtime/indent/ishd.vim
@@ -50,17 +50,17 @@
 
     " Add
     if previous_line =~ '^\s*\<\(function\|begin\|switch\|case\|default\|if.\{-}then\|else\|elseif\|while\|repeat\)\>'
-	let ind = ind + &sw
+	let ind = ind + shiftwidth()
     endif
 
     " Subtract
     if this_line =~ '^\s*\<endswitch\>'
-	let ind = ind - 2 * &sw
+	let ind = ind - 2 * shiftwidth()
     elseif this_line =~ '^\s*\<\(begin\|end\|endif\|endwhile\|else\|elseif\|until\)\>'
-	let ind = ind - &sw
+	let ind = ind - shiftwidth()
     elseif this_line =~ '^\s*\<\(case\|default\)\>'
 	if previous_line !~ '^\s*\<switch\>'
-	    let ind = ind - &sw
+	    let ind = ind - shiftwidth()
 	endif
     endif
 
diff --git a/runtime/indent/javascript.vim b/runtime/indent/javascript.vim
index 304c0fe..3b3f3a1 100644
--- a/runtime/indent/javascript.vim
+++ b/runtime/indent/javascript.vim
@@ -236,9 +236,10 @@
         \ s:save_pos('s:previous_token') != '.'
 endfunction
 
-" returns braceless levels started by 'i' and above lines * &sw. 'num' is the
-" lineNr which encloses the entire context, 'cont' if whether line 'i' + 1 is
-" a continued expression, which could have started in a braceless context
+" returns braceless levels started by 'i' and above lines * shiftwidth().
+" 'num' is the lineNr which encloses the entire context, 'cont' if whether
+" line 'i' + 1 is a continued expression, which could have started in a
+" braceless context
 function s:iscontOne(i,num,cont)
   let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0]
   let pind = a:num ? indent(l:num) + s:W : 0
diff --git a/runtime/indent/json.vim b/runtime/indent/json.vim
index 649f2b8..b66a03d 100644
--- a/runtime/indent/json.vim
+++ b/runtime/indent/json.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:		JSON
 " Mantainer:		Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
-" Last Change:          2014 Aug 29
+" Last Change:          2017 Jun 13
 "   https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
 " Original Author:	Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
 " Acknowledgement:      Based off of vim-javascript maintained by Darrick Wiebe 
@@ -141,7 +141,7 @@
 
   " If the previous line ended with a block opening, add a level of indent.
   " if s:Match(lnum, s:block_regex)
-    " return indent(lnum) + &sw
+    " return indent(lnum) + shiftwidth()
   " endif
 
   " If the previous line contained an opening bracket, and we are still in it,
@@ -149,7 +149,7 @@
   if line =~ '[[({]'
     let counts = s:LineHasOpeningBrackets(lnum)
     if counts[0] == '1' || counts[1] == '1' || counts[2] == '1'
-      return ind + &sw
+      return ind + shiftwidth()
     else
       call cursor(v:lnum, vcol)
     end
diff --git a/runtime/indent/liquid.vim b/runtime/indent/liquid.vim
index f8e1c83..7beb038 100644
--- a/runtime/indent/liquid.vim
+++ b/runtime/indent/liquid.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:     Liquid
 " Maintainer:   Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2016 Aug 29
+" Last Change:	2017 Jun 13
 
 if exists('b:did_indent')
   finish
@@ -54,7 +54,7 @@
   let line  = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
   let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
   let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
-  let sw = exists('*shiftwidth') ? shiftwidth() : &sw
+  let sw = shiftwidth()
   let ind += sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
   let ind -= sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
   let ind -= sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
diff --git a/runtime/indent/logtalk.vim b/runtime/indent/logtalk.vim
index 99e6ec8..5b69663 100644
--- a/runtime/indent/logtalk.vim
+++ b/runtime/indent/logtalk.vim
@@ -38,24 +38,24 @@
 	endif
 	" Check for entity opening directive on previous line
 	if pline =~ '^\s*:-\s\(object\|protocol\|category\)\ze(.*,$'
-		let ind = ind + &sw
+		let ind = ind + shiftwidth()
 	" Check for clause head on previous line
 	elseif pline =~ ':-\s*\(%.*\)\?$'
-		let ind = ind + &sw
+		let ind = ind + shiftwidth()
 	" Check for entity closing directive on previous line
 	elseif pline =~ '^\s*:-\send_\(object\|protocol\|category\)\.\(%.*\)\?$'
-		let ind = ind - &sw
+		let ind = ind - shiftwidth()
 	" Check for end of clause on previous line
 	elseif pline =~ '\.\s*\(%.*\)\?$'
-		let ind = ind - &sw
+		let ind = ind - shiftwidth()
 	endif
 	" Check for opening conditional on previous line
 	if pline =~ '^\s*\([(;]\|->\)' && pline !~ '\.\s*\(%.*\)\?$' && pline !~ '^.*\([)][,]\s*\(%.*\)\?$\)'
-		let ind = ind + &sw
+		let ind = ind + shiftwidth()
 	endif
 	" Check for closing an unclosed paren, or middle ; or ->
 	if line =~ '^\s*\([);]\|->\)'
-		let ind = ind - &sw
+		let ind = ind - shiftwidth()
 	endif
 	return ind
 endfunction
diff --git a/runtime/indent/lua.vim b/runtime/indent/lua.vim
index d1d2c0d..604cd33 100644
--- a/runtime/indent/lua.vim
+++ b/runtime/indent/lua.vim
@@ -2,7 +2,7 @@
 " Language:	Lua script
 " Maintainer:	Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
 " First Author:	Max Ischenko <mfi 'at' ukr.net>
-" Last Change:	2016 Jan 10
+" Last Change:	2017 Jun 13
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -48,7 +48,7 @@
     " Add 'shiftwidth' if what we found previously is not in a comment and
     " an "end" or "until" is not present on the same line.
     if synIDattr(synID(prevlnum, midx + 1, 1), "name") != "luaComment" && prevline !~ '\<end\>\|\<until\>'
-      let ind = ind + &shiftwidth
+      let ind = ind + shiftwidth()
     endif
   endif
 
@@ -56,7 +56,7 @@
   " This is the part that requires 'indentkeys'.
   let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\)')
   if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment"
-    let ind = ind - &shiftwidth
+    let ind = ind - shiftwidth()
   endif
 
   return ind
diff --git a/runtime/indent/matlab.vim b/runtime/indent/matlab.vim
index 7bccc7c..6a31624 100644
--- a/runtime/indent/matlab.vim
+++ b/runtime/indent/matlab.vim
@@ -44,9 +44,9 @@
     " See if this line does not follow the line right after an openblock
     if getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
     " See if the user has already dedented
-    elseif indent(v:lnum) > curind - &sw
+    elseif indent(v:lnum) > curind - shiftwidth()
       " If not, recommend one dedent
-	let curind = curind - &sw
+	let curind = curind - shiftwidth()
     else
       " Otherwise, trust the user
       return -1
@@ -56,9 +56,9 @@
   " If the previous line opened a block
   elseif getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
     " See if the user has already indented
-    if indent(v:lnum) < curind + &sw
+    if indent(v:lnum) < curind + shiftwidth()
       "If not, recommend indent
-      let curind = curind + &sw
+      let curind = curind + shiftwidth()
     else
       " Otherwise, trust the user
       return -1
diff --git a/runtime/indent/mma.vim b/runtime/indent/mma.vim
index 356b876..8298ad9 100644
--- a/runtime/indent/mma.vim
+++ b/runtime/indent/mma.vim
@@ -49,7 +49,7 @@
     " also, indent only if this line if this line isn't starting a new
     " block... TODO - fix this with indentkeys?
     if getline(v:lnum-1) =~ '\\\@<!\%(\[[^\]]*\|([^)]*\|{[^}]*\)$' && getline(v:lnum) !~ '\s\+[\[({]'
-        let ind = ind+&sw
+        let ind = ind+shiftwidth()
     endif
 
     " if this line had unmatched closing block,
diff --git a/runtime/indent/ocaml.vim b/runtime/indent/ocaml.vim
index 3bd65c6..8fe9de3 100644
--- a/runtime/indent/ocaml.vim
+++ b/runtime/indent/ocaml.vim
@@ -4,7 +4,7 @@
 "               Mike Leary           <leary@nwlink.com>
 "               Markus Mottl         <markus.mottl@gmail.com>
 " URL:          http://www.ocaml.info/vim/indent/ocaml.vim
-" Last Change:  2013 Jun 29
+" Last Change:  2017 Jun 13
 "               2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
 "               2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
 "               2013 June   - commented textwidth (Marc Weber)
@@ -101,7 +101,7 @@
 
  " Return double 'shiftwidth' after lines matching:
  if lline =~ '^\s*|.*->\s*$'
-   return ind + &sw + &sw
+   return ind + 2 * shiftwidth()
  endif
 
  let line = getline(v:lnum)
@@ -172,7 +172,7 @@
  " Indent if current line begins with 'and':
  elseif line =~ '^\s*and\>'
    if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$'
-     return ind - &sw
+     return ind - shiftwidth()
    endif
 
  " Indent if current line begins with 'with':
@@ -199,14 +199,14 @@
  " or 'method':
  elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>'
    if lline !~ s:obj
-     return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + &sw
+     return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + shiftwidth()
    endif
 
  endif
 
  " Add a 'shiftwidth' after lines ending with:
  if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$'
-   let ind = ind + &sw
+   let ind = ind + shiftwidth()
 
  " Back to normal indent after lines ending with ';;':
  elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
@@ -263,7 +263,7 @@
 
  " Subtract a 'shiftwidth' after lines matching 'match ... with parser':
  if lline =~ '\<match\>.*\<with\>\s*\<parser\s*$'
-   let ind = ind - &sw
+   let ind = ind - shiftwidth()
  endif
 
  return ind
diff --git a/runtime/indent/occam.vim b/runtime/indent/occam.vim
index bebb052..4acd42e 100644
--- a/runtime/indent/occam.vim
+++ b/runtime/indent/occam.vim
@@ -131,7 +131,7 @@
   if line =~ s:FirstLevelIndent || (line =~ s:FirstLevelNonColonEndIndent && line !~ s:ColonEnd)
 	\ || (line !~ s:ColonStart && (prevline =~ s:SecondLevelIndent
 	\ || (prevline =~ s:SecondLevelNonColonEndIndent && prevline !~ s:ColonEnd)))
-    let curindent = curindent + &shiftwidth
+    let curindent = curindent + shiftwidth()
 
     " Restore magic
     if !save_magic|setlocal nomagic|endif
@@ -153,7 +153,7 @@
 
   while !found
 
-    if indent(prevlinenum) == curindent - &shiftwidth
+    if indent(prevlinenum) == curindent - shiftwidth()
       let found = 1
     endif
 
@@ -171,7 +171,7 @@
 
   if prevlinenum > 0
     if getline(prevlinenum) =~ s:SecondLevelIndent
-      let curindent = curindent + &shiftwidth
+      let curindent = curindent + shiftwidth()
     endif
   endif
 
diff --git a/runtime/indent/pascal.vim b/runtime/indent/pascal.vim
index 6dd3030..c7955d6 100644
--- a/runtime/indent/pascal.vim
+++ b/runtime/indent/pascal.vim
@@ -2,7 +2,7 @@
 " Language:    Pascal
 " Maintainer:  Neil Carter <n.carter@swansea.ac.uk>
 " Created:     2004 Jul 13
-" Last Change: 2011 Apr 01
+" Last Change: 2017 Jun 13
 "
 " This is version 2.0, a complete rewrite.
 "
@@ -102,12 +102,12 @@
 
 	" If the PREVIOUS LINE ended in these items, always indent
 	if prev_codeline =~ '\<\(type\|const\|var\)$'
-		return indnt + &shiftwidth
+		return indnt + shiftwidth()
 	endif
 
 	if prev_codeline =~ '\<repeat$'
 		if this_codeline !~ '^\s*until\>'
-			return indnt + &shiftwidth
+			return indnt + shiftwidth()
 		else
 			return indnt
 		endif
@@ -115,7 +115,7 @@
 
 	if prev_codeline =~ '\<\(begin\|record\)$'
 		if this_codeline !~ '^\s*end\>'
-			return indnt + &shiftwidth
+			return indnt + shiftwidth()
 		else
 			return indnt
 		endif
@@ -125,10 +125,10 @@
 	" followed by "begin"
 	if prev_codeline =~ '\<\(\|else\|then\|do\)$' || prev_codeline =~ ':$'
 		if this_codeline !~ '^\s*begin\>'
-			return indnt + &shiftwidth
+			return indnt + shiftwidth()
 		else
 			" If it does start with "begin" then keep the same indent
-			"return indnt + &shiftwidth
+			"return indnt + shiftwidth()
 			return indnt
 		endif
 	endif
@@ -137,7 +137,7 @@
 	" only the line before the current one. TODO: Get it working for
 	" parameter lists longer than two lines.
 	if prev_codeline =~ '([^)]\+$'
-		return indnt + &shiftwidth
+		return indnt + shiftwidth()
 	endif
 
 
@@ -146,7 +146,7 @@
 	" Lines starting with "else", but not following line ending with
 	" "end".
 	if this_codeline =~ '^\s*else\>' && prev_codeline !~ '\<end$'
-		return indnt - &shiftwidth
+		return indnt - shiftwidth()
 	endif
 
 	" Lines after a single-statement branch/loop.
@@ -160,16 +160,16 @@
 		" additional unindentation.
 		if this_codeline =~ '^\s*\(end;\|except\|finally\|\)$'
 			" Note that we don't return from here.
-			return indnt - &shiftwidth - &shiftwidth
+			return indnt - 2 * shiftwidth()
 		endif
-		return indnt - &shiftwidth
+		return indnt - shiftwidth()
 	endif
 
 	" Lines starting with "until" or "end". This rule must be overridden
 	" by the one for "end" after a single-statement branch/loop. In
 	" other words that rule should come before this one.
 	if this_codeline =~ '^\s*\(end\|until\)\>'
-		return indnt - &shiftwidth
+		return indnt - shiftwidth()
 	endif
 
 
@@ -201,7 +201,7 @@
 
 	" If the PREVIOUS LINE ended in these items, always indent.
 	if prev_codeline =~ '^\s*\(unit\|uses\|try\|except\|finally\|private\|protected\|public\|published\)$'
-		return indnt + &shiftwidth
+		return indnt + shiftwidth()
 	endif
 
 	" ???? Indent "procedure" and "functions" if they appear within an
@@ -212,11 +212,11 @@
 	" UNINDENT ONCE
 
 	if this_codeline =~ '^\s*\(except\|finally\)$'
-		return indnt - &shiftwidth
+		return indnt - shiftwidth()
 	endif
 
 	if this_codeline =~ '^\s*\(private\|protected\|public\|published\)$'
-		return indnt - &shiftwidth
+		return indnt - shiftwidth()
 	endif
 
 
diff --git a/runtime/indent/perl.vim b/runtime/indent/perl.vim
index fc4b6a3..cf256ea 100644
--- a/runtime/indent/perl.vim
+++ b/runtime/indent/perl.vim
@@ -3,7 +3,7 @@
 " Maintainer:    vim-perl <vim-perl@googlegroups.com>
 " Homepage:      http://github.com/vim-perl/vim-perl
 " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change:   2013-07-24
+" Last Change:   2017 Jun 13
 
 " Suggestions and improvements by :
 "   Aaron J. Sherman (use syntax for hints)
@@ -138,9 +138,9 @@
                         \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
                 let brace = strpart(line, bracepos, 1)
                 if brace == '(' || brace == '{' || brace == '['
-                    let ind = ind + &sw
+                    let ind = ind + shiftwidth()
                 else
-                    let ind = ind - &sw
+                    let ind = ind - shiftwidth()
                 endif
             endif
             let bracepos = match(line, braceclass, bracepos + 1)
@@ -152,25 +152,25 @@
                         \ || synid == "perlMatchStartEnd"
                         \ || synid == "perlBraces"
                         \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
-                let ind = ind - &sw
+                let ind = ind - shiftwidth()
             endif
         endif
     else
         if line =~ '[{[(]\s*\(#[^])}]*\)\=$'
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
         endif
         if cline =~ '^\s*[])}]'
-            let ind = ind - &sw
+            let ind = ind - shiftwidth()
         endif
     endif
 
     " Indent lines that begin with 'or' or 'and'
     if cline =~ '^\s*\(or\|and\)\>'
         if line !~ '^\s*\(or\|and\)\>'
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
         endif
     elseif line =~ '^\s*\(or\|and\)\>'
-        let ind = ind - &sw
+        let ind = ind - shiftwidth()
     endif
 
     return ind
diff --git a/runtime/indent/perl6.vim b/runtime/indent/perl6.vim
index ff2a579..8561c8c 100644
--- a/runtime/indent/perl6.vim
+++ b/runtime/indent/perl6.vim
@@ -3,7 +3,7 @@
 " Maintainer:    vim-perl <vim-perl@googlegroups.com>
 " Homepage:      http://github.com/vim-perl/vim-perl
 " Bugs/requests: http://github.com/vim-perl/vim-perl/issues
-" Last Change:   2013-07-21
+" Last Change:   2017 Jun 13
 " Contributors:  Andy Lester <andy@petdance.com>
 "                Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
 "
@@ -107,19 +107,19 @@
     endif
 
         if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
         endif
         if cline =~ '^\s*[)}\]»>]'
-            let ind = ind - &sw
+            let ind = ind - shiftwidth()
         endif
 
     " Indent lines that begin with 'or' or 'and'
     if cline =~ '^\s*\(or\|and\)\>'
         if line !~ '^\s*\(or\|and\)\>'
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
         endif
     elseif line =~ '^\s*\(or\|and\)\>'
-        let ind = ind - &sw
+        let ind = ind - shiftwidth()
     endif
 
     return ind
diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim
index 06b49f3..35dddaa 100644
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -3,7 +3,7 @@
 " Author:	John Wellesz <John.wellesz (AT) teaser (DOT) fr>
 " URL:		http://www.2072productions.com/vim/indent/php.vim
 " Home:		https://github.com/2072/PHP-Indenting-for-VIm
-" Last Change:	2017 March 12th
+" Last Change:	2017 Jun 13
 " Version:	1.62
 "
 "
@@ -50,25 +50,15 @@
 
 let g:php_sync_method = 0
 
-if exists('*shiftwidth')
-  function! s:sw()
-    return shiftwidth()
-  endfunction
-else
-  function! s:sw()
-    return &shiftwidth
-  endfunction
-endif
-
 
 if exists("PHP_default_indenting")
-    let b:PHP_default_indenting = PHP_default_indenting * s:sw()
+    let b:PHP_default_indenting = PHP_default_indenting * shiftwidth()
 else
     let b:PHP_default_indenting = 0
 endif
 
 if exists("PHP_outdentSLComments")
-    let b:PHP_outdentSLComments = PHP_outdentSLComments * s:sw()
+    let b:PHP_outdentSLComments = PHP_outdentSLComments * shiftwidth()
 else
     let b:PHP_outdentSLComments = 0
 endif
@@ -357,7 +347,7 @@
     let test = GetLastRealCodeLNum(a:lnum - 1)
 
     if test <= 1
-	return indent(1) - s:sw() * b:PHP_vintage_case_default_indent
+	return indent(1) - shiftwidth() * b:PHP_vintage_case_default_indent
     end
 
     while getline(test) =~ '^\s*}' && test > 1
@@ -371,7 +361,7 @@
     if getline(test) =~# '^\s*switch\>'
 	return indent(test)
     elseif getline(test) =~# s:defaultORcase
-	return indent(test) - s:sw() * b:PHP_vintage_case_default_indent
+	return indent(test) - shiftwidth() * b:PHP_vintage_case_default_indent
     else
 	return FindTheSwitchIndent(test)
     endif
@@ -444,7 +434,7 @@
     endif
 
     if b:PHP_default_indenting
-	let b:PHP_default_indenting = g:PHP_default_indenting * s:sw()
+	let b:PHP_default_indenting = g:PHP_default_indenting * shiftwidth()
     endif
 
     let cline = getline(v:lnum)
@@ -701,7 +691,7 @@
 	let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
 	return indent(FindTheIfOfAnElse(v:lnum, 1))
     elseif cline =~# s:defaultORcase
-	return FindTheSwitchIndent(v:lnum) + s:sw() * b:PHP_vintage_case_default_indent
+	return FindTheSwitchIndent(v:lnum) + shiftwidth() * b:PHP_vintage_case_default_indent
     elseif cline =~ '^\s*)\=\s*{'
 	let previous_line = last_line
 	let last_line_num = lnum
@@ -713,7 +703,7 @@
 		let ind = indent(last_line_num)
 
 		if  b:PHP_BracesAtCodeLevel
-		    let ind = ind + s:sw()
+		    let ind = ind + shiftwidth()
 		endif
 
 		return ind
@@ -724,7 +714,7 @@
 	endwhile
 
     elseif last_line =~# unstated && cline !~ '^\s*);\='.endline
-	let ind = ind + s:sw() " we indent one level further when the preceding line is not stated
+	let ind = ind + shiftwidth() " we indent one level further when the preceding line is not stated
 	return ind + addSpecial
 
     elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated
@@ -823,7 +813,7 @@
 	    endif
 
 	    if !dontIndent && (!b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{')
-		let ind = ind + s:sw()
+		let ind = ind + shiftwidth()
 	    endif
 
 	    if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1
@@ -841,17 +831,17 @@
 	    endif
 
 	elseif last_line =~ '^\s*'.s:blockstart
-	    let ind = ind + s:sw()
+	    let ind = ind + shiftwidth()
 
 
 	elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase
-	    let ind = ind + s:sw()
+	    let ind = ind + shiftwidth()
 	endif
 
     endif
 
     if cline =~  '^\s*[)\]];\='
-	let ind = ind - s:sw()
+	let ind = ind - shiftwidth()
     endif
 
     let b:PHP_CurrentIndentLevel = ind
diff --git a/runtime/indent/postscr.vim b/runtime/indent/postscr.vim
index b0ff48e..2592bcf 100644
--- a/runtime/indent/postscr.vim
+++ b/runtime/indent/postscr.vim
@@ -41,16 +41,16 @@
 
   " Indent for dicts, arrays, and saves with possible trailing comment
   if pline =~ '\(begin\|<<\|g\=save\|{\|[\)\s*\(%.*\)\=$'
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   " Remove indent for popped dicts, and restores.
   if pline =~ '\(end\|g\=restore\)\s*$'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
 
   " Else handle immediate dedents of dicts, restores, and arrays.
   elseif getline(a:lnum) =~ '\(end\|>>\|g\=restore\|}\|]\)'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
 
   " Else handle DSC comments - always start of line.
   elseif getline(a:lnum) =~ '^\s*%%'
diff --git a/runtime/indent/pov.vim b/runtime/indent/pov.vim
index 2b19763..e806756 100644
--- a/runtime/indent/pov.vim
+++ b/runtime/indent/pov.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language: PoV-Ray Scene Description Language
 " Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2002-10-20
+" Last Change: 2017 Jun 13
 " URI: http://trific.ath.cx/Ftp/vim/indent/pov.vim
 
 " Only load this indent file when no other was loaded.
@@ -75,9 +75,9 @@
   " opening line.
   let cur = s:MatchCount(v:lnum, '^\s*\%(#\s*\%(end\|else\)\>\|[]})]\)')
   if cur > 0
-    let final = plind + (chg - cur) * &sw
+    let final = plind + (chg - cur) * shiftwidth()
   else
-    let final = plind + chg * &sw
+    let final = plind + chg * shiftwidth()
   endif
 
   return final < 0 ? 0 : final
diff --git a/runtime/indent/prolog.vim b/runtime/indent/prolog.vim
index afe448e..26a3bc3 100644
--- a/runtime/indent/prolog.vim
+++ b/runtime/indent/prolog.vim
@@ -41,18 +41,18 @@
     endif
     " Check for clause head on previous line
     if pline =~ ':-\s*\(%.*\)\?$'
-	let ind = ind + &sw
+	let ind = ind + shiftwidth()
     " Check for end of clause on previous line
     elseif pline =~ '\.\s*\(%.*\)\?$'
-	let ind = ind - &sw
+	let ind = ind - shiftwidth()
     endif
     " Check for opening conditional on previous line
     if pline =~ '^\s*\([(;]\|->\)'
-	let ind = ind + &sw
+	let ind = ind + shiftwidth()
     endif
     " Check for closing an unclosed paren, or middle ; or ->
     if line =~ '^\s*\([);]\|->\)'
-	let ind = ind - &sw
+	let ind = ind - shiftwidth()
     endif
     return ind
 endfunction
diff --git a/runtime/indent/rpl.vim b/runtime/indent/rpl.vim
index 07bfd06..fab258e 100644
--- a/runtime/indent/rpl.vim
+++ b/runtime/indent/rpl.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	RPL/2
 " Version:	0.2
-" Last Change:	2005 Mar 28
+" Last Change:	2017 Jun 13
 " Maintainer:	BERTRAND Joël <rpl2@free.fr>
 
 " Only load this indent file when no other was loaded.
@@ -32,16 +32,16 @@
   if prevstat =~? '\<\(if\|iferr\|do\|while\)\>' && prevstat =~? '\<end\>'
   elseif prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' && prevstat =~? '\s\+>>\($\|\s\+\)'
   elseif prevstat =~? '\<\(if\|iferr\|then\|else\|elseif\|select\|case\|do\|until\|while\|repeat\|for\|start\|default\)\>' || prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)'
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   " Subtract a shiftwidth from then, else, elseif, end, until, repeat, next,
   " step
   let line = getline(v:lnum)
   if line =~? '^\s*\(then\|else\|elseif\|until\|repeat\|next\|step\|default\|end\)\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   elseif line =~? '^\s*>>\($\|\s\+\)'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   return ind
diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim
index a97f482..d8733db 100644
--- a/runtime/indent/ruby.vim
+++ b/runtime/indent/ruby.vim
@@ -404,11 +404,7 @@
   " ----------
 
   " The value of a single shift-width
-  if exists('*shiftwidth')
-    let sw = shiftwidth()
-  else
-    let sw = &sw
-  endif
+  let sw = shiftwidth()
 
   " For the current line, use the first argument if given, else v:lnum
   let clnum = a:0 ? a:1 : v:lnum
diff --git a/runtime/indent/rust.vim b/runtime/indent/rust.vim
index a3051f0..d30629b 100644
--- a/runtime/indent/rust.vim
+++ b/runtime/indent/rust.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:         Rust
 " Author:           Chris Morgan <me@chrismorgan.info>
-" Last Change:      2017 Mar 21
+" Last Change:      2017 Jun 13
 " For bugs, patches and license go to https://github.com/rust-lang/rust.vim
 
 " Only load this indent file when no other was loaded.
@@ -199,7 +199,7 @@
 					" It's the closing line, dedent it
 					return 0
 				else
-					return &shiftwidth
+					return shiftwidth()
 				endif
 			endif
 		endif
diff --git a/runtime/indent/sass.vim b/runtime/indent/sass.vim
index d87b371..d6dbf3a 100644
--- a/runtime/indent/sass.vim
+++ b/runtime/indent/sass.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Sass
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2016 Aug 29
+" Last Change:	2017 Jun 13
 
 if exists("b:did_indent")
   finish
@@ -29,7 +29,7 @@
   let indent = indent(lnum)
   let cindent = indent(v:lnum)
   if line !~ s:property && line !~ s:extend && cline =~ s:property
-    return indent + (exists('*shiftwidth') ? shiftwidth() : &sw)
+    return indent + shiftwidth()
   else
     return -1
   endif
diff --git a/runtime/indent/sdl.vim b/runtime/indent/sdl.vim
index ba03f2d..6ce30b6 100644
--- a/runtime/indent/sdl.vim
+++ b/runtime/indent/sdl.vim
@@ -46,17 +46,17 @@
   if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)'
     \ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)')
     \ && getline(lnum) !~? 'end[[:alpha:]]\+;$'
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   " Subtract a 'shiftwidth' after states
   if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   " Subtract a 'shiftwidth' on on end (uncompleted line)
   if getline(v:lnum) =~? '^\s*end\>'
-    let ind = ind - &sw
+    let ind = ind - shiftwidth()
   endif
 
   " Put each alternatives where the corresponding decision was
diff --git a/runtime/indent/sml.vim b/runtime/indent/sml.vim
index fbbb15e..e760a8e 100644
--- a/runtime/indent/sml.vim
+++ b/runtime/indent/sml.vim
@@ -115,9 +115,9 @@
 
 	" Return double 'shiftwidth' after lines matching:
 	if lline =~ '^\s*|.*=>\s*$'
-		return ind + &sw + &sw
+		return ind + 2 *shiftwidth()
 	elseif lline =~ '^\s*val\>.*=\s*$'
-		return ind + &sw
+		return ind + shiftwidth()
 	endif
 
   let line = getline(v:lnum)
@@ -157,7 +157,7 @@
 		if lastModule == -1
 			return 0
 		else
-			return lastModule + &sw
+			return lastModule + shiftwidth()
 		endif
 
 	" Indent lines starting with '|' from matching 'case', 'handle'
@@ -172,7 +172,7 @@
 		if switchLine =~ '\<case\>'
 			return col(".") + 2
 		elseif switchLine =~ '\<handle\>'
-			return switchLineIndent + &sw
+			return switchLineIndent + shiftwidth()
 		elseif switchLine =~ '\<datatype\>'
 			call search('=')
 			return col(".") - 1
@@ -184,7 +184,7 @@
   " Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else',
   " 'in'
   elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$'
-		let ind = ind + &sw
+		let ind = ind + shiftwidth()
 
   " Indent if last line ends with 'of', align from 'case'
   elseif lline =~ '\<\(of\)\s*$'
@@ -199,14 +199,14 @@
 
 	" Indent if last line starts with 'fun', 'case', 'fn'
 	elseif lline =~ '^\s*\(fun\|fn\|case\)\>'
-		let ind = ind + &sw
+		let ind = ind + shiftwidth()
 
 	endif
 
 	" Don't indent 'let' if last line started with 'fun', 'fn'
 	if line =~ '^\s*let\>'
 		if lline =~ '^\s*\(fun\|fn\)'
-			let ind = ind - &sw
+			let ind = ind - shiftwidth()
 		endif
   endif
 
diff --git a/runtime/indent/sqlanywhere.vim b/runtime/indent/sqlanywhere.vim
index d11c54b..ba35d76 100644
--- a/runtime/indent/sqlanywhere.vim
+++ b/runtime/indent/sqlanywhere.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:    SQL
 " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
-" Last Change: 2012 Dec 06
+" Last Change: 2017 Jun 13
 " Version:     3.0
 " Download:    http://vim.sourceforge.net/script.php?script_id=495
 
@@ -147,7 +147,7 @@
     endwhile
 
     " Fallback - just move back one
-    " return a:prev_indent - &sw
+    " return a:prev_indent - shiftwidth()
     return ignore_paran
 endfunction
 
@@ -166,7 +166,7 @@
     let lnum  = a:curr_lnum
 
     " Default - reduce indent by 1
-    let ind = indent(a:curr_lnum) - &sw
+    let ind = indent(a:curr_lnum) - shiftwidth()
 
     if a:keyword =~? 'end'
         exec 'normal! ^'
@@ -230,7 +230,7 @@
     let ind = a:ind
 
     if ind > 0
-        let modulo = ind % &shiftwidth
+        let modulo = ind % shiftwidth()
 
         if modulo > 0
             let ind = ind - modulo
@@ -291,7 +291,7 @@
     " where END IF, END, should decrease the indent.
     if prevline =~? s:SQLBlockStart
         " Move indent in
-        let ind = ind + &sw
+        let ind = ind + shiftwidth()
         " echom 'prevl - SQLBlockStart - indent ' . ind . '  line: ' . prevline
     elseif prevline =~ '[()]'
         if prevline =~ '('
@@ -308,7 +308,7 @@
         if num_unmatched_left > 0
             " There is a open left paranethesis
             " increase indent
-            let ind = ind + ( &sw * num_unmatched_left )
+            let ind = ind + ( shiftwidth() * num_unmatched_left )
         elseif num_unmatched_right > 0
             " if it is an unbalanced paranethesis only unindent if
             " it was part of a command (ie create table(..)  )
@@ -323,7 +323,7 @@
             endif
 
             if (num_unmatched_right - ignore) > 0
-                let ind = ind - ( &sw * (num_unmatched_right - ignore) )
+                let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) )
             endif
 
         endif
@@ -339,12 +339,12 @@
     if line =~? '^\s*els'
         " Any line when you type else will automatically back up one
         " ident level  (ie else, elseif, elsif)
-        let ind = ind - &sw
+        let ind = ind - shiftwidth()
         " echom 'curr - else - indent ' . ind
     elseif line =~? '^\s*end\>'
         let ind = s:GetStmtStarterIndent('end', v:lnum)
         " General case for end
-        " let ind = ind - &sw
+        " let ind = ind - shiftwidth()
         " echom 'curr - end - indent ' . ind
     elseif line =~? '^\s*when\>'
         let ind = s:GetStmtStarterIndent('when', v:lnum)
@@ -352,7 +352,7 @@
         " clause, do not change the indent level, since these
         " statements do not have a corresponding END statement.
         " if stmt_starter =~? 'case'
-        "    let ind = ind - &sw
+        "    let ind = ind - shiftwidth()
         " endif
         " elseif line =~ '^\s*)\s*;\?\s*$'
         " elseif line =~ '^\s*)'
@@ -371,14 +371,14 @@
         " let num_unmatched_right  = s:CountUnbalancedParan( line, ')' )
         " if num_unmatched_right > 0
         " elseif strpart( line, strlen(line)-1, 1 ) =~ ')'
-        " let ind = ind - &sw
+        " let ind = ind - shiftwidth()
         if line =~ '^\s*)'
             " let ignore = ignore + 1
             " echom 'curr - begins ) unbalanced ignore: ' . ignore
         endif
 
         if (num_unmatched_right - ignore) > 0
-            let ind = ind - ( &sw * (num_unmatched_right - ignore) )
+            let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) )
         endif
         " endif
     endif
diff --git a/runtime/indent/systemverilog.vim b/runtime/indent/systemverilog.vim
index b017535..91fba4c 100644
--- a/runtime/indent/systemverilog.vim
+++ b/runtime/indent/systemverilog.vim
@@ -29,7 +29,7 @@
   if exists('b:systemverilog_indent_width')
     let offset = b:systemverilog_indent_width
   else
-    let offset = &sw
+    let offset = shiftwidth()
   endif
   if exists('b:systemverilog_indent_modules')
     let indent_modules = offset
diff --git a/runtime/indent/teraterm.vim b/runtime/indent/teraterm.vim
index 8467cef..370283c 100644
--- a/runtime/indent/teraterm.vim
+++ b/runtime/indent/teraterm.vim
@@ -3,7 +3,7 @@
 "		Based on Tera Term Version 4.92
 " Maintainer:	Ken Takata
 " URL:		https://github.com/k-takata/vim-teraterm
-" Last Change:	2016 Aug 17
+" Last Change:	2017 Jun 13
 " Filenames:	*.ttl
 " License:	VIM License
 
@@ -22,16 +22,6 @@
   finish
 endif
 
-" The shiftwidth() function is relatively new.
-" Don't require it to exist.
-if exists('*shiftwidth')
-  let s:sw = function('shiftwidth')
-else
-  function s:sw() abort
-    return &shiftwidth
-  endfunction
-endif
-
 function! GetTeraTermIndent(lnum)
   let l:prevlnum = prevnonblank(a:lnum-1)
   if l:prevlnum == 0
@@ -48,15 +38,15 @@
 
   if l:prevl =~ '^\s*if\>.*\<then\>'
     " previous line opened a block
-    let l:ind += s:sw()
+    let l:ind += shiftwidth()
   endif
   if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>'
     " previous line opened a block
-    let l:ind += s:sw()
+    let l:ind += shiftwidth()
   endif
   if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>'
     " this line closed a block
-    let l:ind -= s:sw()
+    let l:ind -= shiftwidth()
   endif
 
   return l:ind
diff --git a/runtime/indent/tex.vim b/runtime/indent/tex.vim
index fc6cc0a..1a4d8b1 100644
--- a/runtime/indent/tex.vim
+++ b/runtime/indent/tex.vim
@@ -215,14 +215,14 @@
     " ZYC modification : \end after \begin won't cause wrong indent anymore
     if line =~ '\\begin{.*}' 
         if line !~ g:tex_noindent_env
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
             let stay = 0
         endif
 
         if g:tex_indent_items
             " Add another sw for item-environments
             if line =~ g:tex_itemize_env
-                let ind = ind + &sw
+                let ind = ind + shiftwidth()
                 let stay = 0
             endif
         endif
@@ -241,23 +241,23 @@
         if g:tex_indent_items
             " Remove another sw for item-environments
             if cline =~ g:tex_itemize_env
-                let ind = ind - &sw
+                let ind = ind - shiftwidth()
                 let stay = 0
             endif
         endif
 
-        let ind = ind - &sw
+        let ind = ind - shiftwidth()
         let stay = 0
     endif
 
     if g:tex_indent_brace
         if line =~ '[[{]$'
-            let ind += &sw
+            let ind += shiftwidth()
             let stay = 0
         endif
 
         if cline =~ '^\s*\\\?[\]}]' && s:CheckPairedIsLastCharacter(v:lnum, indent(v:lnum))
-            let ind -= &sw
+            let ind -= shiftwidth()
             let stay = 0
         endif
 
@@ -266,7 +266,7 @@
                 let char = line[i]
                 if char == ']' || char == '}'
                     if s:CheckPairedIsLastCharacter(lnum, i)
-                        let ind -= &sw
+                        let ind -= shiftwidth()
                         let stay = 0
                     endif
                 endif
@@ -280,12 +280,12 @@
     if g:tex_indent_items
         " '\item' or '\bibitem' itself:
         if cline =~ g:tex_items
-            let ind = ind - &sw
+            let ind = ind - shiftwidth()
             let stay = 0
         endif
         " lines following to '\item' are intented once again:
         if line =~ g:tex_items
-            let ind = ind + &sw
+            let ind = ind + shiftwidth()
             let stay = 0
         endif
     endif
@@ -317,9 +317,9 @@
                 return indent(lnum)
             endif
             if line =~ g:tex_itemize_env
-                return indent(lnum) + 2 * &sw
+                return indent(lnum) + 2 * shiftwidth()
             endif
-            return indent(lnum) + &sw
+            return indent(lnum) + shiftwidth()
         endif
     endfor
     return -1
@@ -347,7 +347,7 @@
             let min_indent = min([min_indent, indent(lnum)])
         endif
     endfor
-    return min_indent - &sw
+    return min_indent - shiftwidth()
 endfunction
 
 " Most of the code is from matchparen.vim
diff --git a/runtime/indent/tilde.vim b/runtime/indent/tilde.vim
index 5fdcfe0..13082c8 100644
--- a/runtime/indent/tilde.vim
+++ b/runtime/indent/tilde.vim
@@ -25,11 +25,11 @@
 	endif
 
 	if getline(v:lnum) =~ '^\s*\~\(endif\|else\|elseif\|end\)\>'
-		return indent(v:lnum) - &sw
+		return indent(v:lnum) - shiftwidth()
 	endif
 
 	if getline(plnum) =~ '^\s*\~\(if\|foreach\|foreach_row\|xml_loop\|file_loop\|file_write\|file_append\|imap_loopsections\|imap_index\|imap_list\|ldap_search\|post_loopall\|post_loop\|file_loop\|sql_loop_num\|sql_dbmsselect\|search\|sql_loop\|post\|for\|function_define\|silent\|while\|setvalbig\|mail_create\|systempipe\|mail_send\|dual\|elseif\|else\)\>'
-		return indent(plnum) + &sw
+		return indent(plnum) + shiftwidth()
 	else
 		return -1
 	endif
diff --git a/runtime/indent/vb.vim b/runtime/indent/vb.vim
index 55a8ea3..4d05345 100644
--- a/runtime/indent/vb.vim
+++ b/runtime/indent/vb.vim
@@ -49,26 +49,26 @@
 
     " Add
     if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>'
-	let ind = ind + &sw
+	let ind = ind + shiftwidth()
     endif
 
     " Subtract
     if this_line =~? '^\s*\<end\>\s\+\<select\>'
 	if previous_line !~? '^\s*\<select\>'
-	    let ind = ind - 2 * &sw
+	    let ind = ind - 2 * shiftwidth()
 	else
 	    " this case is for an empty 'select' -- 'end select'
 	    " (w/o any case statements) like:
 	    "
 	    " select case readwrite
 	    " end select
-	    let ind = ind - &sw
+	    let ind = ind - shiftwidth()
 	endif
     elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>'
-	let ind = ind - &sw
+	let ind = ind - shiftwidth()
     elseif this_line =~? '^\s*\<\(case\|default\)\>'
 	if previous_line !~? '^\s*\<select\>'
-	    let ind = ind - &sw
+	    let ind = ind - shiftwidth()
 	endif
     endif
 
diff --git a/runtime/indent/vhdl.vim b/runtime/indent/vhdl.vim
index 6982859..7c39560 100644
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -2,7 +2,7 @@
 " Language:    VHDL
 " Maintainer:  Gerald Lai <laigera+vim?gmail.com>
 " Version:     1.60
-" Last Change: 2016 Feb 26
+" Last Change: 2017 Jun 13
 " URL:         http://www.vim.org/scripts/script.php?script_id=1450
 
 " only load this indent file when no other was loaded
@@ -114,9 +114,9 @@
       return ind2 + m
     else
       if g:vhdl_indent_genportmap
-        return ind2 + stridx(prevs_noi, '(') + &sw
+        return ind2 + stridx(prevs_noi, '(') + shiftwidth()
       else
-        return ind2 + &sw
+        return ind2 + shiftwidth()
       endif
     endif
   endif
@@ -128,7 +128,7 @@
     if g:vhdl_indent_rhsassign
       return ind2 + matchend(prevs_noi, '<=\s*\ze.')
     else
-      return ind2 + &sw
+      return ind2 + shiftwidth()
     endif
   endif
 
@@ -218,12 +218,12 @@
       let ps = getline(pn)
 
       if (ps =~? s:NC.'\<begin\>')
-        return indent(pn) - &sw
+        return indent(pn) - shiftwidth()
       endif
     endwhile
 
     if (pn == 0)
-      return ind - &sw
+      return ind - shiftwidth()
     else
       return indent(pn)
     endif
@@ -237,7 +237,7 @@
     " keyword: "type"
     let s3 = s:NC.s:NE.'\<type\>'
     if curs !~? s3.'.*'.s:NC.'\<\%(record\|units\)\>.*'.s:ES && prevs =~? s3
-      let ind = ind + &sw
+      let ind = ind + shiftwidth()
     endif
     return ind
   endif
@@ -282,7 +282,7 @@
   " removed:  "begin", "case", "elsif", "if", "loop", "record", "units", "while"
   " where:    anywhere in previous line
   if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>'
-    return ind + &sw
+    return ind + shiftwidth()
   endif
 
   " indent:   +sw
@@ -290,7 +290,7 @@
   " removed:  "component", "for", "when", "with"
   " where:    start of previous line
   if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>'
-    return ind + &sw
+    return ind + shiftwidth()
   endif
 
   " indent:   +sw
@@ -298,7 +298,7 @@
   " removed:  "generate", "is", "=>"
   " where:    end of previous line
   if prevs =~? s:NC.'\<select'.s:ES
-    return ind + &sw
+    return ind + shiftwidth()
   endif
 
   " indent:   +sw
@@ -310,7 +310,7 @@
   " where:    end of previous line
   " _note_:   indent allowed to leave this filter
   if prevs =~? s:NC.'\%(\<begin\>\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\<generate\|\<\%(is\|then\)\|=>\)'.s:ES
-    let ind = ind + &sw
+    let ind = ind + shiftwidth()
   endif
 
   " ****************************************************************************************
@@ -322,7 +322,7 @@
     if prevs =~? s:NC.'\<is'.s:ES
       return ind
     elseif prevs !~? s4
-      return ind - &sw
+      return ind - shiftwidth()
     else
       return ind2
     endif
@@ -336,7 +336,7 @@
     if prevs =~? '^\s*\%(elsif\|'.s5.'\)'
       return ind
     else
-      return ind - &sw
+      return ind - shiftwidth()
     endif
   endif
 
@@ -367,9 +367,9 @@
         "where:    start of previous non-comment line
         if m == 1
           if ps =~? '^\s*end\s\+case\>'
-            return indent(pn) - 2 * &sw
+            return indent(pn) - 2 * shiftwidth()
           elseif ps =~? '^\s*when\>'
-            return indent(pn) - &sw
+            return indent(pn) - shiftwidth()
           elseif ps =~? '^\s*case\>'
             return indent(pn)
           endif
@@ -385,14 +385,14 @@
       let pn = prevnonblank(pn - 1)
       let ps = getline(pn)
     endwhile
-    return ind - &sw
+    return ind - shiftwidth()
   endif
 
   " indent:   -sw
   " keyword:  ")"
   " where:    start of current line
   if curs =~ '^\s*)'
-    return ind - &sw
+    return ind - shiftwidth()
   endif
 
   " indent:   0
@@ -407,7 +407,7 @@
   " where:    start of current line
   "if curs =~? '^\s*end\s\+\w\+\>'
   if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)'
-    return ind - &sw
+    return ind - shiftwidth()
   endif
 
   " ****************************************************************************************
diff --git a/runtime/indent/xml.vim b/runtime/indent/xml.vim
index dbe5be5..87ffb32 100644
--- a/runtime/indent/xml.vim
+++ b/runtime/indent/xml.vim
@@ -1,6 +1,6 @@
 " Language:	xml
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
-" Last Change:	2012 Jul 25
+" Last Change:	2017 Jun 13
 " Notes:	1) does not indent pure non-xml code (e.g. embedded scripts)
 "		2) will be confused by unbalanced tags in comments
 "		or CDATA sections.
@@ -67,7 +67,7 @@
 fun! <SID>XmlIndentSum(lnum, style, add)
     let line = getline(a:lnum)
     if a:style == match(line, '^\s*</')
-	return (&sw *
+	return (shiftwidth() *
 	\  (<SID>XmlIndentWithPattern(line, b:xml_indent_open)
 	\ - <SID>XmlIndentWithPattern(line, b:xml_indent_close)
 	\ - <SID>XmlIndentWithPattern(line, '.\{-}/>'))) + a:add
diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim
index 3201462..3eb16f8 100644
--- a/runtime/indent/yaml.vim
+++ b/runtime/indent/yaml.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:         YAML
 " Maintainer:       Nikolai Pavlov <zyx.vim@gmail.com>
-" Last Change:	    2015 Nov 01
+" Last Change:	    2017 Jun 13
 
 " Only load this indent file when no other was loaded.
 if exists('b:did_indent')
@@ -24,14 +24,6 @@
     finish
 endif
 
-if exists('*shiftwidth')
-    let s:shiftwidth = function('shiftwidth')
-else
-    function s:shiftwidth()
-        return &shiftwidth
-    endfunction
-endif
-
 function s:FindPrevLessIndentedLine(lnum, ...)
     let prevlnum = prevnonblank(a:lnum-1)
     let curindent = a:0 ? a:1 : indent(a:lnum)
@@ -119,7 +111,7 @@
         "
         " - |-
         "     Block scalar without indentation indicator
-        return previndent+s:shiftwidth()
+        return previndent+shiftwidth()
     elseif prevline =~# '\v[:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$'
         " - |+2
         "   block scalar with indentation indicator
@@ -155,7 +147,7 @@
                 \                             '\v)%(\s+|\s*%(\#.*)?$))*'
         " Mapping with: value
         "     that is multiline scalar
-        return previndent+s:shiftwidth()
+        return previndent+shiftwidth()
     endif
     return previndent
 endfunction