changeset 33219:ebb36e3d5299

merge heads
author Christian Brabandt <cb@256bit.org>
date Sat, 09 Sep 2023 10:23:28 +0200
parents 781d3db79f70 (diff) 2415680a2554 (current diff)
children 0d460c34ee39
files src/charset.c src/testdir/test_textprop.vim src/version.c
diffstat 342 files changed, 21683 insertions(+), 10605 deletions(-) [+]
line wrap: on
line diff
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -133,6 +133,7 @@ runtime/ftplugin/eruby.vim		@tpope @dkea
 runtime/ftplugin/expect.vim		@dkearns
 runtime/ftplugin/fennel.vim		@gpanders
 runtime/ftplugin/fetchmail.vim		@dkearns
+runtime/ftplugin/forth.vim		@jkotlinski
 runtime/ftplugin/fpcmake.vim		@dkearns
 runtime/ftplugin/freebasic.vim		@dkearns
 runtime/ftplugin/fstab.vim		@rid9
@@ -158,6 +159,7 @@ runtime/ftplugin/html.vim		@dkearns
 runtime/ftplugin/i3config.vim		@hiqua
 runtime/ftplugin/icon.vim		@dkearns
 runtime/ftplugin/indent.vim		@dkearns
+runtime/ftplugin/ishd.vim		@dkearns
 runtime/ftplugin/j.vim			@glts
 runtime/ftplugin/javascript.vim		@dkearns
 runtime/ftplugin/javascriptreact.vim	@dkearns
@@ -384,6 +386,7 @@ runtime/syntax/gitolite.vim		@sitaramc
 runtime/syntax/gitrebase.vim		@tpope
 runtime/syntax/go.vim			@bhcleek
 runtime/syntax/godoc.vim		@dbarnett
+runtime/syntax/gp.vim			@KBelabas
 runtime/syntax/gprof.vim		@dpelle
 runtime/syntax/groff.vim		@jmarshall
 runtime/syntax/gyp.vim			@ObserverOfTime
@@ -513,6 +516,7 @@ runtime/syntax/xs.vim			@petdance
 runtime/syntax/xslt.vim			@Boobies
 runtime/syntax/xxd.vim			@cecamp
 runtime/syntax/yacc.vim			@cecamp
+runtime/syntax/zserio.vim		@dpelle
 runtime/syntax/zsh.vim			@chrisbra
 runtime/tutor/tutor.eo			@dpelle
 runtime/tutor/tutor.eo.utf-8		@dpelle
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -26,7 +26,6 @@ jobs:
       TEST: test
       SRCDIR: ./src
       LEAK_CFLAGS: -DEXITFREE
-      CFLAGS: -Wno-deprecated-declarations
       LOG_DIR: ${{ github.workspace }}/logs
       TERM: xterm
       DISPLAY: ':99'
@@ -37,68 +36,76 @@ jobs:
       matrix:
         features: [tiny, normal, huge]
         compiler: [clang, gcc]
-        extra: [none]
-        luaver: [lua5.4]
+        extra: [[]]
+        # Only use non-native architecture when features != huge.
+        # features=huge tries to install python3-dev, which fails to install
+        # for the non-native architecture.
+        architecture: [native]
         include:
           - features: tiny
             compiler: clang
-            extra: nogui
+            extra: [nogui]
           - features: tiny
             compiler: gcc
-            extra: nogui
+            extra: [nogui]
           - features: normal
             shadow: ./src/shadow
+            compiler: gcc
+            architecture: i386
           - features: huge
             coverage: true
           - features: huge
             compiler: clang
-            extra: none
             interface: dynamic
             python3: stable-abi
           - features: huge
             compiler: gcc
             coverage: true
             interface: dynamic
-            extra: testgui
-            uchar: true
-            luaver: lua5.4
+            extra: [uchar, testgui]
           - features: huge
             compiler: clang
-            extra: asan
             # Lua5.1 is the most widely used version (since it's what LuaJIT is
             # compatible with), so ensure it works
-            luaver: lua5.1
+            lua_ver: '5.1'
+            extra: [asan]
           - features: huge
             compiler: gcc
             coverage: true
-            extra: unittests
-            luaver: lua5.4
+            extra: [unittests]
           - features: normal
             compiler: gcc
-            extra: vimtags
+            extra: [vimtags]
 
     steps:
       - name: Checkout repository from github
         uses: actions/checkout@v3
 
+      - run: sudo dpkg --add-architecture i386
+        if: matrix.architecture == 'i386'
+
       - name: Install packages
         run: |
           PKGS=( \
             gettext \
-            libgtk2.0-dev \
+            libgtk2.0-dev:${{ matrix.architecture }} \
             desktop-file-utils \
             libtool-bin \
+            libncurses-dev:${{ matrix.architecture }} \
+            libxt-dev:${{ matrix.architecture }} \
           )
           if ${{ matrix.features == 'huge' }}; then
+            LUA_VER=${{ matrix.lua_ver || '5.4' }}
             PKGS+=( \
               autoconf \
+              gdb \
               lcov \
               libcanberra-dev \
               libperl-dev \
               python2-dev \
               python3-dev \
-              lib${{ matrix.luaver }}-dev \
-              ${{ matrix.luaver }} \
+              liblua${LUA_VER}-dev \
+              lua${LUA_VER} \
               ruby-dev \
               tcl-dev \
               cscope \
@@ -110,7 +117,7 @@ jobs:
       - name: Install gcc-${{ env.GCC_VER }}
         if:  matrix.compiler == 'gcc'
         run: |
-          sudo apt-get install -y gcc-${{ env.GCC_VER }}
+          sudo apt-get install -y gcc-${{ env.GCC_VER }}:${{ matrix.architecture }}
           sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ env.GCC_VER }} 100
           sudo update-alternatives --set gcc /usr/bin/gcc-${{ env.GCC_VER }}
 
@@ -147,25 +154,20 @@ jobs:
             ;;
           huge)
             echo "TEST=scripttests test_libvterm"
-            if ${{ matrix.interface == 'dynamic' }}; then
-              if ${{ matrix.python3 == 'stable-abi' }}; then
-                PYTHON3_FLAGS="--with-python3-stable-abi=3.8"
-              else
-                PYTHON3_FLAGS=""
-              fi
-              echo "CONFOPT=--enable-perlinterp=dynamic --enable-pythoninterp=dynamic --enable-python3interp=dynamic --enable-rubyinterp=dynamic --enable-luainterp=dynamic --enable-tclinterp=dynamic ${PYTHON3_FLAGS}"
-            else
-              echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
+            INTERFACE=${{ matrix.interface || 'yes' }}
+            if ${{ matrix.python3 == 'stable-abi' }}; then
+              PYTHON3_CONFOPT="--with-python3-stable-abi=3.8"
             fi
+            echo "CONFOPT=--enable-perlinterp=${INTERFACE} --enable-pythoninterp=${INTERFACE} --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
             ;;
           esac
 
           if ${{ matrix.coverage == true }}; then
-            CFLAGS="$CFLAGS --coverage -DUSE_GCOV_FLUSH"
+            CFLAGS="${CFLAGS} --coverage -DUSE_GCOV_FLUSH"
             echo "LDFLAGS=--coverage"
           fi
-          if ${{ matrix.uchar == true }}; then
-            CFLAGS="$CFLAGS -funsigned-char"
+          if ${{ contains(matrix.extra, 'uchar') }}; then
+            CFLAGS="${CFLAGS} -funsigned-char"
           fi
           if ${{ contains(matrix.extra, 'testgui') }}; then
             echo "TEST=-C src testgui"
@@ -182,7 +184,7 @@ jobs:
           if ${{ contains(matrix.extra, 'vimtags') }}; then
             echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
           fi
-          echo "CFLAGS=$CFLAGS"
+          echo "CFLAGS=${CFLAGS}"
           ) >> $GITHUB_ENV
 
       - name: Set up system
@@ -251,6 +253,12 @@ jobs:
           do_test() { sg audio "sg $(id -gn) '$*'"; }
           do_test make ${SHADOWOPT} ${TEST}
 
+      - name: Vim tags
+        if: contains(matrix.extra, 'vimtags')
+        run: |
+          # This will exit with an error code if the generated vim tags differs from source.
+          git diff --exit-code -- runtime/doc/tags
+
       - name: Generate gcov files
         if: matrix.coverage
         run: |
--- a/.github/workflows/coverity.yml
+++ b/.github/workflows/coverity.yml
@@ -13,7 +13,6 @@ jobs:
 
     env:
       CC: gcc
-      CFLAGS: -Wno-deprecated-declarations
       DEBIAN_FRONTEND: noninteractive
       TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
 
--- a/.hgtags
+++ b/.hgtags
@@ -26962,3 +26962,102 @@ 1c143662a40da017fdbb252dc56a5f270b04b1f9
 578ffda95ad58e9a4ed9f1a83a3a0fc30aa79af2 v9.0.1779
 d5c05e15cf8147b74c93266a3936c435a9c60937 v9.0.1780
 7771cb0606850a14ff24c10073c5847b54c72f42 v9.0.1781
+2415680a2554dd7d90b2702af058a79bb09649f0 v9.0.1783
+d37f43ba21202de8f9fa6d6eae026db2e6fdec48 v9.0.1787
+0bdb1f8a17c161f3cb7e37891fcc6a59052f87c7 v9.0.1788
+3083c26bdc3df292084752b3249a8ec7d132b6bc v9.0.1789
+dd8da8f1c2bcb9ece8c7f05528e37f4b0bae6e48 v9.0.1790
+d55bf5bbcb6f2546385c609510fbdb1d22e95fd9 v9.0.1791
+bc3b293a965cb76898bb7ae033ddb7b1e6533c46 v9.0.1792
+b4efdb3357f7f24b68e584ef9170a09cdd882e2c v9.0.1793
+50e7d33c40f931d1993164ed2c9a4ef43a9ce036 v9.0.1794
+29b2193466e0c8eb966a4b530dd3e358f3ee4442 v9.0.1795
+ba1b40b520e83810f3128c9698e610244038a001 v9.0.1796
+fcd65e5d277adc797ccd6eeff0be51eb1302c58d v9.0.1797
+859e539d686b10b46aabf2f6bd3586d2f67c35e9 v9.0.1798
+172f80704b0503726099f4925a27d190f4aedf95 v9.0.1799
+7d0357f70cf897b80dc6c3a20204142569ec9fb8 v9.0.1800
+04c75e67ca30f110176fc486ff58c7396621cbcb v9.0.1801
+2b47322be0d1e97bc98ccc12b7fc454b9786e2bc v9.0.1802
+81003b78347b27a45f2bd864375799e8526fb259 v9.0.1803
+1d18c7fe609f0757c7c93bb6510ae1a985906560 v9.0.1804
+669898c9a6c3e373dfb087952d38a0849454d5d1 v9.0.1805
+c7591e326ded537f266a02725b43f1879bf261c0 v9.0.1806
+32c3b7b75f7b788aaaeb42837146ea9c21dd5431 v9.0.1807
+50fe2cd56d3a93bd796e8746dfdadf4cc95d695e v9.0.1808
+e937929e4bff5e65166e58aacb86c79a34696751 v9.0.1809
+21f2838a4dd9aba3e25994a9eb3c42f3c37a9005 v9.0.1810
+5334aca4cef44b9295d518fa698d07997d8381d2 v9.0.1811
+ee683d311c05697e76724604609652d246584caa v9.0.1812
+0561bf3ba10cad79ed8c7d54a004679339b3253a v9.0.1813
+9ef43d02dd8fe434ba2192b5bb121fab897c8f9f v9.0.1814
+0dc386dbf7b75d0b7d930ab5806eaef0fce8981b v9.0.1815
+3db1758e326850daaa022bd3e03f4cc72cf94722 v9.0.1816
+3b2896d7438f5944c10fc1dd0bdc3c04c8a2859a v9.0.1817
+897f3ed27be2c2aec93b30e3713de8f27a171d13 v9.0.1818
+eb8ab50073b917548d278c5a8d7a409cfec04328 v9.0.1819
+3284c31289f524f2a63e724242282024a3483dcd v9.0.1820
+d42927c6e556b8a1bedee087a0b735633b411544 v9.0.1821
+8362975375a423118eac7e779fa4f6b69eece859 v9.0.1822
+6028d7f701ceb73d6bb570d73f31fb09f416201e v9.0.1823
+0346ff4c3ee74f78240e64cfa788fbebd93e9aa6 v9.0.1824
+d03841a271aa3f8f5d2a9f07495a53703cd9ff00 v9.0.1825
+5f201b734cb7b114a411a339a895d25ebecf7262 v9.0.1826
+79b2eb83f2dfba51c2923eddc54b309c83a18964 v9.0.1827
+4be1ffa13b5603a667d9d06f3cecd09039c05503 v9.0.1828
+667a17904f648f052a92018febb515eedaebb6a7 v9.0.1829
+461541d860aca7a8221dbadc0b2031252fc24460 v9.0.1830
+4544279fae468a2215a94b93cb8c9a6bf7d50a02 v9.0.1831
+e1a219f47e3a23600a638590c16375875140ddc0 v9.0.1832
+828bcb1a37e7405a6b8f7970f374fefff4c282d4 v9.0.1833
+49f31759743043f188a1a71e6c30ecd92ae8dc50 v9.0.1834
+8cbdd2cbf10a0d4b30f5ca3a6920711e34f291ba v9.0.1835
+61fc08239937649680e893a7177149ff9f1c218b v9.0.1836
+d994ba4bd9ca32ec1b16505ac371058f0b4bc745 v9.0.1837
+2b5cc29b0a0e0c4b03c9c41a844c0c963a2add75 v9.0.1838
+27e42f2eab1bf765ec9eb94202e658adf62bc82a v9.0.1839
+849c19550a8fcc5668e9d89e6364d058be831e93 v9.0.1841
+bede81965821b2e62f9af1db702fd8ac0b3244d0 v9.0.1842
+2946268e7c48c74d2614bd2b2d6d26da72c89f97 v9.0.1843
+9b2c827e0f2e2132b9dc1cf8acee35c2c44c6e93 v9.0.1844
+7072c7b2c62e009e9fb974a3b2fe4f71a400246e v9.0.1845
+b2c506f480c719b634895f2be32ddec46a9fdd0e v9.0.1846
+3e4c08a8d637c44a6b6c594d99879dec14ce8848 v9.0.1847
+811555b5ab8ba7d2817eb3f88024ed8feeee642c v9.0.1848
+0db7088b659e52309530abc3b09a86b74e828251 v9.0.1849
+aecd03679315bf2b3b0a23c1329fc2fdf8473492 v9.0.1850
+22a29cc413c5aa81cc9d5377491708fd137541cc v9.0.1851
+9c4ee9389bb42d8b2fe3cab46664dd9ddd9dfaba v9.0.1852
+318846db5166fd6dd93db7a108c38c1ca9bbeb67 v9.0.1853
+9c34366acd4e6e6e0992e7e6fb595ff389f2d564 v9.0.1854
+351d2bbfe921cf2b834e3632138a188388713abd v9.0.1855
+7bc10151ce812e799d8b56ab3f17a560205cbf08 v9.0.1856
+cdc797578b8b8f25769614dbb90d3ab4c29d2d14 v9.0.1857
+8c9c79b0031615bef145c76c2d508921ebd93227 v9.0.1858
+faeeed7df688a795bc5f2af71451e1b79b3c0616 v9.0.1859
+49cc8eebab30f111678b89c880a28780e01c8a7d v9.0.1860
+e8805650fec17190fa777dd97f6908c70c4cb951 v9.0.1861
+4ecf54d709b30204bfb0e2e531fb70fcdeb0e2b9 v9.0.1862
+5da7208ea315b7e009617c3245e71f55d62c1347 v9.0.1863
+74fcf8a0846b0040d17aed0475dff928f5a49fff v9.0.1864
+13258b342d3823fc2f11e3fc9e9f915c0228aae0 v9.0.1865
+db2e9816e400bb46631c962f3fe806d455074c14 v9.0.1866
+9efd99a717c19d88145870fb6e6f4cfbee31535e v9.0.1867
+8ac10cee18f30d1f605067933a13976a43dcd31a v9.0.1868
+1e649fd371cd8e869d8636a71b35653ef3cdd3f8 v9.0.1869
+ea3f1e0ee5f3ce825efcb087cda2e55c443d871d v9.0.1870
+c8c9d89fc55f82d17afc760e30e476bb4fe959d3 v9.0.1871
+1ee65fdbd79182143d46942af91a2132e0116b13 v9.0.1872
+201c54cdde82b9ef9447f69fbfaea93ec8404577 v9.0.1873
+c41b1cac349bd40d1e1e010eef821284852ba6de v9.0.1874
+4efe5f7979193780436df4e8af6e38ee575faa68 v9.0.1875
+256febd1cbf02828fba0871da020279e262e4829 v9.0.1876
+f17604cf816b942a35c7d3c5e3326c9ad14da7df v9.0.1877
+3395f1cbe3ab7b863b983d3d7cd47bf6e761ff4e v9.0.1878
+36c13b964eb3dae2c31ac0102fc4e0df129a9aa6 v9.0.1879
+36aebbf8389fbb532a614d4a00db255fea726976 v9.0.1880
+3737c8d06c2f89840a75a1277b3b851aee97ec35 v9.0.1881
+ed46a7531bb3df66f7e91b407236f05d30a120bc v9.0.1882
+71a097aab64d9cf3b75314f64c3fd1656160bf95 v9.0.1883
+39bc126cc890998e7bd862020af59c6d08c52a49 v9.0.1884
+499ba27ba0f6a5c269c4520221899c5f809d20d8 v9.0.1885
--- a/Filelist
+++ b/Filelist
@@ -217,6 +217,7 @@ SRC_ALL =	\
 		src/testdir/color_ramp.vim \
 		src/testdir/silent.wav \
 		src/testdir/popupbounce.vim \
+		src/testdir/crash/* \
 		src/proto.h \
 		src/protodef.h \
 		src/proto/alloc.pro \
--- a/ci/config.mk.sed
+++ b/ci/config.mk.sed
@@ -1,3 +1,3 @@
-/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Werror/
+/^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Werror -Wno-deprecated-declarations/
 /^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-shadow/
 /^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter/
--- a/runtime/autoload/dist/ft.vim
+++ b/runtime/autoload/dist/ft.vim
@@ -62,7 +62,7 @@ export def FTasmsyntax()
   endif
 enddef
 
-var ft_visual_basic_content = '\cVB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
+var ft_visual_basic_content = '\c^\s*\%(Attribute\s\+VB_Name\|Begin\s\+\%(VB\.\|{\%(\x\+-\)\+\x\+}\)\)'
 
 # See FTfrm() for Visual Basic form file detection
 export def FTbas()
@@ -146,12 +146,20 @@ export def FTcls()
     return
   endif
 
-  if getline(1) =~ '^\v%(\%|\\)'
+  var line1 = getline(1)
+  if line1 =~ '^#!.*\<\%(rexx\|regina\)\>'
+    setf rexx
+    return
+  elseif line1 == 'VERSION 1.0 CLASS'
+    setf vb
+    return
+  endif
+
+  var nonblank1 = getline(nextnonblank(1))
+  if nonblank1 =~ '^\v%(\%|\\)'
     setf tex
-  elseif getline(1)[0] == '#' && getline(1) =~ 'rexx'
+  elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)'
     setf rexx
-  elseif getline(1) == 'VERSION 1.0 CLASS'
-    setf vb
   else
     setf st
   endif
@@ -324,6 +332,11 @@ export def FTfrm()
     return
   endif
 
+  if getline(1) == "VERSION 5.00"
+    setf vb
+    return
+  endif
+
   var lines = getline(1, min([line("$"), 5]))
 
   if match(lines, ft_visual_basic_content) > -1
@@ -1197,5 +1210,13 @@ export def FTv()
   setf v
 enddef
 
+export def FTvba()
+  if getline(1) =~ '^["#] Vimball Archiver'
+    setf vim
+  else
+    setf vb
+  endif
+enddef
+
 # Uncomment this line to check for compilation errors early
 # defcompile
--- a/runtime/autoload/dist/script.vim
+++ b/runtime/autoload/dist/script.vim
@@ -209,6 +209,14 @@ export def Exe2filetype(name: string, li
   elseif name =~ 'nix-shell'
     return 'nix'
 
+    # Crystal
+  elseif name =~ '^crystal\>'
+    return 'crystal'
+
+    # Rexx
+  elseif name =~ '^\%(rexx\|regina\)\>'
+    return 'rexx'
+
   endif
 
   return ''
--- a/runtime/autoload/gzip.vim
+++ b/runtime/autoload/gzip.vim
@@ -10,12 +10,20 @@
 fun s:check(cmd)
   let name = substitute(a:cmd, '\(\S*\).*', '\1', '')
   if !exists("s:have_" . name)
+    " safety check, don't execute anything from the current directory
+    let s:tmp_cwd = getcwd()
+    let f = (fnamemodify(exepath(name), ":p:h") !=# s:tmp_cwd
+          \ || (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) != -1 && s:tmp_cwd != '.'))
+    unlet s:tmp_cwd
+    if !f
+      echoerr "Warning: NOT executing " .. name .. " from current directory!"
+    endif
     let e = executable(name)
     if e < 0
       let r = system(name . " --version")
       let e = (r !~ "not found" && r != "")
     endif
-    exe "let s:have_" . name . "=" . e
+    exe "let s:have_" . name . "=" . (e && f)
   endif
   exe "return s:have_" . name
 endfun
--- a/runtime/autoload/tohtml.vim
+++ b/runtime/autoload/tohtml.vim
@@ -1,6 +1,6 @@
 " Vim autoload file for the tohtml plugin.
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2023 Jan 01
+" Last Change: 2023 Sep 03
 "
 " Additional contributors:
 "
@@ -307,7 +307,7 @@ func! tohtml#Convert2HTML(line1, line2) 
     let g:html_diff_win_num = 0
     for window in win_list
       " switch to the next buffer to convert
-      exe ":" . bufwinnr(window) . "wincmd w"
+      exe ":" .. bufwinnr(window) .. "wincmd w"
 
       " figure out whether current charset and encoding will work, if not
       " default to UTF-8
@@ -355,7 +355,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
   if !s:settings.no_doc
     if s:settings.use_xhtml
       if s:settings.encoding != ""
-	let xml_line = "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>"
+	let xml_line = "<?xml version=\"1.0\" encoding=\"" .. s:settings.encoding .. "\"?>"
       else
 	let xml_line = "<?xml version=\"1.0\"?>"
       endif
@@ -387,34 +387,34 @@ func! tohtml#Diff2HTML(win_list, buf_lis
     " contained in XML information
     if s:settings.encoding != "" && !s:settings.use_xhtml
       if s:html5
-	call add(html, '<meta charset="' . s:settings.encoding . '"' . tag_close)
+	call add(html, '<meta charset="' .. s:settings.encoding .. '"' .. tag_close)
       else
-	call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
+	call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" .. s:settings.encoding .. '"' .. tag_close)
       endif
     endif
 
     call add(html, '<title>diff</title>')
-    call add(html, '<meta name="Generator" content="Vim/'.v:version/100.'.'.v:version%100.'"'.tag_close)
-    call add(html, '<meta name="plugin-version" content="'.g:loaded_2html_plugin.'"'.tag_close)
+    call add(html, '<meta name="Generator" content="Vim/'..v:version/100..'.'..v:version%100..'"'..tag_close)
+    call add(html, '<meta name="plugin-version" content="'..g:loaded_2html_plugin..'"'..tag_close)
     call add(html, '<meta name="settings" content="'.
 	  \ join(filter(keys(s:settings),'s:settings[v:val]'),',').
-	  \ ',prevent_copy='.s:settings.prevent_copy.
-	  \ ',use_input_for_pc='.s:settings.use_input_for_pc.
-	  \ '"'.tag_close)
+	  \ ',prevent_copy='..s:settings.prevent_copy.
+	  \ ',use_input_for_pc='..s:settings.use_input_for_pc.
+	  \ '"'..tag_close)
     call add(html, '<meta name="colorscheme" content="'.
 	  \ (exists('g:colors_name')
 	  \ ? g:colors_name
-	  \ : 'none'). '"'.tag_close)
+	  \ : 'none').. '"'..tag_close)
 
     call add(html, '</head>')
     let body_line_num = len(html)
-    call add(html, '<body'.(s:settings.line_ids ? ' onload="JumpToLine();"' : '').'>')
+    call add(html, '<body'..(s:settings.line_ids ? ' onload="JumpToLine();"' : '')..'>')
   endif
-  call add(html, "<table ".(s:settings.use_css? "" : "border='1' width='100%' ")."id='vimCodeElement".s:settings.id_suffix."'>")
+  call add(html, "<table "..(s:settings.use_css? "" : "border='1' width='100%' ").."id='vimCodeElement"..s:settings.id_suffix.."'>")
 
   call add(html, '<tr>')
   for buf in a:win_list
-    call add(html, '<th>'.bufname(buf).'</th>')
+    call add(html, '<th>'..bufname(buf)..'</th>')
   endfor
   call add(html, '</tr><tr>')
 
@@ -423,7 +423,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
 
   for buf in a:buf_list
     let temp = []
-    exe bufwinnr(buf) . 'wincmd w'
+    exe bufwinnr(buf) .. 'wincmd w'
 
     " If text is folded because of user foldmethod settings, etc. we don't want
     " to act on everything in a fold by mistake.
@@ -526,16 +526,16 @@ func! tohtml#Diff2HTML(win_list, buf_lis
   endif
 
   let i = 1
-  let name = "Diff" . (s:settings.use_xhtml ? ".xhtml" : ".html")
+  let name = "Diff" .. (s:settings.use_xhtml ? ".xhtml" : ".html")
   " Find an unused file name if current file name is already in use
   while filereadable(name)
-    let name = substitute(name, '\d*\.x\?html$', '', '') . i . '.' . fnamemodify(copy(name), ":t:e")
+    let name = substitute(name, '\d*\.x\?html$', '', '') .. i .. '.' .. fnamemodify(copy(name), ":t:e")
     let i += 1
   endwhile
 
   let s:ei_sav = &eventignore
   set eventignore+=FileType
-  exe "topleft new " . name
+  exe "topleft new " .. name
   let &eventignore=s:ei_sav
   unlet s:ei_sav
 
@@ -601,7 +601,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
 		\ "",
 		\ "  /* navigate upwards in the DOM tree to open all folds containing the line */",
 		\ "  var node = lineElem;",
-		\ "  while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
+		\ "  while (node && node.id != 'vimCodeElement"..s:settings.id_suffix.."')",
 		\ "  {",
 		\ "    if (node.className == 'closed-fold')",
 		\ "    {",
@@ -640,7 +640,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
 	call append(style_start, [
 	      \  "  function toggleFold(objID)",
 	      \  "  {",
-	      \  "    for (win_num = 1; win_num <= ".len(a:buf_list)."; win_num++)",
+	      \  "    for (win_num = 1; win_num <= "..len(a:buf_list).."; win_num++)",
 	      \  "    {",
 	      \  "      var fold;",
 	      \  '      fold = document.getElementById("win"+win_num+objID);',
@@ -660,7 +660,7 @@ func! tohtml#Diff2HTML(win_list, buf_lis
       if s:uses_script
 	" insert script tag if needed
 	call append(style_start, [
-	      \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
+	      \ "<script" .. (s:html5 ? "" : " type='text/javascript'") .. ">",
 	      \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
       endif
 
@@ -671,14 +671,14 @@ func! tohtml#Diff2HTML(win_list, buf_lis
       " is pretty useless for really long lines. {{{
       if s:settings.use_css
 	call append(style_start,
-	      \ ['<style' . (s:html5 ? '' : 'type="text/css"') . '>']+
+	      \ ['<style' .. (s:html5 ? '' : 'type="text/css"') .. '>']+
 	      \ style+
 	      \ [ s:settings.use_xhtml ? '' : '<!--',
 	      \   'table { table-layout: fixed; }',
 	      \   'html, body, table, tbody { width: 100%; margin: 0; padding: 0; }',
 	      \   'table, td, th { border: 1px solid; }',
 	      \   'td { vertical-align: top; }',
-	      \   'th, td { width: '.printf("%.1f",100.0/len(a:win_list)).'%; }',
+	      \   'th, td { width: '..printf("%.1f",100.0/len(a:win_list))..'%; }',
 	      \   'td div { overflow: auto; }',
 	      \   s:settings.use_xhtml ? '' : '-->',
 	      \   '</style>'
@@ -694,7 +694,7 @@ endfunc "}}}
 " Gets a single user option and sets it in the passed-in Dict, or gives it the
 " default value if the option doesn't actually exist.
 func! tohtml#GetOption(settings, option, default) "{{{
-  if exists('g:html_'.a:option)
+  if exists('g:html_'..a:option)
     let a:settings[a:option] = g:html_{a:option}
   else
     let a:settings[a:option] = a:default
@@ -713,10 +713,11 @@ func! tohtml#GetUserSettings() "{{{
     let user_settings = {}
 
     " Define the correct option if the old option name exists and we haven't
-    " already defined the correct one. Maybe I'll put out a warning message about
-    " this sometime and remove the old option entirely at some even later time,
-    " but for now just silently accept the old option.
+    " already defined the correct one.
     if exists('g:use_xhtml') && !exists("g:html_use_xhtml")
+      echohl WarningMsg
+      echomsg "Warning: g:use_xhtml is deprecated, use g:html_use_xhtml"
+      echohl None
       let g:html_use_xhtml = g:use_xhtml
     endif
 
@@ -739,7 +740,7 @@ func! tohtml#GetUserSettings() "{{{
     call tohtml#GetOption(user_settings,      'whole_filler', 0 )
     call tohtml#GetOption(user_settings,         'use_xhtml', 0 )
     call tohtml#GetOption(user_settings,          'line_ids', user_settings.number_lines )
-    call tohtml#GetOption(user_settings, 'use_input_for_pc', 'fallback')
+    call tohtml#GetOption(user_settings, 'use_input_for_pc', 'none')
     " }}}
     
     " override those settings that need it {{{
@@ -854,16 +855,16 @@ func! tohtml#GetUserSettings() "{{{
     if user_settings.use_css
       if exists("g:html_prevent_copy")
 	if user_settings.dynamic_folds && !user_settings.no_foldcolumn && g:html_prevent_copy =~# 'f'
-	  let user_settings.prevent_copy .= 'f'
+	  let user_settings.prevent_copy ..= 'f'
 	endif
 	if user_settings.number_lines && g:html_prevent_copy =~# 'n'
-	  let user_settings.prevent_copy .= 'n'
+	  let user_settings.prevent_copy ..= 'n'
 	endif
 	if &diff && g:html_prevent_copy =~# 'd'
-	  let user_settings.prevent_copy .= 'd'
+	  let user_settings.prevent_copy ..= 'd'
 	endif
 	if !user_settings.ignore_folding && g:html_prevent_copy =~# 't'
-	  let user_settings.prevent_copy .= 't'
+	  let user_settings.prevent_copy ..= 't'
 	endif
       else
 	let user_settings.prevent_copy = ""
@@ -875,10 +876,10 @@ func! tohtml#GetUserSettings() "{{{
 
     " enforce valid values for use_input_for_pc
     if user_settings.use_input_for_pc !~# 'fallback\|none\|all'
-      let user_settings.use_input_for_pc = 'fallback'
+      let user_settings.use_input_for_pc = 'none'
       echohl WarningMsg
-      echomsg '2html: "' . g:html_use_input_for_pc . '" is not valid for g:html_use_input_for_pc'
-      echomsg '2html: defaulting to "' . user_settings.use_input_for_pc . '"'
+      echomsg '2html: "' .. g:html_use_input_for_pc .. '" is not valid for g:html_use_input_for_pc'
+      echomsg '2html: defaulting to "' .. user_settings.use_input_for_pc .. '"'
       echohl None
       sleep 3
     endif
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -57,6 +57,15 @@ if !exists("g:zip_extractcmd")
  let g:zip_extractcmd= g:zip_unzipcmd
 endif
 
+let s:tmp_cwd = getcwd()
+if (fnamemodify(exepath(g:zip_unzipcmd), ":p:h") ==# getcwd()
+          \ && (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) == -1 || s:tmp_cwd == '.'))
+ unlet s:tmp_cwd
+ echoerr "Warning: NOT executing " .. g:zip_unzipcmd .. " from current directory!"
+ finish
+endif
+unlet s:tmp_cwd
+
 " ----------------
 "  Functions: {{{1
 " ----------------
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -310,6 +310,7 @@ inputrestore()			Number	restore typeahea
 inputsave()			Number	save and clear typeahead
 inputsecret({prompt} [, {text}]) String	like input() but hiding the text
 insert({object}, {item} [, {idx}]) List	insert {item} in {object} [before {idx}]
+instanceof({object}, {class})	Number	|TRUE| if {object} is an instance of {class}
 interrupt()			none	interrupt script execution
 invert({expr})			Number	bitwise invert
 isabsolutepath({path})		Number	|TRUE| if {path} is an absolute path
@@ -5052,6 +5053,17 @@ insert({object}, {item} [, {idx}])			*in
 		Can also be used as a |method|: >
 			mylist->insert(item)
 
+instanceof({object}, {class})				*instanceof()*
+		The result is a Number, which is |TRUE| when the {object} argument is a
+		direct or indirect instance of a |Class| specified by {class}.
+		When {class} is a |List| the function returns |TRUE| when {object} is an
+		instance of any of the specified classes.
+		Example: >
+			instanceof(animal, [Dog, Cat])
+
+<		Can also be used as a |method|: >
+			myobj->instanceof(mytype)
+
 interrupt()						*interrupt()*
 		Interrupt script execution.  It works more or less like the
 		user typing CTRL-C, most commands won't execute and control
@@ -6396,6 +6408,7 @@ mode([expr])	Return a string that indica
 		   Rvc	    Virtual Replace mode completion |compl-generic|
 		   Rvx	    Virtual Replace mode |i_CTRL-X| completion
 		   c	    Command-line editing
+		   ct	    Command-line editing via Terminal-Job mode
 		   cv	    Vim Ex mode |gQ|
 		   ce	    Normal Ex mode |Q|
 		   r	    Hit-enter prompt
@@ -6694,8 +6707,13 @@ printf({fmt}, {expr1} ...)				*printf()*
 			a conversion is wider than the field width, the field
 			is expanded to contain the conversion result.
 			The 'h' modifier indicates the argument is 16 bits.
-			The 'l' modifier indicates the argument is 32 bits.
-			The 'L' modifier indicates the argument is 64 bits.
+			The 'l' modifier indicates the argument is a long
+			integer.  The size will be 32 bits or 64 bits
+			depending on your platform.
+			The "ll" modifier indicates the argument is 64 bits.
+			The b and B conversion specifiers never take a width
+			modifier and always assume their argument is a 64 bit
+			integer.
 			Generally, these modifiers are not useful. They are
 			ignored when type is known from the argument.
 
--- a/runtime/doc/evim-it.1
+++ b/runtime/doc/evim-it.1
@@ -1,8 +1,6 @@
 .TH EVIM 1 "16 febbraio 2002 "
 .SH NOME
-evim \- Vim "facile", Vim impostato in modo da poter essere usato
-facilmente per modificare file, anche da chi non abbia familiarità
-con i comandi.
+evim \- Vim "facile", impostato in modo da poter essere usato come editore non-modale
 .SH SINTASSI
 .br
 .B evim
@@ -13,42 +11,39 @@ con i comandi.
 .B evim
 Inizia
 .B Vim
-e imposta le opzioni per farlo comportare come un editore "modeless".
-State sempre usando Vim, ma come un editore "posizionati-e-clicca".
-Simile all'uso di Notepad in MS-Windows.
-.B evim
-richiede la presenza della GUI, per avere a disposizione menù e barra
-strumenti.
+e imposta le opzioni per farlo comportare come un editore non-modale.
+Si tratta sempre di Vim, ma usato nello stile "posizionati-e-clicca".
+Rammenta molto l'utilizzo di Notepad in MS-Windows.
+.B eVim
+necessita della disponibilità della GUI, per utilizzare menù e barra strumenti.
 .PP
-Da usarsi soltanto se non si è in grado di lavorare con Vim nella
-maniera usuale.
-La modifica file sarà molto meno efficiente.
+Va a usato soltanto se non si è in grado di lavorare con Vim nella maniera usuale.
+L'edit dei file sarà molto meno efficiente.
 .PP
 .B eview
-come sopra, ma parte in modalità "Sola Lettura".  Funziona come evim \-R.
+come sopra, ma si parte in modalità "Sola Lettura".  Funziona come evim \-R.
 .PP
 Vedere vim(1) per dettagli riguardo a Vim, opzioni, etc.
 .PP
-L'opzione 'insertmode' è impostata per poter immettere del testo direttamente.
+L'opzione 'insertmode' è impostata in modo da consentire l'immissione diretta di testo fin dall'inizio.
 .br
-Sono definite delle mappature che consentono di usare COPIA e INCOLLA con i
-familiari tasti usati sotto MS-Windows.
+Sono definite delle mappature che consentono di usare COPIA e INCOLLA con i familiari tasti usati sotto MS-Windows.
 CTRL-X taglia testo, CTRL-C copia testo e CTRL-V incolla testo.
-Usate CTRL-Q per ottenere quello che si otterrebbe con CTRL-V in Vim nativo.
+Occorre usare CTRL-Q per ottenere il comportamenti di CTRL-V in Vim nativo.
 .SH OPZIONI
 Vedere vim(1).
 .SH FILE
 .TP 15
 /usr/local/lib/vim/evim.vim
 Lo script caricato per inizializzare eVim.
-.SH NAC [NOTO ANCHE COME]
-Noto Anche Come "Vim per semplici".
-Quando usate evim si suppone che prendiate un fazzoletto,
-facciate un nodo ad ogni angolo e ve lo mettiate in testa.
+.SH AKA
+[Also Known As] noto anche come "Vim per semplici".
+Quando is usa evim si suppone che si prenda un fazzoletto,
+si faccia un nodo ad ogni angolo e lo si metta in testa.
 .SH VEDERE ANCHE
 vim(1)
 .SH AUTORE
 Buona parte di
 .B Vim
-è stato scritto da Bram Moolenaar, con molto aiuto da altri.
+è stato scritto da Bram Moolenaar, con molto aiuto da parte di altri.
 Vedere il menù "Aiuto/Crediti".
--- a/runtime/doc/evim-it.UTF-8.1
+++ b/runtime/doc/evim-it.UTF-8.1
@@ -1,8 +1,6 @@
 .TH EVIM 1 "16 febbraio 2002 "
 .SH NOME
-evim \- Vim "facile", Vim impostato in modo da poter essere usato
-facilmente per modificare file, anche da chi non abbia familiarità
-con i comandi.
+evim \- Vim "facile", impostato in modo da poter essere usato come editore non-modale
 .SH SINTASSI
 .br
 .B evim
@@ -13,42 +11,39 @@ con i comandi.
 .B evim
 Inizia
 .B Vim
-e imposta le opzioni per farlo comportare come un editore "modeless".
-State sempre usando Vim, ma come un editore "posizionati-e-clicca".
-Simile all'uso di Notepad in MS-Windows.
-.B evim
-richiede la presenza della GUI, per avere a disposizione menù e barra
-strumenti.
+e imposta le opzioni per farlo comportare come un editore non-modale.
+Si tratta sempre di Vim, ma usato nello stile "posizionati-e-clicca".
+Rammenta molto l'utilizzo di Notepad in MS-Windows.
+.B eVim
+necessita della disponibilità della GUI, per utilizzare menù e barra strumenti.
 .PP
-Da usarsi soltanto se non si è in grado di lavorare con Vim nella
-maniera usuale.
-La modifica file sarà molto meno efficiente.
+Va a usato soltanto se non si è in grado di lavorare con Vim nella maniera usuale.
+L'edit dei file sarà molto meno efficiente.
 .PP
 .B eview
-come sopra, ma parte in modalità "Sola Lettura".  Funziona come evim \-R.
+come sopra, ma si parte in modalità "Sola Lettura".  Funziona come evim \-R.
 .PP
 Vedere vim(1) per dettagli riguardo a Vim, opzioni, etc.
 .PP
-L'opzione 'insertmode' è impostata per poter immettere del testo direttamente.
+L'opzione 'insertmode' è impostata in modo da consentire l'immissione diretta di testo fin dall'inizio.
 .br
-Sono definite delle mappature che consentono di usare COPIA e INCOLLA con i
-familiari tasti usati sotto MS-Windows.
+Sono definite delle mappature che consentono di usare COPIA e INCOLLA con i familiari tasti usati sotto MS-Windows.
 CTRL-X taglia testo, CTRL-C copia testo e CTRL-V incolla testo.
-Usate CTRL-Q per ottenere quello che si otterrebbe con CTRL-V in Vim nativo.
+Occorre usare CTRL-Q per ottenere il comportamenti di CTRL-V in Vim nativo.
 .SH OPZIONI
 Vedere vim(1).
 .SH FILE
 .TP 15
 /usr/local/lib/vim/evim.vim
 Lo script caricato per inizializzare eVim.
-.SH NAC [NOTO ANCHE COME]
-Noto Anche Come "Vim per semplici".
-Quando usate evim si suppone che prendiate un fazzoletto,
-facciate un nodo ad ogni angolo e ve lo mettiate in testa.
+.SH AKA
+[Also Known As] noto anche come "Vim per semplici".
+Quando is usa evim si suppone che si prenda un fazzoletto,
+si faccia un nodo ad ogni angolo e lo si metta in testa.
 .SH VEDERE ANCHE
 vim(1)
 .SH AUTORE
 Buona parte di
 .B Vim
-è stato scritto da Bram Moolenaar, con molto aiuto da altri.
+è stato scritto da Bram Moolenaar, con molto aiuto da parte di altri.
 Vedere il menù "Aiuto/Crediti".
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt*  For Vim version 9.0.  Last change: 2023 Apr 29
+*filetype.txt*  For Vim version 9.0.  Last change: 2023 Sep 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -419,11 +419,24 @@ 3. Overrule the settings after loading t
 3.  Docs for the default filetype plugins.		*ftplugin-docs*
 
 
+					*plugin_exec* *g:plugin_exec*
+Enable executing of external commands.  This was done historically for e.g.
+the perl filetype plugin (and a few others) to set the search path.
+Disabled by default for security reasons: >
+	:let g:plugin_exec = 1
+It is also possible to enable this only for certain filetypes: >
+	:let g:<filetype>_exec = 1
+So to enable this only for ruby, set the following variable: >
+	:let g:ruby_exec = 1
+
+If both, the global `plugin_exec` and the `<filetype>_exec` specific variable
+are set, the filetpe specific variable should have precedent.
+
 AWK							*ft-awk-plugin*
 
 Support for features specific to GNU Awk, like @include, can be enabled by
 setting: >
-	let g:awk_is_gawk = 1
+	:let g:awk_is_gawk = 1
 
 
 CHANGELOG						*ft-changelog-plugin*
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -297,5 +297,11 @@ instead of DYNAMIC_PERL_DLL file what wa
 version of the shared library must match the Perl version Vim was compiled
 with.
 
+Note: If you are building Perl locally, you have to use a version compiled
+with threading support for it for Vim to successfully link against it. You can
+use the `-Dusethreads` flags when configuring Perl, and check that a Perl
+binary has it enabled by running `perl -V` and verify that `USE_ITHREADS` is
+under "Compile-time options".
+
 ==============================================================================
  vim:tw=78:ts=8:noet:ft=help:norl:
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -127,7 +127,11 @@ CTRL-R {register}				*i_CTRL-R*
 			'/'	the last search pattern
 			':'	the last command-line
 			'.'	the last inserted text
+                                                       *i_CTRL-R_-*
 			'-'	the last small (less than a line) delete
+				register. This is repeatable using |.| since
+				it remembers the register to put instead of
+				the literal text to insert.
 							*i_CTRL-R_=*
 			'='	the expression register: you are prompted to
 				enter an expression (see |expression|)
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -596,7 +596,7 @@ The method used to prevent copying in th
 of |g:html_use_input_for_pc|.
 
 						    *g:html_use_input_for_pc*
-Default: "fallback"
+Default: "none"
 If |g:html_prevent_copy| is non-empty, then:
 
 When "all", read-only <input> elements are used in place of normal text for
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2085,10 +2085,12 @@ 90.5	usr_90.txt	/*90.5*
 :Continue	terminal.txt	/*:Continue*
 :DiffOrig	diff.txt	/*:DiffOrig*
 :DoMatchParen	pi_paren.txt	/*:DoMatchParen*
+:Down	terminal.txt	/*:Down*
 :Evaluate	terminal.txt	/*:Evaluate*
 :Explore	pi_netrw.txt	/*:Explore*
 :Finish	terminal.txt	/*:Finish*
 :FixBeginfigs	ft_mp.txt	/*:FixBeginfigs*
+:Frame	terminal.txt	/*:Frame*
 :GLVS	pi_getscript.txt	/*:GLVS*
 :Gdb	terminal.txt	/*:Gdb*
 :GetLatestVimScripts_dat	pi_getscript.txt	/*:GetLatestVimScripts_dat*
@@ -2141,7 +2143,9 @@ 90.5	usr_90.txt	/*90.5*
 :TermdebugCommand	terminal.txt	/*:TermdebugCommand*
 :Texplore	pi_netrw.txt	/*:Texplore*
 :Until	terminal.txt	/*:Until*
+:Up	terminal.txt	/*:Up*
 :UseVimball	pi_vimball.txt	/*:UseVimball*
+:Var	terminal.txt	/*:Var*
 :Vexplore	pi_netrw.txt	/*:Vexplore*
 :VimballList	pi_vimball.txt	/*:VimballList*
 :Vimuntar	pi_tar.txt	/*:Vimuntar*
@@ -4438,9 +4442,16 @@ E1362	vim9class.txt	/*E1362*
 E1363	vim9class.txt	/*E1363*
 E1364	recover.txt	/*E1364*
 E137	starting.txt	/*E137*
+E1370	vim9class.txt	/*E1370*
 E138	starting.txt	/*E138*
 E139	message.txt	/*E139*
 E140	message.txt	/*E140*
+E1400	builtin.txt	/*E1400*
+E1401	builtin.txt	/*E1401*
+E1402	builtin.txt	/*E1402*
+E1403	builtin.txt	/*E1403*
+E1404	builtin.txt	/*E1404*
+E1405	builtin.txt	/*E1405*
 E141	message.txt	/*E141*
 E142	message.txt	/*E142*
 E143	autocmd.txt	/*E143*
@@ -5839,6 +5850,7 @@ abandon	editing.txt	/*abandon*
 abbreviations	map.txt	/*abbreviations*
 abel.vim	syntax.txt	/*abel.vim*
 abs()	builtin.txt	/*abs()*
+abstract-method	vim9class.txt	/*abstract-method*
 acos()	builtin.txt	/*acos()*
 active-buffer	windows.txt	/*active-buffer*
 ada#Create_Tags()	ft_ada.txt	/*ada#Create_Tags()*
@@ -6755,6 +6767,7 @@ err_mode	channel.txt	/*err_mode*
 err_modifiable	channel.txt	/*err_modifiable*
 err_msg	channel.txt	/*err_msg*
 err_name	channel.txt	/*err_name*
+err_teapot()	builtin.txt	/*err_teapot()*
 err_timeout	channel.txt	/*err_timeout*
 errmsg-variable	eval.txt	/*errmsg-variable*
 error-file-format	quickfix.txt	/*error-file-format*
@@ -7470,6 +7483,7 @@ g:netrw_wiw	pi_netrw.txt	/*g:netrw_wiw*
 g:netrw_xstrlen	pi_netrw.txt	/*g:netrw_xstrlen*
 g:no_mail_maps	filetype.txt	/*g:no_mail_maps*
 g:no_plugin_maps	filetype.txt	/*g:no_plugin_maps*
+g:plugin_exec	filetype.txt	/*g:plugin_exec*
 g:rust_bang_comment_leader	ft_rust.txt	/*g:rust_bang_comment_leader*
 g:rust_conceal	ft_rust.txt	/*g:rust_conceal*
 g:rust_conceal_mod_path	ft_rust.txt	/*g:rust_conceal_mod_path*
@@ -7536,6 +7550,7 @@ g<LeftMouse>	tagsrch.txt	/*g<LeftMouse>*
 g<RightMouse>	tagsrch.txt	/*g<RightMouse>*
 g<Tab>	tabpage.txt	/*g<Tab>*
 g<Up>	motion.txt	/*g<Up>*
+g<kEnd>	motion.txt	/*g<kEnd>*
 g?	change.txt	/*g?*
 g??	change.txt	/*g??*
 g?g?	change.txt	/*g?g?*
@@ -8019,6 +8034,7 @@ i_CTRL-O	insert.txt	/*i_CTRL-O*
 i_CTRL-P	insert.txt	/*i_CTRL-P*
 i_CTRL-Q	insert.txt	/*i_CTRL-Q*
 i_CTRL-R	insert.txt	/*i_CTRL-R*
+i_CTRL-R_-	insert.txt	/*i_CTRL-R_-*
 i_CTRL-R_=	insert.txt	/*i_CTRL-R_=*
 i_CTRL-R_CTRL-O	insert.txt	/*i_CTRL-R_CTRL-O*
 i_CTRL-R_CTRL-P	insert.txt	/*i_CTRL-R_CTRL-P*
@@ -8157,6 +8173,7 @@ insertmode-variable	eval.txt	/*insertmod
 install	usr_90.txt	/*install*
 install-home	usr_90.txt	/*install-home*
 install-registry	gui_w32.txt	/*install-registry*
+instanceof()	builtin.txt	/*instanceof()*
 intel-itanium	syntax.txt	/*intel-itanium*
 intellimouse-wheel-problems	gui_w32.txt	/*intellimouse-wheel-problems*
 interactive-functions	usr_41.txt	/*interactive-functions*
@@ -9127,6 +9144,7 @@ plugin	usr_05.txt	/*plugin*
 plugin-details	filetype.txt	/*plugin-details*
 plugin-filetype	usr_51.txt	/*plugin-filetype*
 plugin-special	usr_51.txt	/*plugin-special*
+plugin_exec	filetype.txt	/*plugin_exec*
 plugin_name.txt	helphelp.txt	/*plugin_name.txt*
 pmbcs-option	print.txt	/*pmbcs-option*
 pmbfn-option	print.txt	/*pmbfn-option*
@@ -9208,6 +9226,7 @@ print-intro	print.txt	/*print-intro*
 print-options	print.txt	/*print-options*
 print.txt	print.txt	/*print.txt*
 printf()	builtin.txt	/*printf()*
+printf-$	builtin.txt	/*printf-$*
 printf-%	builtin.txt	/*printf-%*
 printf-B	builtin.txt	/*printf-B*
 printf-E	builtin.txt	/*printf-E*
@@ -10324,15 +10343,20 @@ termdebug-communication	terminal.txt	/*t
 termdebug-customizing	terminal.txt	/*termdebug-customizing*
 termdebug-events	terminal.txt	/*termdebug-events*
 termdebug-example	terminal.txt	/*termdebug-example*
+termdebug-frames	terminal.txt	/*termdebug-frames*
 termdebug-prompt	terminal.txt	/*termdebug-prompt*
 termdebug-starting	terminal.txt	/*termdebug-starting*
 termdebug-stepping	terminal.txt	/*termdebug-stepping*
 termdebug-variables	terminal.txt	/*termdebug-variables*
 termdebug_disasm_window	terminal.txt	/*termdebug_disasm_window*
 termdebug_map_K	terminal.txt	/*termdebug_map_K*
+termdebug_map_minus	terminal.txt	/*termdebug_map_minus*
+termdebug_map_plus	terminal.txt	/*termdebug_map_plus*
 termdebug_popup	terminal.txt	/*termdebug_popup*
 termdebug_shortcuts	terminal.txt	/*termdebug_shortcuts*
+termdebug_signs	terminal.txt	/*termdebug_signs*
 termdebug_use_prompt	terminal.txt	/*termdebug_use_prompt*
+termdebug_variables_window	terminal.txt	/*termdebug_variables_window*
 termdebug_wide	terminal.txt	/*termdebug_wide*
 termdebug_winbar	terminal.txt	/*termdebug_winbar*
 terminal	terminal.txt	/*terminal*
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -1,4 +1,4 @@
-*terminal.txt*	For Vim version 9.0.  Last change: 2023 Jun 28
+*terminal.txt*	For Vim version 9.0.  Last change: 2023 Aug 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -38,6 +38,7 @@ 6. Debugging				|terminal-debug|
       Example session				|termdebug-example|
       Stepping through code			|termdebug-stepping|
       Inspecting variables			|termdebug-variables|
+      Navigating stack frames			|termdebug-frames|
       Other commands				|termdebug-commands|
       Events					|termdebug-events|
       Prompt mode				|termdebug-prompt|
@@ -1376,6 +1377,18 @@ This is similar to using "print" in the 
 You can usually shorten `:Evaluate` to `:Ev`.
 
 
+Navigating stack frames ~
+				*termdebug-frames* *:Frame* *:Up* *:Down*
+ `:Frame` [frame]	select frame [frame], which is a frame number,
+			address, or function name (default: current frame)
+ `:Up` [count]		go up [count] frames (default: 1; the frame that
+			called the current)
+ `+`			same (see |termdebug_map_plus| to disable)
+ `:Down` [count]	go down [count] frames (default: 1; the frame called
+			by the current)
+ `-`			same (see |termdebug_map_minus| to disable)
+
+
 Other commands ~
 							*termdebug-commands*
  *:Gdb*	     jump to the gdb window
@@ -1449,11 +1462,19 @@ If there is no g:termdebug_config you ca
 	let g:termdebug_use_prompt = 1
 <
 						*termdebug_map_K*
-The K key is normally mapped to :Evaluate. If you do not want this use: >
+The K key is normally mapped to |:Evaluate|. If you do not want this use: >
 	let g:termdebug_config['map_K'] = 0
 If there is no g:termdebug_config you can use: >
 	let g:termdebug_map_K = 0
 <
+						*termdebug_map_minus*
+The - key is normally mapped to |:Down|. If you do not want this use: >
+	let g:termdebug_config['map_minus'] = 0
+<
+						*termdebug_map_plus*
+The + key is normally mapped to |:Up|. If you do not want this use: >
+	let g:termdebug_config['map_plus'] = 0
+<
 						*termdebug_disasm_window*
 If you want the Asm window shown by default, set the "disasm_window" flag to
 1.  The "disasm_window_height" entry can be used to set the window height: >
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -61,8 +61,6 @@ without all the help files.
 SpellCap highlight not updated - PR #12428
 
 Virtual text problems:
--  Deleting character before a wrapping virtual text, causes for the following
-   lines to dissapear (Issue #12244)
 -  If 'list' is on, 'below' virtual text which includes 1 or 2 characters are
    gone (Issue #12028)
 -  Virtual text aligned "above": Wrong indentation when using tabs  (Issue
@@ -75,14 +73,6 @@ Virtual text problems:
    'below' on an empty line (Issue #11959)
 -  truncated Virtual text below an empty line causes display error #12493
 
-include #12403: window for Termdebug showing local variables
-
-include #12140: positional arguments in printf(), fixes #10577
-
-Include #11818: attach custom data to quickfix items.
-
-Include #12292: buffer argument for undotree()?
-
 When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be
 highlighted. (van-de-bugger, 2018 Jan 23, #2576)
 
@@ -131,7 +121,7 @@ Upcoming larger works:
 
 
 Further Vim9 improvements, possibly after launch:
-- implement :class and :interface: See |vim9-classes
+- Classes and Interfaces. See |vim9-classes|
   - Change access: public by default, private by prefixing "_".
 	Check for error: can't have same name twice (ignoring "_" prefix).
   - Private methods?
@@ -139,25 +129,19 @@ Further Vim9 improvements, possibly afte
 	    or: def _Func()
     Perhaps use "private" keyword instead of "_" prefix?
   - "final" object members - can only be set in the constructor.
+  - Support export/import of classes and interfaces.
   - Cannot use class type of itself in the method (Issue #12369)
   - Cannot use an object method in a lambda  #12417
 	Define all methods before compiling them?
-  - class members initialized during definition (Issue #12041)
   - Cannot call class member of funcref type  (Issue #12324)
 	Also #12081 first case.
   - Using list of functions does not work #12081 (repro in later message).
-  - Weird `class X not found on interface X` error (Issue #12023)
   - First argument of call() cannot be "obj.Func". (#11865)
-  - "return this" required for early return from constructor (inconsistent)
-    (Issue #12040)
-  - class/method confusion inside ":def" when using "class extends" (Issue
-    #12089)
   - null_object - constant type 17 not supported (Issue #12043)
   - problem compiling object method call as function call argument (Issue
     #12081)
   - Make ":defcompile ClassName" compile all functions and methods in the
     class.
-  - object's method in stacktrace missing information (Issue #12078)
   - Forward declaration of a class?  E.g. for Clone() function.
 	email lifepillar 2023 Mar 26
   - Getting member of variable with "any" type should be handled at runtime.
@@ -180,7 +164,7 @@ Further Vim9 improvements, possibly afte
   - For chaining, allow using the class name as type for function return
     value.
   - Implement generics
-  - Add "instanceof" (exact class name).  And "assignable" (class or child)?
+  - Add "assignable" (class or child)?
   - More efficient way for interface member index than iterating over list?
   - a variant of type() that returns a different type for each class?
       list<number> and list<string> should also differ.
@@ -3552,8 +3536,6 @@ 8   When dragging status line with mouse
 8   Dragging the status line doesn't scroll but redraw.
 8   When performing incremental search, should abort searching as soon as a
     character is typed.
-8   When the value of $MAKE contains a path, configure can't handle this.
-    It's an autoconf bug.  Remove the path from $MAKE to work around it.
 8   How to set VIMRC_FILE to \"something\" for configure?  Why does this not
     work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure
 8   The temporary file is sometimes not writable.  Check for this, and use an
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -877,6 +877,7 @@ Other computation:					*bitwise-function
 	srand()			initialize seed used by rand()
 
 Variables:						*var-functions*
+	instanceof()		check if a variable is an instance of a given class
 	type()			type of a variable as a number
 	typename()		type of a variable as text
 	islocked()		check if a variable is locked
--- a/runtime/doc/vim-it.1
+++ b/runtime/doc/vim-it.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "22 febbraio 2002"
+.TH VIM 1 "13 giugno 2022"
 .SH NOME
 vim \- VI Migliorato, un editor di testi per programmatori
 .SH SINTASSI
@@ -35,17 +35,17 @@ Un editore di testi, compatibile con, e 
 Può essere usato per editare qualsiasi file di testo.
 Particolarmente utile per editare programmi.
 .PP
-Ci sono parecchi miglioramenti rispetto a Vi: undo multipli,
-finestre e buffer multipli, evidenziazione sintattica, possibilità
-di modificare la linea di comando, completamento nomi file, help
-in linea, selezione testi in Modo Visual, etc..
+Ci sono parecchi miglioramenti rispetto a Vi: undo multipli, finestre e buffer
+multipli, evidenziazione sintattica, possibilità di modificare la riga di comando,
+completamento nomi file, help in linea, selezione testi in Modo Visual, etc..
 Vedere ":help vi_diff.txt" per un sommario delle differenze fra
 .B Vim
 e Vi.
 .PP
 Mentre usate
 .B Vim
-potete ricevere molto aiuto dal sistema di help online, col comando ":help".
+potete ricevere molto aiuto dal sistema di help online, col comando
+":help".
 Vedere qui sotto la sezione AIUTO ONLINE.
 .PP
 Quasi sempre
@@ -69,18 +69,16 @@ Una lista di nomi di file.
 Il primo di questi sarà il file corrente, e verrà letto nel buffer.
 Il cursore sarà posizionato sulla prima linea del buffer.
 Potete arrivare agli altri file col comando ":next".
-Per editare un file il cui nome inizia per "\-" premettete "\-\-" alla
-lista_file.
+Per editare un file il cui nome inizia per "\-" premettete "\-\-" alla lista_file.
 .TP
 \-
-Il file da editare è letto dallo "stdin" [di solito, ma non
-necessariamente, il terminale \- NdT].  I comandi sono letti da "stderr",
-che dovrebbe essere un terminale [tty].
+Il file da editare è letto dallo "stdin"-
+I comandi sono letti da "stderr", che dovrebbe essere un terminale [tty].
 .TP
 \-t {tag}
 Il file da editare e la posizione iniziale del cursore dipendono da "tag",
 una specie di "etichetta" a cui saltare.
-{tag} viene cercata nel file "tags", ed il file ad essa associato diventa
+{tag} viene cercata nel file "tags", e il file a essa associato diventa
 quello corrente, ed il comando ad essa associato viene eseguito.
 Di solito si usa per programmi C, nel qual caso {tag} potrebbe essere un
 nome di funzione.
@@ -129,9 +127,8 @@ della shell o sospendere
 .B Vim.
 Si può chiedere la stessa cosa anche con l'argomento "\-Z".
 .SH OPZIONI
-Le opzioni possono essere in un ordine qualsiasi, prima o dopo i nomi di
-file.  Opzioni che non necessitano un argomento possono essere specificate
-dietro a un solo "\-".
+Le opzioni possono essere in un ordine qualsiasi, prima o dopo i nomi di file.
+Opzioni che non hanno un argomento si possono specificare dietro a un solo "\-".
 .TP 12
 +[numero]
 Per il primo file il cursore sarà posizionato sulla linea "numero".
@@ -145,8 +142,7 @@ Vedere ":help search\-pattern" per come 
 +{comando}
 .TP
 \-c {comando}
-{comando} sarà eseguito dopo che il
-primo file è stato letto.
+{comando} sarà eseguito dopo che il primo file è stato letto.
 {comando} è interpretato come un comando Ex.
 Se il {comando} contiene spazi deve essere incluso fra doppi apici
 (o altro delimitatore, a seconda della shell che si sta usando).
@@ -164,14 +160,13 @@ argomento specificato).
 \-\-cmd {comando}
 Come "\-c", ma il comando è eseguito PRIMA
 di eseguire qualsiasi file vimrc.
-Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi
-"\-c".
+Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c".
 .TP
 \-A
 Se
 .B Vim
-è stato compilato con supporto Arabic per editare file con orientamento
-destra-sinistra e tastiera con mappatura Araba, questa opzione inizia
+è stato compilato con supporto ARABIC per editare file con orientamento
+destra-sinistra e tastiera con mappatura araba, questa opzione inizia
 .B Vim
 in Modo Arabic, cioè impostando 'arabic'.
 Altrimenti viene dato un messaggio di errore e
@@ -187,8 +182,7 @@ binario o un programma eseguibile.
 Compatibile.  Imposta l'opzione 'compatible'.
 In questo modo
 .B Vim
-ha quasi lo stesso comportamento di Vi, anche in presenza di un file
-di configurazione .vimrc [proprio di Vim, vi usa .exrc \- Ndt].
+ha quasi lo stesso comportamento di Vi, anche in presenza di un file .vimrc.
 .TP
 \-d
 Inizia in Modo Diff [differenze].
@@ -274,7 +268,8 @@ termina in modo anormale.
 \-i {viminfo}
 Se è abilitato l'uso di un file viminfo, questa opzione indica il nome
 del file da usare invece di quello predefinito "~/.viminfo".
-Si può anche evitare l'uso di un file .viminfo, dando come nome "NONE".
+Si può anche evitare l'uso di un file .viminfo, dando come nome
+"NONE".
 .TP
 \-L
 Equivalente a \-r.
@@ -285,8 +280,8 @@ Imposta le opzioni 'lisp' e 'showmatch'.
 .TP
 \-m
 Inibisce modifica file.
-Annulla l'opzione 'write'.
-È ancora possibile modificare un buffer [in memoria \- Ndt], ma non scriverlo.
+Inibisce l'opzione 'write'.
+È ancora possibile modificare un buffer, ma non riscriverlo.
 .TP
 \-M
 Modifiche non permesse.  Le opzioni 'modifiable' e 'write' sono annullate,
@@ -318,19 +313,23 @@ Se N manca, apri una finestra per ciascu
 Apri N finestre, in verticale.
 Se N manca, apri una finestra per ciascun file.
 .TP
+\-p[N]
+Apri N pagine di linguette.
+Quando N è omesso, apri una pagine di linguette per ciascun file.
+.TP
 \-R
 Modo Read-only (Sola Lettura).
 Imposta l'opzione 'readonly'.
-Si può ancora modificare il buffer, ma siete protetti da una riscrittura
+Si può ancora modificare il buffer, ma il file è protetto da una riscrittura
 involontaria.
-Se volete davvero riscrivere il file, aggiungete un punto esclamativo
+Se si vuole davvero riscrivere il file, occorre aggiungere un punto esclamativo
 al comando Ex, come in ":w!".
 L'opzione \-R implica anche l'opzione \-n (vedere sotto).
 L'opzione 'readonly' può essere annullata con ":set noro".
 Vedere ":help 'readonly'".
 .TP
 \-r
-Lista file di swap, assieme a dati utili per un recupero.
+Lista file di swap, e informazioni su come usarli per ripristinare file.
 .TP
 \-r {file}
 Modo Recovery (ripristino).
@@ -345,10 +344,10 @@ Modo silenzioso.  Solo quando invocato c
 .TP
 \-s {scriptin}
 Lo script file {scriptin} è letto.
-I caratteri nel file sono interpretati come se immessi da voi.
-Lo stesso si può ottenere col comando ":source! {scriptin}".
+I caratteri nel file sono interpretati come se immessi da terminale.
+Lo stesso risultato si può ottenere col comando ":source! {scriptin}".
 Se la fine del file di input viene raggiunta prima che Vim termini,
-l'ulteriore input viene preso dalla tastiera.
+l'ulteriore input verrà preso dalla tastiera.
 .TP
 \-T {terminale}
 Dice a
@@ -357,28 +356,25 @@ quale tipo di terminale state usando.
 Utile solo se il terminale non viene riconosciuto correttamente da Vim.
 Dovrebbe essere un terminale noto a
 .B Vim
-(internamente) o definito nel file termcap o terminfo.
+(internamente) o definito nei file termcap o terminfo.
 .TP
 \-u {vimrc}
 Usa i comandi nel file {vimrc} per inizializzazioni.
 Tutte le altre inizializzazioni non sono eseguite.
 Usate questa opzione per editare qualche file di tipo speciale.
-Può anche essere usato per non fare alcuna inizializzazione dando
-come nome "NONE".
+Si possono anche omettere tutte le inizializzazioni dando come nome "NONE".
 Vedere ":help initialization" da vim per ulteriori dettagli.
 .TP
 \-U {gvimrc}
 Usa i comandi nel file {gvimrc} per inizializzazioni GUI.
 Tutte le altre inizializzazioni GUI non sono eseguite.
-Può anche essere usata per non fare alcuna inizializzazione GUI dando
-come nome "NONE".
+Si possono anche omettere tutte le inizializzazioni GUI dando come nome "NONE".
 Vedere ":help gui-init" da vim per ulteriori dettagli.
 .TP
 \-V[N]
-Verboso.  Vim manda messaggi relativi agli script file che esegue
+Verboso.  Vim manda messaggi relativi ai file di script che esegue
 e quando legge o scrive un file viminfo.  Il numero opzionale N è il valore
-dell'opzione 'verbose'.
-Il valore predefinito è 10.
+dell'opzione 'verbose'.  Il valore predefinito è 10.
 .TP
 \-v
 Inizia
@@ -388,7 +384,7 @@ effetto solo quando Vim viene invocato c
 .TP
 \-w {scriptout}
 Ogni carattere immesso viene registrato nel file {scriptout},
-finché non uscite da
+finché non si esce da
 .B Vim.
 Utile se si vuole creare uno script file da usare con "vim \-s" o
 ":source!".
@@ -398,40 +394,41 @@ Se il file {scriptout} esiste, quel che 
 Come \-w, ma uno script file esistente viene sovrascritto.
 .TP
 \-x
-Uso di cifratura nella scrittura dei file.  E' necessario immettere
-una chiave di cifratura.
+Uso di cifratura nella scrittura dei file.  Verrà chiesta una chiave di cifratura.
 .TP
 \-X
-Non connetterti al server X.  Vim parte più rapidamente,
-ma il titolo della finestra e la clipboard non sono disponibili.
+Non connettersi al server X.  Vim parte più rapidamente,
+ma il titolo della finestra e la clipboard non sono usati.
 .TP
 \-y
 Eseguire
 .B Vim
-in Modo Easy (semplificata), come se l'eseguibile invocato
-sia "evim" o "eview".
+in Modo Easy (semplificato), come se l'eseguibile invocato sia "evim" o "eview".
 Fa sì che
 .B Vim
 si comporti come un editor che usa solo il mouse e i caratteri.
 .TP
 \-Z
-Modo ristretto.  Vim si comporta come se invocato con un nome
-che inizia per "r".
+Modo ristretto.  Vim si comporta come se invocato con un nome che inizia per "r".
 .TP
 \-\-
 Specifica la fine delle opzioni.
 Argomenti specificati dopo questo sono considerati nomi file.
 Si può usare per editare un file il cui nome inizi per '-'.
 .TP
+\-\-clean
+Richiede di non usare alcun file di personalizzazione (vimrc, plugin, etc.).
+Utile per verificare se un problema persiste invocando Vim "originale".
+.TP
 \-\-echo\-wid
-Solo con GUI GTK: Visualizza Window ID su "stdout".
+Solo per GUI GTK: Visualizza Window ID su "stdout".
 .TP
 \-\-help
 Vim dà un messaggio ed esce, come con l'argomento "\-h".
 .TP
 \-\-literal
-Considera i nomi passati come argomenti letterali, senza espandere
-metacaratteri.  Non necessario in Unix, la shell espande i metacaratteri.
+Considera i nomi passati come argomenti letterali, senza espandere metacaratteri.
+Non ha effetto in Unix, dove la shell espande comunque i metacaratteri.
 .TP
 \-\-noplugin
 Non caricare plugin.  Implicito se si specifica \-u NONE.
@@ -442,8 +439,7 @@ argomenti.  Se non si trova un server vi
 editati nel Vim corrente.
 .TP
 \-\-remote\-expr {expr}
-Connettersi a un server Vim, valutare ivi {expr} e stampare il risultato
-su "stdout".
+Connettersi a un server Vim, valutare {expr} e stampare il risultato su "stdout".
 .TP
 \-\-remote\-send {chiavi}
 Connettersi a un server Vim e spedirgli {chiavi}.
@@ -458,16 +454,17 @@ Come \-\-remote, ma Vim non termina finché i file non sono stati editati.
 Come \-\-remote\-wait, ma senza avvisare se non si trova un server.
 .TP
 \-\-serverlist
-Lista i nomi di tutti i server Vim disponibili.
+Elenca i nomi di tutti i server Vim disponibili.
 .TP
 \-\-servername {nome}
-Usa {nome} come nome server.  Usato per il Vim corrente, a meno che sia
-usato con l'argomento \-\-remote, nel qual caso indica il server a cui
-connettersi.
+Usa {nome} come nome server.  Usato per il Vim corrente, a meno che sia usato
+con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi.
 .TP
 \-\-socketid {id}
-Solo con GUI GTK: Usa il meccanismo GtkPlug per eseguire gvim in un'altra
-finestra.
+Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gvim in un'altra finestra.
+.TP
+\-\-startuptime {nome_file}
+Durante la fase iniziale, scrive messaggi di log al file {nome_file}.
 .TP
 \-\-version
 Stampa la versione di Vim ed esci.
@@ -477,9 +474,8 @@ Battere ":help" in
 per iniziare.
 Battere ":help argomento" per ricevere aiuto su uno specifico argomento.
 Per esempio: ":help ZZ" per ricevere aiuto sul comando "ZZ".
-Usare <Tab> e CTRL\-D per completare gli argomenti
-(":help cmdline\-completion").
-Ci sono "tag" nei file di help per saltare da un argomento a un altro
+Usare <Tab> e CTRL\-D per completare gli argomenti (":help cmdline\-completion").
+Ci sono "tag" nei file di help per passare da un argomento a un altro
 (simili a legami ipertestuali, vedere ":help").
 Tutti i file di documentazione possono essere navigati così.  Ad es.:
 ":help syntax.txt".
@@ -489,7 +485,7 @@ Tutti i file di documentazione possono essere navigati così.  Ad es.:
 I file di documentazione di
 .B Vim
 .
-Usate ":help doc\-file\-list" per avere la lista completa.
+Usare ":help doc\-file\-list" per avere la lista completa.
 .TP
 /usr/local/lib/vim/doc/tags
 Il file di tags usato per trovare informazioni nei file di documentazione.
@@ -506,7 +502,7 @@ Inizializzazioni
 a livello di sistema.
 .TP
 ~/.vimrc
-Le vostre personali inizializzazioni di
+Inizializzazioni personali di
 .B Vim
 .
 .TP
@@ -514,11 +510,10 @@ Le vostre personali inizializzazioni di
 Inizializzazioni gvim a livello di sistema.
 .TP
 ~/.gvimrc
-Le vostre personali inizializzazioni di gvim.
+Inizializzazioni personali di
 .TP
 /usr/local/lib/vim/optwin.vim
-Script Vim usato dal comando ":options", un modo semplice
-per visualizzare e impostare opzioni.
+Script Vim usato dal comando ":options", da usare per visualizzare e impostare opzioni.
 .TP
 /usr/local/lib/vim/menu.vim
 Inizializzazioni del menù gvim a livello di sistema.
@@ -527,12 +522,10 @@ Inizializzazioni del menù gvim a livello di sistema.
 Script Vim per generare una segnalazione di errore.  Vedere ":help bugs".
 .TP
 /usr/local/lib/vim/filetype.vim
-Script Vim per determinare il tipo di un file a partire dal suo nome.
-Vedere ":help 'filetype'".
+Script Vim per determinare il tipo di un file dal suo nome. Vedere ":help 'filetype'".
 .TP
 /usr/local/lib/vim/scripts.vim
-Script Vim per determinare il tipo di un file a partire dal suo contenuto.
-Vedere ":help 'filetype'".
+Script Vim per determinare il tipo di un file dal suo contenuto. Vedere ":help 'filetype'".
 .TP
 /usr/local/lib/vim/print/*.ps
 File usati per stampa PostScript.
@@ -545,7 +538,7 @@ vimtutor(1)
 .SH AUTORE
 Buona parte di
 .B Vim
-è stato scritto da Bram Moolenaar, con molto aiuto da altri.
+è stato scritto da Bram Moolenaar, con molto aiuto da parte di altri.
 Vedere ":help credits" in
 .B Vim.
 .br
@@ -557,10 +550,9 @@ In verità, poco o nulla è rimasto del loro codice originale.
 Probabili.
 Vedere ":help todo" per una lista di problemi noti.
 .PP
-Si noti che un certo numero di comportamenti che possono essere considerati
-errori da qualcuno, sono in effetti causati da una riproduzione fin troppo
-fedele del comportamento di Vi.
-Se ritenete che altre cose siano errori "perché Vi si comporta diversamente",
-date prima un'occhiata al file vi_diff.txt
-(o battere :help vi_diff.txt da Vim).
-Date anche un'occhiata alle opzioni 'compatible' e 'cpoptions.
+Si noti che un certo numero di comportamenti che possono essere considerati errori
+da qualcuno, sono in effetti causati da una riproduzione fin troppo fedele del
+comportamento di Vi. Se si ritiene che altre cose siano errori "perché Vi si comporta
+diversamente", si dia prima un'occhiata al file vi_diff.txt (o si immetta
+:help vi_diff.txt da Vim).
+Un'occhiata va data anche alle opzioni 'compatible' e 'cpoptions.
--- a/runtime/doc/vim-it.UTF-8.1
+++ b/runtime/doc/vim-it.UTF-8.1
@@ -1,4 +1,4 @@
-.TH VIM 1 "22 febbraio 2002"
+.TH VIM 1 "13 giugno 2022"
 .SH NOME
 vim \- VI Migliorato, un editor di testi per programmatori
 .SH SINTASSI
@@ -35,17 +35,17 @@ Un editore di testi, compatibile con, e 
 Può essere usato per editare qualsiasi file di testo.
 Particolarmente utile per editare programmi.
 .PP
-Ci sono parecchi miglioramenti rispetto a Vi: undo multipli,
-finestre e buffer multipli, evidenziazione sintattica, possibilità
-di modificare la linea di comando, completamento nomi file, help
-in linea, selezione testi in Modo Visual, etc..
+Ci sono parecchi miglioramenti rispetto a Vi: undo multipli, finestre e buffer
+multipli, evidenziazione sintattica, possibilità di modificare la riga di comando,
+completamento nomi file, help in linea, selezione testi in Modo Visual, etc..
 Vedere ":help vi_diff.txt" per un sommario delle differenze fra
 .B Vim
 e Vi.
 .PP
 Mentre usate
 .B Vim
-potete ricevere molto aiuto dal sistema di help online, col comando ":help".
+potete ricevere molto aiuto dal sistema di help online, col comando
+":help".
 Vedere qui sotto la sezione AIUTO ONLINE.
 .PP
 Quasi sempre
@@ -69,18 +69,16 @@ Una lista di nomi di file.
 Il primo di questi sarà il file corrente, e verrà letto nel buffer.
 Il cursore sarà posizionato sulla prima linea del buffer.
 Potete arrivare agli altri file col comando ":next".
-Per editare un file il cui nome inizia per "\-" premettete "\-\-" alla
-lista_file.
+Per editare un file il cui nome inizia per "\-" premettete "\-\-" alla lista_file.
 .TP
 \-
-Il file da editare è letto dallo "stdin" [di solito, ma non
-necessariamente, il terminale \- NdT].  I comandi sono letti da "stderr",
-che dovrebbe essere un terminale [tty].
+Il file da editare è letto dallo "stdin"-
+I comandi sono letti da "stderr", che dovrebbe essere un terminale [tty].
 .TP
 \-t {tag}
 Il file da editare e la posizione iniziale del cursore dipendono da "tag",
 una specie di "etichetta" a cui saltare.
-{tag} viene cercata nel file "tags", ed il file ad essa associato diventa
+{tag} viene cercata nel file "tags", e il file a essa associato diventa
 quello corrente, ed il comando ad essa associato viene eseguito.
 Di solito si usa per programmi C, nel qual caso {tag} potrebbe essere un
 nome di funzione.
@@ -129,9 +127,8 @@ della shell o sospendere
 .B Vim.
 Si può chiedere la stessa cosa anche con l'argomento "\-Z".
 .SH OPZIONI
-Le opzioni possono essere in un ordine qualsiasi, prima o dopo i nomi di
-file.  Opzioni che non necessitano un argomento possono essere specificate
-dietro a un solo "\-".
+Le opzioni possono essere in un ordine qualsiasi, prima o dopo i nomi di file.
+Opzioni che non hanno un argomento si possono specificare dietro a un solo "\-".
 .TP 12
 +[numero]
 Per il primo file il cursore sarà posizionato sulla linea "numero".
@@ -145,8 +142,7 @@ Vedere ":help search\-pattern" per come 
 +{comando}
 .TP
 \-c {comando}
-{comando} sarà eseguito dopo che il
-primo file è stato letto.
+{comando} sarà eseguito dopo che il primo file è stato letto.
 {comando} è interpretato come un comando Ex.
 Se il {comando} contiene spazi deve essere incluso fra doppi apici
 (o altro delimitatore, a seconda della shell che si sta usando).
@@ -164,14 +160,13 @@ argomento specificato).
 \-\-cmd {comando}
 Come "\-c", ma il comando è eseguito PRIMA
 di eseguire qualsiasi file vimrc.
-Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi
-"\-c".
+Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c".
 .TP
 \-A
 Se
 .B Vim
-è stato compilato con supporto Arabic per editare file con orientamento
-destra-sinistra e tastiera con mappatura Araba, questa opzione inizia
+è stato compilato con supporto ARABIC per editare file con orientamento
+destra-sinistra e tastiera con mappatura araba, questa opzione inizia
 .B Vim
 in Modo Arabic, cioè impostando 'arabic'.
 Altrimenti viene dato un messaggio di errore e
@@ -187,8 +182,7 @@ binario o un programma eseguibile.
 Compatibile.  Imposta l'opzione 'compatible'.
 In questo modo
 .B Vim
-ha quasi lo stesso comportamento di Vi, anche in presenza di un file
-di configurazione .vimrc [proprio di Vim, vi usa .exrc \- Ndt].
+ha quasi lo stesso comportamento di Vi, anche in presenza di un file .vimrc.
 .TP
 \-d
 Inizia in Modo Diff [differenze].
@@ -274,7 +268,8 @@ termina in modo anormale.
 \-i {viminfo}
 Se è abilitato l'uso di un file viminfo, questa opzione indica il nome
 del file da usare invece di quello predefinito "~/.viminfo".
-Si può anche evitare l'uso di un file .viminfo, dando come nome "NONE".
+Si può anche evitare l'uso di un file .viminfo, dando come nome
+"NONE".
 .TP
 \-L
 Equivalente a \-r.
@@ -285,8 +280,8 @@ Imposta le opzioni 'lisp' e 'showmatch'.
 .TP
 \-m
 Inibisce modifica file.
-Annulla l'opzione 'write'.
-È ancora possibile modificare un buffer [in memoria \- Ndt], ma non scriverlo.
+Inibisce l'opzione 'write'.
+È ancora possibile modificare un buffer, ma non riscriverlo.
 .TP
 \-M
 Modifiche non permesse.  Le opzioni 'modifiable' e 'write' sono annullate,
@@ -318,19 +313,23 @@ Se N manca, apri una finestra per ciascu
 Apri N finestre, in verticale.
 Se N manca, apri una finestra per ciascun file.
 .TP
+\-p[N]
+Apri N pagine di linguette.
+Quando N è omesso, apri una pagine di linguette per ciascun file.
+.TP
 \-R
 Modo Read-only (Sola Lettura).
 Imposta l'opzione 'readonly'.
-Si può ancora modificare il buffer, ma siete protetti da una riscrittura
+Si può ancora modificare il buffer, ma il file è protetto da una riscrittura
 involontaria.
-Se volete davvero riscrivere il file, aggiungete un punto esclamativo
+Se si vuole davvero riscrivere il file, occorre aggiungere un punto esclamativo
 al comando Ex, come in ":w!".
 L'opzione \-R implica anche l'opzione \-n (vedere sotto).
 L'opzione 'readonly' può essere annullata con ":set noro".
 Vedere ":help 'readonly'".
 .TP
 \-r
-Lista file di swap, assieme a dati utili per un recupero.
+Lista file di swap, e informazioni su come usarli per ripristinare file.
 .TP
 \-r {file}
 Modo Recovery (ripristino).
@@ -345,10 +344,10 @@ Modo silenzioso.  Solo quando invocato c
 .TP
 \-s {scriptin}
 Lo script file {scriptin} è letto.
-I caratteri nel file sono interpretati come se immessi da voi.
-Lo stesso si può ottenere col comando ":source! {scriptin}".
+I caratteri nel file sono interpretati come se immessi da terminale.
+Lo stesso risultato si può ottenere col comando ":source! {scriptin}".
 Se la fine del file di input viene raggiunta prima che Vim termini,
-l'ulteriore input viene preso dalla tastiera.
+l'ulteriore input verrà preso dalla tastiera.
 .TP
 \-T {terminale}
 Dice a
@@ -357,28 +356,25 @@ quale tipo di terminale state usando.
 Utile solo se il terminale non viene riconosciuto correttamente da Vim.
 Dovrebbe essere un terminale noto a
 .B Vim
-(internamente) o definito nel file termcap o terminfo.
+(internamente) o definito nei file termcap o terminfo.
 .TP
 \-u {vimrc}
 Usa i comandi nel file {vimrc} per inizializzazioni.
 Tutte le altre inizializzazioni non sono eseguite.
 Usate questa opzione per editare qualche file di tipo speciale.
-Può anche essere usato per non fare alcuna inizializzazione dando
-come nome "NONE".
+Si possono anche omettere tutte le inizializzazioni dando come nome "NONE".
 Vedere ":help initialization" da vim per ulteriori dettagli.
 .TP
 \-U {gvimrc}
 Usa i comandi nel file {gvimrc} per inizializzazioni GUI.
 Tutte le altre inizializzazioni GUI non sono eseguite.
-Può anche essere usata per non fare alcuna inizializzazione GUI dando
-come nome "NONE".
+Si possono anche omettere tutte le inizializzazioni GUI dando come nome "NONE".
 Vedere ":help gui-init" da vim per ulteriori dettagli.
 .TP
 \-V[N]
-Verboso.  Vim manda messaggi relativi agli script file che esegue
+Verboso.  Vim manda messaggi relativi ai file di script che esegue
 e quando legge o scrive un file viminfo.  Il numero opzionale N è il valore
-dell'opzione 'verbose'.
-Il valore predefinito è 10.
+dell'opzione 'verbose'.  Il valore predefinito è 10.
 .TP
 \-v
 Inizia
@@ -388,7 +384,7 @@ effetto solo quando Vim viene invocato c
 .TP
 \-w {scriptout}
 Ogni carattere immesso viene registrato nel file {scriptout},
-finché non uscite da
+finché non si esce da
 .B Vim.
 Utile se si vuole creare uno script file da usare con "vim \-s" o
 ":source!".
@@ -398,40 +394,41 @@ Se il file {scriptout} esiste, quel che 
 Come \-w, ma uno script file esistente viene sovrascritto.
 .TP
 \-x
-Uso di cifratura nella scrittura dei file.  E' necessario immettere
-una chiave di cifratura.
+Uso di cifratura nella scrittura dei file.  Verrà chiesta una chiave di cifratura.
 .TP
 \-X
-Non connetterti al server X.  Vim parte più rapidamente,
-ma il titolo della finestra e la clipboard non sono disponibili.
+Non connettersi al server X.  Vim parte più rapidamente,
+ma il titolo della finestra e la clipboard non sono usati.
 .TP
 \-y
 Eseguire
 .B Vim
-in Modo Easy (semplificata), come se l'eseguibile invocato
-sia "evim" o "eview".
+in Modo Easy (semplificato), come se l'eseguibile invocato sia "evim" o "eview".
 Fa sì che
 .B Vim
 si comporti come un editor che usa solo il mouse e i caratteri.
 .TP
 \-Z
-Modo ristretto.  Vim si comporta come se invocato con un nome
-che inizia per "r".
+Modo ristretto.  Vim si comporta come se invocato con un nome che inizia per "r".
 .TP
 \-\-
 Specifica la fine delle opzioni.
 Argomenti specificati dopo questo sono considerati nomi file.
 Si può usare per editare un file il cui nome inizi per '-'.
 .TP
+\-\-clean
+Richiede di non usare alcun file di personalizzazione (vimrc, plugin, etc.).
+Utile per verificare se un problema persiste invocando Vim "originale".
+.TP
 \-\-echo\-wid
-Solo con GUI GTK: Visualizza Window ID su "stdout".
+Solo per GUI GTK: Visualizza Window ID su "stdout".
 .TP
 \-\-help
 Vim dà un messaggio ed esce, come con l'argomento "\-h".
 .TP
 \-\-literal
-Considera i nomi passati come argomenti letterali, senza espandere
-metacaratteri.  Non necessario in Unix, la shell espande i metacaratteri.
+Considera i nomi passati come argomenti letterali, senza espandere metacaratteri.
+Non ha effetto in Unix, dove la shell espande comunque i metacaratteri.
 .TP
 \-\-noplugin
 Non caricare plugin.  Implicito se si specifica \-u NONE.
@@ -442,8 +439,7 @@ argomenti.  Se non si trova un server vi
 editati nel Vim corrente.
 .TP
 \-\-remote\-expr {expr}
-Connettersi a un server Vim, valutare ivi {expr} e stampare il risultato
-su "stdout".
+Connettersi a un server Vim, valutare {expr} e stampare il risultato su "stdout".
 .TP
 \-\-remote\-send {chiavi}
 Connettersi a un server Vim e spedirgli {chiavi}.
@@ -458,16 +454,17 @@ Come \-\-remote, ma Vim non termina finché i file non sono stati editati.
 Come \-\-remote\-wait, ma senza avvisare se non si trova un server.
 .TP
 \-\-serverlist
-Lista i nomi di tutti i server Vim disponibili.
+Elenca i nomi di tutti i server Vim disponibili.
 .TP
 \-\-servername {nome}
-Usa {nome} come nome server.  Usato per il Vim corrente, a meno che sia
-usato con l'argomento \-\-remote, nel qual caso indica il server a cui
-connettersi.
+Usa {nome} come nome server.  Usato per il Vim corrente, a meno che sia usato
+con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi.
 .TP
 \-\-socketid {id}
-Solo con GUI GTK: Usa il meccanismo GtkPlug per eseguire gvim in un'altra
-finestra.
+Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gvim in un'altra finestra.
+.TP
+\-\-startuptime {nome_file}
+Durante la fase iniziale, scrive messaggi di log al file {nome_file}.
 .TP
 \-\-version
 Stampa la versione di Vim ed esci.
@@ -477,9 +474,8 @@ Battere ":help" in
 per iniziare.
 Battere ":help argomento" per ricevere aiuto su uno specifico argomento.
 Per esempio: ":help ZZ" per ricevere aiuto sul comando "ZZ".
-Usare <Tab> e CTRL\-D per completare gli argomenti
-(":help cmdline\-completion").
-Ci sono "tag" nei file di help per saltare da un argomento a un altro
+Usare <Tab> e CTRL\-D per completare gli argomenti (":help cmdline\-completion").
+Ci sono "tag" nei file di help per passare da un argomento a un altro
 (simili a legami ipertestuali, vedere ":help").
 Tutti i file di documentazione possono essere navigati così.  Ad es.:
 ":help syntax.txt".
@@ -489,7 +485,7 @@ Tutti i file di documentazione possono essere navigati così.  Ad es.:
 I file di documentazione di
 .B Vim
 .
-Usate ":help doc\-file\-list" per avere la lista completa.
+Usare ":help doc\-file\-list" per avere la lista completa.
 .TP
 /usr/local/lib/vim/doc/tags
 Il file di tags usato per trovare informazioni nei file di documentazione.
@@ -506,7 +502,7 @@ Inizializzazioni
 a livello di sistema.
 .TP
 ~/.vimrc
-Le vostre personali inizializzazioni di
+Inizializzazioni personali di
 .B Vim
 .
 .TP
@@ -514,11 +510,10 @@ Le vostre personali inizializzazioni di
 Inizializzazioni gvim a livello di sistema.
 .TP
 ~/.gvimrc
-Le vostre personali inizializzazioni di gvim.
+Inizializzazioni personali di
 .TP
 /usr/local/lib/vim/optwin.vim
-Script Vim usato dal comando ":options", un modo semplice
-per visualizzare e impostare opzioni.
+Script Vim usato dal comando ":options", da usare per visualizzare e impostare opzioni.
 .TP
 /usr/local/lib/vim/menu.vim
 Inizializzazioni del menù gvim a livello di sistema.
@@ -527,12 +522,10 @@ Inizializzazioni del menù gvim a livello di sistema.
 Script Vim per generare una segnalazione di errore.  Vedere ":help bugs".
 .TP
 /usr/local/lib/vim/filetype.vim
-Script Vim per determinare il tipo di un file a partire dal suo nome.
-Vedere ":help 'filetype'".
+Script Vim per determinare il tipo di un file dal suo nome. Vedere ":help 'filetype'".
 .TP
 /usr/local/lib/vim/scripts.vim
-Script Vim per determinare il tipo di un file a partire dal suo contenuto.
-Vedere ":help 'filetype'".
+Script Vim per determinare il tipo di un file dal suo contenuto. Vedere ":help 'filetype'".
 .TP
 /usr/local/lib/vim/print/*.ps
 File usati per stampa PostScript.
@@ -545,7 +538,7 @@ vimtutor(1)
 .SH AUTORE
 Buona parte di
 .B Vim
-è stato scritto da Bram Moolenaar, con molto aiuto da altri.
+è stato scritto da Bram Moolenaar, con molto aiuto da parte di altri.
 Vedere ":help credits" in
 .B Vim.
 .br
@@ -557,10 +550,9 @@ In verità, poco o nulla è rimasto del loro codice originale.
 Probabili.
 Vedere ":help todo" per una lista di problemi noti.
 .PP
-Si noti che un certo numero di comportamenti che possono essere considerati
-errori da qualcuno, sono in effetti causati da una riproduzione fin troppo
-fedele del comportamento di Vi.
-Se ritenete che altre cose siano errori "perché Vi si comporta diversamente",
-date prima un'occhiata al file vi_diff.txt
-(o battere :help vi_diff.txt da Vim).
-Date anche un'occhiata alle opzioni 'compatible' e 'cpoptions.
+Si noti che un certo numero di comportamenti che possono essere considerati errori
+da qualcuno, sono in effetti causati da una riproduzione fin troppo fedele del
+comportamento di Vi. Se si ritiene che altre cose siano errori "perché Vi si comporta
+diversamente", si dia prima un'occhiata al file vi_diff.txt (o si immetta
+:help vi_diff.txt da Vim).
+Un'occhiata va data anche alle opzioni 'compatible' e 'cpoptions.
--- a/runtime/doc/vim9.txt
+++ b/runtime/doc/vim9.txt
@@ -1033,10 +1033,12 @@ In Vim9 script one can use the following
 	null
 	null_blob
 	null_channel
+	null_class
 	null_dict
 	null_function
 	null_job
 	null_list
+	null_object
 	null_partial
 	null_string
 `true` is the same as `v:true`, `false` the same as `v:false`, `null` the same
--- a/runtime/doc/vim9class.txt
+++ b/runtime/doc/vim9class.txt
@@ -178,6 +178,26 @@ number to the total number of lines: >
 	enddef
 
 
+Private methods ~
+If you want object methods to be accessible only from other methods of the
+same class and not used from outside the class, then you can make them
+private.  This is done by prefixing the method name with an underscore: >
+
+    class SomeClass
+	def _Foo(): number
+	  return 10
+	enddef
+	def Bar(): number
+	  return this._Foo()
+	enddef
+    endclass
+<
+Accessing a private method outside the class will result in an error (using
+the above class): >
+
+    var a = SomeClass.new()
+    a._Foo()
+<
 Simplifying the new() method ~
 
 Many constructors take values for the object members.  Thus you very often see
@@ -284,6 +304,22 @@ object members, they cannot use the "thi
 Inside the class the function can be called by name directly, outside the
 class the class name must be prefixed: `OtherThing.ClearTotalSize()`.
 
+Just like object methods the access can be made private by using an underscore
+as the first character in the method name: >
+
+    class OtherThing
+	static def _Foo()
+	    echo "Foo"
+	enddef
+	def Bar()
+	    OtherThing._Foo()
+	enddef
+    endclass
+<
+							*E1370*
+Note that constructors cannot be declared as "static", because they always
+are.
+
 ==============================================================================
 
 4.  Using an abstract class			*Vim9-abstract-class*
@@ -322,6 +358,16 @@ class, for which objects can be created.
 An abstract class is defined the same way as a normal class, except that it
 does not have any new() method. *E1359*
 
+						*abstract-method*
+An abstract method can be defined in an abstract class by using the "abstract"
+prefix when defining the function: >
+
+	abstract class Shape
+	   abstract def Draw()
+	endclass
+
+A class extending the abstract class must implement all the abstract methods.
+Class methods in an abstract class can also be abstract methods.
 
 ==============================================================================
 
--- a/runtime/doc/vimdiff-it.1
+++ b/runtime/doc/vimdiff-it.1
@@ -1,48 +1,46 @@
 .TH VIMDIFF 1 "30 marzo 2001"
 .SH NOME
-vimdiff \- modifica due, tre o quattro versioni di un file con Vim,
-visualizzando le differenze
+vimdiff \- modifica da due, fino a otto versioni di un file con Vim, visualizzando le differenze
 .SH SINTASSI
 .br
 .B vimdiff
-[opzioni] file1 file2 [file3 [file4]]
+[opzioni] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]]
 .PP
 .B gvimdiff
 .SH DESCRIZIONE
 .B Vimdiff
 inizia
 .B Vim
-per due (o tre o quattro) file.
+per due e fino a otto file.
 Ogni file ha una sua finestra.
 Le differenze fra file sono evidenziate.
-È una maniera elegante per controllare modifiche e portare modifiche
-verso un'altra versione dello stesso file.
+È una maniera elegante per controllare modifiche e applicare modifiche
+a qualche altra versione dello stesso file.
 .PP
-Vedere vim(1) per dettagli su Vim in generale.
+Vedere vim(1) per dettagli su Vim in sé.
 .PP
 Se iniziato con
 .B gvimdiff
 la GUI sarà utilizzata, se disponibile.
 .PP
-In ogni finestra l'opzione 'diff' è impostata, evidenziando così le
-differenze.
+In ogni finestra l'opzione 'diff' è impostata, in modo da evidenziare le
+differenze fra le versioni
 .br
-Le opzioni 'wrap' e 'scrollbind' sono impostate per migliorare la
-visibilità del testo.
+Le opzioni 'wrap' e 'scrollbind' sono impostate per favorire la visibilità del testo.
 .br
-L'opzione 'foldmethod' è impostata al valore "diff", che mette gruppi di
+L'opzione 'foldmethod' è impostata al valore "diff", che mette i gruppi di
 linee uguali fra i diversi file in una piegatura. 'foldcolumn' è impostato
 a due per poter facilmente visualizzare le piegature, aprirle e chiuderle.
 .SH OPZIONI
-Lo schermo è diviso verticalmente, come se aveste usato l'opzione "\-O".
-Per dividerlo orizzontalmente, usare l'opzione "\-o".
+Lo schermo è diviso verticalmente, come quando si usa l'opzione "\-O".
+Per dividerlo orizzontalmente, usare invece l'opzione "\-o".
 .PP
-Per tutte le altre opzioni, vedere vim(1).
+Per tutti gli altri argomenti, vedere vim(1).
 .SH VEDERE ANCHE
 vim(1)
 .SH AUTORE
 Buona parte di
 .B Vim
-è stato scritto da Bram Moolenaar, con molto aiuto da altri.
+è stato scritto da Bram Moolenaar, con molto aiuto da parte di altri.
 Vedere ":help credits" in
 .B Vim.
--- a/runtime/doc/vimdiff-it.UTF-8.1
+++ b/runtime/doc/vimdiff-it.UTF-8.1
@@ -1,48 +1,46 @@
 .TH VIMDIFF 1 "30 marzo 2001"
 .SH NOME
-vimdiff \- modifica due, tre o quattro versioni di un file con Vim,
-visualizzando le differenze
+vimdiff \- modifica da due, fino a otto versioni di un file con Vim, visualizzando le differenze
 .SH SINTASSI
 .br
 .B vimdiff
-[opzioni] file1 file2 [file3 [file4]]
+[opzioni] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]]
 .PP
 .B gvimdiff
 .SH DESCRIZIONE
 .B Vimdiff
 inizia
 .B Vim
-per due (o tre o quattro) file.
+per due e fino a otto file.
 Ogni file ha una sua finestra.
 Le differenze fra file sono evidenziate.
-È una maniera elegante per controllare modifiche e portare modifiche
-verso un'altra versione dello stesso file.
+È una maniera elegante per controllare modifiche e applicare modifiche
+a qualche altra versione dello stesso file.
 .PP
-Vedere vim(1) per dettagli su Vim in generale.
+Vedere vim(1) per dettagli su Vim in sé.
 .PP
 Se iniziato con
 .B gvimdiff
 la GUI sarà utilizzata, se disponibile.
 .PP
-In ogni finestra l'opzione 'diff' è impostata, evidenziando così le
-differenze.
+In ogni finestra l'opzione 'diff' è impostata, in modo da evidenziare le
+differenze fra le versioni
 .br
-Le opzioni 'wrap' e 'scrollbind' sono impostate per migliorare la
-visibilità del testo.
+Le opzioni 'wrap' e 'scrollbind' sono impostate per favorire la visibilità del testo.
 .br
-L'opzione 'foldmethod' è impostata al valore "diff", che mette gruppi di
+L'opzione 'foldmethod' è impostata al valore "diff", che mette i gruppi di
 linee uguali fra i diversi file in una piegatura. 'foldcolumn' è impostato
 a due per poter facilmente visualizzare le piegature, aprirle e chiuderle.
 .SH OPZIONI
-Lo schermo è diviso verticalmente, come se aveste usato l'opzione "\-O".
-Per dividerlo orizzontalmente, usare l'opzione "\-o".
+Lo schermo è diviso verticalmente, come quando si usa l'opzione "\-O".
+Per dividerlo orizzontalmente, usare invece l'opzione "\-o".
 .PP
-Per tutte le altre opzioni, vedere vim(1).
+Per tutti gli altri argomenti, vedere vim(1).
 .SH VEDERE ANCHE
 vim(1)
 .SH AUTORE
 Buona parte di
 .B Vim
-è stato scritto da Bram Moolenaar, con molto aiuto da altri.
+è stato scritto da Bram Moolenaar, con molto aiuto da parte di altri.
 Vedere ":help credits" in
 .B Vim.
--- a/runtime/doc/vimtutor-it.1
+++ b/runtime/doc/vimtutor-it.1
@@ -1,6 +1,6 @@
 .TH VIMTUTOR 1 "2 aprile 2001"
 .SH NOME
-vimtutor \- Un breve corso per imparare Vim
+vimtutor \- Un breve corso introduttivo a Vim
 .SH SINTASSI
 .br
 .B vimtutor [\-g] [lingua]
@@ -8,51 +8,50 @@ vimtutor \- Un breve corso per imparare 
 .B Vimtutor
 inizia il
 .B Vim
-tutor (una breve corso per imparare Vim).
-Per prima cosa viene creata una copia del file di lavoro, che può così essere
-modificato senza alterare il file usato come modello.
+tutor (un breve corso introduttivo a Vim).
+Viene utilizzata una copia del file di lavoro, che può così essere modificato
+a piacere senza alterare il file usato come modello.
 .PP
 Il comando
 .B Vimtutor
-è utile a chi voglia imparare i primi comandi
+è utile a chi voglia imparare i primi comandi di
 .B Vim
 .
 .PP
 L'argomento opzionale \-g inizia vimtutor usando gvim invece che vim, se la
-versione GUI di vim è disponibile. oppure utilizza vim, se gvim non è
-disponibile.
+versione GUI di vim è disponibile; altrimenti viene utilizzato Vim.
 .PP
-L'arogmento opzionale [lingua] è l'abbreviazione di due lettere del nome
+L'argomento opzionale [lingua] è l'abbreviazione di due lettere del nome
 di una lingua, per esempio "it" oppure "es".
-se L'argomento [lingua] non viene specificato, si utilizza la lingua "locale"
+Se l'argomento [lingua] non viene specificato, si utilizza la lingua "locale"
 del computer.
-Se la versione in quella lingua del "tutor" è disponibile, sarà usata.
-Altrimenti sarà usata la versione inglese.
+Se la versione in tale lingua del "tutor" non è disponibile,
+verrà usata la versione inglese.
 .PP
 .B Vim
-è sempre iniziato in Modo compatibile con vi.
+è sempre iniziato in Modo compatibile con Vi.
 .SH FILE
 .TP 15
 /usr/local/lib/vim/tutor/tutor[.language]
-Il/I file di testo per
+I file di testo per
 .B Vimtutor
-
+.
 .TP 15
 /usr/local/lib/vim/tutor/tutor.vim
 Lo script di Vim usato per copiare il file di testo
 .B Vimtutor
 .
 .SH AUTORE
-The
+Il corso introduttivo
 .B Vimtutor
 è stato scritto in origine per Vi da Michael C. Pierce e Robert K. Ware,
 Colorado School of Mines, usando idee fornite da Charles Smith,
 Colorado State University.
-E\-mail: bware@mines.colorado.edu.
+E-mail: bware@mines.colorado.edu (non più valido).
 .br
 È stato modificato per
 .B Vim
 da Bram Moolenaar.
-Per i nomi dei traduttori, vedere i file usati nelle rispettive lingue.
+Per i nomi dei traduttori, vedere i file nelle rispettive lingue.
 .SH VEDERE ANCHE
 vim(1)
--- a/runtime/doc/vimtutor-it.UTF-8.1
+++ b/runtime/doc/vimtutor-it.UTF-8.1
@@ -1,6 +1,6 @@
 .TH VIMTUTOR 1 "2 aprile 2001"
 .SH NOME
-vimtutor \- Un breve corso per imparare Vim
+vimtutor \- Un breve corso introduttivo a Vim
 .SH SINTASSI
 .br
 .B vimtutor [\-g] [lingua]
@@ -8,51 +8,50 @@ vimtutor \- Un breve corso per imparare 
 .B Vimtutor
 inizia il
 .B Vim
-tutor (una breve corso per imparare Vim).
-Per prima cosa viene creata una copia del file di lavoro, che può così essere
-modificato senza alterare il file usato come modello.
+tutor (un breve corso introduttivo a Vim).
+Viene utilizzata una copia del file di lavoro, che può così essere modificato
+a piacere senza alterare il file usato come modello.
 .PP
 Il comando
 .B Vimtutor
-è utile a chi voglia imparare i primi comandi
+è utile a chi voglia imparare i primi comandi di
 .B Vim
 .
 .PP
 L'argomento opzionale \-g inizia vimtutor usando gvim invece che vim, se la
-versione GUI di vim è disponibile. oppure utilizza vim, se gvim non è
-disponibile.
+versione GUI di vim è disponibile; altrimenti viene utilizzato Vim.
 .PP
-L'arogmento opzionale [lingua] è l'abbreviazione di due lettere del nome
+L'argomento opzionale [lingua] è l'abbreviazione di due lettere del nome
 di una lingua, per esempio "it" oppure "es".
-se L'argomento [lingua] non viene specificato, si utilizza la lingua "locale"
+Se l'argomento [lingua] non viene specificato, si utilizza la lingua "locale"
 del computer.
-Se la versione in quella lingua del "tutor" è disponibile, sarà usata.
-Altrimenti sarà usata la versione inglese.
+Se la versione in tale lingua del "tutor" non è disponibile,
+verrà usata la versione inglese.
 .PP
 .B Vim
-è sempre iniziato in Modo compatibile con vi.
+è sempre iniziato in Modo compatibile con Vi.
 .SH FILE
 .TP 15
 /usr/local/lib/vim/tutor/tutor[.language]
-Il/I file di testo per
+I file di testo per
 .B Vimtutor
-
+.
 .TP 15
 /usr/local/lib/vim/tutor/tutor.vim
 Lo script di Vim usato per copiare il file di testo
 .B Vimtutor
 .
 .SH AUTORE
-The
+Il corso introduttivo
 .B Vimtutor
 è stato scritto in origine per Vi da Michael C. Pierce e Robert K. Ware,
 Colorado School of Mines, usando idee fornite da Charles Smith,
 Colorado State University.
-E\-mail: bware@mines.colorado.edu.
+E-mail: bware@mines.colorado.edu (non più valido).
 .br
 È stato modificato per
 .B Vim
 da Bram Moolenaar.
-Per i nomi dei traduttori, vedere i file usati nelle rispettive lingue.
+Per i nomi dei traduttori, vedere i file nelle rispettive lingue.
 .SH VEDERE ANCHE
 vim(1)
--- a/runtime/doc/xxd-it.1
+++ b/runtime/doc/xxd-it.1
@@ -6,7 +6,7 @@
 .\"    Modificato da Bram Moolenaar <Bram@vim.org>
 .SH NOME
 .I xxd
-\- Produce esadecimale da un file binario o viceversa.
+\- Produce lista esadecimale da un file binario o viceversa.
 .SH SINTASSI
 .B xxd
 \-h[elp]
@@ -18,36 +18,33 @@
 \-r[evert] [opzioni] [input_file [output_file]]
 .SH DESCRIZIONE
 .I xxd
-crea un'immagine esadecimale di un dato file o dello "standard input".
-Può anche ottenere da un'immagine esadecimale il file binario originale.
+crea un'immagine esadecimale di un dato file o dello `standard input'.
+Può anche ricostruire da un'immagine esadecimale il file binario originale.
 Come
 .BR uuencode (1)
 e
 .BR uudecode (1)
-permette di trasmettere dati binari in una rappresentazione ASCII "a prova
-di email", ma ha anche il vantaggio di poter decodificare sullo "standard
-output".  Inoltre, può essere usato per effettuare delle modifiche (patch)
-a file binari.
+permette di trasmettere dati binari in una rappresentazione ASCII `a prova
+di email', ma ha anche il vantaggio di poter decodificare sullo `standard output'.
+Inoltre, può essere usato per effettuare delle modifiche (patch) a file binari.
 .SH OPZIONI
 Se non si specifica un
 .I input_file
-il programma legge dallo "standard input".
+il programma legge dallo `standard input'.
 Se
 .I input_file
 è specificato come il carattere
 .RB \` \- '
-, l'input è letto dallo "standard input".
+, l'input è letto dallo `standard input'.
 Se non si specifica un
 .I output_file
 (o si mette al suo posto il carattere
 .RB \` \- '
-), i risultati sono inviati allo "standard output".
+), i risultati sono inviati allo `standard output'.
 .PP
-Si noti che la scansione dei caratteri è "pigra", e non controlla oltre
-la prima lettera dell'opzione, a meno che l'opzione sia seguita da un
-parametro.
-Gli spazi fra una singola lettera di opzione e il corrispondente parametro
-dopo di essa sono facoltativi.
+Si noti che la scansione dei caratteri è "pigra", e non controlla oltre la prima
+lettera di un'opzione, a meno che l'opzione sia seguita da un parametro.
+Gli spazi fra una singola lettera di opzione e il relativo parametro sono facoltativi.
 I parametri delle opzioni possono essere specificati usando la notazione
 decimale, esadecimale oppure ottale.
 Pertanto
@@ -60,118 +57,129 @@ sono notazioni equivalenti fra loro.
 .PP
 .TP
 .IR \-a " | " \-autoskip
-Richiesta di autoskip: Un singolo '*' rimpiazza linee di zeri binari.
-Valore di default: off.
+Richiesta di omissione: Un singolo '*' rimpiazza righe a zeri binari. Default: off.
 .TP
 .IR \-b " | " \-bits
 Richiesta di una immagine binaria (cifre binarie), invece che esadecimale.
-Questa opzione scrive un byte come otto cifre "1" e "0" invece di usare i
-numeri esadecimali. Ogni linea è preceduta da un indirizzo in esadecimale e
-seguita da una decodifica ascii (o ebcdic). Le opzioni specificabili dalla
-linea comando \-r, \-p, \-i non funzionano in questo modo.
+Quest'opzione scrive un byte come otto cifre "1" e "0" invece di usare i
+numeri esadecimali. Ogni riga è preceduta da un indirizzo in esadecimale e
+seguita da una decodifica ASCII (o EBCDIC). Le opzioni specificabili dalla
+riga comando \-r, \-p, \-i non funzionano in questo modo.
 .TP
 .IR "\-c colonne " | " \-cols colonne"
-.IR "\-c colonne " | " \-cols colonne"
-In ogni linea sono formattate
+In ogni riga sono formattate
 .RI < colonne >
 colonne. Valore di default 16 (\-i: 12, \-ps: 30, \-b: 6).
-Valore massimo 256.
+Non c'è un valore massimo per \-ps; se si specifica 0 viene scritta un'unica lunga riga di output.
+.TP
+.IR \-C " | " \-capitalize
+Mette in maiuscolo i nomi di variabili nello stile delle `include' C, se si usa \-i.
 .TP
 .IR \-E " | " \-EBCDIC
 Cambia la codifica della colonna di destra da ASCII a EBCDIC.
 Questo non modifica la rappresentazione esadecimale. Non ha senso
-specificare questa opzione in combinazione con \-r, \-p o \-i.
+specificare quest'opzione in combinazione con \-r, \-p o \-i.
 .TP
-.IR "\-g numero_byte " | " \-groupsize numero_byte"
-Inserisci ogni
-.RI < numero_byte >
-byte di output (di due caratteri esadecimali o otto numeri binari ognuno)
-uno spazio bianco.
+.IR \-e
+Considera la lista esadecimale come avente codifica `little-endian'.
+Quest'opzione tratta i gruppi di byte come parole in codifica `little-endian'.
+Il raggruppamento di default dei byte a 4 a 4 può essere cambiato usando
+.RI "" \-g .
+Quest'opzione si applica solo alla lista esadecimale, Lasciando inalterata
+la rappresentazione ASCII (or EBCDIC).
+Le opzioni della riga di comando
+\-r, \-p, \-i non funzionano in questa modalità.
+.TP
+.IR "\-g numero " | " \-groupsize numero"
+Separa ogni gruppo di
+.RI < numero >
+byte in output (di due caratteri esadecimali o otto caratteri binari ognuno) con uno spazio bianco.
 Specificando
 .I \-g 0
 i byte di output non sono separati da alcuno spazio.
-.RI < numero_byte > ha come valore di default " 2
-in modalità normale [esadecimale] e \fI1\fP in modalità binaria.
-Il raggruppamento non si applica agli stili "PostScript" e "include".
+.RI < Numero "> ha come valore di default " 2
+in modalità normale [esadecimale], \fI4\fP in modalità `little-endian' e \fI1\fP in modalità binaria.
+Il raggruppamento non si applica agli stili `PostScript' e `include'.
 .TP
 .IR \-h " | " \-help
-stampa un sommario dei comandi disponibili ed esce.  Non viene fatto
-null'altro.
+Stampa un sommario dei comandi disponibili ed esce.  Non viene fatto null'altro.
 .TP
 .IR \-i " | " \-include
-L'output è nello stile dei file "include" in C.  Viene preparata la
-definizione completa di un "array" [vettore], dandogli il nome del
-file di input), tranne che nel caso in cui xxd legga dallo "standard input".
+L'output è un file `include' in C.  Viene preparata la definizione completa del
+vettore (col nome del file di input), tranne quando xxd legga dallo `standard input'.
 .TP
 .IR "\-l numero " | " \-len numero"
 Il programma esce dopo aver scritto
 .RI  < numero >
 byte.
 .TP
+.I "\-n nome " | " \-name nome"
+Specifica il nome del vettore in output quando si usa \-i. Il vettore viene chiamato
+\fInome\fP e la sua lunghezza viene chiamata \fInome\fP_len.
+.TP
+.I \-o incremento
+Aggiunge
+.RI < incremento >
+alla posizione visualizzata dei byte del file.
+.TP
 .IR \-p " | " \-ps " | " \-postscript " | " \-plain
-L'output è nello stile di un dump continuo sotto postscript.
-Noto anche come stile esadecimale semplice [plain].
+L'output è nello stile di un dump esadecimale continuo sotto postscript. Noto anche come stile esadecimale semplice.
 .TP
 .IR \-r " | " \-revert
-ricostruzione: converte (o mette una patch) a partire dall'immagine
-esadecimale, creando [o modificando] il file binario.
-Se non diretto allo "standard output", xxd scrive nel suo file di output
-in maniera continua, senza interruzioni.  Usare la combinazione
+Ricostruisce: converte (o mette una patch) da immagine esadecimale, a file binario.
+Se non scrive sullo `standard output', xxd scrive nel file di output in maniera
+continua, senza interruzioni.  Usare la combinazione
 .I \-r \-p
-per leggere dump in stile esadecimale semplice [plain], senza l'informazione
-di numero di linea e senza un particolare tracciato di colonna.  Degli spazi
-o delle linee vuote possono essere inserite a piacere [e vengono ignorate].
+per leggere dump in stile esadecimale semplice, senza l'informazione del numero
+di riga e senza un particolare tracciato di colonna.  Spazi o righe vuote possono
+essere presenti [e vengono ignorati].
+.TP
+.IR \-R " "[quando]
+Nell'output i valori esadecimali e i caratteri corrispondenti hanno entrambi lo stesso colore, a seconda del valore esadecimale. Utile soprattutto a distinguere i caratteri stampabili da quello non stampabili.
+.I quando
+può assumere i valori
+.BR never ", " always ", o " auto .
 .TP
 .I \-seek distanza
 Usato con l'opzione
 .IR \-r :
 (ricostruzione),
 .RI < distanza >
-viene aggiunta alla posizione nel file trovata nella immagine
-esadecimale.
+viene aggiunta alla posizione nel file trovata nella immagine esadecimale.
 .TP
 .I \-s [+][\-]seek
 Inizia a
 .RI < seek >
 byte assoluti (o relativi) di distanza all'interno di input_file.
-\fI+ \fRindica che il "seek" è relativo alla posizione corrente nel file
-"standard input" (non significativa quando non si legge da "standard input").
-\fI\- \fRindica che il "seek" dovrebbe posizionarsi ad quel numero di
-caratteri dalla fine dell'input (o se in combinazione con
-\fI+ \fR: prime della posizione corrente nel file "standard input").
-Se non si specifica una opzione \-s, xxd inizia alla posizione
-corrente all'interno del file.
+\fI+ \fRindica che il `seek' è relativo alla posizione corrente nel file `standard input'
+(non significativo quando non si legge da `standard input'). \fI\- \fRindica che il
+`seek' dovrebbe posizionarsi al numero specificato di caratteri dalla fine dell'input
+(o se in combinazione con \fI+ \fR: prima della posizione corrente nel file `standard input').
+Se non si specifica l'opzione \-s, xxd inizia dalla posizione corrente all'interno del file.
 .TP
 .I \-u
-usa lettere esadecimali maiuscole. Il valore di default è di usare
-lettere minuscole.
+Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole.
 .TP
 .IR \-v " | " \-version
-visualizza la stringa contenente la versione del programma.
+Visualizza la stringa contenente la versione del programma.
 .SH ATTENZIONE
 .PP
 .I xxd \-r
-è capace di operare "magie" nell'utilizzare l'informazione "numero di linea".
-Se sul file di output ci si può posizionare usando la "seek", il numero di
-linea all'inizio di ogni riga esadecimale può essere non ordinato, delle
-linee possono mancare delle linee, oppure esserci delle sovrapposizioni.
-In simili casi xxd userà lseek(2) per raggiungere la posizione d'inizio.
-Se il file di output non consente di usare "seek", sono permessi solo dei
-"buchi", che saranno riempiti con zeri binari.
+è capace di operare "magie" nell'utilizzare l'informazione "numero di riga".
+Se è possibili posizionarsi tramite `seek' sul file di output, il numero di riga
+di ogni riga esadecimale può essere non ordinato, delle righe possono mancare, o
+sovrapporsi. In tal caso xxd userà lseek(2) per posizionarsi all'interno del file.
+Se per il file di output non si può usare `seek', sono permessi solo dei "buchi", che saranno riempiti con zeri binari.
 .PP
 .I xxd \-r
-non genera mai errori di specifica parametri. I parametri non riconosciuti
-sono silenziosamente ignorati.
+non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati.
 .PP
-Nel modificare immagini esadecimali, tenete conto che
+Nel modificare immagini esadecimali, si tenga conto che
 .I xxd \-r
-salta il resto della linea, dopo aver letto abbastanza caratteri contenenti
-dati esadecimali (vedere opzione \-c). Ciò implica pure che le modifiche alle
-colonne di caratteri stampabili ascii (o ebcdic) sono sempre ignorate.
-La ricostruzione da un file immagine esadecimale in stile semplice
-(postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. 
-IN questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali
-è interpretata [e utilizzata].
+salta il resto della riga, dopo aver letto i caratteri contenenti dati esadecimali
+(vedere opzione \-c). Ciò implica pure che le modifiche alle colonne di caratteri
+stampabili ASCII (o EBCDIC) sono sempre ignorate. La ricostruzione da un file immagine
+esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali è interpretata [e utilizzata].
 .PP
 Notare la differenza fra
 .br
@@ -183,53 +191,48 @@ e
 .PP
 .I xxd \-s \+seek
 può comportarsi in modo diverso da
-.IR "xxd \-s seek"
-, perché lseek(2) è usata per tornare indietro nel file di input.  Il '+'
-fa differenza se il file di input è lo "standard input", e se la posizione nel
-file di "standard input" non è all'inizio del file quando xxd è eseguito,
-con questo input.
-I seguenti esempi possono contribuire a chiarire il concetto
-(o ad oscurarlo!)...
+.IR "xxd \-s seek" ,
+perché lseek(2) è usata per tornare indietro nel file di input.  Il '+'
+fa differenza se il file di input è lo `standard input', e se la posizione nel
+file di `standard input' non è all'inizio del file quando xxd è eseguito, e riceve input.
+I seguenti esempi possono contribuire a chiarire il concetto (o ad oscurarlo!)...
 .PP
-Riavvolge lo "standard input" prima di leggere; necessario perché `cat'
-ha già letto lo stesso file ["file"] fino alla fine dello "standard input".
+Riavvolge lo `standard input' prima di leggere; necessario perché `cat'
+ha già letto lo stesso file fino alla fine dello `standard input'.
 .br
-\fI% sh \-c 'cat > copia_normale; xxd \-s 0 > copia_esadecimale' < file
+\fI% sh \-c "cat > copia_normale; xxd \-s 0 > copia_esadecimale" < file\fR
 .PP
 Stampa immagine esadecimale dalla posizione file 0x480 (=1024+128) in poi.
 Il segno `+' vuol dire "rispetto alla posizione corrente", quindi il `128'
 si aggiunge a 1k (1024) dove `dd' si era fermato.
 .br
-\fI% sh \-c 'dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale' < file
+\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale" < file\fR
 .PP
-Immagine esadecimale dalla posizione 0x100 ( = 1024\-768 ) del file in avanti.
+Immagine esadecimale dalla posizione 0x100 (=1024\-768 ) del file in avanti.
 .br
-\fI% sh \-c 'dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale' < file
+\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file
 .PP
 Comunque, questo capita raramente, e l'uso del `+' non serve quasi mai.
-L'autore preferisce monitorare il comportamento di xxd con strace(1) o
-truss(1), quando si usa l'opzione \-s.
+L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1), quando si usa l'opzione \-s.
 .SH ESEMPI
 .PP
 .br
-Stampa tutto tranne le prime tre linee (0x30 byte esadecimali) di
-.B file
+Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di
+.BR file
 \.
 .br
-\fI% xxd \-s 0x30 file
+\fI% xxd \-s 0x30 file\fR
 .PP
 .br
-Stampa 3 linee (0x30 byte esadecimali) alla fine di
-.B file
-\.
+Stampa 3 righe (0x30 byte in esadecimale) alla fine di
+.BR file .
 .br
 \fI% xxd \-s \-0x30 file
 .PP
 .br
-Stampa 120 byte come immagine esadecimale continua con 20 byte per linea.
+Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
 .br
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
-
 .br
 2e54482058584420312022417567757374203139
 .br
@@ -245,11 +248,9 @@ 204e7567656e74203c746f6e79407363746e7567
 .br
 
 .br
-Stampa i primi 120 byte della pagina di manuale vim.1 a 12 byte per linea.
+Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga.
 .br
 \fI% xxd \-l 120 \-c 12 xxd.1\fR
-
-
 .br
 0000000: 2e54 4820 5858 4420 3120 2241  .TH XXD 1 "A
 .br
@@ -285,13 +286,13 @@ su
 .B output_file
 premettendogli 100 byte a 0x00.
 .br
-\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR
+\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR
 .br
 
 .br
 Modificare (patch) la data nel file xxd.1
 .br
-\fI% echo '0000037: 3574 68' | xxd \-r \- xxd.1\fR
+\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR
 .br
 \fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
 .br
@@ -299,9 +300,9 @@ 0000036: 3235 7468 204d 6179 2031 3939 3
 .PP
 .br
 Creare un file di 65537 byte tutto a 0x00,
-tranne che l'ultimo carattere che è una 'A' (esadecimale 0x41).
+tranne l'ultimo carattere che è una 'A' (esadecimale 0x41).
 .br
-\fI% echo '010000: 41' | xxd \-r \> file\fR
+\fI% echo "010000: 41" | xxd \-r > file\fR
 .PP
 .br
 Stampa una immagine esadecimale del file  di cui sopra con opzione autoskip.
@@ -314,34 +315,31 @@ 0000000: 0000 0000 0000 0000 0000 0000  
 .br
 000fffc: 0000 0000 40                   ....A
 .PP
-Crea un file di 1 byte che contiene il solo carattere 'A'.
+Creare un file di 1 byte che contiene il solo carattere 'A'.
 Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file;
 in pratica, i byte precedenti non sono stampati.
 .br
-\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
+\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR
 .PP
-Usa xxd come filtro all'interno di un editor come
+Usare xxd come filtro all'interno di un editor come
 .B vim(1)
-per ottenere una immagine esadecimale di una parte di file
-delimitata dai marcatori `a' e `z'.
+per ottenere l'immagine esadecimale della parte di file fra i marcatori `a' e `z'.
 .br
 \fI:'a,'z!xxd\fR
 .PP
 Usare xxd come filtro all'interno di un editor come
 .B vim(1)
-per ricostruire un pezzo di file binario da una immagine esadecimale
-delimitata dai marcatori `a' e `z'.
+per ricostruire un pezzo di file binario da un'immagine esadecimale fra i marcatori `a' e `z'.
 .br
 \fI:'a,'z!xxd \-r\fR
 .PP
 Usare xxd come filtro all'interno di un editor come
 .B vim(1)
-per ricostruire una sola linea di file binario da una immagine esadecimale,
-Portare il cursore sopra la linea e battere:
+per ricostruire una sola riga di file binario da un'immagine esadecimale. Portare il cursore sopra la riga e battere:
 .br
 \fI!!xxd \-r\fR
 .PP
-Per leggere singoli caratteri da una linea seriale
+Leggere singoli caratteri da una linea seriale
 .br
 \fI% xxd \-c1 < /dev/term/b &\fR
 .br
@@ -356,7 +354,8 @@ 0
 nessun errore rilevato.
 .TP
 \-1
-operazione non supportata (
+operazione non supportata
+\%(\c
 .I xxd \-r \-i
 non ancora possible).
 .TP
@@ -370,14 +369,13 @@ 3
 problemi con il file di output.
 .TP
 4,5
-posizione "seek" specificata non raggiungibile all'interno del file.
+posizione `seek' specificata non raggiungibile all'interno del file.
 .SH VEDERE ANCHE
 uuencode(1), uudecode(1), patch(1)
 .br
 .SH AVVERTIMENTI
 La stranezza dello strumento rispecchia la mente del suo creatore.
-Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione.
-Diventate un mago.
+Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione. Diventate un mago.
 .br
 .SH VERSIONE
 Questa pagina di manuale documenta la versione 1.7 di xxd.
@@ -393,7 +391,7 @@ fate soldi e condivideteli con me
 .br
 perdete soldi e non venite a chiederli a me.
 .PP
-Pagina di manuale messa in piedi da Tony Nugent
+Pagina di manuale iniziata da Tony Nugent
 .br
 <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
 .br
--- a/runtime/doc/xxd-it.UTF-8.1
+++ b/runtime/doc/xxd-it.UTF-8.1
@@ -6,7 +6,7 @@
 .\"    Modificato da Bram Moolenaar <Bram@vim.org>
 .SH NOME
 .I xxd
-\- Produce esadecimale da un file binario o viceversa.
+\- Produce lista esadecimale da un file binario o viceversa.
 .SH SINTASSI
 .B xxd
 \-h[elp]
@@ -18,36 +18,33 @@
 \-r[evert] [opzioni] [input_file [output_file]]
 .SH DESCRIZIONE
 .I xxd
-crea un'immagine esadecimale di un dato file o dello "standard input".
-Può anche ottenere da un'immagine esadecimale il file binario originale.
+crea un'immagine esadecimale di un dato file o dello `standard input'.
+Può anche ricostruire da un'immagine esadecimale il file binario originale.
 Come
 .BR uuencode (1)
 e
 .BR uudecode (1)
-permette di trasmettere dati binari in una rappresentazione ASCII "a prova
-di email", ma ha anche il vantaggio di poter decodificare sullo "standard
-output".  Inoltre, può essere usato per effettuare delle modifiche (patch)
-a file binari.
+permette di trasmettere dati binari in una rappresentazione ASCII `a prova
+di email', ma ha anche il vantaggio di poter decodificare sullo `standard output'.
+Inoltre, può essere usato per effettuare delle modifiche (patch) a file binari.
 .SH OPZIONI
 Se non si specifica un
 .I input_file
-il programma legge dallo "standard input".
+il programma legge dallo `standard input'.
 Se
 .I input_file
 è specificato come il carattere
 .RB \` \- '
-, l'input è letto dallo "standard input".
+, l'input è letto dallo `standard input'.
 Se non si specifica un
 .I output_file
 (o si mette al suo posto il carattere
 .RB \` \- '
-), i risultati sono inviati allo "standard output".
+), i risultati sono inviati allo `standard output'.
 .PP
-Si noti che la scansione dei caratteri è "pigra", e non controlla oltre
-la prima lettera dell'opzione, a meno che l'opzione sia seguita da un
-parametro.
-Gli spazi fra una singola lettera di opzione e il corrispondente parametro
-dopo di essa sono facoltativi.
+Si noti che la scansione dei caratteri è "pigra", e non controlla oltre la prima
+lettera di un'opzione, a meno che l'opzione sia seguita da un parametro.
+Gli spazi fra una singola lettera di opzione e il relativo parametro sono facoltativi.
 I parametri delle opzioni possono essere specificati usando la notazione
 decimale, esadecimale oppure ottale.
 Pertanto
@@ -60,118 +57,129 @@ sono notazioni equivalenti fra loro.
 .PP
 .TP
 .IR \-a " | " \-autoskip
-Richiesta di autoskip: Un singolo '*' rimpiazza linee di zeri binari.
-Valore di default: off.
+Richiesta di omissione: Un singolo '*' rimpiazza righe a zeri binari. Default: off.
 .TP
 .IR \-b " | " \-bits
 Richiesta di una immagine binaria (cifre binarie), invece che esadecimale.
-Questa opzione scrive un byte come otto cifre "1" e "0" invece di usare i
-numeri esadecimali. Ogni linea è preceduta da un indirizzo in esadecimale e
-seguita da una decodifica ascii (o ebcdic). Le opzioni specificabili dalla
-linea comando \-r, \-p, \-i non funzionano in questo modo.
+Quest'opzione scrive un byte come otto cifre "1" e "0" invece di usare i
+numeri esadecimali. Ogni riga è preceduta da un indirizzo in esadecimale e
+seguita da una decodifica ASCII (o EBCDIC). Le opzioni specificabili dalla
+riga comando \-r, \-p, \-i non funzionano in questo modo.
 .TP
 .IR "\-c colonne " | " \-cols colonne"
-.IR "\-c colonne " | " \-cols colonne"
-In ogni linea sono formattate
+In ogni riga sono formattate
 .RI < colonne >
 colonne. Valore di default 16 (\-i: 12, \-ps: 30, \-b: 6).
-Valore massimo 256.
+Non c'è un valore massimo per \-ps; se si specifica 0 viene scritta un'unica lunga riga di output.
+.TP
+.IR \-C " | " \-capitalize
+Mette in maiuscolo i nomi di variabili nello stile delle `include' C, se si usa \-i.
 .TP
 .IR \-E " | " \-EBCDIC
 Cambia la codifica della colonna di destra da ASCII a EBCDIC.
 Questo non modifica la rappresentazione esadecimale. Non ha senso
-specificare questa opzione in combinazione con \-r, \-p o \-i.
+specificare quest'opzione in combinazione con \-r, \-p o \-i.
 .TP
-.IR "\-g numero_byte " | " \-groupsize numero_byte"
-Inserisci ogni
-.RI < numero_byte >
-byte di output (di due caratteri esadecimali o otto numeri binari ognuno)
-uno spazio bianco.
+.IR \-e
+Considera la lista esadecimale come avente codifica `little-endian'.
+Quest'opzione tratta i gruppi di byte come parole in codifica `little-endian'.
+Il raggruppamento di default dei byte a 4 a 4 può essere cambiato usando
+.RI "" \-g .
+Quest'opzione si applica solo alla lista esadecimale, Lasciando inalterata
+la rappresentazione ASCII (or EBCDIC).
+Le opzioni della riga di comando
+\-r, \-p, \-i non funzionano in questa modalità.
+.TP
+.IR "\-g numero " | " \-groupsize numero"
+Separa ogni gruppo di
+.RI < numero >
+byte in output (di due caratteri esadecimali o otto caratteri binari ognuno) con uno spazio bianco.
 Specificando
 .I \-g 0
 i byte di output non sono separati da alcuno spazio.
-.RI < numero_byte > ha come valore di default " 2
-in modalità normale [esadecimale] e \fI1\fP in modalità binaria.
-Il raggruppamento non si applica agli stili "PostScript" e "include".
+.RI < Numero "> ha come valore di default " 2
+in modalità normale [esadecimale], \fI4\fP in modalità `little-endian' e \fI1\fP in modalità binaria.
+Il raggruppamento non si applica agli stili `PostScript' e `include'.
 .TP
 .IR \-h " | " \-help
-stampa un sommario dei comandi disponibili ed esce.  Non viene fatto
-null'altro.
+Stampa un sommario dei comandi disponibili ed esce.  Non viene fatto null'altro.
 .TP
 .IR \-i " | " \-include
-L'output è nello stile dei file "include" in C.  Viene preparata la
-definizione completa di un "array" [vettore], dandogli il nome del
-file di input), tranne che nel caso in cui xxd legga dallo "standard input".
+L'output è un file `include' in C.  Viene preparata la definizione completa del
+vettore (col nome del file di input), tranne quando xxd legga dallo `standard input'.
 .TP
 .IR "\-l numero " | " \-len numero"
 Il programma esce dopo aver scritto
 .RI  < numero >
 byte.
 .TP
+.I "\-n nome " | " \-name nome"
+Specifica il nome del vettore in output quando si usa \-i. Il vettore viene chiamato
+\fInome\fP e la sua lunghezza viene chiamata \fInome\fP_len.
+.TP
+.I \-o incremento
+Aggiunge
+.RI < incremento >
+alla posizione visualizzata dei byte del file.
+.TP
 .IR \-p " | " \-ps " | " \-postscript " | " \-plain
-L'output è nello stile di un dump continuo sotto postscript.
-Noto anche come stile esadecimale semplice [plain].
+L'output è nello stile di un dump esadecimale continuo sotto postscript. Noto anche come stile esadecimale semplice.
 .TP
 .IR \-r " | " \-revert
-ricostruzione: converte (o mette una patch) a partire dall'immagine
-esadecimale, creando [o modificando] il file binario.
-Se non diretto allo "standard output", xxd scrive nel suo file di output
-in maniera continua, senza interruzioni.  Usare la combinazione
+Ricostruisce: converte (o mette una patch) da immagine esadecimale, a file binario.
+Se non scrive sullo `standard output', xxd scrive nel file di output in maniera
+continua, senza interruzioni.  Usare la combinazione
 .I \-r \-p
-per leggere dump in stile esadecimale semplice [plain], senza l'informazione
-di numero di linea e senza un particolare tracciato di colonna.  Degli spazi
-o delle linee vuote possono essere inserite a piacere [e vengono ignorate].
+per leggere dump in stile esadecimale semplice, senza l'informazione del numero
+di riga e senza un particolare tracciato di colonna.  Spazi o righe vuote possono
+essere presenti [e vengono ignorati].
+.TP
+.IR \-R " "[quando]
+Nell'output i valori esadecimali e i caratteri corrispondenti hanno entrambi lo stesso colore, a seconda del valore esadecimale. Utile soprattutto a distinguere i caratteri stampabili da quello non stampabili.
+.I quando
+può assumere i valori
+.BR never ", " always ", o " auto .
 .TP
 .I \-seek distanza
 Usato con l'opzione
 .IR \-r :
 (ricostruzione),
 .RI < distanza >
-viene aggiunta alla posizione nel file trovata nella immagine
-esadecimale.
+viene aggiunta alla posizione nel file trovata nella immagine esadecimale.
 .TP
 .I \-s [+][\-]seek
 Inizia a
 .RI < seek >
 byte assoluti (o relativi) di distanza all'interno di input_file.
-\fI+ \fRindica che il "seek" è relativo alla posizione corrente nel file
-"standard input" (non significativa quando non si legge da "standard input").
-\fI\- \fRindica che il "seek" dovrebbe posizionarsi ad quel numero di
-caratteri dalla fine dell'input (o se in combinazione con
-\fI+ \fR: prime della posizione corrente nel file "standard input").
-Se non si specifica una opzione \-s, xxd inizia alla posizione
-corrente all'interno del file.
+\fI+ \fRindica che il `seek' è relativo alla posizione corrente nel file `standard input'
+(non significativo quando non si legge da `standard input'). \fI\- \fRindica che il
+`seek' dovrebbe posizionarsi al numero specificato di caratteri dalla fine dell'input
+(o se in combinazione con \fI+ \fR: prima della posizione corrente nel file `standard input').
+Se non si specifica l'opzione \-s, xxd inizia dalla posizione corrente all'interno del file.
 .TP
 .I \-u
-usa lettere esadecimali maiuscole. Il valore di default è di usare
-lettere minuscole.
+Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole.
 .TP
 .IR \-v " | " \-version
-visualizza la stringa contenente la versione del programma.
+Visualizza la stringa contenente la versione del programma.
 .SH ATTENZIONE
 .PP
 .I xxd \-r
-è capace di operare "magie" nell'utilizzare l'informazione "numero di linea".
-Se sul file di output ci si può posizionare usando la "seek", il numero di
-linea all'inizio di ogni riga esadecimale può essere non ordinato, delle
-linee possono mancare delle linee, oppure esserci delle sovrapposizioni.
-In simili casi xxd userà lseek(2) per raggiungere la posizione d'inizio.
-Se il file di output non consente di usare "seek", sono permessi solo dei
-"buchi", che saranno riempiti con zeri binari.
+è capace di operare "magie" nell'utilizzare l'informazione "numero di riga".
+Se è possibili posizionarsi tramite `seek' sul file di output, il numero di riga
+di ogni riga esadecimale può essere non ordinato, delle righe possono mancare, o
+sovrapporsi. In tal caso xxd userà lseek(2) per posizionarsi all'interno del file.
+Se per il file di output non si può usare `seek', sono permessi solo dei "buchi", che saranno riempiti con zeri binari.
 .PP
 .I xxd \-r
-non genera mai errori di specifica parametri. I parametri non riconosciuti
-sono silenziosamente ignorati.
+non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati.
 .PP
-Nel modificare immagini esadecimali, tenete conto che
+Nel modificare immagini esadecimali, si tenga conto che
 .I xxd \-r
-salta il resto della linea, dopo aver letto abbastanza caratteri contenenti
-dati esadecimali (vedere opzione \-c). Ciò implica pure che le modifiche alle
-colonne di caratteri stampabili ascii (o ebcdic) sono sempre ignorate.
-La ricostruzione da un file immagine esadecimale in stile semplice
-(postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. 
-IN questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali
-è interpretata [e utilizzata].
+salta il resto della riga, dopo aver letto i caratteri contenenti dati esadecimali
+(vedere opzione \-c). Ciò implica pure che le modifiche alle colonne di caratteri
+stampabili ASCII (o EBCDIC) sono sempre ignorate. La ricostruzione da un file immagine
+esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali è interpretata [e utilizzata].
 .PP
 Notare la differenza fra
 .br
@@ -183,53 +191,48 @@ e
 .PP
 .I xxd \-s \+seek
 può comportarsi in modo diverso da
-.IR "xxd \-s seek"
-, perché lseek(2) è usata per tornare indietro nel file di input.  Il '+'
-fa differenza se il file di input è lo "standard input", e se la posizione nel
-file di "standard input" non è all'inizio del file quando xxd è eseguito,
-con questo input.
-I seguenti esempi possono contribuire a chiarire il concetto
-(o ad oscurarlo!)...
+.IR "xxd \-s seek" ,
+perché lseek(2) è usata per tornare indietro nel file di input.  Il '+'
+fa differenza se il file di input è lo `standard input', e se la posizione nel
+file di `standard input' non è all'inizio del file quando xxd è eseguito, e riceve input.
+I seguenti esempi possono contribuire a chiarire il concetto (o ad oscurarlo!)...
 .PP
-Riavvolge lo "standard input" prima di leggere; necessario perché `cat'
-ha già letto lo stesso file ["file"] fino alla fine dello "standard input".
+Riavvolge lo `standard input' prima di leggere; necessario perché `cat'
+ha già letto lo stesso file fino alla fine dello `standard input'.
 .br
-\fI% sh \-c 'cat > copia_normale; xxd \-s 0 > copia_esadecimale' < file
+\fI% sh \-c "cat > copia_normale; xxd \-s 0 > copia_esadecimale" < file\fR
 .PP
 Stampa immagine esadecimale dalla posizione file 0x480 (=1024+128) in poi.
 Il segno `+' vuol dire "rispetto alla posizione corrente", quindi il `128'
 si aggiunge a 1k (1024) dove `dd' si era fermato.
 .br
-\fI% sh \-c 'dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale' < file
+\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale" < file\fR
 .PP
-Immagine esadecimale dalla posizione 0x100 ( = 1024\-768 ) del file in avanti.
+Immagine esadecimale dalla posizione 0x100 (=1024\-768 ) del file in avanti.
 .br
-\fI% sh \-c 'dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale' < file
+\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file
 .PP
 Comunque, questo capita raramente, e l'uso del `+' non serve quasi mai.
-L'autore preferisce monitorare il comportamento di xxd con strace(1) o
-truss(1), quando si usa l'opzione \-s.
+L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1), quando si usa l'opzione \-s.
 .SH ESEMPI
 .PP
 .br
-Stampa tutto tranne le prime tre linee (0x30 byte esadecimali) di
-.B file
+Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di
+.BR file
 \.
 .br
-\fI% xxd \-s 0x30 file
+\fI% xxd \-s 0x30 file\fR
 .PP
 .br
-Stampa 3 linee (0x30 byte esadecimali) alla fine di
-.B file
-\.
+Stampa 3 righe (0x30 byte in esadecimale) alla fine di
+.BR file .
 .br
 \fI% xxd \-s \-0x30 file
 .PP
 .br
-Stampa 120 byte come immagine esadecimale continua con 20 byte per linea.
+Stampa 120 byte come immagine esadecimale continua con 20 byte per riga.
 .br
 \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR
-
 .br
 2e54482058584420312022417567757374203139
 .br
@@ -245,11 +248,9 @@ 204e7567656e74203c746f6e79407363746e7567
 .br
 
 .br
-Stampa i primi 120 byte della pagina di manuale vim.1 a 12 byte per linea.
+Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga.
 .br
 \fI% xxd \-l 120 \-c 12 xxd.1\fR
-
-
 .br
 0000000: 2e54 4820 5858 4420 3120 2241  .TH XXD 1 "A
 .br
@@ -285,13 +286,13 @@ su
 .B output_file
 premettendogli 100 byte a 0x00.
 .br
-\fI% xxd input_file | xxd \-r \-s 100 \> output_file\fR
+\fI% xxd input_file | xxd \-r \-s 100 > output_file\fR
 .br
 
 .br
 Modificare (patch) la data nel file xxd.1
 .br
-\fI% echo '0000037: 3574 68' | xxd \-r \- xxd.1\fR
+\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR
 .br
 \fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR
 .br
@@ -299,9 +300,9 @@ 0000036: 3235 7468 204d 6179 2031 3939 3
 .PP
 .br
 Creare un file di 65537 byte tutto a 0x00,
-tranne che l'ultimo carattere che è una 'A' (esadecimale 0x41).
+tranne l'ultimo carattere che è una 'A' (esadecimale 0x41).
 .br
-\fI% echo '010000: 41' | xxd \-r \> file\fR
+\fI% echo "010000: 41" | xxd \-r > file\fR
 .PP
 .br
 Stampa una immagine esadecimale del file  di cui sopra con opzione autoskip.
@@ -314,34 +315,31 @@ 0000000: 0000 0000 0000 0000 0000 0000  
 .br
 000fffc: 0000 0000 40                   ....A
 .PP
-Crea un file di 1 byte che contiene il solo carattere 'A'.
+Creare un file di 1 byte che contiene il solo carattere 'A'.
 Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file;
 in pratica, i byte precedenti non sono stampati.
 .br
-\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR
+\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR
 .PP
-Usa xxd come filtro all'interno di un editor come
+Usare xxd come filtro all'interno di un editor come
 .B vim(1)
-per ottenere una immagine esadecimale di una parte di file
-delimitata dai marcatori `a' e `z'.
+per ottenere l'immagine esadecimale della parte di file fra i marcatori `a' e `z'.
 .br
 \fI:'a,'z!xxd\fR
 .PP
 Usare xxd come filtro all'interno di un editor come
 .B vim(1)
-per ricostruire un pezzo di file binario da una immagine esadecimale
-delimitata dai marcatori `a' e `z'.
+per ricostruire un pezzo di file binario da un'immagine esadecimale fra i marcatori `a' e `z'.
 .br
 \fI:'a,'z!xxd \-r\fR
 .PP
 Usare xxd come filtro all'interno di un editor come
 .B vim(1)
-per ricostruire una sola linea di file binario da una immagine esadecimale,
-Portare il cursore sopra la linea e battere:
+per ricostruire una sola riga di file binario da un'immagine esadecimale. Portare il cursore sopra la riga e battere:
 .br
 \fI!!xxd \-r\fR
 .PP
-Per leggere singoli caratteri da una linea seriale
+Leggere singoli caratteri da una linea seriale
 .br
 \fI% xxd \-c1 < /dev/term/b &\fR
 .br
@@ -356,7 +354,8 @@ 0
 nessun errore rilevato.
 .TP
 \-1
-operazione non supportata (
+operazione non supportata
+\%(\c
 .I xxd \-r \-i
 non ancora possible).
 .TP
@@ -370,14 +369,13 @@ 3
 problemi con il file di output.
 .TP
 4,5
-posizione "seek" specificata non raggiungibile all'interno del file.
+posizione `seek' specificata non raggiungibile all'interno del file.
 .SH VEDERE ANCHE
 uuencode(1), uudecode(1), patch(1)
 .br
 .SH AVVERTIMENTI
 La stranezza dello strumento rispecchia la mente del suo creatore.
-Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione.
-Diventate un mago.
+Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione. Diventate un mago.
 .br
 .SH VERSIONE
 Questa pagina di manuale documenta la versione 1.7 di xxd.
@@ -393,7 +391,7 @@ fate soldi e condivideteli con me
 .br
 perdete soldi e non venite a chiederli a me.
 .PP
-Pagina di manuale messa in piedi da Tony Nugent
+Pagina di manuale iniziata da Tony Nugent
 .br
 <tony@sctnugen.ppp.gu.edu.au> <T.Nugent@sct.gu.edu.au>
 .br
--- a/runtime/doc/xxd.1
+++ b/runtime/doc/xxd.1
@@ -135,6 +135,12 @@ to read plain hexadecimal dumps without 
 particular column layout. Additional whitespace and line breaks are allowed
 anywhere.
 .TP
+.IR \-R " " when
+In output the hex-value and the value are both colored with the same color depending on the hex-value. Mostly helping to differentiate printable and non-printable characters.
+.I \fIwhen\fP
+is
+.BR never ", " always ", or " auto .
+.TP
 .I \-seek offset
 When used after
 .IR \-r :
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -209,9 +209,6 @@ au BufNewFile,BufRead *.bi,*.bm			call d
 " Bass
 au BufNewFile,BufRead *.bass			setf bass
 
-" Visual Basic Script (close to Visual Basic) or Visual Basic .NET
-au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl	setf vb
-
 " IBasic file (similar to QBasic)
 au BufNewFile,BufRead *.iba,*.ibi		setf ibasic
 
@@ -1410,6 +1407,9 @@ au BufNewFile,BufRead *.ninja			setf nin
 " Nix
 au BufRead,BufNewFile *.nix			setf nix
 
+" Norg
+au BufNewFile,BufRead *.norg		setf norg
+
 " NPM RC file
 au BufNewFile,BufRead npmrc,.npmrc		setf dosini
 
@@ -2376,7 +2376,7 @@ au BufNewFile,BufRead *.tape			setf vhs
 au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho  setf vhdl
 
 " Vim script
-au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc	setf vim
+au BufNewFile,BufRead *.vim,.exrc,_exrc		setf vim
 
 " Viminfo file
 au BufNewFile,BufRead .viminfo,_viminfo		setf viminfo
@@ -2389,10 +2389,31 @@ au BufRead,BufNewFile *.hw,*.module,*.pk
 	\   setf virata |
 	\ endif
 
-" Visual Basic (also uses *.bas) or FORM
+" Visual Basic (see also *.bas *.cls)
+
+" Visual Basic or FORM
 au BufNewFile,BufRead *.frm			call dist#ft#FTfrm()
 
-" SaxBasic is close to Visual Basic
+" Visual Basic
+" user control, ActiveX document form, active designer, property page
+au BufNewFile,BufRead *.ctl,*.dob,*.dsr,*.pag	setf vb
+
+" Visual Basic or Vimball Archiver
+au BufNewFile,BufRead *.vba			call dist#ft#FTvba()
+
+" Visual Basic Project
+au BufNewFile,BufRead *.vbp			setf dosini
+
+" VBScript (close to Visual Basic)
+au BufNewFile,BufRead *.vbs			setf vb
+
+" Visual Basic .NET (close to Visual Basic)
+au BufNewFile,BufRead *.vb			setf vb
+
+" Visual Studio Macro
+au BufNewFile,BufRead *.dsm			setf vb
+
+" SaxBasic (close to Visual Basic)
 au BufNewFile,BufRead *.sba			setf vb
 
 " Vgrindefs file
--- a/runtime/ftplugin/abap.vim
+++ b/runtime/ftplugin/abap.vim
@@ -3,6 +3,7 @@
 " Author:	Steven Oliver <oliver.steven@gmail.com>
 " Copyright:	Copyright (c) 2013 Steven Oliver
 " License:	You may redistribute this under the same terms as Vim itself
+" Last Change:  2023 Aug 28 by Vim Project (undo_ftplugin)
 " --------------------------------------------------------------------------
 
 " Only do this when not done yet for this buffer
@@ -17,10 +18,13 @@ set cpo&vim
 setlocal softtabstop=2 shiftwidth=2
 setlocal suffixesadd=.abap
 
+let b:undo_ftplugin = "setl sts< sua< sw<"
+
 " Windows allows you to filter the open file dialog
 if has("gui_win32") && !exists("b:browsefilter")
   let b:browsefilter = "ABAP Source Files (*.abap)\t*.abap\n" .
                      \ "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin .= " | unlet! b:browsefilter"
 endif
 
 let &cpo = s:cpo_save
--- a/runtime/ftplugin/art.vim
+++ b/runtime/ftplugin/art.vim
@@ -3,6 +3,7 @@
 " Maintainer:    Dorai Sitaram <ds26@gte.com>
 " URL:		 http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
 " Last Change:   Apr 2, 2003
+"                2023 Aug 28 by Vim Project (undo_ftplugin)
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -13,3 +14,5 @@ run ftplugin/lisp.vim
 
 setl lw-=if
 setl lw+=def-art-fun,deffacts,defglobal,defrule,defschema,for,schema,while
+
+let b:undo_ftplugin ..= " | setl lw<"
--- a/runtime/ftplugin/asm.vim
+++ b/runtime/ftplugin/asm.vim
@@ -1,11 +1,13 @@
 " Vim filetype plugin file
 " Language:	asm
 " Maintainer:	Colin Caine <cmcaine at the common googlemail domain>
-" Last Changed: 23 May 2020
+" Last Change:  23 May 2020
+" 		2023 Aug 28 by Vim Project (undo_ftplugin)
 
 if exists("b:did_ftplugin") | finish | endif
+let b:did_ftplugin = 1
 
 setl comments=:;,s1:/*,mb:*,ex:*/,://
 setl commentstring=;%s
 
-let b:did_ftplugin = 1
+let b:undo_ftplugin = "setl commentstring< comments<"
--- a/runtime/ftplugin/awk.vim
+++ b/runtime/ftplugin/awk.vim
@@ -37,11 +37,14 @@ if exists("g:awk_is_gawk")
     let b:undo_ftplugin .= " | setl fp<"
   endif
 
-  let path = system("gawk 'BEGIN { printf ENVIRON[\"AWKPATH\"] }'")
-  let path = substitute(path, '^\.\=:\|:\.\=$\|:\.\=:', ',,', 'g') " POSIX cwd
-  let path = substitute(path, ':', ',', 'g')
+  " Disabled by default for security reasons.  
+  if get(g:, 'awk_exec', get(g:, 'plugin_exec', 0))
+    let path = system("gawk 'BEGIN { printf ENVIRON[\"AWKPATH\"] }'")
+    let path = substitute(path, '^\.\=:\|:\.\=$\|:\.\=:', ',,', 'g') " POSIX cwd
+    let path = substitute(path, ':', ',', 'g')
 
-  let &l:path = path
+    let &l:path = path
+  endif
   let b:undo_ftplugin .= " | setl inc< path<"
 endif
 
--- a/runtime/ftplugin/bash.vim
+++ b/runtime/ftplugin/bash.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	bash
-" Maintainer:	Bram Moolenaar
-" Last Changed: 2019 Jan 12
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
+" Last Changed: 2023 Aug 13
 "
 " This is not a real filetype plugin.  It allows for someone to set 'filetype'
 " to "bash" in the modeline, and gets the effect of filetype "sh" with
--- a/runtime/ftplugin/bzl.vim
+++ b/runtime/ftplugin/bzl.vim
@@ -2,6 +2,7 @@
 " Language:	Bazel (http://bazel.io)
 " Maintainer:	David Barnett (https://github.com/google/vim-ft-bzl)
 " Last Change:	2021 Jan 19
+" 		2023 Aug 28 by Vim Project (undo_ftplugin)
 
 ""
 " @section Introduction, intro
@@ -41,6 +42,9 @@ let &l:tabstop = s:save_tabstop
 
 setlocal formatoptions-=t
 
+" Initially defined in the python ftplugin sourced above
+let b:undo_ftplugin .= " | setlocal fo<"
+
 " Make gf work with imports in BUILD files.
 setlocal includeexpr=substitute(v:fname,'//','','')
 
@@ -48,6 +52,7 @@ setlocal includeexpr=substitute(v:fname,
 if get(g:, 'ft_bzl_fold', 0)
   setlocal foldmethod=syntax
   setlocal foldtext=BzlFoldText()
+  let b:undo_ftplugin .= " | setlocal fdm< fdt<"
 endif
 
 if exists('*BzlFoldText')
--- a/runtime/ftplugin/changelog.vim
+++ b/runtime/ftplugin/changelog.vim
@@ -55,13 +55,19 @@ if &filetype == 'changelog'
     elseif $EMAIL_ADDRESS != ""
       return $EMAIL_ADDRESS
     endif
+    let s:default_login = 'unknown'
 
-    let login = s:login()
+    " Disabled by default for security reasons.  
+    if get(g:, 'changelog_exec', get(g:, 'plugin_exec', 0))
+      let login = s:login()
+    else
+      let login = s:default_login
+    endif
     return printf('%s <%s@%s>', s:name(login), login, s:hostname())
   endfunction
 
   function! s:login()
-    return s:trimmed_system_with_default('whoami', 'unknown')
+    return s:trimmed_system_with_default('whoami', s:default_login)
   endfunction
 
   function! s:trimmed_system_with_default(command, default)
@@ -71,7 +77,7 @@ if &filetype == 'changelog'
   function! s:system_with_default(command, default)
     let output = system(a:command)
     if v:shell_error
-      return default
+      return a:default
     endif
     return output
   endfunction
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -122,7 +122,7 @@ function NewVersion()
     normal! 1G0
     call search(')')
     normal! h
-    " ':normal' doens't support key annotation (<c-a>) directly.
+    " ':normal' doesn't support key annotation (<c-a>) directly.
     " Vim's manual recommends using ':exe' to use key annotation indirectly (backslash-escaping needed though).
     exe "normal! \<c-a>"
     call setline(1, substitute(getline(1), '-\$\$', '-', ''))
--- a/runtime/ftplugin/dune.vim
+++ b/runtime/ftplugin/dune.vim
@@ -3,8 +3,9 @@
 "              Anton Kochkov       <anton.kochkov@gmail.com>
 " URL:         https://github.com/ocaml/vim-ocaml
 " Last Change:
-"              2018 Nov 3 - Added commentstring (Markus Mottl)
-"              2017 Sep 6 - Initial version (Etienne Millon)
+"              2023 Aug 28 - Added undo_ftplugin (Vim Project)
+"              2018 Nov 03 - Added commentstring (Markus Mottl)
+"              2017 Sep 06 - Initial version (Etienne Millon)
 
 if exists("b:did_ftplugin")
   finish
@@ -18,3 +19,5 @@ setl commentstring=;\ %s
 setl comments=:;
 
 setl iskeyword+=#,?,.,/
+
+let b:undo_ftplugin = "setl lisp< cms< com< isk<"
--- a/runtime/ftplugin/eruby.vim
+++ b/runtime/ftplugin/eruby.vim
@@ -3,7 +3,7 @@
 " Maintainer:		Tim Pope <vimNOSPAM@tpope.org>
 " URL:			https://github.com/vim-ruby/vim-ruby
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
-" Last Change:		2020 Jun 28
+" Last Change:		2022 May 15
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -86,8 +86,12 @@ runtime! ftplugin/ruby.vim ftplugin/ruby
 let b:did_ftplugin = 1
 
 " Combine the new set of values with those previously included.
-if exists("b:undo_ftplugin")
-  let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
+if !exists('b:undo_ftplugin')
+  " No-op
+  let b:undo_ftplugin = 'exe'
+endif
+if !empty(s:undo_ftplugin)
+  let b:undo_ftplugin .= '|' . s:undo_ftplugin
 endif
 if exists ("b:browsefilter")
   let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter
@@ -119,7 +123,7 @@ endif
 setlocal commentstring=<%#%s%>
 
 let b:undo_ftplugin = "setl cms< " .
-      \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
+      \ " | unlet! b:browsefilter b:match_words | " . b:undo_ftplugin
 
 let &cpo = s:save_cpo
 unlet s:save_cpo
--- a/runtime/ftplugin/fish.vim
+++ b/runtime/ftplugin/fish.vim
@@ -3,6 +3,7 @@
 " Maintainer:   Nicholas Boyle (github.com/nickeb96)
 " Repository:   https://github.com/nickeb96/fish.vim
 " Last Change:  February 1, 2023
+"               2023 Aug 28 by Vim Project (undo_ftplugin)
 
 if exists("b:did_ftplugin")
     finish
@@ -13,3 +14,5 @@ setlocal iskeyword=@,48-57,_,192-255,-,.
 setlocal comments=:#
 setlocal commentstring=#%s
 setlocal formatoptions+=crjq
+
+let b:undo_ftplugin = "setl cms< com< fo< isk<"
new file mode 100644
--- /dev/null
+++ b/runtime/ftplugin/forth.vim
@@ -0,0 +1,71 @@
+" Vim filetype plugin
+" Language:	Forth
+" Maintainer:	Johan Kotlinski <kotlinski@gmail.com>
+" Last Change:	2023 Aug 08
+" URL:		https://github.com/jkotlinski/forth.vim
+
+if exists("b:did_ftplugin")
+  finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+setlocal commentstring=\\\ %s
+setlocal comments=s:(,mb:\ ,e:),b:\\
+setlocal iskeyword=33-126,128-255
+
+let s:include_patterns =<< trim EOL
+
+  \<\%(INCLUDE\|REQUIRE\)\>\s\+\zs\k\+\ze
+  \<S"\s\+\zs[^"]*\ze"\s\+\%(INCLUDED\|REQUIRED\)\>
+EOL
+let &l:include = $'\c{ s:include_patterns[1:]->join('\|') }'
+
+let s:define_patterns =<< trim EOL
+  :
+  [2F]\=CONSTANT
+  [2F]\=VALUE
+  [2F]\=VARIABLE
+  BEGIN-STRUCTURE
+  BUFFER:
+  CODE
+  CREATE
+  MARKER
+  SYNONYM
+EOL
+let &l:define = $'\c\<\%({ s:define_patterns->join('\|') }\)'
+
+" assume consistent intra-project file extensions
+let &l:suffixesadd = "." .. expand("%:e")
+
+let b:undo_ftplugin = "setl cms< com< def< inc< isk< sua<"
+
+if exists("loaded_matchit") && !exists("b:match_words")
+  let s:matchit_patterns =<< trim EOL
+
+    \<\:\%(NONAME\)\=\>:\<EXIT\>:\<;\>
+    \<IF\>:\<ELSE\>:\<THEN\>
+    \<\[IF]\>:\<\[ELSE]\>:\<\[THEN]\>
+    \<?\=DO\>:\<LEAVE\>:\<+\=LOOP\>
+    \<CASE\>:\<ENDCASE\>
+    \<OF\>:\<ENDOF\>
+    \<BEGIN\>:\<WHILE\>:\<\%(AGAIN\|REPEAT\|UNTIL\)\>
+    \<CODE\>:\<END-CODE\>
+    \<BEGIN-STRUCTURE\>:\<END-STRUCTURE\>
+  EOL
+  let b:match_ignorecase = 1
+  let b:match_words = s:matchit_patterns[1:]->join(',')
+  let b:undo_ftplugin ..= "| unlet! b:match_ignorecase b:match_words"
+endif
+
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
+  let b:browsefilter = "Forth Source Files (*.f *.fs *.ft *.fth *.4th)\t*.f;*.fs;*.ft;*.fth;*.4th\n" ..
+	\	       "All Files (*.*)\t*.*\n"
+  let b:undo_ftplugin ..= " | unlet! b:browsefilter"
+endif
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+unlet s:define_patterns s:include_patterns s:matchit_patterns
--- a/runtime/ftplugin/gpg.vim
+++ b/runtime/ftplugin/gpg.vim
@@ -15,5 +15,22 @@ let b:undo_ftplugin = "setl com< cms< fo
 
 setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
 
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman
+          \ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+--' . <q-args> . '\b'' --hilite-search" man ' . 'gpg' |
+          \ redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman
+          \ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+--' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'gpg'
+  endif
+  if exists(':Sman') == 2
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+  endif
+endif
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
+
--- a/runtime/ftplugin/hare.vim
+++ b/runtime/ftplugin/hare.vim
@@ -2,26 +2,34 @@
 " Language: Hare
 " Maintainer: Amelia Clarke <me@rsaihe.dev>
 " Previous Maintainer: Drew DeVault <sir@cmpwn.com>
-" Last Updated: 2022-09-21
+" Last Updated: 2022-09-28
+"               2023 Aug 28 by Vim Project (undo_ftplugin)
 
-" Only do this when not done yet for this buffer
 if exists('b:did_ftplugin')
   finish
 endif
-
-" Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setlocal noexpandtab
-setlocal tabstop=8
-setlocal shiftwidth=0
-setlocal softtabstop=0
-setlocal textwidth=80
+" Formatting settings.
+setlocal formatoptions-=t formatoptions+=croql/
+
+" Miscellaneous.
+setlocal comments=://
 setlocal commentstring=//\ %s
+setlocal suffixesadd=.ha
 
-" Set 'formatoptions' to break comment lines but not other lines,
-" and insert the comment leader when hitting <CR> or using "o".
-setlocal fo-=t fo+=croql
+let b:undo_ftplugin = "setl cms< com< fo< sua<"
+
+" Hare recommended style.
+if get(g:, "hare_recommended_style", 1)
+  setlocal noexpandtab
+  setlocal shiftwidth=8
+  setlocal softtabstop=0
+  setlocal tabstop=8
+  setlocal textwidth=80
+  let b:undo_ftplugin ..= " | setl et< sts< sw< ts< tw<"
+endif
 
 compiler hare
-" vim: tabstop=2 shiftwidth=2 expandtab
+
+" vim: et sw=2 sts=2 ts=8
--- a/runtime/ftplugin/heex.vim
+++ b/runtime/ftplugin/heex.vim
@@ -18,7 +18,7 @@ let b:undo_ftplugin = 'set sw< sts< et< 
 " HTML: thanks to Johannes Zellner and Benji Fisher.
 if exists("loaded_matchit") && !exists("b:match_words")
   let b:match_ignorecase = 1
-  let b:match_words = '<!--:-->,' ..
+  let b:match_words = '<%\{-}!--:--%\{-}>,' ..
 	\	      '<:>,' ..
 	\	      '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' ..
 	\	      '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' ..
--- a/runtime/ftplugin/ishd.vim
+++ b/runtime/ftplugin/ishd.vim
@@ -1,32 +1,37 @@
 " Vim filetype plugin file
-" Language:	InstallShield (ft=ishd)
-" Maintainer:	Johannes Zellner <johannes@zellner.org>
-" Last Change:	Sat, 24 May 2003 11:55:36 CEST
+" Language:		InstallShield (ft=ishd)
+" Maintainer:		Doug Kearns <dougkearns@gmail.com>
+" Previous Maintainer:	Johannes Zellner <johannes@zellner.org>
+" Last Change:		2023 Aug 28
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
 
-setlocal foldmethod=syntax
-
 " Using line continuation here.
 let s:cpo_save = &cpo
 set cpo-=C
 
+setlocal foldmethod=syntax
+
+let b:undo_ftplugin = "setl fdm<"
+
 " matchit support
 if exists("loaded_matchit")
-    let b:match_ignorecase=0
-    let b:match_words=
+    let b:match_ignorecase = 0
+    let b:match_words =
     \ '\%(^\s*\)\@<=\<function\>\s\+[^()]\+\s*(:\%(^\s*\)\@<=\<begin\>\s*$:\%(^\s*\)\@<=\<return\>:\%(^\s*\)\@<=\<end\>\s*;\s*$,' .
     \ '\%(^\s*\)\@<=\<repeat\>\s*$:\%(^\s*\)\@<=\<until\>\s\+.\{-}\s*;\s*$,' .
     \ '\%(^\s*\)\@<=\<switch\>\s*(.\{-}):\%(^\s*\)\@<=\<\%(case\|default\)\>:\%(^\s*\)\@<=\<endswitch\>\s*;\s*$,' .
     \ '\%(^\s*\)\@<=\<while\>\s*(.\{-}):\%(^\s*\)\@<=\<endwhile\>\s*;\s*$,' .
     \ '\%(^\s*\)\@<=\<for\>.\{-}\<\%(to\|downto\)\>:\%(^\s*\)\@<=\<endfor\>\s*;\s*$,' .
     \ '\%(^\s*\)\@<=\<if\>\s*(.\{-})\s*then:\%(^\s*\)\@<=\<else\s*if\>\s*([^)]*)\s*then:\%(^\s*\)\@<=\<else\>:\%(^\s*\)\@<=\<endif\>\s*;\s*$'
+    let b:undo_ftplugin .= " | unlet! b:match_ignorecase b:match_words"
 endif
 
-if has("gui_win32") && !exists("b:browsefilter")
+if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
     let b:browsefilter = "InstallShield Files (*.rul)\t*.rul\n" .
-		       \ "All Files (*.*)\t*.*\n"
+          \              "All Files (*.*)\t*\n"
+    let b:undo_ftplugin .= " | unlet! b:browsefilter"
 endif
 
 let &cpo = s:cpo_save
--- a/runtime/ftplugin/lprolog.vim
+++ b/runtime/ftplugin/lprolog.vim
@@ -2,7 +2,8 @@
 " Language:     LambdaProlog (Teyjus)
 " Maintainer:   Markus Mottl  <markus.mottl@gmail.com>
 " URL:          http://www.ocaml.info/vim/ftplugin/lprolog.vim
-" Last Change:  2006 Feb 05
+" Last Change:  2023 Aug 28 - added undo_ftplugin (Vim Project)
+"               2006 Feb 05
 "               2001 Sep 16 - fixed 'no_mail_maps'-bug (MM)
 "               2001 Sep 02 - initial release  (MM)
 
@@ -15,11 +16,13 @@ endif
 let b:did_ftplugin = 1
 
 " Error format
-setlocal efm=%+A./%f:%l.%c:\ %m formatprg=fmt\ -w75\ -p\\%
+setlocal efm=%+A./%f:%l.%c:\ %m
 
 " Formatting of comments
 setlocal formatprg=fmt\ -w75\ -p\\%
 
+let b:undo_ftplugin = "setlocal efm< fp<"
+
 " Add mappings, unless the user didn't want this.
 if !exists("no_plugin_maps") && !exists("no_lprolog_maps")
   " Uncommenting
@@ -28,6 +31,11 @@ if !exists("no_plugin_maps") && !exists(
     vmap <buffer> <LocalLeader>c <Plug>BUncomOn
     nmap <buffer> <LocalLeader>C <Plug>LUncomOff
     vmap <buffer> <LocalLeader>C <Plug>BUncomOff
+    let b:undo_ftplugin ..=
+          \ " | silent! execute 'nunmap <buffer> <LocalLeader>c'" ..
+          \ " | silent! execute 'vunmap <buffer> <LocalLeader>c'" ..
+          \ " | silent! execute 'nunmap <buffer> <LocalLeader>C'" ..
+          \ " | silent! execute 'vunmap <buffer> <LocalLeader>C'"
   endif
 
   nnoremap <buffer> <Plug>LUncomOn mz0i/* <ESC>$A */<ESC>`z
--- a/runtime/ftplugin/modconf.vim
+++ b/runtime/ftplugin/modconf.vim
@@ -16,5 +16,21 @@ let b:undo_ftplugin = "setl com< cms< in
 setlocal comments=:# commentstring=#\ %s include=^\\s*include
 setlocal formatoptions-=t formatoptions+=croql
 
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman
+          \ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s{,8}' . <q-args> . '\b'' --hilite-search" man ' . 'modprobe.d' |
+          \ redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman
+          \ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s{,8}' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'modprobe.d'
+  endif
+  if exists(':Sman') == 2
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+  endif
+endif
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/ftplugin/muttrc.vim
+++ b/runtime/ftplugin/muttrc.vim
@@ -18,5 +18,21 @@ setlocal formatoptions-=t formatoptions+
 
 let &l:include = '^\s*source\>'
 
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman
+          \ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+' . <q-args> . '\b'' --hilite-search" man ' . 'muttrc' |
+          \ redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman
+          \ silent exe 'term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'muttrc'
+  endif
+  if exists(':Sman') == 2
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+  endif
+endif
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/ftplugin/nginx.vim
+++ b/runtime/ftplugin/nginx.vim
@@ -2,5 +2,8 @@
 " Language: nginx.conf
 " Maintainer: Chris Aumann <me@chr4.org>
 " Last Change: Apr 15, 2017
+"              2023 Aug 28 by Vim Project (undo_ftplugin)
 
 setlocal commentstring=#\ %s
+
+let b:undo_ftplugin = "setlocal commentstring<"
--- a/runtime/ftplugin/pbtxt.vim
+++ b/runtime/ftplugin/pbtxt.vim
@@ -2,20 +2,16 @@
 " Language:             Protobuf Text Format
 " Maintainer:           Lakshay Garg <lakshayg@outlook.in>
 " Last Change:          2020 Nov 17
+"                       2023 Aug 28 by Vim Project (undo_ftplugin)
 " Homepage:             https://github.com/lakshayg/vim-pbtxt
 
 if exists("b:did_ftplugin")
   finish
 endif
-
 let b:did_ftplugin = 1
 
-let s:cpo_save = &cpo
-set cpo&vim
-
 setlocal commentstring=#\ %s
 
-let &cpo = s:cpo_save
-unlet s:cpo_save
+let b:undo_ftplugin = "setlocal commentstring<"
 
 " vim: nowrap sw=2 sts=2 ts=8 noet
--- a/runtime/ftplugin/perl.vim
+++ b/runtime/ftplugin/perl.vim
@@ -5,6 +5,8 @@
 " Bugs/requests: https://github.com/vim-perl/vim-perl/issues
 " License:       Vim License (see :help license)
 " Last Change:   2021 Nov 10
+"                2023 Sep 07 by Vim Project (safety check: don't execute perl
+"                    from current directory)
 
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
@@ -54,7 +56,12 @@ endif
 
 " Set this once, globally.
 if !exists("perlpath")
-    if executable("perl")
+    let s:tmp_cwd = getcwd()
+    " safety check: don't execute perl binary by default
+    if executable("perl") && get(g:, 'perl_exec', get(g:, 'plugin_exec', 0))
+        \ && (fnamemodify(exepath("perl"), ":p:h") != s:tmp_cwd
+        \ || (index(split($PATH, has("win32") ? ';' : ':'), s:tmp_cwd) != -1
+        \ && s:tmp_cwd != '.'))
       try
 	if &shellxquote != '"'
 	    let perlpath = system('perl -e "print join(q/,/,@INC)"')
@@ -70,6 +77,7 @@ if !exists("perlpath")
 	" current directory and the directory of the current file.
 	let perlpath = ".,,"
     endif
+    unlet! s:tmp_cwd
 endif
 
 " Append perlpath to the existing path value, if it is set.  Since we don't
--- a/runtime/ftplugin/pod.vim
+++ b/runtime/ftplugin/pod.vim
@@ -5,11 +5,12 @@
 " Homepage:      https://github.com/vim-perl/vim-perl
 " Bugs/requests: https://github.com/vim-perl/vim-perl/issues
 " License:       Vim License (see :help license)
-" Last Change:   2021 Oct 19
+" Last Change:   2023 Jul 05
 
 if exists("b:did_ftplugin")
-    finish
+  finish
 endif
+let b:did_ftplugin = 1
 
 let s:save_cpo = &cpo
 set cpo-=C
@@ -37,12 +38,12 @@ if (has("gui_win32") || has("gui_gtk")) 
   let b:undo_ftplugin .= " | unlet! b:browsefilter"
 endif
 
-function! s:jumpToSection(backwards)
-  let flags = a:backwards ? 'bsWz' : 'sWz'
-  if has('syntax_items')
+function s:jumpToSection(direction)
+  let flags = a:direction == "backward" ? "bsWz" : "sWz"
+  if has("syntax_items")
     let skip = "synIDattr(synID(line('.'), col('.'), 1), 'name') !~# '\\<podCommand\\>'"
   else
-    let skip = ''
+    let skip = ""
   endif
   for i in range(v:count1)
     call search('^=\a', flags, 0, 0, skip)
@@ -50,19 +51,17 @@ function! s:jumpToSection(backwards)
 endfunction
 
 if !exists("no_plugin_maps") && !exists("no_pod_maps")
-  nnoremap <silent> <buffer> ]] <Cmd>call <SID>jumpToSection()<CR>
-  vnoremap <silent> <buffer> ]] <Cmd>call <SID>jumpToSection()<CR>
-  nnoremap <silent> <buffer> ][ <Cmd>call <SID>jumpToSection()<CR>
-  vnoremap <silent> <buffer> ][ <Cmd>call <SID>jumpToSection()<CR>
-  nnoremap <silent> <buffer> [[ <Cmd>call <SID>jumpToSection(1)<CR>
-  vnoremap <silent> <buffer> [[ <Cmd>call <SID>jumpToSection(1)<CR>
-  nnoremap <silent> <buffer> [] <Cmd>call <SID>jumpToSection(1)<CR>
-  vnoremap <silent> <buffer> [] <Cmd>call <SID>jumpToSection(1)<CR>
-  let b:undo_ftplugin .=
-        \ " | silent! exe 'nunmap <buffer> ]]' | silent! exe 'vunmap <buffer> ]]'" .
-        \ " | silent! exe 'nunmap <buffer> ][' | silent! exe 'vunmap <buffer> ]['" .
-        \ " | silent! exe 'nunmap <buffer> ]]' | silent! exe 'vunmap <buffer> ]]'" .
-        \ " | silent! exe 'nunmap <buffer> []' | silent! exe 'vunmap <buffer> []'"
+  for s:mode in ["n", "o", "x"]
+    for s:lhs in ["]]", "]["]
+      execute s:mode . "noremap <silent> <buffer> " . s:lhs . " <Cmd>call <SID>jumpToSection('forward')<CR>"
+      let b:undo_ftplugin .= " | silent! execute '" . s:mode . "unmap <buffer> " . s:lhs . "'"
+    endfor
+    for s:lhs in ["[[", "[]"]
+      execute s:mode . "noremap <silent> <buffer> " . s:lhs . " <Cmd>call <SID>jumpToSection('backward')<CR>"
+      let b:undo_ftplugin .= " | silent! execute '" . s:mode . "unmap <buffer> " . s:lhs . "'"
+    endfor
+  endfor
+  unlet s:mode s:lhs
 endif
 
 let &cpo = s:save_cpo
--- a/runtime/ftplugin/readline.vim
+++ b/runtime/ftplugin/readline.vim
@@ -25,11 +25,27 @@ if exists("loaded_matchit") && !exists("
 endif
 
 if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
-  let b:browsefilter = "Readline Intialization Files (inputrc .inputrc)\tinputrc;*.inputrc\n" ..
+  let b:browsefilter = "Readline Initialization Files (inputrc .inputrc)\tinputrc;*.inputrc\n" ..
 	\	       "All Files (*.*)\t*.*\n"
   let b:undo_ftplugin ..= " | unlet! b:browsefilter"
 endif
 
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman
+          \ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+' . <q-args> . '\b'' --hilite-search" man ' . '3 readline' |
+          \ redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman
+          \ silent exe 'term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . '3 readline'
+  endif
+  if exists(':Sman') == 2
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+  endif
+endif
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
 
--- a/runtime/ftplugin/rst.vim
+++ b/runtime/ftplugin/rst.vim
@@ -28,7 +28,7 @@ setlocal formatoptions+=tcroql
 " directives (..) and ordered lists (1.), although it can cause problems for
 " many other cases.
 "
-" More sophisticated indentation rules should be revisted in the future.
+" More sophisticated indentation rules should be revisited in the future.
 
 if exists("g:rst_style") && g:rst_style != 0
     setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -3,7 +3,7 @@
 " Maintainer:		Tim Pope <vimNOSPAM@tpope.org>
 " URL:			https://github.com/vim-ruby/vim-ruby
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
-" Last Change:		2022 Mar 21
+" Last Change:		2023 Sep 1st
 
 if (exists("b:did_ftplugin"))
   finish
@@ -61,6 +61,10 @@ if !exists('g:ruby_version_paths')
 endif
 
 function! s:query_path(root) abort
+  " Disabled by default for security reasons.  
+  if !get(g:, 'ruby_exec', get(g:, 'plugin_exec', 0))
+    return []
+  endif
   let code = "print $:.join %q{,}"
   if &shell =~# 'sh' && empty(&shellxquote)
     let prefix = 'env PATH='.shellescape($PATH).' '
@@ -77,7 +81,14 @@ function! s:query_path(root) abort
   let cwd = fnameescape(getcwd())
   try
     exe cd fnameescape(a:root)
-    let path = split(system(path_check),',')
+    let s:tmp_cwd = getcwd()
+    if (fnamemodify(exepath('ruby'), ':p:h') ==# cwd
+          \ && (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) == -1 || s:tmp_cwd == '.'))
+      let path = []
+    else
+      let path = split(system(path_check),',')
+    endif
+    unlet! s:tmp_cwd
     exe cd cwd
     return path
   finally
--- a/runtime/ftplugin/scala.vim
+++ b/runtime/ftplugin/scala.vim
@@ -4,6 +4,7 @@
 " URL:                  https://github.com/derekwyatt/vim-scala
 " License:              Same as Vim
 " Last Change:          11 August 2021
+"                       2023 Aug 28 by Vim Project (undo_ftplugin)
 " ----------------------------------------------------------------------------
 
 if exists('b:did_ftplugin') || &cp
@@ -32,4 +33,6 @@ setlocal includeexpr=substitute(v:fname,
 setlocal path+=src/main/scala,src/test/scala
 setlocal suffixesadd=.scala
 
+let b:undo_ftplugin = "setlocal cms< com< et< fo< inc< inex< pa< sts< sua< sw<"
+
 " vim:set sw=2 sts=2 ts=8 et:
--- a/runtime/ftplugin/sexplib.vim
+++ b/runtime/ftplugin/sexplib.vim
@@ -3,6 +3,7 @@
 " Maintainer:  Markus Mottl        <markus.mottl@gmail.com>
 " URL:         https://github.com/ocaml/vim-ocaml
 " Last Change:
+"              2023 Aug 28 - Added undo_ftplugin (Vim Project)
 "              2017 Apr 12 - First version (MM)
 
 if exists("b:did_ftplugin")
@@ -13,3 +14,5 @@ let b:did_ftplugin=1
 " Comment string
 setl commentstring=;\ %s
 setl comments=:;
+
+let b:undo_ftplugin = "setl cms< com<"
--- a/runtime/ftplugin/sh.vim
+++ b/runtime/ftplugin/sh.vim
@@ -2,15 +2,14 @@
 " Language:		sh
 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
 " Previous Maintainer:	Dan Sharp
-" Last Change:		2022 Sep 07
+" Contributor:		Enno Nagel <ennonagel+vim@gmail.com>
+" Last Change:		2023 Aug 29
 
 if exists("b:did_ftplugin")
   finish
 endif
 let b:did_ftplugin = 1
 
-" Make sure the continuation lines below do not cause problems in
-" compatibility mode.
 let s:save_cpo = &cpo
 set cpo-=C
 
@@ -32,16 +31,27 @@ if exists("loaded_matchit") && !exists("
   let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words"
 endif
 
-" Change the :browse e filter to primarily show shell-related files.
 if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter")
-    let  b:browsefilter = "Bourne Shell Scripts (*.sh)\t*.sh\n" ..
-		\	  "Korn Shell Scripts (*.ksh)\t*.ksh\n" ..
-		\	  "Bash Shell Scripts (*.bash)\t*.bash\n" ..
-		\	  "All Files (*.*)\t*.*\n"
+  let b:browsefilter = "Bourne Shell Scripts (*.sh)\t*.sh\n" ..
+	\	       "Korn Shell Scripts (*.ksh)\t*.ksh\n" ..
+	\	       "Bash Shell Scripts (*.bash)\t*.bash\n" ..
+	\	       "All Files (*.*)\t*.*\n"
   let b:undo_ftplugin ..= " | unlet! b:browsefilter"
 endif
 
-" Restore the saved compatibility options.
+if (exists("b:is_bash") && (b:is_bash == 1)) ||
+      \ (exists("b:is_sh") && (b:is_sh == 1))
+  if !has("gui_running") && executable("less")
+    command! -buffer -nargs=1 Help silent exe '!bash -c "{ help "<args>" 2>/dev/null || man "<args>"; } | LESS= less"' | redraw!
+  elseif has('terminal')
+    command! -buffer -nargs=1 Help silent exe ':term bash -c "help "<args>" 2>/dev/null || man "<args>""'
+  else
+    command! -buffer -nargs=1 Help echo system('bash -c "help <args>" 2>/dev/null || man "<args>"')
+  endif
+  setlocal keywordprg=:Help
+  let b:undo_ftplugin ..= " | setl kp< | sil! delc -buffer Help"
+endif
+
 let &cpo = s:save_cpo
 unlet s:save_cpo
 
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -140,7 +140,7 @@ if !exists("*SQL_SetType")
                         \ )
 
             " Remove duplicates, since sqlanywhere.vim can exist in the
-            " sytax, indent and ftplugin directory, yet we only want
+            " syntax, indent and ftplugin directory, yet we only want
             " to display the option once
             let index = match(sqls, '.\{-}\ze\n')
             while index > -1
@@ -204,7 +204,7 @@ if !exists("*SQL_SetType")
         endif
         let b:sql_type_override = new_sql_type
 
-        " Remove any cached SQL since a new sytax will have different
+        " Remove any cached SQL since a new syntax will have different
         " items and groups
         if !exists('g:loaded_sql_completion') || g:loaded_sql_completion >= 100
             call sqlcomplete#ResetCacheSyntax()
--- a/runtime/ftplugin/sshconfig.vim
+++ b/runtime/ftplugin/sshconfig.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
-" Language:             OpenSSH client configuration file
-" Previous Maintainer:  Nikolai Weibull <now@bitwi.se>
-" Latest Revision:      2008-07-09
+" Language:         OpenSSH client configuration file
+" Previous Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2008-07-09
 
 if exists("b:did_ftplugin")
   finish
@@ -11,9 +11,24 @@ let b:did_ftplugin = 1
 let s:cpo_save = &cpo
 set cpo&vim
 
-let b:undo_ftplugin = "setl com< cms< fo<"
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
+let b:undo_ftplugin = 'setlocal com< cms< fo<'
 
-setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman
+          \ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s+' . <q-args> . '$'' --hilite-search" man ' . 'ssh_config' |
+          \ redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman
+          \ silent exe 'term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . <q-args> . '$', '\') . ''' --hilite-search" man ' . 'ssh_config'
+  endif
+  if exists(':Sman') == 2
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+  endif
+endif
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/ftplugin/sudoers.vim
+++ b/runtime/ftplugin/sudoers.vim
@@ -15,5 +15,21 @@ let b:undo_ftplugin = "setl com< cms< fo
 
 setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
 
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman
+          \ silent exe '!' . 'LESS= MANPAGER="less --pattern=''\b' . <q-args> . '\b'' --hilite-search" man ' . 'sudoers' |
+          \ redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman
+          \ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('\b' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'sudoers'
+  endif
+  if exists(':Sman') == 2
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+  endif
+endif
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/ftplugin/systemd.vim
+++ b/runtime/ftplugin/systemd.vim
@@ -7,35 +7,30 @@ if !exists('b:did_ftplugin')
   runtime! ftplugin/dosini.vim
 endif
 
-if !has('unix')
-  finish
-endif
-
-if !has('gui_running')
-  command! -buffer -nargs=1 Sman silent exe '!' . KeywordLookup_systemd(<q-args>) | redraw!
-elseif has('terminal')
-  command! -buffer -nargs=1 Sman silent exe 'term ' . KeywordLookup_systemd(<q-args>)
-else
-  finish
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman silent exe '!' . KeywordLookup_systemd(<q-args>) | redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman silent exe 'term ' . KeywordLookup_systemd(<q-args>)
+  endif
+  if exists(':Sman') == 2
+    if !exists('*KeywordLookup_systemd')
+      function KeywordLookup_systemd(keyword) abort
+        let matches = matchlist(getline(search('\v^\s*\[\s*.+\s*\]\s*$', 'nbWz')), '\v^\s*\[\s*(\k+).*\]\s*$')
+        if len(matches) > 1
+          let section = matches[1]
+          return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd.' . section
+        else
+          return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd'
+        endif
+      endfunction
+    endif
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    if !exists('b:undo_ftplugin') || empty(b:undo_ftplugin)
+      let b:undo_ftplugin = 'setlocal keywordprg< iskeyword<'
+    else
+      let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+    endif
+  endif
 endif
-
-if !exists('*KeywordLookup_systemd')
-  function KeywordLookup_systemd(keyword) abort
-    let matches = matchlist(getline(search('\v^\s*\[\s*.+\s*\]\s*$', 'nbWz')), '\v^\s*\[\s*(\k+).*\]\s*$')
-    if len(matches) > 1
-      let section = matches[1]
-      return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd.' . section
-    else
-      return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd'
-    endif
-  endfunction
-endif
-
-setlocal iskeyword+=-
-setlocal keywordprg=:Sman
-
-if !exists('b:undo_ftplugin') || empty(b:undo_ftplugin)
-  let b:undo_ftplugin = 'setlocal keywordprg< iskeyword<'
-else
-  let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword<'
-endif
--- a/runtime/ftplugin/tidy.vim
+++ b/runtime/ftplugin/tidy.vim
@@ -1,5 +1,5 @@
 " Vim filetype plugin file
-" Language:	HMTL Tidy Configuration
+" Language:	HTML Tidy Configuration
 " Maintainer:	Doug Kearns <dougkearns@gmail.com>
 " Last Change:	2020 Sep 4
 
--- a/runtime/ftplugin/udevrules.vim
+++ b/runtime/ftplugin/udevrules.vim
@@ -15,5 +15,21 @@ let b:undo_ftplugin = "setl com< cms< fo
 
 setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
 
+if has('unix') && executable('less')
+  if !has('gui_running')
+    command -buffer -nargs=1 Sman
+          \ silent exe '!' . 'LESS= MANPAGER="less --pattern=''^\s{,8}' . <q-args> . '\b'' --hilite-search" man ' . 'udev' |
+          \ redraw!
+  elseif has('terminal')
+    command -buffer -nargs=1 Sman
+          \ silent exe ':term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s{,8}' . <q-args> . '\b', '\') . ''' --hilite-search" man ' . 'udev'
+  endif
+  if exists(':Sman') == 2
+    setlocal iskeyword+=-
+    setlocal keywordprg=:Sman
+    let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer Sman'
+  endif
+endif
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/ftplugin/usd.vim
+++ b/runtime/ftplugin/usd.vim
@@ -2,17 +2,13 @@
 " Language:     Pixar Animation's Universal Scene Description format
 " Maintainer:   Colin Kennedy <colinvfx@gmail.com>
 " Last Change:  2023 May 9
+"               2023 Aug 28 by Vim Project (undo_ftplugin)
 
 if exists("b:did_ftplugin")
   finish
 endif
-
-let s:cpo_save = &cpo
-set cpo&vim
-
 let b:did_ftplugin = 1
 
 setlocal commentstring=#\ %s
 
-let &cpo = s:cpo_save
-unlet s:cpo_save
+let b:undo_ftplugin = "setlocal commentstring<"
--- a/runtime/ftplugin/vhdl.vim
+++ b/runtime/ftplugin/vhdl.vim
@@ -3,6 +3,7 @@
 " Maintainer:  R.Shankar <shankar.pec?gmail.com>
 " Modified By: Gerald Lai <laigera+vim?gmail.com>
 " Last Change: 2011 Dec 11
+"              2023 Aug 28 by Vim Project (undo_ftplugin, commentstring)
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -22,13 +23,20 @@ set cpo&vim
 " Set 'comments' to format dashed lists in comments.
 "setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
 
+setlocal commentstring=--\ %s
+
 " Format comments to be up to 78 characters long
 "setlocal tw=75
 
+" let b:undo_ftplugin = "setl cms< com< fo< tw<"
+
+let b:undo_ftplugin = "setl cms< "
+
 " Win32 can filter files in the browse dialog
 "if has("gui_win32") && !exists("b:browsefilter")
 "  let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" .
 "   \ "All Files (*.*)\t*.*\n"
+"  let b:undo_ftplugin .= " | unlet! b:browsefilter"
 "endif
 
 " Let the matchit plugin know what items can be matched.
@@ -52,37 +60,49 @@ if ! exists("b:match_words")  &&  exists
     \ s:notend.'\<package\>:\<end\s\+package\>,'.
     \ s:notend.'\<procedure\>:\<end\s\+procedure\>,'.
     \ s:notend.'\<configuration\>:\<end\s\+configuration\>'
+  let b:undo_ftplugin .= " | unlet! b:match_ignorecase b:match_words"
 endif
 
-" count repeat
-function! <SID>CountWrapper(cmd)
-  let i = v:count1
-  if a:cmd[0] == ":"
-    while i > 0
-      execute a:cmd
-      let i = i - 1
-    endwhile
-  else
-    execute "normal! gv\<Esc>"
-    execute "normal ".i.a:cmd
-    let curcol = col(".")
-    let curline = line(".")
-    normal! gv
-    call cursor(curline, curcol)
-  endif
-endfunction
+if !exists("no_plugin_maps") && !exists("no_vhdl_maps")
+  " count repeat
+  function! <SID>CountWrapper(cmd)
+    let i = v:count1
+    if a:cmd[0] == ":"
+      while i > 0
+	execute a:cmd
+	let i = i - 1
+      endwhile
+    else
+      execute "normal! gv\<Esc>"
+      execute "normal ".i.a:cmd
+      let curcol = col(".")
+      let curline = line(".")
+      normal! gv
+      call cursor(curline, curcol)
+    endif
+  endfunction
 
-" explore motion
-" keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units"
-let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)'
-noremap  <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
-noremap  <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
-noremap  <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
-noremap  <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
-vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR>
-vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR>
-vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR>
-vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR>
+  " explore motion
+  " keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units"
+  let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)'
+  noremap  <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+  noremap  <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+  noremap  <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+  noremap  <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+  vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR>
+  vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR>
+  vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR>
+  vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR>
+  let b:undo_ftplugin .=
+	\ " | silent! execute 'nunmap <buffer> [['" .
+	\ " | silent! execute 'nunmap <buffer> ]]'" .
+	\ " | silent! execute 'nunmap <buffer> []'" .
+	\ " | silent! execute 'nunmap <buffer> ]['" .
+	\ " | silent! execute 'vunmap <buffer> [['" .
+	\ " | silent! execute 'vunmap <buffer> ]]'" .
+	\ " | silent! execute 'vunmap <buffer> []'" .
+	\ " | silent! execute 'vunmap <buffer> ]['"
+endif
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
--- a/runtime/ftplugin/zig.vim
+++ b/runtime/ftplugin/zig.vim
@@ -17,7 +17,7 @@ compiler zig_build
 " Match Zig builtin fns
 setlocal iskeyword+=@-@
 
-" Recomended code style, no tabs and 4-space indentation
+" Recommended code style, no tabs and 4-space indentation
 setlocal expandtab
 setlocal tabstop=8
 setlocal softtabstop=4
@@ -39,13 +39,18 @@ endif
 
 let &l:define='\v(<fn>|<const>|<var>|^\s*\#\s*define)'
 
-if !exists('g:zig_std_dir') && exists('*json_decode') && executable('zig')
+" Safety check: don't execute zip from current directory
+if !exists('g:zig_std_dir') && exists('*json_decode') &&
+    \  executable('zig') && get(g:, 'zig_exec', get(g:, 'plugin_exec', 0))
+    \ && (fnamemodify(exepath("zig"), ":p:h") != s:tmp_cwd
+    \ || (index(split($PATH,has("win32")? ';' : ':'), s:tmp_cwd) != -1 && s:tmp_cwd != '.'))
     silent let s:env = system('zig env')
     if v:shell_error == 0
         let g:zig_std_dir = json_decode(s:env)['std_dir']
     endif
     unlet! s:env
 endif
+unlet! s:tmp_cwd
 
 if exists('g:zig_std_dir')
     let &l:path = &l:path . ',' . g:zig_std_dir
--- a/runtime/ftplugin/zsh.vim
+++ b/runtime/ftplugin/zsh.vim
@@ -30,7 +30,7 @@ if executable('zsh') && &shell !~# '/\%(
     compiler zsh
   endif
   setlocal keywordprg=:RunHelp
-  let b:undo_ftplugin .= 'keywordprg<'
+  let b:undo_ftplugin .= 'keywordprg< | sil! delc -buffer RunHelp'
 endif
 
 let b:match_words = '\<if\>:\<elif\>:\<else\>:\<fi\>'
--- a/runtime/indent/bash.vim
+++ b/runtime/indent/bash.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	bash
-" Maintainer:	Bram
-" Last Change:	2019 Sep 27
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
+" Last Change:	2023 Aug 13
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
--- a/runtime/indent/ch.vim
+++ b/runtime/indent/ch.vim
@@ -3,6 +3,7 @@
 " Maintainer:	SoftIntegration, Inc. <info@softintegration.com>
 " URL:		http://www.softintegration.com/download/vim/indent/ch.vim
 " Last change:	2006 Apr 30
+" 		2023 Aug 28 by Vim Project (undo_indent)
 "		Created based on cpp.vim
 "
 " Ch is a C/C++ interpreter with many high level extensions
@@ -16,3 +17,5 @@ let b:did_indent = 1
 
 " Ch indenting is built-in, thus this is very simple
 setlocal cindent
+
+let b:undo_indent = "setlocal cindent<"
--- a/runtime/indent/dune.vim
+++ b/runtime/indent/dune.vim
@@ -3,6 +3,7 @@
 " Maintainers:  Markus Mottl         <markus.mottl@gmail.com>
 " URL:          https://github.com/ocaml/vim-ocaml
 " Last Change:  2021 Jan 01
+"               2023 Aug 28 by Vim Project (undo_indent)
 
 if exists("b:did_indent")
  finish
@@ -11,3 +12,5 @@ let b:did_indent = 1
 
 " dune format-dune-file uses 1 space to indent
 setlocal softtabstop=1 shiftwidth=1 expandtab
+
+let b:undo_indent = "setl et< sts< sw<"
--- a/runtime/indent/fish.vim
+++ b/runtime/indent/fish.vim
@@ -3,6 +3,7 @@
 " Maintainer:   Nicholas Boyle (github.com/nickeb96)
 " Repository:   https://github.com/nickeb96/fish.vim
 " Last Change:  February 4, 2023
+"               2023 Aug 28 by Vim Project (undo_indent)
 
 if exists("b:did_indent")
     finish
@@ -12,6 +13,8 @@ let b:did_indent = 1
 setlocal indentexpr=GetFishIndent(v:lnum)
 setlocal indentkeys+==end,=else,=case
 
+let b:undo_indent = "setlocal indentexpr< indentkeys<"
+
 function s:PrevCmdStart(linenum)
     let l:linenum = a:linenum
     " look for the first line that isn't a line continuation
--- a/runtime/indent/go.vim
+++ b/runtime/indent/go.vim
@@ -2,6 +2,7 @@
 " Language:	Go
 " Maintainer:	David Barnett (https://github.com/google/vim-ft-go)
 " Last Change:	2017 Jun 13
+"		2023 Aug 28 by Vim Project (undo_indent)
 "
 " TODO:
 " - function invocations split across lines
@@ -19,6 +20,8 @@ setlocal autoindent
 setlocal indentexpr=GoIndent(v:lnum)
 setlocal indentkeys+=<:>,0=},0=)
 
+let b:undo_indent = "setl ai< inde< indk< lisp<"
+
 if exists('*GoIndent')
   finish
 endif
--- a/runtime/indent/hare.vim
+++ b/runtime/indent/hare.vim
@@ -2,6 +2,7 @@
 " Language: Hare
 " Maintainer: Amelia Clarke <me@rsaihe.dev>
 " Last Change: 2022 Sep 22
+"              2023 Aug 28 by Vim Project (undo_indent)
 
 if exists("b:did_indent")
   finish
@@ -40,6 +41,8 @@ setlocal cinwords=if,else,for,switch,mat
 
 setlocal indentexpr=GetHareIndent()
 
+let b:undo_indent = "setl cin< cino< cinw< inde< indk<"
+
 function! FloorCindent(lnum)
   return cindent(a:lnum) / shiftwidth() * shiftwidth()
 endfunction
--- a/runtime/indent/html.vim
+++ b/runtime/indent/html.vim
@@ -1,7 +1,7 @@
 " Vim indent script for HTML
-" Maintainer:	Bram Moolenaar
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
 " Original Author: Andy Wokula <anwoku@yahoo.de>
-" Last Change:	2022 Jan 31
+" Last Change:	2023 Aug 13
 " Version:	1.0 "{{{
 " Description:	HTML indent script with cached state for faster indenting on a
 "		range of lines.
--- a/runtime/indent/jsonc.vim
+++ b/runtime/indent/jsonc.vim
@@ -4,6 +4,7 @@
 " Acknowledgement:  Based off of vim-json maintained by Eli Parra <eli@elzr.com>
 "                   https://github.com/elzr/vim-json
 " Last Change:      2021-07-01
+"                   2023 Aug 28 by Vim Project (undo_indent)
 
 " 0. Initialization {{{1
 " =================
@@ -20,6 +21,8 @@ setlocal nosmartindent
 setlocal indentexpr=GetJSONCIndent()
 setlocal indentkeys=0{,0},0),0[,0],!^F,o,O,e
 
+let b:undo_indent = "setlocal indentexpr< indentkeys< smartindent<"
+
 " Only define the function once.
 if exists("*GetJSONCIndent")
   finish
--- a/runtime/indent/julia.vim
+++ b/runtime/indent/julia.vim
@@ -3,7 +3,8 @@
 " Maintainer:	Carlo Baldassi <carlobaldassi@gmail.com>
 " Homepage:	https://github.com/JuliaEditorSupport/julia-vim
 " Last Change:	2022 Jun 14
-" Notes:        originally based on Bram Molenaar's indent file for vim
+"		2023 Aug 28 by Vim Project (undo_indent)
+" Notes:        originally based on Bram Moolenaar's indent file for vim
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -21,6 +22,8 @@ setlocal indentkeys-=0{
 setlocal indentkeys-=0}
 setlocal nosmartindent
 
+let b:undo_indent = "setl ai< inde< indk< si<"
+
 " Only define the function once.
 if exists("*GetJuliaIndent")
   finish
--- a/runtime/indent/logtalk.vim
+++ b/runtime/indent/logtalk.vim
@@ -1,5 +1,6 @@
 "  Maintainer:	Paulo Moura <pmoura@logtalk.org>
 "  Revised on:	2018.08.04
+"		2023 Aug 28 by Vim Project (undo_indent)
 "  Language:	Logtalk
 
 " This Logtalk indent file is a modified version of the Prolog
@@ -16,6 +17,8 @@ setlocal indentexpr=GetLogtalkIndent()
 setlocal indentkeys-=:,0#
 setlocal indentkeys+=0%,-,0;,>,0)
 
+let b:undo_indent = "setlocal indentexpr< indentkeys<"
+
 " Only define the function once.
 if exists("*GetLogtalkIndent")
 	finish
--- a/runtime/indent/mail.vim
+++ b/runtime/indent/mail.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Mail
-" Maintainer:	Bram Moolenaar
-" Last Change:	2021 Sep 26
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
+" Last Change:	2023 Aug 13
 
 if exists("b:did_indent")
   finish
--- a/runtime/indent/nsis.vim
+++ b/runtime/indent/nsis.vim
@@ -15,7 +15,7 @@ setlocal nosmartindent
 setlocal noautoindent
 setlocal indentexpr=GetNsisIndent(v:lnum)
 setlocal indentkeys=!^F,o,O
-setlocal indentkeys+==~${Else,=~${EndIf,=~${EndUnless,=~${AndIf,=~${AndUnless,=~${OrIf,=~${OrUnless,=~${Case,=~${Default,=~${EndSelect,=~${EndSwith,=~${Loop,=~${Next,=~${MementoSectionEnd,=~FunctionEnd,=~SectionEnd,=~SectionGroupEnd,=~PageExEnd,0=~!macroend,0=~!if,0=~!else,0=~!endif
+setlocal indentkeys+==~${Else,=~${EndIf,=~${EndUnless,=~${AndIf,=~${AndUnless,=~${OrIf,=~${OrUnless,=~${Case,=~${Default,=~${EndSelect,=~${EndSwitch,=~${Loop,=~${Next,=~${MementoSectionEnd,=~FunctionEnd,=~SectionEnd,=~SectionGroupEnd,=~PageExEnd,0=~!macroend,0=~!if,0=~!else,0=~!endif
 
 let b:undo_indent = "setl ai< inde< indk< si<"
 
--- a/runtime/indent/ocaml.vim
+++ b/runtime/indent/ocaml.vim
@@ -4,7 +4,8 @@
 "               Mike Leary           <leary@nwlink.com>
 "               Markus Mottl         <markus.mottl@gmail.com>
 " URL:          https://github.com/ocaml/vim-ocaml
-" Last Change:  2017 Jun 13
+" Last Change:  2023 Aug 28 - Add undo_indent (Vim Project)
+"               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)
@@ -24,6 +25,8 @@ setlocal indentkeys+=0=and,0=class,0=con
 setlocal nolisp
 setlocal nosmartindent
 
+let b:undo_indent = "setl et< inde< indk< lisp< si<"
+
 " At least Marc Weber and Markus Mottl do not like this:
 " setlocal textwidth=80
 
--- a/runtime/indent/perl.vim
+++ b/runtime/indent/perl.vim
@@ -4,7 +4,7 @@
 " Homepage:      https://github.com/vim-perl/vim-perl
 " Bugs/requests: https://github.com/vim-perl/vim-perl/issues
 " License:       Vim License (see :help license)
-" Last Change:   2021 Sep 24
+" Last Change:   2022 Jun 14
 
 " Suggestions and improvements by :
 "   Aaron J. Sherman (use syntax for hints)
@@ -133,6 +133,7 @@ function! GetPerlIndent()
                         \ || synid == "perlHereDoc"
                         \ || synid == "perlBraces"
                         \ || synid == "perlStatementIndirObj"
+                        \ || synid == "perlSubDeclaration"
                         \ || synid =~ "^perlFiledescStatement"
                         \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
                 let brace = strpart(line, bracepos, 1)
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -3,8 +3,8 @@
 " Author:	John Wellesz <John.wellesz (AT) gmail (DOT) com>
 " URL:		https://www.2072productions.com/vim/indent/php.vim
 " Home:		https://github.com/2072/PHP-Indenting-for-VIm
-" Last Change:	2020 Mar 05
-" Version:	1.70
+" Last Change:	2023 August 18th
+" Version:	1.75
 "
 "
 "	Type :help php-indent for available options
@@ -128,7 +128,7 @@ setlocal nolisp
 setlocal indentexpr=GetPhpIndent()
 setlocal indentkeys=0{,0},0),0],:,!^F,o,O,e,*<Return>,=?>,=<?,=*/
 
-
+let b:undo_indent = "setl ai< cin< inde< indk< lisp< si<"
 
 let s:searchpairflags = 'bWr'
 
@@ -142,10 +142,10 @@ if exists("*GetPhpIndent")
 endif
 
 
-let s:endline = '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'
+let s:endline = '\s*\%(//.*\|#\[\@!.*\|/\*.*\*/\s*\)\=$'
 let s:PHP_validVariable = '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
-let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|die\|else\|end\%(if\|while\|for\|foreach\|switch\)\)'
-let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|\%(}\s*\)\?else\>\|do\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|trait\>\|\%()\s*\)\=use\>\|interface\>\|abstract\>\|final\>\|try\>\|\%(}\s*\)\=catch\>\|\%(}\s*\)\=finally\>\)'
+let s:notPhpHereDoc = '\<\%(break\|return\|continue\|exit\|die\|true\|false\|elseif\|else\|end\%(if\|while\|for\|foreach\|match\|switch\)\)\>'
+let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|\%(}\s*\)\?else\>\|do\>\|while\>\|match\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|trait\>\|\%()\s*\)\=use\>\|interface\>\|abstract\>\|final\>\|try\>\|\%(}\s*\)\=catch\>\|\%(}\s*\)\=finally\>\)'
 let s:functionDeclPrefix = '\<function\>\%(\s\+&\='.s:PHP_validVariable.'\)\=\s*('
 let s:functionDecl = s:functionDeclPrefix.'.*'
 let s:multilineFunctionDecl = s:functionDeclPrefix.s:endline
@@ -156,7 +156,8 @@ let s:unstated = '\%(^\s*'.s:blockstart.
 
 let s:terminated = '\%(\%(;\%(\s*\%(?>\|}\)\)\=\|<<<\s*[''"]\=\a\w*[''"]\=$\|^\s*}\|^\s*'.s:PHP_validVariable.':\)'.s:endline.'\)'
 let s:PHP_startindenttag = '<?\%(.*?>\)\@!\|<script[^>]*>\%(.*<\/script>\)\@!'
-let s:structureHead = '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline . '\|\<new\s\+class\>'
+let s:matchStart = 'match\s*(\s*\$\?'.s:PHP_validVariable.'\s*)\s*{'. s:endline
+let s:structureHead = '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline . '\|\<new\s\+class\>\|' . s:matchStart
 
 
 let s:escapeDebugStops = 0
@@ -223,7 +224,7 @@ function! GetLastRealCodeLNum(startline)
 	    while getline(lnum) !~? tofind && lnum > 1
 		let lnum = lnum - 1
 	    endwhile
-	elseif lastline =~ '^\s*[''"`][;,]' || (lastline =~ '^[^''"`]*[''"`][;,]'.s:endline && IslinePHP(lnum, "") == "SpecStringEntrails")
+	elseif lastline =~ '^\s*[''"`][;,]'.s:endline || (lastline =~ '^[^''"`]*[''"`][;,]'.s:endline && IslinePHP(lnum, "") == "SpecStringEntrails")
 
 	    let tofind=substitute( lastline, '^.*\([''"`]\)[;,].*$', '^[^\1]\\+[\1]$\\|^[^\1]\\+[=([]\\s*[\1]', '')
 	    let trylnum = lnum
@@ -266,7 +267,7 @@ function! Skippmatch2()
 
     let line = getline(".")
 
-    if line =~ "\\([\"']\\).*/\\*.*\\1" || line =~ '\%(//\|#\).*/\*'
+    if line =~ "\\([\"']\\).*/\\*.*\\1" || line =~ '\%(//\|#\[\@!\).*/\*'
 	return 1
     else
 	return 0
@@ -322,18 +323,22 @@ function! BalanceDirection (str)
 endfun
 
 function! StripEndlineComments (line)
-    return substitute(a:line,"\\(//\\|#\\)\\(\\(\\([^\"']*\\([\"']\\)[^\"']*\\5\\)\\+[^\"']*$\\)\\|\\([^\"']*$\\)\\)",'','')
+
+    let cleaned = substitute(a:line,'\v(//|#\[\@!)((([^"'']*(["''])[^"'']*\5)+[^"'']*$)|([^"'']*$))','','')
+    if cleaned != a:line
+    endif
+    return cleaned
 endfun
 
 function! FindArrowIndent (lnum)  " {{{
 
-    let parrentArrowPos = -1
+    let parentArrowPos = -1
     let cursorPos = -1
     let lnum = a:lnum
     while lnum > 1
 	let last_line = getline(lnum)
 	if last_line =~ '^\s*->'
-	    let parrentArrowPos = indent(a:lnum)
+	    let parentArrowPos = indent(a:lnum)
 	    break
 	else
 
@@ -355,28 +360,28 @@ function! FindArrowIndent (lnum)  " {{{
 		    else
 		    endif
 		else
-		    let parrentArrowPos = -1
+		    let parentArrowPos = -1
 		    break
 		end
 	    endif
 
 	    if cleanedLnum =~ '->'
 		call cursor(lnum, cursorPos == -1 ? strwidth(cleanedLnum) : cursorPos)
-		let parrentArrowPos = searchpos('->', 'cWb', lnum)[1] - 1
+		let parentArrowPos = searchpos('->', 'cWb', lnum)[1] - 1
 
 		break
 	    else
-		let parrentArrowPos = -1
+		let parentArrowPos = -1
 		break
 	    endif
 	endif
     endwhile
 
-    if parrentArrowPos == -1
-	let parrentArrowPos = indent(lnum) + shiftwidth()
+    if parentArrowPos == -1
+	let parentArrowPos = indent(lnum) + shiftwidth()
     end
 
-    return parrentArrowPos
+    return parentArrowPos
 endfun "}}}
 
 function! FindTheIfOfAnElse (lnum, StopAfterFirstPrevElse) " {{{
@@ -490,7 +495,7 @@ function! ResetPhpOptions()
     if ! b:optionsset && &filetype =~ "php"
 	if b:PHP_autoformatcomment
 
-	    setlocal comments=s1:/*,mb:*,ex:*/,://,:#
+	    setlocal comments=s1:/*,mb:*,ex:*/,://,f:#[,:#
 
 	    setlocal formatoptions-=t
 	    setlocal formatoptions+=q
@@ -506,7 +511,7 @@ endfunc
 call ResetPhpOptions()
 
 function! GetPhpIndentVersion()
-    return "1.70-bundle"
+    return "1.75"
 endfun
 
 function! GetPhpIndent()
@@ -650,7 +655,7 @@ function! GetPhpIndent()
 		let b:InPHPcode_and_script = 1
 	    endif
 
-	elseif last_line =~ '^[^''"`]\+[''"`]$' && last_line !~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)' " a string identifier with nothing after it and no other string identifier before
+	elseif last_line =~ '^[^''"`]\+[''"`]$' && last_line !~ '^\s*\%(//\|#\[\@!\|/\*.*\*/\s*$\)' " a string identifier with nothing after it and no other string identifier before
 	    let b:InPHPcode = -1
 	    let b:InPHPcode_tofind = substitute( last_line, '^.*\([''"`]\).*$', '^[^\1]*\1[;,]$', '')
 	elseif last_line =~? '<<<\s*[''"]\=\a\w*[''"]\=$'
@@ -674,7 +679,7 @@ function! GetPhpIndent()
 
     " Indent successive // or # comment the same way the first is {{{
     let addSpecial = 0
-    if cline =~ '^\s*\%(//\|#\|/\*.*\*/\s*$\)'
+    if cline =~ '^\s*\%(//\|#\[\@!\|/\*.*\*/\s*$\)'
 	let addSpecial = b:PHP_outdentSLComments
 	if b:PHP_LastIndentedWasComment == 1
 	    return indent(real_PHP_lastindented)
@@ -715,7 +720,7 @@ function! GetPhpIndent()
 	return 0
     endif
 
-    if cline =~? '^\s*\a\w*;$\|^\a\w*$\|^\s*[''"`][;,]' && cline !~? s:notPhpHereDoc
+    if (cline =~? '^\s*\a\w*;$\|^\a\w*$' || (cline =~? '^\s*[''"`][;,]' && IslinePHP(v:lnum, '[;,]') !~? '^\(phpString[SD]\|phpBacktick\)') ) && cline !~? s:notPhpHereDoc
 	return 0
     endif " }}}
 
@@ -738,6 +743,9 @@ function! GetPhpIndent()
     if cline =~ '^\s*}\%(}}\)\@!'
 	let ind = indent(FindOpenBracket(v:lnum, 1))
 	let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
+	if  b:PHP_BracesAtCodeLevel
+	    let ind = ind + shiftwidth()
+	endif
 	return ind
     endif
 
@@ -761,7 +769,7 @@ function! GetPhpIndent()
     if last_line =~ '[;}]'.endline && last_line !~ '^[)\]]' && last_line !~# s:defaultORcase && last_line !~ '^\s*[''"`][;,]'
 	if ind==b:PHP_default_indenting
 	    return b:PHP_default_indenting + addSpecial
-	elseif b:PHP_indentinghuge && ind==b:PHP_CurrentIndentLevel && cline !~# '^\s*\%(else\|\%(case\|default\).*:\|[})];\=\)' && last_line !~# '^\s*\%(\%(}\s*\)\=else\)' && getline(GetLastRealCodeLNum(lnum - 1))=~';'.endline
+	elseif b:PHP_indentinghuge && ind==b:PHP_CurrentIndentLevel && cline !~# '^\s*\%(else\|\%(case\|default\).*:\|[})];\=\)' && last_line !~# '^\s*\%(\%(}\s*\)\=else\)\|^\(\s*\S\+\s*\)\+}'.endline && getline(GetLastRealCodeLNum(lnum - 1))=~';'.endline
 	    return b:PHP_CurrentIndentLevel + addSpecial
 	endif
     endif
@@ -929,7 +937,7 @@ function! GetPhpIndent()
 	    let ind = ind + shiftwidth()
 
 
-	elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase
+	elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' && AntepenultimateLine !~? s:matchStart || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase
 	    let ind = ind + shiftwidth()
 	endif
 
--- a/runtime/indent/raku.vim
+++ b/runtime/indent/raku.vim
@@ -4,6 +4,7 @@
 " Homepage:      https://github.com/vim-perl/vim-perl
 " Bugs/requests: https://github.com/vim-perl/vim-perl/issues
 " Last Change:   2020 Apr 15
+"                2023 Aug 28 by Vim Project (undo_indent)
 " Contributors:  Andy Lester <andy@petdance.com>
 "                Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
 "
@@ -47,6 +48,8 @@ if !b:indent_use_syntax
     setlocal indentkeys+=0=EO
 endif
 
+let b:undo_indent = "setlocal indentexpr< indentkeys<"
+
 let s:cpo_save = &cpo
 set cpo-=C
 
--- a/runtime/indent/rapid.vim
+++ b/runtime/indent/rapid.vim
@@ -146,7 +146,7 @@ endfunction
 
 " Returns the length of the line until a:str occur outside a string or
 " comment. Search starts at string index a:startIdx.
-" If a:str is a word also add word bounderies and case insesitivity.
+" If a:str is a word also add word boundaries and case insensitivity.
 " Note: rapidTodoComment and rapidDebugComment are not taken into account.
 function s:RapidLenTilStr(lnum, str, startIdx) abort
 
@@ -179,8 +179,8 @@ function s:RapidLenTilStr(lnum, str, sta
   return -1
 endfunction
 
-" a:lchar shoud be one of (, ), [, ], { or }
-" returns the number of opening/closing parenthesise which have no
+" a:lchar should be one of (, ), [, ], { or }
+" returns the number of opening/closing parentheses which have no
 " closing/opening match in getline(a:lnum)
 function s:RapidLoneParen(lnum,lchar) abort
   if a:lchar == "(" || a:lchar == ")"
@@ -205,7 +205,7 @@ function s:RapidLoneParen(lnum,lchar) ab
   endif
 
   let l:opnParen = 0
-  " count opening brakets
+  " count opening brackets
   let l:i = 0
   while l:i >= 0
     let l:i = s:RapidLenTilStr(a:lnum, l:opnParChar, l:i)
@@ -216,7 +216,7 @@ function s:RapidLoneParen(lnum,lchar) ab
   endwhile
 
   let l:clsParen = 0
-  " count closing brakets
+  " count closing brackets
   let l:i = 0
   while l:i >= 0
     let l:i = s:RapidLenTilStr(a:lnum, l:clsParChar, l:i)
@@ -242,7 +242,7 @@ function s:RapidPreNoneBlank(lnum) abort
   let nPreNoneBlank = prevnonblank(a:lnum)
 
   while nPreNoneBlank>0 && getline(nPreNoneBlank) =~ '\v\c^\s*(\%\%\%|!)'
-    " Previouse none blank line irrelevant. Look further aback.
+    " Previous none blank line irrelevant. Look further aback.
     let nPreNoneBlank = prevnonblank(nPreNoneBlank - 1)
   endwhile
 
--- a/runtime/indent/rst.vim
+++ b/runtime/indent/rst.vim
@@ -4,6 +4,7 @@
 " Maintainer: Marshall Ward <marshall.ward@gmail.com>
 " Previous Maintainer: Nikolai Weibull <now@bitwi.se>
 " Latest Revision: 2020-03-31
+"                  2023 Aug 28 by Vim Project (undo_indent)
 
 if exists("b:did_indent")
   finish
@@ -14,6 +15,8 @@ setlocal indentexpr=GetRSTIndent()
 setlocal indentkeys=!^F,o,O
 setlocal nosmartindent
 
+let b:undo_indent = "setlocal indentexpr< indentkeys< smartindent<"
+
 if exists("*GetRSTIndent")
   finish
 endif
--- a/runtime/indent/ruby.vim
+++ b/runtime/indent/ruby.vim
@@ -4,7 +4,7 @@
 " Previous Maintainer:	Nikolai Weibull <now at bitwi.se>
 " URL:			https://github.com/vim-ruby/vim-ruby
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
-" Last Change:		2022 Mar 22
+" Last Change:		2022 Jun 30
 
 " 0. Initialization {{{1
 " =================
@@ -93,7 +93,7 @@ let s:ruby_indent_keywords =
       \    '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>'
 
 " Def without an end clause: def method_call(...) = <expression>
-let s:ruby_endless_def = '\<def\s\+\k\+[!?]\=\%((.*)\|\s\)\s*='
+let s:ruby_endless_def = '\<def\s\+\%(\k\+\.\)\=\k\+[!?]\=\%((.*)\|\s\)\s*='
 
 " Regex used for words that, at the start of a line, remove a level of indent.
 let s:ruby_deindent_keywords =
--- a/runtime/indent/rust.vim
+++ b/runtime/indent/rust.vim
@@ -2,6 +2,7 @@
 " Language:         Rust
 " Author:           Chris Morgan <me@chrismorgan.info>
 " Last Change:      2017 Jun 13
+"                   2023 Aug 28 by Vim Project (undo_indent)
 " For bugs, patches and license go to https://github.com/rust-lang/rust.vim
 
 " Only load this indent file when no other was loaded.
@@ -24,6 +25,8 @@ setlocal indentkeys=0{,0},!^F,o,O,0[,0]
 
 setlocal indentexpr=GetRustIndent(v:lnum)
 
+let b:undo_indent = "setlocal cindent< cinoptions< cinkeys< cinwords< lisp< autoindent< indentkeys< indentexpr<"
+
 " Only define the function once.
 if exists("*GetRustIndent")
 	finish
--- a/runtime/indent/scala.vim
+++ b/runtime/indent/scala.vim
@@ -4,6 +4,7 @@
 " Modifications By:     Derek Wyatt
 " URL:                  https://github.com/derekwyatt/vim-scala
 " Last Change:          2016 Aug 26
+"                       2023 Aug 28 by Vim Project (undo_indent)
 
 if exists("b:did_indent")
   finish
@@ -14,6 +15,8 @@ setlocal autoindent
 setlocal indentexpr=GetScalaIndent()
 setlocal indentkeys=0{,0},0),!^F,<>>,o,O,e,=case,<CR>
 
+let b:undo_indent = "setl ai< inde< indk<"
+
 if exists("*GetScalaIndent")
   finish
 endif
--- a/runtime/indent/tex.vim
+++ b/runtime/indent/tex.vim
@@ -67,7 +67,8 @@
 "               2020/04/26 by Yichao Zhou <broken.zhou AT gmail.com>
 "               (*) Fix a bug related to \[ & \].  Thanks Manuel Boni for
 "               reporting.
-"
+"               2023/08/28 by Vim Project
+"               (*) Set b:undo_indent.
 " }}}
 
 " Document: {{{
@@ -167,6 +168,7 @@ setlocal indentexpr=GetTeXIndent()
 setlocal indentkeys&
 exec 'setlocal indentkeys+=[,(,{,),},],\&' . substitute(g:tex_items, '^\|\(\\|\)', ',=', 'g')
 let g:tex_items = '^\s*' . substitute(g:tex_items, '^\(\^\\s\*\)*', '', '')
+let b:undo_indent = "setlocal autoindent< indentexpr< indentkeys< smartindent<"
 " }}}
 
 function! GetTeXIndent() " {{{
--- a/runtime/indent/typescript.vim
+++ b/runtime/indent/typescript.vim
@@ -2,6 +2,7 @@
 " Language: TypeScript
 " Maintainer: See https://github.com/HerringtonDarkholme/yats.vim
 " Last Change: 2019 Oct 18
+"              2023 Aug 28 by Vim Project (undo_indent)
 " Acknowledgement: Based off of vim-ruby maintained by Nikolai Weibull http://vim-ruby.rubyforge.org
 
 " 0. Initialization {{{1
@@ -20,6 +21,8 @@ setlocal indentexpr=GetTypescriptIndent(
 setlocal formatexpr=Fixedgq(v:lnum,v:count)
 setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e
 
+let b:undo_indent = "setlocal formatexpr< indentexpr< indentkeys< smartindent<"
+
 " Only define the function once.
 if exists("*GetTypescriptIndent")
   finish
--- a/runtime/indent/verilog.vim
+++ b/runtime/indent/verilog.vim
@@ -1,6 +1,7 @@
 " Language:     Verilog HDL
 " Maintainer:	Chih-Tsun Huang <cthuang@cs.nthu.edu.tw>
 " Last Change:	2017 Aug 25 by Chih-Tsun Huang
+" 		2023 Aug 28 by Vim Project (undo_indent)
 " URL:		    http://www.cs.nthu.edu.tw/~cthuang/vim/indent/verilog.vim
 "
 " Credits:
@@ -28,6 +29,8 @@ setlocal indentkeys+==endmodule,=endfunc
 setlocal indentkeys+==endconfig,=endgenerate,=endprimitive,=endtable
 setlocal indentkeys+==`else,=`elsif,=`endif
 
+let b:undo_indent = "setlocal indentexpr< indentkeys<"
+
 " Only define the function once.
 if exists("*GetVerilogIndent")
   finish
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -3,6 +3,7 @@
 " Maintainer:  Gerald Lai <laigera+vim?gmail.com>
 " Version:     1.62
 " Last Change: 2017 Oct 17
+"              2023 Aug 28 by Vim Project (undo_indent)
 " URL:         http://www.vim.org/scripts/script.php?script_id=1450
 
 " only load this indent file when no other was loaded
@@ -19,6 +20,8 @@ setlocal indentkeys+==~if,=~then,=~elsif
 setlocal indentkeys+==~case,=~loop,=~for,=~generate,=~record,=~units,=~process,=~block,=~function,=~component,=~procedure
 setlocal indentkeys+==~architecture,=~configuration,=~entity,=~package
 
+let b:undo_indent = "setlocal indentexpr< indentkeys<"
+
 " constants
 " not a comment
 let s:NC = '\%(--.*\)\@<!'
--- a/runtime/keymap/accents.vim
+++ b/runtime/keymap/accents.vim
@@ -1,6 +1,6 @@
 " Vim Keymap file for latin1 accents through dead characters
-" Maintainer: Bram Moolenaar
-" Last Change: 2006 Mar 29
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
+" Last Change:	2023 Aug 13
 
 " All characters are given literally, conversion to another encoding (e.g.,
 " UTF-8) should work.
--- a/runtime/lang/Makefile
+++ b/runtime/lang/Makefile
@@ -13,6 +13,7 @@ all: \
 		menu_pl_pl.iso_8859-2.vim \
 		menu_polish_poland.1250.vim \
 		menu_ru_ru.koi8-r.vim \
+		menu_ru_ru.cp1251.vim \
 		menu_sl_si.cp1250.vim \
 		menu_sl_si.latin2.vim \
 		menu_slovak_slovak_republic.1250.vim \
@@ -113,6 +114,12 @@ menu_ru_ru.koi8-r.vim: menu_ru_ru.utf-8.
 	iconv -f utf-8 -t koi8-r menu_ru_ru.utf-8.vim | \
 		$(SED) -e 's/scriptencoding utf-8/scriptencoding koi8-r/' -e 's/" Original translations/" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT/' > menu_ru_ru.koi8-r.vim
 
+# Convert menu_ru_ru.utf-8.vim to create menu_ru_ru.cp1251.vim.
+menu_ru_ru.cp1251.vim: menu_ru_ru.utf-8.vim
+	rm -f menu_ru_ru.cp1251.vim
+	iconv -f utf-8 -t cp1251 menu_ru_ru.utf-8.vim | \
+		$(SED) -e 's/scriptencoding utf-8/scriptencoding cp1251/' -e 's/" Original translations/" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT/' > menu_ru_ru.cp1251.vim
+
 # Convert menu_sl_si.utf-8.vim to create menu_sl_si.cp1250.vim.
 menu_sl_si.cp1250.vim: menu_sl_si.utf-8.vim
 	rm -f menu_sl_si.cp1250.vim
--- a/runtime/lang/menu_ca_es.latin1.vim
+++ b/runtime/lang/menu_ca_es.latin1.vim
@@ -37,7 +37,7 @@ let g:menutrans_help_dialog = "Introduïu el terme sobre el qual necessiteu ajuda.\n\nUseu el prefix i_ per ordres d'entrada (p.ex.: i_CTRL-X)\nUseu el prefix c_ per ordres de la línia d'ordres (p.ex.: c_<Del>)\nUseu el prefix ' per noms d'opcions (p.ex.: 'shiftwidth')"
 menutrans &File				&Fitxer
 menutrans &Open\.\.\.<Tab>:e		&Obre\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Obre\ en\ una\ &finestra\ nova\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Obre\ pestanya\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Obre\ pestanya\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nou<Tab>:enew
 menutrans &Close<Tab>:close		&Tanca<Tab>:close
 menutrans &Save<Tab>:w			&Desa<Tab>:w
--- a/runtime/lang/menu_chinese_gb.936.vim
+++ b/runtime/lang/menu_chinese_gb.936.vim
@@ -44,7 +44,7 @@ menutrans &File Îļþ(&F)
 " File menuitems {{{1
 menutrans &Open\.\.\.<Tab>:e ´ò¿ª(&O)\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp ÔÚ²ð·Ö´°¿Ú´ò¿ª(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew ÔÚ±êÇ©Ò³´ò¿ª\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew ÔÚ±êÇ©Ò³´ò¿ª(&T)\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew н¨(&N)<Tab>:enew
 menutrans &Close<Tab>:close ¹Ø±Õ(&C)<Tab>:close
 menutrans &Save<Tab>:w ±£´æ(&S)<Tab>:w
--- a/runtime/lang/menu_cs_cz.iso_8859-2.vim
+++ b/runtime/lang/menu_cs_cz.iso_8859-2.vim
@@ -19,7 +19,7 @@ scriptencoding iso8859-2
 menutrans &File				&Soubor
 menutrans &Open\.\.\.<Tab>:e		&Otevøít\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevøít\ v\ no&vém\ oknì\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevøít\ tab\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otevøít\ tab\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nový<Tab>:enew
 menutrans &Close<Tab>:close		&Zavøít<Tab>:close
 menutrans &Save<Tab>:w			&Ulo¾it<Tab>:w
--- a/runtime/lang/menu_cs_cz.utf-8.vim
+++ b/runtime/lang/menu_cs_cz.utf-8.vim
@@ -19,7 +19,7 @@ scriptencoding utf-8
 menutrans &File				&Soubor
 menutrans &Open\.\.\.<Tab>:e		&Otevřít\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevřít\ v\ no&vém\ okně\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevřít\ tab\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otevřít\ tab\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nový<Tab>:enew
 menutrans &Close<Tab>:close		&Zavřít<Tab>:close
 menutrans &Save<Tab>:w			&Uložit<Tab>:w
--- a/runtime/lang/menu_czech_czech_republic.1250.vim
+++ b/runtime/lang/menu_czech_czech_republic.1250.vim
@@ -19,7 +19,7 @@ scriptencoding cp1250
 menutrans &File				&Soubor
 menutrans &Open\.\.\.<Tab>:e		&Otevøít\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevøít\ v\ no&vém\ oknì\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevøít\ tab\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otevøít\ tab\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nový<Tab>:enew
 menutrans &Close<Tab>:close		&Zavøít<Tab>:close
 menutrans &Save<Tab>:w			&Uložit<Tab>:w
--- a/runtime/lang/menu_czech_czech_republic.ascii.vim
+++ b/runtime/lang/menu_czech_czech_republic.ascii.vim
@@ -19,7 +19,7 @@ scriptencoding latin1
 menutrans &File				&Soubor
 menutrans &Open\.\.\.<Tab>:e		&Otevrit\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Otevrit\ v\ no&vem\ okne\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otevrit\ tab\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otevrit\ tab\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Novy<Tab>:enew
 menutrans &Close<Tab>:close		&Zavrit<Tab>:close
 menutrans &Save<Tab>:w			&Ulozit<Tab>:w
--- a/runtime/lang/menu_da.utf-8.vim
+++ b/runtime/lang/menu_da.utf-8.vim
@@ -36,7 +36,7 @@ menut &File	Fil
 
 menut &Open\.\.\.<Tab>:e	Ã…bn\.\.\.<Tab>:e
 menut Sp&lit-Open\.\.\.<Tab>:sp	Opdel-Ã¥bn\.\.\.<Tab>:sp
-menut Open\ Tab\.\.\.<Tab>:tabnew	Ã…bn\ faneblad\.\.\.<Tab>:tabnew
+menut Open\ &Tab\.\.\.<Tab>:tabnew	Ã…bn\ faneblad\.\.\.<Tab>:tabnew
 menut &New<Tab>:enew	Ny<Tab>:enew
 menut &Close<Tab>:close	Luk<Tab>:close
 " -SEP1-
--- a/runtime/lang/menu_de_de.latin1.vim
+++ b/runtime/lang/menu_de_de.latin1.vim
@@ -25,7 +25,7 @@ endif
 menutrans &File				&Datei
 menutrans &Open\.\.\.<Tab>:e		&Öffnen\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	In\ geteiltem\ &Fenster\ öffnen\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	In\ neuem\ &Tab\ öffnen\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	In\ neuem\ &Tab\ öffnen\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Neue\ Datei<Tab>:enew
 menutrans &Close<Tab>:close		S&chließen<Tab>:close
 menutrans &Save<Tab>:w			&Speichern<Tab>:w
--- a/runtime/lang/menu_eo.utf-8.vim
+++ b/runtime/lang/menu_eo.utf-8.vim
@@ -34,7 +34,7 @@ menutrans &File				&Dosiero
 
 menutrans &Open\.\.\.<Tab>:e			&Malfermi\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp		Malfermi\ &divide\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew		Malfermi\ &langeton\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew		Malfermi\ &langeton\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew			&Nova<Tab>:enew
 menutrans &Close<Tab>:close			&Fermi<Tab>:close
 " -SEP1-
--- a/runtime/lang/menu_es_es.latin1.vim
+++ b/runtime/lang/menu_es_es.latin1.vim
@@ -38,7 +38,7 @@ menutrans &File				&Archivo
 menutrans &Open\.\.\.<Tab>:e		&Abrir\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	A&brir\ en\ otra\ ventana\.\.\.<Tab>:sp
 menutrans &New<Tab>:enew		&Nuevo<Tab>:enew
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Abrir\ pes&taña\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Abrir\ pes&taña\.\.\.<Tab>:tabnew
 menutrans &Close<Tab>:close		&Cerrar<Tab>:close
 menutrans &Save<Tab>:w			&Guardar<Tab>:w
 menutrans Save\ &As\.\.\.<Tab>:sav	Guardar\ &como\.\.\.<Tab>:sav
--- a/runtime/lang/menu_fi_fi.latin1.vim
+++ b/runtime/lang/menu_fi_fi.latin1.vim
@@ -22,7 +22,7 @@ menutrans &File				&Tiedosto
 " Accels: AJTUSNIDPOE
 menutrans &Open\.\.\.<Tab>:e			&Avaa\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp		Avaa\ &jaettuna\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew		Avaa\ &tabissa\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew		Avaa\ &tabissa\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew			&Uusi<Tab>:enew
 menutrans &Close<Tab>:close			&Sulje<Tab>:close
 " -SEP1-
--- a/runtime/lang/menu_fr_fr.latin1.vim
+++ b/runtime/lang/menu_fr_fr.latin1.vim
@@ -42,7 +42,7 @@ menutrans &File				&Fichier
 
 menutrans &Open\.\.\.<Tab>:e			&Ouvrir\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp		Ouvrir\ à\ p&art\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew		Ouvrir\ dans\ un\ onglet\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew		Ouvrir\ dans\ un\ onglet\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew			&Nouveau<Tab>:enew
 menutrans &Close<Tab>:close			&Fermer<Tab>:close
 " -SEP1-
--- a/runtime/lang/menu_is_is.latin1.vim
+++ b/runtime/lang/menu_is_is.latin1.vim
@@ -23,7 +23,7 @@ endif
 menutrans &File				                        Skrá
 menutrans &Open\.\.\.<Tab>:e		                Opna\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	                Splitt\ opna\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	            Opna\ flipa\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	            Opna\ flipa\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		                    Ný\ Skrá<Tab>:enew
 menutrans &Close<Tab>:close		                    Loka<Tab>:close
 menutrans &Save<Tab>:w			                    Vista<Tab>:w
--- a/runtime/lang/menu_it_it.latin1.vim
+++ b/runtime/lang/menu_it_it.latin1.vim
@@ -2,7 +2,7 @@
 " Maintainer:		Antonio Colombo <azc100@gmail.com>
 "			Vlad Sandrini <vlad.gently@gmail.com>
 "			Luciano Montanaro <mikelima@cirulla.net>
-" Last Change:	2022 Jun 17
+" Last Change:	2023 Aug 22
 " Original translations
 
 " Quit when menu translations have already been done.
@@ -20,7 +20,7 @@ menut &Help			&Aiuto
 
 menut &Overview<Tab><F1>	&Panoramica<Tab><F1>
 menut &User\ Manual		Manuale\ &Utente
-menut &How-to\ links	Co&Me\.\.\.
+menut &How-To\ Links	Co&Me\.\.\.
 menut &Find\.\.\.	&Cerca\.\.\.
 menut &Credits		Cr&Editi
 menut Co&pying		C&Opie
@@ -29,14 +29,14 @@ menut O&rphans		O&Rfani
 menut &Version		&Versione
 menut &About		&Intro
 
-let g:menutrans_help_dialog = "Batti un comando o una parola per cercare aiuto:\n\nPremetti i_ per comandi in modo Input (p.es.: i_CTRL-X)\nPremetti c_ per comandi che editano la linea-comandi (p.es.: c_<Del>)\nPremetti ' per un nome di opzione (p.es.: 'shiftwidth')"
+let g:menutrans_help_dialog = "Batti un comando o una parola per cercare aiuto su:\n\nPremetti i_ per comandi in modo Input (p.es.: i_CTRL-X)\nPremetti c_ per comandi che editano la linea-comandi (p.es.: c_<Del>)\nPremetti ' per un nome di opzione (p.es.: 'shiftwidth')"
 
 " File / File
 menut &File				&File
 
 menut &Open\.\.\.<Tab>:e		&Apri\.\.\.<Tab>:e
 menut Sp&lit-Open\.\.\.<Tab>:sp		A&Pri\ nuova\ finestra\.\.\.<Tab>:sp
-menut Open\ Tab\.\.\.<Tab>:tabnew	Apri\ nuova\ &Linguetta\.\.\.<Tab>:tabnew
+menut Open\ &Tab\.\.\.<Tab>:tabnew	Apri\ nuova\ &Linguetta\.\.\.<Tab>:tabnew
 menut &New<Tab>:enew			&Nuovo<Tab>:enew
 menut &Close<Tab>:close			&Chiudi<Tab>:close
 menut &Save<Tab>:w			&Salva<Tab>:w
@@ -68,7 +68,6 @@ menut Find\ and\ Rep&lace\.\.\.<Tab>:s	&
 menut Settings\ &Window			&Finestra\ Impostazioni
 menut Startup\ &Settings		Impostazioni\ di\ &Avvio
 menut &Global\ Settings			Impostazioni\ &Globali
-menut Question				Domanda
 
 " Edit / Modifica / Impostazioni Globali
 
@@ -80,7 +79,7 @@ menut &Context\ lines		&Linee\ di\ conte
 
 menut &Virtual\ Edit		&Edit\ virtuale
 menut Never			Mai
-menut Block\ Selection		Selezione\ Blocco
+menut Block\ Selection		Seleziona\ Blocco
 menut Insert\ mode		Modo\ Insert
 menut Block\ and\ Insert	Selezione\ Blocco\ e\ Inserimento
 menut Always			Sempre
@@ -167,7 +166,7 @@ menut &File\ Format\.\.\.				Formato\ &F
 
 let g:menutrans_textwidth_dialog = "Batti nuova lunghezza linea (0 per inibire la formattazione): "
 let g:menutrans_fileformat_dialog = "Scegli formato con cui scrivere il file"
-let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annullare "
+let g:menutrans_fileformat_choices = " &Unix\n&Dos\n&Mac\n&Annullare "
 
 menut Show\ C&olor\ Schemes\ in\ Menu	Mostra\ Schemi\ C&olore\ in\ Menù
 menut C&olor\ Scheme		Schema\ c&Olori
@@ -180,8 +179,12 @@ menut evening		sera
 menut industry		industria
 menut morning		mattino
 menut peachpuff		pesca
+menut quiet		quieto
 menut shine		brillante
+menut sorbet		sorbetto
 menut slate		ardesia
+menut torte		torta
+menut wildcharm		fascino\ selvaggio
 menut BLUE		BLÙ
 menut DARKBLUE		BLÙ\ SCURO
 menut DESERT		DESERTO
@@ -190,8 +193,12 @@ menut EVENING		SERA
 menut INDUSTRY		INDUSTRIA
 menut MORNING		MATTINO
 menut PEACHPUFF		PESCA
+menut QUIET		QUIETO
 menut SHINE		BRILLANTE
+menut SORBET		SORBETTO
 menut SLATE		ARDESIA
+menut TORTE		TORTA
+menut WILDCHARM		FASCINO\ SELVAGGIO
 
 menut Show\ &Keymaps\ in\ Menu	Mostra\ Ma&ppe\ tastiera\ in\ Menù
 menut &Keymap			Ma&ppa\ tastiera
@@ -202,29 +209,105 @@ menut arabic			arabo
 menut armenian-eastern		armeno-orientale
 menut armenian-western		armeno-occidentale
 menut belarusian-jcuken		bielorusso-jcuken
+menut bulgarian-bds		bulgaro-bds
+menut bulgarian-phonetic	bulgaro-fonetico
+menut canfr-win			franco-canadese-win
+menut croatian			croato
 menut czech			ceco
+menut dvorak			tastiera-dvorak
+menut esperanto			esperanto
+menut french-azerty		francese-azerty
+menut german-qwertz		tedesco-qwertz
 menut greek			greco
 menut hebrew			ebraico
 menut hebrewp			ebraicop
+menut kana			kana
+menut kazakh-jcuken		kazako-jcuken
+menut korean			coreano
+menut korean-dubeolsik		coreano-dubeolsik
+menut lithuanian-baltic		lituano-baltico
 menut magyar			ungherese
+menut mongolian			mongolo
+menut oldturkic-orkhon		turco-antico-orkhon
+menut oldturkic-yenisei		turco-antico-yenisei
 menut persian			persiano
+menut persian-iranian		persiano-iraniano
+menut pinyin			pinyin
+menut polish-slash		polacco-slash
+menut russian-dvorak		russo-dvorak
+menut russian-jcuken		russo-jcuken
+menut russian-jcukenmac		russo-jcukenmac
+menut russian-jcukenwin		russo-jcukenwin
+menut russian-jcukenwintype	russo-jcukenwintype
+menut russian-typograph		russo-tipografico
+menut russian-yawerty		russo-yawerty
 menut serbian			serbo
 menut serbian-latin		serbo-latino
+menut sinhala			singalese
+menut sinhala-phonetic		singalese-phonetic
 menut slovak			slovacco
+menut tamil			tamil
+menut thaana			thaana
+menut thaana-phonetic		thaana-fonetico
+menut turkish-f			turco-f
+menut turkish-q			turco-q
+menut ukrainian-dvorak		ukraino-dvorak
+menut ukrainian-jcuken		ukraino-jcuken
+menut vietnamese-telex		vietnamita-telex
+menut vietnamese-viqr		vietnamita-viqr
+menut vietnamese-vni		vietnamita-vni
 menut ACCENTS			ACCENTI
 menut ARABIC			ARABO
 menut ARMENIAN-EASTERN		ARMENO-ORIENTALE
 menut ARMENIAN-WESTERN		ARMENO-OCCIDENTALE
 menut BELARUSIAN-JCUKEN		BIELORUSSO-JCUKEN
+menut BULGARIAN-BDS		BULGARO-BDS
+menut BULGARIAN-PHONETIC	BULGARO-FONETICO
+menut CANFR-WIN			FRANCO-CANADESE-WIN
+menut CROATIAN			CROATO
 menut CZECH			CECO
+menut DVORAK			TASTIERA-DVORAK
+menut ESPERANTO			ESPERANTO
+menut FRENCH-AZERTY		FRANCESE-AZERTY
+menut GERMAN-QWERTZ		TEDESCO-QWERTZ
 menut GREEK			GRECO
 menut HEBREW			EBRAICO
 menut HEBREWP			EBRAICOP
+menut KANA			KANA
+menut KAZAKH-JCUKEN		KAZAKO-JCUKEN
+menut KOREAN			COREANO
+menut KOREAN-DUBEOLSIK		COREANO-DUBEOLSIK
+menut LITHUANIAN-BALTIC		LITUANO-BALTICO
 menut MAGYAR			UNGHERESE
+menut MONGOLIAN			MONGOLO
+menut OLDTURKIC-ORKHON		TURCO-ANTICO-ORKHON
+menut OLDTURKIC-YENISEI		TURCO-ANTICO-YENISEI
 menut PERSIAN			PERSIANO
+menut PERSIAN-IRANIAN		PERSIANO-IRANIANO
+menut PINYIN			PINYIN
+menut POLISH-SLASH		POLACCO-SLASH
+menut RUSSIAN-DVORAK		RUSSO-DVORAK
+menut RUSSIAN-JCUKEN		RUSSO-JCUKEN
+menut RUSSIAN-JCUKENMAC		RUSSO-JCUKENMAC
+menut RUSSIAN-JCUKENWIN		RUSSO-JCUKENWIN
+menut RUSSIAN-JCUKENWINTYPE	RUSSO-JCUKENWINTYPE
+menut RUSSIAN-TYPOGRAPH		RUSSO-TIPOGRAFICO
+menut RUSSIAN-YAWERTY		RUSSO-YAWERTY
 menut SERBIAN			SERBO
 menut SERBIAN-LATIN		SERBO-LATINO
+menut SINHALA			SINGALESE
+menut SINHALA-PHONETIC		SINGALESE-PHONETIC
 menut SLOVAK			SLOVACCO
+menut TAMIL			TAMIL
+menut THAANA			THAANA
+menut THAANA-PHONETIC		THAANA-FONETICO
+menut TURKISH-F			TURCO-F
+menut TURKISH-Q			TURCO-Q
+menut UKRAINIAN-DVORAK		UKRAINO-DVORAK
+menut UKRAINIAN-JCUKEN		UKRAINO-JCUKEN
+menut VIETNAMESE-TELEX		VIETNAMITA-TELEX
+menut VIETNAMESE-VIQR		VIETNAMITA-VIQR
+menut VIETNAMESE-VNI		VIETNAMITA-VNI
 
 menut Select\ Fo&nt\.\.\.		Scegli\ &Font\.\.\.
 
@@ -233,7 +316,7 @@ menut &Tools				&Strumenti
 
 menut &Jump\ to\ this\ tag<Tab>g^]	&Vai\ a\ questa\ tag<Tab>g^]
 menut Jump\ &back<Tab>^T		Torna\ &Indietro<Tab>^T
-menut Build\ &Tags\ File		Costruisci\ file\ &Tags\
+menut Build\ &Tags\ File		Costruisci\ file\ &Tag\
 " Menù ortografia / Spelling
 menut &Spelling			&Ortografia
 
@@ -243,6 +326,7 @@ menut To\ &Next\ error<Tab>]s		Errore\ &
 menut To\ &Previous\ error<Tab>[s	Errore\ &Precedente<tab>[s
 menut Suggest\ &Corrections<Tab>z=	&Suggerimenti<Tab>z=
 menut &Repeat\ correction<Tab>:spellrepall	&Ripeti\ correzione<Tab>:spellrepall
+menut Set\ language\ to			Imposta\ lingua\ a
 menut Set\ language\ to\ "en"		Imposta\ lingua\ a\ "en"
 menut Set\ language\ to\ "en_au"	Imposta\ lingua\ a\ "en_au"
 menut Set\ language\ to\ "en_ca"	Imposta\ lingua\ a\ "en_ca"
@@ -255,25 +339,25 @@ menut &Find\ More\ Languages		&Trova\ al
 menut &Folding					&Piegature
 " apri e chiudi piegature
 menut &Enable/Disable\ folds<Tab>zi		Pi&egature\ Sì/No<Tab>zi
-menut &View\ Cursor\ Line<Tab>zv			&Vedi\ linea\ col\ Cursore<Tab>zv
-menut Vie&w\ Cursor\ Line\ only<Tab>zMzx		Vedi\ &Solo\ linea\ col\ Cursore<Tab>zMzx
-menut C&lose\ more\ folds<Tab>zm			C&Hiudi\ più\ piegature<Tab>zm
-menut &Close\ all\ folds<Tab>zM			&Chiudi\ tutte\ le\ piegature<Tab>zM
-menut O&pen\ more\ folds<Tab>zr			A&Pri\ più\ piegature<Tab>zr
-menut &Open\ all\ folds<Tab>zR			&Apri\ tutte\ le\ piegature<Tab>zR
+menut &View\ Cursor\ Line<Tab>zv		&Vedi\ linea\ col\ Cursore<Tab>zv
+menut Vie&w\ Cursor\ Line\ only<Tab>zMzx	Vedi\ &Solo\ linea\ col\ Cursore<Tab>zMzx
+menut C&lose\ More\ folds<Tab>zm		C&Hiudi\ più\ piegature<Tab>zm
+menut &Close\ All\ folds<Tab>zM			&Chiudi\ tutte\ le\ piegature<Tab>zM
+menut O&pen\ More\ folds<Tab>zr			A&Pri\ più\ piegature<Tab>zr
+menut &Open\ All\ folds<Tab>zR			&Apri\ tutte\ le\ piegature<Tab>zR
 " metodo piegatura
 menut Fold\ Met&hod				Meto&Do\ piegatura
 menut M&anual					&Manuale
 menut I&ndent					&Nidificazione
-menut E&xpression					&Espressione\ Reg\.
+menut E&xpression				&Espressione\ Reg\.
 menut S&yntax					&Sintassi
 menut &Diff					&Differenza
 menut Ma&rker					Mar&Catura
 
 " crea e cancella piegature
 menut Create\ &Fold<Tab>zf			Crea\ &Piegatura<Tab>zf
-menut &Delete\ Fold<Tab>zd			&Leva\ piegatura<Tab>zd
-menut Delete\ &All\ Folds<Tab>zD			Leva\ &Tutte\ le\ piegature<Tab>zD
+menut &Delete\ Fold<Tab>zd			&Togli\ piegatura<Tab>zd
+menut Delete\ &All\ Folds<Tab>zD		Togli\ &Tutte\ le\ piegature<Tab>zD
 " movimenti all'interno delle piegature
 menut Fold\ col&umn\ width			Larghezza\ piegat&Ure\ in\ colonne
 
@@ -285,9 +369,9 @@ menut &Put\ Block				&Esporta\ differenz
 
 menut &Make<Tab>:make		Esegui\ &Make<Tab>:make
 
-menut &List\ Errors<Tab>:cl		Lista\ &Errori<Tab>:cl
+menut &List\ Errors<Tab>:cl	Lista\ &Errori<Tab>:cl
 menut L&ist\ Messages<Tab>:cl!	Lista\ &Messaggi<Tab>:cl!
-menut &Next\ Error<Tab>:cn		Errore\ s&Uccessivo<Tab>:cn
+menut &Next\ Error<Tab>:cn	Errore\ s&Uccessivo<Tab>:cn
 menut &Previous\ Error<Tab>:cp	Errore\ &Precedente<Tab>:cp
 menut &Older\ List<Tab>:cold	Lista\ men&O\ recente<Tab>:cold
 menut N&ewer\ List<Tab>:cnew	Lista\ più\ rece&Nte<Tab>:cnew
@@ -302,11 +386,12 @@ menut &Convert\ to\ HEX<Tab>:%!xxd	&Conv
 menut Conve&rt\ back<Tab>:%!xxd\ -r	Conve&rti\ da\ esadecimale<Tab>:%!xxd\ -r
 
 menut Se&T\ Compiler		Impo&Sta\ Compilatore
+menut Show\ Compiler\ Se&ttings\ in\ Menu	Mostra\ Impos&Tazioni\ Compilatore\ nel\ Menù
 
 " Buffers / Buffer
 menut &Buffers			&Buffer
 
-menut &Refresh\ menu		A&ggiorna\ menù
+menut &Refresh\ menu		A&Ggiorna\ menù
 menut &Delete			&Elimina
 menut &Alternate		&Alternato
 menut &Next			&Successivo
@@ -352,10 +437,10 @@ menut &Right\ side<Tab>^WL		Lato\ &Destr
 menut Rotate\ &Up<Tab>^WR		Ruota\ verso\ l'&Alto<Tab>^WR
 menut Rotate\ &Down<Tab>^Wr		Ruota\ verso\ il\ &Basso<Tab>^Wr
 menut &Equal\ Size<Tab>^W=		&Uguale\ ampiezza<Tab>^W=
-menut &Max\ Height<Tab>^W_		&Altezza\ massima<Tab>^W_
-menut M&in\ Height<Tab>^W1_		A&Ltezza\ minima<Tab>^W1_
-menut Max\ &Width<Tab>^W\|		Larghezza\ massima<Tab>^W\|
-menut Min\ Widt&h<Tab>^W1\|		Larghezza\ minima<Tab>^W1\|
+menut &Max\ Height<Tab>^W_		A&Ltezza\ massima<Tab>^W_
+menut M&in\ Height<Tab>^W1_		Al&Tezza\ minima<Tab>^W1_
+menut Max\ &Width<Tab>^W\|		Lar&Ghezza\ massima<Tab>^W\|
+menut Min\ Widt&h<Tab>^W1\|		Larg&hhezza\ minima<Tab>^W1\|
 
 " The popup menu
 menut &Undo		&Annulla
@@ -363,11 +448,13 @@ menut Cu&t		&Taglia
 menut &Copy		&Copia
 menut &Paste		&Incolla
 menut &Delete		&Elimina
-menut Select\ Blockwise 	Seleziona\ in\ blocco
+menut Select\ Blockwise 	Seleziona\ Blocco
 menut Select\ &Word		Seleziona\ &Parola
-menut Select\ &Line		Seleziona\ &Linea
+menut Select\ &Line		Seleziona\ &Riga
 menut Select\ &Block 		Seleziona\ &Blocco
-menut Select\ &All		Seleziona\ t&Utto
+menut Select\ &All		Seleziona\ &Tutto
+menut Select\ &Sentence		Seleziona\ &Frase
+menut Select\ Pa&ragraph	Seleziona\ Para&Grafo
 
 " The GUI Toolbar / Barra Strumenti
 menut Open		Apri
--- a/runtime/lang/menu_ja_jp.euc-jp.vim
+++ b/runtime/lang/menu_ja_jp.euc-jp.vim
@@ -39,7 +39,7 @@ let g:menutrans_help_dialog = "¥Ø¥ë¥×¤ò¸¡º÷¤·¤¿¤¤¥³¥Þ¥ó¥É¤â¤·¤¯¤Ïñ¸ì¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤:\n\nÁÞÆþ¥â¡¼¥É¤Î¥³¥Þ¥ó¥É¤Ë¤Ï i_ ¤òÀèƬ¤ËÉղä·¤Þ¤¹. (Îã: i_CTRL-X)\n¥³¥Þ¥ó¥É¥é¥¤¥óÊÔ½¸¥³¥Þ¥ó¥É¤Ë¤Ï c_ ¤òÀèƬ¤ËÉղä·¤Þ¤¹. (Îã: c_<Del>)\n¥ª¥×¥·¥ç¥ó¤Î̾Á°¤Ë¤Ï ' ¤òÉղä·¤Þ¤¹. (Îã: 'shiftwidth')"
 menutrans &File				¥Õ¥¡¥¤¥ë(&F)
 menutrans &Open\.\.\.<Tab>:e		³«¤¯(&O)\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	ʬ³ä¤·¤Æ³«¤¯(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	¥¿¥Ö¥Ú¡¼¥¸¤Ç³«¤¯<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	¥¿¥Ö¥Ú¡¼¥¸¤Ç³«¤¯(&T)<Tab>:tabnew
 menutrans &New<Tab>:enew		¿·µ¬ºîÀ®(&N)<Tab>:enew
 menutrans &Close<Tab>:close		ÊĤ¸¤ë(&C)<Tab>:close
 menutrans &Save<Tab>:w			Êݸ(&S)<Tab>:w
--- a/runtime/lang/menu_ja_jp.utf-8.vim
+++ b/runtime/lang/menu_ja_jp.utf-8.vim
@@ -39,7 +39,7 @@ let g:menutrans_help_dialog = "ヘルプを検索ã—ãŸã„コマンドもã—ãã¯å˜èªžã‚’入力ã—ã¦ãã ã•ã„:\n\n挿入モードã®ã‚³ãƒžãƒ³ãƒ‰ã«ã¯ i_ を先頭ã«ä»˜åŠ ã—ã¾ã™. (例: i_CTRL-X)\nコマンドライン編集コマンドã«ã¯ c_ を先頭ã«ä»˜åŠ ã—ã¾ã™. (例: c_<Del>)\nオプションã®åå‰ã«ã¯ ' を付加ã—ã¾ã™. (例: 'shiftwidth')"
 menutrans &File				ファイル(&F)
 menutrans &Open\.\.\.<Tab>:e		é–‹ã(&O)\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	分割ã—ã¦é–‹ã(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	タブページã§é–‹ã<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	タブページã§é–‹ã(&T)<Tab>:tabnew
 menutrans &New<Tab>:enew		æ–°è¦ä½œæˆ(&N)<Tab>:enew
 menutrans &Close<Tab>:close		é–‰ã˜ã‚‹(&C)<Tab>:close
 menutrans &Save<Tab>:w			ä¿å­˜(&S)<Tab>:w
--- a/runtime/lang/menu_japanese_japan.932.vim
+++ b/runtime/lang/menu_japanese_japan.932.vim
@@ -39,7 +39,7 @@ let g:menutrans_help_dialog = "ƒwƒ‹ƒv‚ðŒŸõ‚µ‚½‚¢ƒRƒ}ƒ“ƒh‚à‚µ‚­‚Í’PŒê‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢:\n\n‘}“üƒ‚[ƒh‚̃Rƒ}ƒ“ƒh‚É‚Í i_ ‚ð擪‚É•t‰Á‚µ‚Ü‚·. (—á: i_CTRL-X)\nƒRƒ}ƒ“ƒhƒ‰ƒCƒ“•ÒWƒRƒ}ƒ“ƒh‚É‚Í c_ ‚ð擪‚É•t‰Á‚µ‚Ü‚·. (—á: c_<Del>)\nƒIƒvƒVƒ‡ƒ“‚Ì–¼‘O‚É‚Í ' ‚ð•t‰Á‚µ‚Ü‚·. (—á: 'shiftwidth')"
 menutrans &File				ƒtƒ@ƒCƒ‹(&F)
 menutrans &Open\.\.\.<Tab>:e		ŠJ‚­(&O)\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	•ªŠ„‚µ‚ÄŠJ‚­(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	ƒ^ƒuƒy[ƒW‚ÅŠJ‚­<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	ƒ^ƒuƒy[ƒW‚ÅŠJ‚­(&T)<Tab>:tabnew
 menutrans &New<Tab>:enew		V‹Kì¬(&N)<Tab>:enew
 menutrans &Close<Tab>:close		•Â‚¶‚é(&C)<Tab>:close
 menutrans &Save<Tab>:w			•Û‘¶(&S)<Tab>:w
--- a/runtime/lang/menu_ko_kr.euckr.vim
+++ b/runtime/lang/menu_ko_kr.euckr.vim
@@ -31,7 +31,7 @@ menutrans &About		ÀÌ\ ÇÁ·Î±×·¥Àº(&A)
 menutrans &File				ÆÄÀÏ(&F)
 menutrans &Open\.\.\.<Tab>:e		¿­±â(&O)\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	³ª´²¼­\ ¿­±â(&l)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	ÅÇ\ ¿­±â\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	ÅÇ\ ¿­±â(&T)\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		»õ·Î¿î(&N)<Tab>:enew
 menutrans &Close<Tab>:close		´Ý±â(&C)<Tab>:close
 menutrans &Save<Tab>:w			ÀúÀå(&S)<Tab>:w
--- a/runtime/lang/menu_ko_kr.utf-8.vim
+++ b/runtime/lang/menu_ko_kr.utf-8.vim
@@ -31,7 +31,7 @@ menutrans &About		ì´\ 프로그램ì€(&A)
 menutrans &File				파ì¼(&F)
 menutrans &Open\.\.\.<Tab>:e		열기(&O)\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	나눠서\ 열기(&l)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	탭\ 열기\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	탭\ 열기(&T)\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		새로운(&N)<Tab>:enew
 menutrans &Close<Tab>:close		닫기(&C)<Tab>:close
 menutrans &Save<Tab>:w			저장(&S)<Tab>:w
--- a/runtime/lang/menu_nl_nl.latin1.vim
+++ b/runtime/lang/menu_nl_nl.latin1.vim
@@ -1,6 +1,6 @@
 " Menu Translations:	Nederlands
-" Maintainer:		Bram Moolenaar
-" Last Change:	2012 May 01
+" Maintainer:		The Vim Project <https://github.com/vim/vim>
+" Last Change:		2023 Aug 13
 " Original translations
 
 " Quit when menu translations have already been done.
--- a/runtime/lang/menu_pl_pl.iso_8859-2.vim
+++ b/runtime/lang/menu_pl_pl.iso_8859-2.vim
@@ -40,7 +40,7 @@ menutrans Split\ Patched\ &By\.\.\.	Podziel\ ³atane\ przez\.\.\.
 menutrans &Print			&Drukuj
 menutrans Sa&ve-Exit<Tab>:wqa		W&yj¶cie\ z\ zapisem<Tab>:wqa
 menutrans E&xit<Tab>:qa			&Wyj¶cie<Tab>:qa
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otwórz\ &kartê\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otwórz\ &kartê\.\.\.<Tab>:tabnew
 
 " Edit menu
 menutrans &Edit				&Edycja
--- a/runtime/lang/menu_pl_pl.utf-8.vim
+++ b/runtime/lang/menu_pl_pl.utf-8.vim
@@ -40,7 +40,7 @@ menutrans Split\ Patched\ &By\.\.\.	Podziel\ Å‚atane\ przez\.\.\.
 menutrans &Print			&Drukuj
 menutrans Sa&ve-Exit<Tab>:wqa		W&yjście\ z\ zapisem<Tab>:wqa
 menutrans E&xit<Tab>:qa			&Wyjście<Tab>:qa
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otwórz\ &kartę\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otwórz\ &kartę\.\.\.<Tab>:tabnew
 
 " Edit menu
 menutrans &Edit				&Edycja
--- a/runtime/lang/menu_polish_poland.1250.vim
+++ b/runtime/lang/menu_polish_poland.1250.vim
@@ -40,7 +40,7 @@ menutrans Split\ Patched\ &By\.\.\.	Podziel\ ³atane\ przez\.\.\.
 menutrans &Print			&Drukuj
 menutrans Sa&ve-Exit<Tab>:wqa		W&yjœcie\ z\ zapisem<Tab>:wqa
 menutrans E&xit<Tab>:qa			&Wyjœcie<Tab>:qa
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otwórz\ &kartê\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otwórz\ &kartê\.\.\.<Tab>:tabnew
 
 " Edit menu
 menutrans &Edit				&Edycja
new file mode 100644
--- /dev/null
+++ b/runtime/lang/menu_ru.cp1251.vim
@@ -0,0 +1,3 @@
+" Menu Translations:	Russian
+
+source <sfile>:p:h/menu_ru_ru.cp1251.vim
new file mode 100644
--- /dev/null
+++ b/runtime/lang/menu_ru.koi8-r.vim
@@ -0,0 +1,3 @@
+" Menu Translations:	Russian
+
+source <sfile>:p:h/menu_ru_ru.koi8-r.vim
new file mode 100644
--- /dev/null
+++ b/runtime/lang/menu_ru.vim
@@ -0,0 +1,3 @@
+" Menu Translations:	Russian
+
+source <sfile>:p:h/menu_ru_ru.vim
new file mode 100644
--- /dev/null
+++ b/runtime/lang/menu_ru_ru.cp1251.vim
@@ -0,0 +1,364 @@
+" Menu Translations:	Russian
+" Maintainer:		Restorer, <restorer@mail2k.ru>
+" Previous Maintainer:	Sergey Alyoshin, <alyoshin.s@gmail.com>
+"			vassily ragosin, <vrr[at]users.sourceforge.net>
+" Last Change:		23 Aug 2023
+" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT
+" URL:			https://github.com/RestorerZ/RuVim
+"
+"
+" Adopted for RuVim project by Vassily Ragosin.
+" First translation: Tim Alexeevsky, <realtim [at] mail.ru>,
+" based on ukrainian translation by Bohdan Vlasyuk, <bohdan@vstu.edu.ua>
+"
+"
+" Quit when menu translations have already been done.
+"
+" Check is
+"
+if exists("did_menu_trans")
+   finish
+endif
+let g:did_menu_trans = 1
+let s:keepcpo= &cpo
+set cpo&vim
+
+scriptencoding cp1251
+
+" Top
+menutrans &File				&Ôàéë
+menutrans &Edit				&Ïðàâêà
+menutrans &Tools			Ñ&åðâèñ
+menutrans &Syntax			Ñèí&òàêñèñ
+menutrans &Buffers			&Áóôåðû
+menutrans &Window			&Îêíî
+menutrans &Help				&Ñïðàâêà
+"
+"
+"
+" Submenu of menu Help
+menutrans &Overview<Tab><F1>		Î&áùèé\ îáçîð<Tab>F1
+menutrans &User\ Manual			&Ðóêîâîäñòâî\ ïîëüçîâàòåëÿ
+menutrans &How-to\ links		&Èíñòðóêöèè
+menutrans &Find\.\.\.			&Íàéòè\.\.\.
+"--------------------
+menutrans &Credits			Ñî&àâòîðû
+menutrans Co&pying			&Ëèöåíçèÿ
+menutrans &Sponsor/Register		Ñîä&åéñòâèå\ è\ ðåãèñòðàöèÿ
+menutrans O&rphans			&Áëàãîòâîðèòåëüíîñòü
+"--------------------
+menutrans &Version			&Òåêóùàÿ\ âåðñèÿ
+menutrans &About			&Î\ ïðîãðàììå
+"
+"
+" Submenu of File menu
+menutrans &Open\.\.\.<Tab>:e		&Îòêðûòü\.\.\.<Tab>:e
+menutrans Sp&lit-Open\.\.\.<Tab>:sp	Îò&êðûòü\ â\ íîâîì\ îêíå\.\.\.<Tab>:sp
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Îòêðû&òü\ â\ íîâîé\ âêëàäêå\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew		Ñîçä&àòü<Tab>:enew
+menutrans &Close<Tab>:close		&Çàêðûòü<Tab>:close
+"--------------------
+menutrans &Save<Tab>:w			&Ñîõðàíèòü<Tab>:w
+menutrans Save\ &As\.\.\.<Tab>:sav	Ñî&õðàíèòü\ êàê\.\.\.<Tab>:sav
+"--------------------
+menutrans Split\ &Diff\ with\.\.\.	Ñðà&âíèòü\ ñ\.\.\.
+menutrans Split\ Patched\ &By\.\.\.	Ñðàâí&èòü\ è\ èñïðàâèòü\.\.\.
+"--------------------
+menutrans &Print			&Ïå÷àòü\.\.\.
+menutrans Sa&ve-Exit<Tab>:wqa		Ñîõðà&íèòü\ è\ âûéòè<Tab>:wqa
+menutrans E&xit<Tab>:qa			Â&ûõîä<Tab>:qa
+"
+"
+" Submenu of Edit menu
+menutrans &Undo<Tab>u			&Îòìåíèòü<Tab>u
+menutrans &Redo<Tab>^R			Â&åðíóòü<Tab>Ctrl+R
+menutrans Rep&eat<Tab>\.		Ïîâòîðèò&ü<Tab>\.
+"--------------------
+menutrans Cu&t<Tab>"+x			&Âûðåçàòü<Tab>"+x
+menutrans &Copy<Tab>"+y			&Êîïèðîâàòü<Tab>"+y
+menutrans &Paste<Tab>"+gP		Âñò&àâèòü<Tab>"+g\ Shift+P
+menutrans Put\ &Before<Tab>[p		Ïîìåñòèòü\ ï&åðåä<Tab>[p
+menutrans Put\ &After<Tab>]p		Ïîìåñòèòü\ ïî&ñëå<Tab>]p
+menutrans &Delete<Tab>x			&Óäàëèòü<Tab>x
+menutrans &Select\ All<Tab>ggVG		Â&ûäåëèòü\ âñ¸<Tab>gg\ Shift+V\ Shift+G
+"--------------------
+" if has("win32") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+menutrans &Find\.\.\.			&Íàéòè\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.	&Çàìåíèòü\.\.\.
+" else
+menutrans &Find<Tab>/			&Íàéòè<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s	&Çàìåíèòü<Tab>:%s
+menutrans Find\ and\ Rep&lace<Tab>:s	&Çàìåíèòü<Tab>:s
+"--------------------
+menutrans Settings\ &Window			Âñå\ &ïàðàìåòðû\.\.\.
+menutrans Startup\ &Settings			Ïàðàìåòðû\ çàïóñ&êà
+menutrans &Global\ Settings			Î&áùèå\ ïàðàìåòðû
+menutrans F&ile\ Settings			Ïàðà&ìåòðû\ òåêóùåãî\ áóôåðà
+menutrans Show\ C&olor\ Schemes\ in\ Menu	Ïîêàçàòü\ ìåíþ\ âûáîðà\ öâå&òîâîé\ ñõåìû
+menutrans C&olor\ Scheme			Öâåòîâàÿ\ ñ&õåìà
+menutrans Show\ &Keymaps\ in\ Menu		Ïîêàçàòü\ ìåíþ\ âûáîðà\ ðàñêëàäêè\ ê&ëàâèàòóðû
+menutrans &Keymap				&Ðàñêëàäêà\ êëàâèàòóðû
+menutrans None					Íå\ èñïîëüçîâàòü
+menutrans Select\ Fo&nt\.\.\.			&Øðèôò\.\.\.
+">>>----------------- Edit/Global settings
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!		Ïîäñâåòêà\ ñîâ&ïàäåíèé<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!			&Ðåãèñòðîíåçàâèñèìûé\ ïîèñê<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	Ïîäñâåòêà\ ïàðíûõ\ &ýëåìåíòîâ<Tab>:set\ sm!
+menutrans &Context\ lines					Êîíòåêñòíûõ\ ñòð&îê
+menutrans &Virtual\ Edit					Âèð&òóàëüíîå\ ðåäàêòèðîâàíèå
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!			Ðåæèì\ &âñòàâêè<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!		&Ñîâìåñòèìîñòü\ ñ\ ðåäàêòîðîì\ Vi<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.					&Êàòàëîãè\ äëÿ\ ïîèñêà\ ôàéëîâ\.\.\.
+menutrans Ta&g\ Files\.\.\.					È&íäåêñíûå\ ôàéëû\.\.\.
+"
+menutrans Toggle\ &Toolbar		Ïîêàç\ ïàíåëè\ &èíñòðóìåíòîâ
+menutrans Toggle\ &Bottom\ Scrollbar	Ïîêàç\ ïîëîñû\ ïðîêðóòêè\ âíè&çó
+menutrans Toggle\ &Left\ Scrollbar	Ïîêàç\ ïîëîñû\ ïðîêðóòêè\ ñ&ëåâà
+menutrans Toggle\ &Right\ Scrollbar	Ïîêàç\ ïîëîñû\ ïðîêðóòêè\ ñïð&àâà
+">>>->>>------------- Edit/Global settings/Virtual edit
+menutrans Never				Âûêëþ÷åíî\ âî\ âñåõ\ ðåæèìàõ
+menutrans Block\ Selection		Âêëþ÷åíî\ â\ ðåæèìå\ âèçóàëüíîãî\ áëîêà
+menutrans Insert\ mode			Âêëþ÷åíî\ â\ ðåæèìå\ âñòàâêè
+menutrans Block\ and\ Insert		Âêëþ÷åíî\ â\ ðåæèìàõ\ âèçóàëüíîãî\ áëîêà\ è\ âñòàâêè
+menutrans Always			Âêëþ÷åíî\ âî\ âñåõ\ ðåæèìàõ
+">>>----------------- Edit/File settings
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!		Ïîêàç\ &íóìåðàöèè\ ñòðîê<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	Ïîêàç\ îòíîñèòå&ëüíîé\ íóìåðàöèè\ ñòðîê<Tab>:set\ nru!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!			Ïîêàç\ íå&ïå÷àòàåìûõ\ çíàêîâ<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!		&Ðàçáèâêà\ ñòðîê\ ïî\ ãðàíèöå\ îêíà<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ word<Tab>:set\ lbr!		Ðàçáèâêà\ ñòðîê\ ïî\ &ãðàíèöå\ ñëîâ<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et!			Çàìåíà\ ñèìâîëîâ\ &òàáóëÿöèè\ íà\ ïðîáåëû<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!		Óñòàíîâêà\ îòñòóïà\ êàê\ ó\ òåêóùåé\ &ñòðîêè<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!		Óñòàíîâêà\ îòñòóïà\ êàê\ â\ &ÿçûêå\ Ñè<Tab>:set\ cin!
+">>>---
+menutrans &Shiftwidth				Âåëè&÷èíà\ îòñòóïà
+menutrans Soft\ &Tabstop			Øèðèíà\ &òàáóëÿöèè
+menutrans Te&xt\ Width\.\.\.			&Øèðèíà\ òåêñòà\.\.\.
+menutrans &File\ Format\.\.\.			&Ôîðìàò\ ôàéëà\.\.\.
+"
+"
+"
+" Submenu of Tools menu
+menutrans &Jump\ to\ this\ tag<Tab>g^]		&Ïåðåéòè\ ïî\ óêàçàòåëþ<Tab>g\ Ctrl+]
+menutrans Jump\ &back<Tab>^T			&Âåðíóòüñÿ\ íàçàä<Tab>Ctrl+T
+menutrans Build\ &Tags\ File			Ñîçäàòü\ ôàéë\ ñ\ &èíäåêñàìè
+"-------------------
+menutrans &Folding				Ñ&òðóêòóðà\ òåêñòà
+menutrans &Spelling				Ïð&àâîïèñàíèå
+menutrans &Diff					&Ñðàâíåíèå\ òåêñòà
+"-------------------
+menutrans &Make<Tab>:make			Êî&ìïèëÿöèÿ<Tab>:make
+menutrans &List\ Errors<Tab>:cl			Ðàñïîçíàííûå\ î&øèáêè<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!		Âåñ&ü\ ñïèñîê\ ðåçóëüòàòîâ<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn			Ñëåäó&þùàÿ\ çàïèñü\ èç\ ñïèñêà<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp		Ïð&åäûäóùàÿ\ çàïèñü\ èç\ ñïèñêà<Tab>:cp
+menutrans &Older\ List<Tab>:cold		Ïðåä&ûäóùèé\ ñïèñîê\ ðåçóëüòàòîâ<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew		Ñ&ëåäóþùèé\ ñïèñîê\ ðåçóëüòàòîâ<Tab>:cnew
+menutrans Error\ &Window			Îê&íî\ ñî\ ñïèñêîì\ ðåçóëüòàòîâ
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu	Ïîêàçàòü\ ìåíþ\ âûáîðà\ &êîìïèëÿòîðà
+menutrans Se&T\ Compiler			Âûáðàòü\ &êîìïèëÿòîð
+"-------------------
+menutrans &Convert\ to\ HEX<Tab>:%!xxd		Ïðåî&áðàçîâàòü\ â\ HEX<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r		Ïðåîáðàçîâàòü\ è&ç\ HEX<Tab>:%!xxd\ -r
+">>>---------------- Tools/Spelling
+menutrans &Spell\ Check\ On			Âûïîëíÿòü\ &ïðîâåðêó
+menutrans Spell\ Check\ &Off			&Íå\ âûïîëíÿòü\ ïðîâåðêó
+menutrans To\ &Next\ error<Tab>]s		Ñ&ëåäóþùàÿ\ îøèáêà<Tab>]s
+menutrans To\ &Previous\ error<Tab>[s		Ïð&åäûäóùàÿ\ îøèáêà<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z=		Âàðèàíò&û\ íàïèñàíèÿ<Tab>z=
+menutrans &Repeat\ correction<Tab>:spellrepall	Çàìåíèòü\ &âñå<Tab>:spellrepall
+"-------------------
+menutrans Set\ language\ to\ "en"		Ïðîâåðêà\ äëÿ\ ÿçûêà\ "en"
+menutrans Set\ language\ to\ "en_au"		Ïðîâåðêà\ äëÿ\ ÿçûêà\ "en_au"
+menutrans Set\ language\ to\ "en_ca"		Ïðîâåðêà\ äëÿ\ ÿçûêà\ "en_ca"
+menutrans Set\ language\ to\ "en_gb"		Ïðîâåðêà\ äëÿ\ ÿçûêà\ "en_gb"
+menutrans Set\ language\ to\ "en_nz"		Ïðîâåðêà\ äëÿ\ ÿçûêà\ "en_nz"
+menutrans Set\ language\ to\ "en_us"		Ïðîâåðêà\ äëÿ\ ÿçûêà\ "en_us"
+menutrans &Find\ More\ Languages		Íàéòè\ äëÿ\ äðóãèõ\ &ÿçûêîâ
+let g:menutrans_set_lang_to =			'Ïðîâåðêà äëÿ ÿçûêà'
+">>>---------------- Folds
+menutrans &Enable/Disable\ folds<Tab>zi		&Ïîêàçàòü\ èëè\ óáðàòü\ ñòðóêòóðó<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv		Ïðîñìîòð\ ñòðîêè\ ïîä\ &êóðñîðîì<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx	Ïðîñìîòð\ &òîëüêî\ ñòðîêè\ ïîä\ êóðñîðîì<Tab>z\ Shift+M\ zx
+menutrans C&lose\ more\ folds<Tab>zm		Ñâåðíóòü\ âëî&æåííûå\ áëîêè\ ñòðóêòóðû<Tab>zm
+menutrans &Close\ all\ folds<Tab>zM		Ñâåðíóòü\ &âñå\ áëîêè\ ñòðóêòóðû<Tab>z\ Shift+M
+menutrans &Open\ all\ folds<Tab>zR		Ðàçâåðíóòü\ â&ñå\ áëîêè\ ñòðóêòóðû<Tab>z\ Shift+R
+menutrans O&pen\ more\ folds<Tab>zr		Ðà&çâåðíóòü\ âëîæåííûé\ áëîê\ ñòðóêòóðû<Tab>zr
+menutrans Fold\ Met&hod				&Ìåòîä\ ðàçìåòêè\ ñòðóêòóðû
+menutrans Create\ &Fold<Tab>zf			Ñî&çäàòü\ áëîê\ ñòðóêòóðû<Tab>zf
+menutrans &Delete\ Fold<Tab>zd			&Óáðàòü\ áëîê\ ñòðóêòóðû<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD		Óáðàòü\ âñ&å\ áëîêè\ ñòðóêòóðû<Tab>z\ Shift+D
+menutrans Fold\ col&umn\ width			&Øèðèíà\ ñòîëáöà\ ñî\ çíà÷êàìè\ ñòðóêòóðû
+">>>->>>----------- Tools/Folds/Fold Method
+menutrans M&anual				Ðàçìåòêà\ âðó&÷íóþ
+menutrans I&ndent				Íà\ îñíîâå\ î&òñòóïîâ
+menutrans E&xpression				Íà\ îñíîâå\ ð&àñ÷¸òîâ
+menutrans S&yntax				Íà\ îñíîâå\ &ñèíòàêñèñà
+menutrans &Diff					Íà\ îñíîâå\ ðàçëè÷èé\ â\ òåêñòàõ
+menutrans Ma&rker				Íà\ îñíîâå\ &ìàðêåðîâ
+">>>--------------- Sub of Tools/Diff
+menutrans &Update				Î&áíîâèòü\ ñîäåðæèìîå\ îêîí
+menutrans &Get\ Block				Ïåðåíåñòè\ &â\ òåêóùèé\ áóôåð
+menutrans &Put\ Block				Ïåðåíåñòè\ &èç\ òåêóùåãî\ áóôåðà
+">>>--------------- Tools/Error window
+menutrans &Update<Tab>:cwin			Î&áíîâèòü<Tab>:cwin
+menutrans &Close<Tab>:cclose			&Çàêðûòü<Tab>:cclose
+menutrans &Open<Tab>:copen			&Îòêðûòü<Tab>:copen
+"
+"
+" Syntax menu
+"
+menutrans &Show\ File\ Types\ in\ menu		&Ïîêàçàòü\ ìåíþ\ âûáîðà\ òèïà\ ôàéëà
+menutrans Set\ '&syntax'\ only			À&êòèâèðîâàòü\ ïàðàìåòð\ 'syntax'
+menutrans Set\ '&filetype'\ too			Àêòèâèðîâàòü\ ïàðà&ìåòð\ 'filetype'
+menutrans &Off					&Îòêëþ÷èòü\ ïîäñâåòêó
+menutrans &Manual				Âêëþ÷åíèå\ ïîäñâåòêè\ âðó&÷íóþ
+menutrans A&utomatic				Âêëþ÷åíèå\ ïîäñâåòêè\ &àâòîìàòè÷åñêè
+menutrans on/off\ for\ &This\ file		Èçìåíèòü\ ðåæèì\ äëÿ\ &òåêóùåãî\ ôàéëà
+menutrans Co&lor\ test				Ïðîâåðèòü\ ïîääåð&æèâàåìûå\ öâåòà
+menutrans &Highlight\ test			Ïîêàçàòü\ ãðóïïû\ ïîä&ñâåòêè
+menutrans &Convert\ to\ HTML			Ïðåî&áðàçîâàòü\ òåêóùèé\ ôàéë\ â\ HTML
+"
+"
+" Buffers menu
+"
+menutrans &Refresh\ menu			&Îáíîâèòü\ ñïèñîê\ áóôåðîâ
+menutrans &Delete				&Çàêðûòü\ áóôåð
+menutrans &Alternate				&Ñîñåäíèé\ áóôåð
+menutrans &Next					Ñ&ëåäóþùèé\ áóôåð
+menutrans &Previous				&Ïðåäûäóùèé\ áóôåð
+"
+"
+" Submenu of Window menu
+"
+menutrans &New<Tab>^Wn				&Ñîçäàòü<Tab>Ctrl+W\ n
+menutrans S&plit<Tab>^Ws			Ðàçäåëèòü\ ïî\ &ãîðèçîíòàëè<Tab>Ctrl+W\ s
+menutrans Split\ &Vertically<Tab>^Wv		Ðàçäåëèòü\ ïî\ &âåðòèêàëè<Tab>Ctrl+W\ v
+menutrans Sp&lit\ To\ #<Tab>^W^^		Ñ&îñåäíèé\ ôàéë\ â\ íîâîì\ îêíå<Tab>Ctrl+W\ Ctrl+^
+menutrans Split\ File\ E&xplorer		Äèñïåò÷åð\ ôàéëîâ
+"
+menutrans &Close<Tab>^Wc			&Çàêðûòü\ òåêóùåå\ îêíî<Tab>Ctrl+W\ c
+menutrans Close\ &Other(s)<Tab>^Wo		Ç&àêðûòü\ äðóãèå\ îêíà<Tab>Ctrl+W\ o
+"
+menutrans Move\ &To				&Ïåðåìåñòèòü
+menutrans Rotate\ &Up<Tab>^WR			Ñäâèíóòü\ ââåð&õ<Tab>Ctrl+W\ Shift+R
+menutrans Rotate\ &Down<Tab>^Wr			Ñäâèíóòü\ â&íèç<Tab>Ctrl+W\ r
+"
+menutrans &Equal\ Size<Tab>^W=			Âûðàâíèâàíèå\ ðàç&ìåðà<Tab>Ctrl+W\ =
+menutrans &Max\ Height<Tab>^W_			Ìàêñèìàëüíàÿ\ â&ûñîòà<Tab>Ctrl+W\ _
+menutrans M&in\ Height<Tab>^W1_			Ìèíèìàëüíàÿ\ âûñî&òà<Tab>Ctrl+W\ 1_
+menutrans Max\ &Width<Tab>^W\|			Ìàêñèìàëüíàÿ\ &øèðèíà<Tab>Ctrl+W\ \|
+menutrans Min\ Widt&h<Tab>^W1\|			Ìèíèìàëüíàÿ\ ø&èðèíà<Tab>Ctrl+W\ 1\|
+">>>----------------- Submenu of Window/Move To
+menutrans &Top<Tab>^WK				Â&âåðõ<Tab>Ctrl+W\ Shift+K
+menutrans &Bottom<Tab>^WJ			Â&íèç<Tab>Ctrl+W\ Shift+J
+menutrans &Left\ side<Tab>^WH			Â&ëåâî<Tab>Ctrl+W\ Shift+H
+menutrans &Right\ side<Tab>^WL			Â&ïðàâî<Tab>Ctrl+W\ Shift+L
+"
+"
+" The popup menu
+"
+"
+menutrans &Undo					&Îòìåíèòü
+menutrans Cu&t					&Âûðåçàòü
+menutrans &Copy					&Êîïèðîâàòü
+menutrans &Paste				Âñò&àâèòü
+menutrans &Delete				&Óäàëèòü
+menutrans Select\ Blockwise			Áëîêîâîå\ âûäåëåíèå
+menutrans Select\ &Word				Âûäåëèòü\ ñ&ëîâî
+menutrans Select\ &Line				Âûäåëèòü\ ñ&òðîêó
+menutrans Select\ &Block			Âûäåëèòü\ &áëîê
+menutrans Select\ &All				Â&ûäåëèòü\ âñ¸
+menutrans Select\ &Sentence			Âûäåëèòü\ ïðåäëî&æåíèå
+menutrans Select\ Pa&ragraph			Âûäåëèòü\ àá&çàö
+"
+" The Spelling popup menu
+"
+let g:menutrans_spell_change_ARG_to =		'Èñïðàâèòü\ "%s"'
+let g:menutrans_spell_add_ARG_to_word_list =	'Äîáàâèòü\ "%s"\ â\ ñëîâàðü'
+let g:menutrans_spell_ignore_ARG =		'Ïðîïóñòèòü\ "%s"'
+"
+" The GUI toolbar
+"
+if has("toolbar")
+  if exists("*Do_toolbar_tmenu")
+    delfun Do_toolbar_tmenu
+  endif
+  def g:Do_toolbar_tmenu()
+    tmenu ToolBar.New				Ñîçäàòü äîêóìåíò
+    tmenu ToolBar.Open				Îòêðûòü ôàéë
+    tmenu ToolBar.Save				Ñîõðàíèòü ôàéë
+    tmenu ToolBar.SaveAll			Ñîõðàíèòü âñå ôàéëû
+    tmenu ToolBar.Print				Ïå÷àòü
+    tmenu ToolBar.Undo				Îòìåíèòü
+    tmenu ToolBar.Redo				Âåðíóòü
+    tmenu ToolBar.Cut				Âûðåçàòü
+    tmenu ToolBar.Copy				Êîïèðîâàòü
+    tmenu ToolBar.Paste				Âñòàâèòü
+    tmenu ToolBar.Find				Íàéòè...
+    tmenu ToolBar.FindNext			Íàéòè ñëåäóþùåå
+    tmenu ToolBar.FindPrev			Íàéòè ïðåäûäóùåå
+    tmenu ToolBar.Replace			Çàìåíèòü...
+    tmenu ToolBar.NewSesn			Ñîçäàòü ñåàíñ ðåäàêòèðîâàíèÿ
+    tmenu ToolBar.LoadSesn			Çàãðóçèòü ñåàíñ ðåäàêòèðîâàíèÿ
+    tmenu ToolBar.SaveSesn			Ñîõðàíèòü ñåàíñ ðåäàêòèðîâàíèÿ
+    tmenu ToolBar.RunScript			Âûïîëíèòü êîìàíäíûé ôàéë ïðîãðàììû Vim
+    tmenu ToolBar.Shell				Êîìàíäíàÿ îáîëî÷êà
+    tmenu ToolBar.Make				Êîìïèëÿöèÿ
+    tmenu ToolBar.RunCtags			Ñîçäàòü ôàéë ñ èíäåêñàìè
+    tmenu ToolBar.TagJump			Ïåðåéòè ïî óêàçàòåëþ
+    tmenu ToolBar.Help				Ñïðàâêà
+    tmenu ToolBar.FindHelp			Ïîèñê â äîêóìåíòàöèè
+    tmenu ToolBar.WinClose			Çàêðûòü òåêóùåå îêíî
+    tmenu ToolBar.WinMax			Ìàêñèìàëüíàÿ âûñîòà òåêóùåãî îêíà
+    tmenu ToolBar.WinMin			Ìèíèìàëüíàÿ âûñîòà òåêóùåãî îêíà
+    tmenu ToolBar.WinSplit			Ðàçäåëèòü îêíî ïî ãîðèçîíòàëè
+    tmenu ToolBar.WinVSplit			Ðàçäåëèòü îêíî ïî âåðòèêàëè
+    tmenu ToolBar.WinMaxWidth			Ìàêñèìàëüíàÿ øèðèíà òåêóùåãî îêíà
+    tmenu ToolBar.WinMinWidth			Ìèíèìàëüíàÿ øèðèíà òåêóùåãî îêíà
+  enddef
+endif
+"
+"
+" Dialog texts
+"
+" Find in help dialog
+"
+let g:menutrans_help_dialog = "Íàáåðèòå êîìàíäó èëè ñëîâî, êîòîðûå òðåáóåòñÿ íàéòè â äîêóìåíòàöèè.\n\n×òîáû íàéòè êîìàíäû ðåæèìà âñòàâêè, èñïîëüçóéòå ïðèñòàâêó i_ (íàïðèìåð, i_CTRL-X)\n×òîáû íàéòè êîìàíäû êîìàíäíîé ñòðîêè, èñïîëüçóéòå ïðèñòàâêó c_ (íàïðèìåð, c_<Del>)\n×òîáû íàéòè èíôîðìàöèþ î ïàðàìåòðàõ, èñïîëüçóéòå ñèìâîë ' (íàïðèìåð, 'shftwidth')"
+"
+" Search path dialog
+"
+let g:menutrans_path_dialog = "Óêàæèòå ÷åðåç çàïÿòóþ íàèìåíîâàíèÿ êàòàëîãîâ, ãäå áóäåò âûïîëíÿòüñÿ ïîèñê ôàéëîâ"
+"
+" Tag files dialog
+"
+let g:menutrans_tags_dialog = "Óêàæèòå ÷åðåç çàïÿòóþ íàèìåíîâàíèÿ ôàéëîâ èíäåêñîâ"
+"
+" Text width dialog
+"
+let g:menutrans_textwidth_dialog = "Óêàæèòå êîëè÷åñòâî ñèìâîëîâ äëÿ óñòàíîâêè øèðèíû òåêñòà\n×òîáû îòìåíèòü ôîðìàòèðîâàíèå, óêàæèòå 0"
+"
+" File format dialog
+"
+let g:menutrans_fileformat_dialog = "Âûáåðèòå ôîðìàò ôàéëà"
+let g:menutrans_fileformat_choices = "&1. Unix\n&2. Dos\n&3. Mac\nÎòìåíà (&C)"
+"
+let menutrans_no_file = "[Áåçûìÿííûé]"
+
+" Menus to handle Russian encodings
+" Thanks to Pavlo Bohmat for the idea
+" vassily ragosin <vrr[at]users.sourceforge.net>
+"
+an 10.355 &File.-SEP-					<Nop>
+an 10.360.20 &File.Îòêðûòü\ â\ êîäèðîâêå\.\.\..CP1251	:browse e ++enc=cp1251<CR>
+an 10.360.30 &File.Îòêðûòü\ â\ êîäèðîâêå\.\.\..CP866	:browse e ++enc=cp866<CR>
+an 10.360.30 &File.Îòêðûòü\ â\ êîäèðîâêå\.\.\..KOI8-R	:browse e ++enc=koi8-r<CR>
+an 10.360.40 &File.Îòêðûòü\ â\ êîäèðîâêå\.\.\..UTF-8	:browse e ++enc=utf-8<CR>
+an 10.365.20 &File.Ñîõðàíèòü\ ñ\ êîäèðîâêîé\.\.\..CP1251 :browse w ++enc=cp1251<CR>
+an 10.365.30 &File.Ñîõðàíèòü\ ñ\ êîäèðîâêîé\.\.\..CP866	:browse w ++enc=cp866<CR>
+an 10.365.30 &File.Ñîõðàíèòü\ ñ\ êîäèðîâêîé\.\.\..KOI8-R :browse w ++enc=koi8-r<CR>
+an 10.365.40 &File.Ñîõðàíèòü\ ñ\ êîäèðîâêîé\.\.\..UTF-8	:browse w ++enc=utf-8<CR>
+"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
--- a/runtime/lang/menu_ru_ru.koi8-r.vim
+++ b/runtime/lang/menu_ru_ru.koi8-r.vim
@@ -1,23 +1,25 @@
 " Menu Translations:	Russian
-" Maintainer:		Sergey Alyoshin <alyoshin.s@gmail.com>
-" Previous Maintainer:	Vassily Ragosin <vrr[at]users.sourceforge.net>
-" Last Change:		16 May 2018
+" Maintainer:		Restorer, <restorer@mail2k.ru>
+" Previous Maintainer:	Sergey Alyoshin, <alyoshin.s@gmail.com>
+"			vassily ragosin, <vrr[at]users.sourceforge.net>
+" Last Change:		23 Aug 2023
 " Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT
-" URL:			cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim
+" URL:			https://github.com/RestorerZ/RuVim
 "
-" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $
 "
 " Adopted for RuVim project by Vassily Ragosin.
-" First translation: Tim Alexeevsky <realtim [at] mail.ru>,
-" based on ukrainian translation by Bohdan Vlasyuk <bohdan@vstu.edu.ua>
+" First translation: Tim Alexeevsky, <realtim [at] mail.ru>,
+" based on ukrainian translation by Bohdan Vlasyuk, <bohdan@vstu.edu.ua>
 "
 "
 " Quit when menu translations have already been done.
 "
+" Check is
+"
 if exists("did_menu_trans")
    finish
 endif
-let did_menu_trans = 1
+let g:did_menu_trans = 1
 let s:keepcpo= &cpo
 set cpo&vim
 
@@ -25,256 +27,256 @@ scriptencoding koi8-r
 
 " Top
 menutrans &File				&æÁÊÌ
-menutrans &Edit				ð&ÒÁ×ËÁ
-menutrans &Tools			&éÎÓÔÒÕÍÅÎÔÙ
-menutrans &Syntax			&óÉÎÔÁËÓÉÓ
+menutrans &Edit				&ðÒÁ×ËÁ
+menutrans &Tools			ó&ÅÒ×ÉÓ
+menutrans &Syntax			óÉÎ&ÔÁËÓÉÓ
 menutrans &Buffers			&âÕÆÅÒÙ
 menutrans &Window			&ïËÎÏ
-menutrans &Help				ó&ÐÒÁ×ËÁ
+menutrans &Help				&óÐÒÁ×ËÁ
 "
 "
 "
-" Help menu
-menutrans &Overview<Tab><F1>		&ïÂÚÏÒ<Tab><F1>
-menutrans &User\ Manual			òÕËÏ×Ï&ÄÓÔ×Ï\ ÐÏÌØÚÏ×ÁÔÅÌÑ
-menutrans &How-To\ Links		&ëÁË\ ÜÔÏ\ ÓÄÅÌÁÔØ\.\.\.
-menutrans &Find\.\.\.			&ðÏÉÓË
+" Submenu of menu Help
+menutrans &Overview<Tab><F1>		ï&ÂÝÉÊ\ ÏÂÚÏÒ<Tab>F1
+menutrans &User\ Manual			&òÕËÏ×ÏÄÓÔ×Ï\ ÐÏÌØÚÏ×ÁÔÅÌÑ
+menutrans &How-to\ links		&éÎÓÔÒÕËÃÉÉ
+menutrans &Find\.\.\.			&îÁÊÔÉ\.\.\.
 "--------------------
-menutrans &Credits			&âÌÁÇÏÄÁÒÎÏÓÔÉ
-menutrans Co&pying			&òÁÓÐÒÏÓÔÒÁÎÅÎÉÅ
-menutrans &Sponsor/Register		ðÏÍÏ&ÝØ/òÅÇÉÓÔÒÁÃÉÑ
-menutrans O&rphans			&óÉÒÏÔÙ
+menutrans &Credits			óÏ&Á×ÔÏÒÙ
+menutrans Co&pying			&ìÉÃÅÎÚÉÑ
+menutrans &Sponsor/Register		óÏÄ&ÅÊÓÔ×ÉÅ\ É\ ÒÅÇÉÓÔÒÁÃÉÑ
+menutrans O&rphans			&âÌÁÇÏÔ×ÏÒÉÔÅÌØÎÏÓÔØ
 "--------------------
-menutrans &Version			&éÎÆÏÒÍÁÃÉÑ\ Ï\ ÐÒÏÇÒÁÍÍÅ
-menutrans &About			&úÁÓÔÁ×ËÁ
+menutrans &Version			&ôÅËÕÝÁÑ\ ×ÅÒÓÉÑ
+menutrans &About			&ï\ ÐÒÏÇÒÁÍÍÅ
 "
 "
-" File menu
+" Submenu of File menu
 menutrans &Open\.\.\.<Tab>:e		&ïÔËÒÙÔØ\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp	ðÏ&ÄÅÌÉÔØ\ ÏËÎÏ\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	ïÔËÒÙÔØ\ ×&ËÌÁÄËÕ\.\.\.<Tab>:tabnew
-menutrans &New<Tab>:enew		&îÏ×ÙÊ<Tab>:enew
+menutrans Sp&lit-Open\.\.\.<Tab>:sp	ïÔ&ËÒÙÔØ\ ×\ ÎÏ×ÏÍ\ ÏËÎÅ\.\.\.<Tab>:sp
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	ïÔËÒÙ&ÔØ\ ×\ ÎÏ×ÏÊ\ ×ËÌÁÄËÅ\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew		óÏÚÄ&ÁÔØ<Tab>:enew
 menutrans &Close<Tab>:close		&úÁËÒÙÔØ<Tab>:close
 "--------------------
 menutrans &Save<Tab>:w			&óÏÈÒÁÎÉÔØ<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav	óÏÈÒÁÎÉÔØ\ &ËÁË\.\.\.<Tab>:sav
+menutrans Save\ &As\.\.\.<Tab>:sav	óÏ&ÈÒÁÎÉÔØ\ ËÁË\.\.\.<Tab>:sav
 "--------------------
-menutrans Split\ &Diff\ With\.\.\.	óÒ&Á×ÎÉÔØ\ Ó\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	óÒÁ×ÎÉÔØ\ Ó\ ÐÒÉÍÅÎÅÎÉÅÍ\ ÚÁÐ&ÌÁÔËÉ\.\.\.
+menutrans Split\ &Diff\ with\.\.\.	óÒÁ&×ÎÉÔØ\ Ó\.\.\.
+menutrans Split\ Patched\ &By\.\.\.	óÒÁ×Î&ÉÔØ\ É\ ÉÓÐÒÁ×ÉÔØ\.\.\.
 "--------------------
-menutrans &Print			îÁ&ÐÅÞÁÔÁÔØ
-menutrans Sa&ve-Exit<Tab>:wqa		÷Ù&ÈÏÄ\ Ó\ ÓÏÈÒÁÎÅÎÉÅÍ<Tab>:wqa
-menutrans E&xit<Tab>:qa			&÷ÙÈÏÄ<Tab>:qa
+menutrans &Print			&ðÅÞÁÔØ\.\.\.
+menutrans Sa&ve-Exit<Tab>:wqa		óÏÈÒÁ&ÎÉÔØ\ É\ ×ÙÊÔÉ<Tab>:wqa
+menutrans E&xit<Tab>:qa			÷&ÙÈÏÄ<Tab>:qa
 "
 "
-" Edit menu
-menutrans &Undo<Tab>u			ï&ÔÍÅÎÉÔØ<Tab>u
-menutrans &Redo<Tab>^R			÷&ÅÒÎÕÔØ<Tab>^R
+" Submenu of Edit menu
+menutrans &Undo<Tab>u			&ïÔÍÅÎÉÔØ<Tab>u
+menutrans &Redo<Tab>^R			÷&ÅÒÎÕÔØ<Tab>Ctrl+R
 menutrans Rep&eat<Tab>\.		ðÏ×ÔÏÒÉÔ&Ø<Tab>\.
 "--------------------
 menutrans Cu&t<Tab>"+x			&÷ÙÒÅÚÁÔØ<Tab>"+x
 menutrans &Copy<Tab>"+y			&ëÏÐÉÒÏ×ÁÔØ<Tab>"+y
-menutrans &Paste<Tab>"+gP		÷Ë&ÌÅÉÔØ<Tab>"+gP
-menutrans Put\ &Before<Tab>[p		÷ËÌÅÉÔØ\ ÐÅÒÅ&Ä<Tab>[p
-menutrans Put\ &After<Tab>]p		÷ËÌÅÉÔØ\ ÐÏ&ÓÌÅ<Tab>]p
+menutrans &Paste<Tab>"+gP		÷ÓÔ&Á×ÉÔØ<Tab>"+g\ Shift+P
+menutrans Put\ &Before<Tab>[p		ðÏÍÅÓÔÉÔØ\ Ð&ÅÒÅÄ<Tab>[p
+menutrans Put\ &After<Tab>]p		ðÏÍÅÓÔÉÔØ\ ÐÏ&ÓÌÅ<Tab>]p
 menutrans &Delete<Tab>x			&õÄÁÌÉÔØ<Tab>x
-menutrans &Select\ All<Tab>ggVG		÷&ÙÄÅÌÉÔØ\ ×Ó£<Tab>ggVG
+menutrans &Select\ All<Tab>ggVG		÷&ÙÄÅÌÉÔØ\ ×Ó£<Tab>gg\ Shift+V\ Shift+G
 "--------------------
-" Athena GUI only
-menutrans &Find<Tab>/			&ðÏÉÓË<Tab>/
-menutrans Find\ and\ Rep&lace<Tab>:%s	ðÏÉÓË\ É\ &ÚÁÍÅÎÁ<Tab>:%s
-" End Athena GUI only
-menutrans &Find\.\.\.<Tab>/		&ðÏÉÓË\.\.\.<Tab>/
-menutrans Find\ and\ Rep&lace\.\.\.	ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.<Tab>:%s	ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\.<Tab>:%s
-menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s	ðÏÉÓË\ É\ &ÚÁÍÅÎÁ\.\.\.<Tab>:s
+" if has("win32") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+menutrans &Find\.\.\.			&îÁÊÔÉ\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.	&úÁÍÅÎÉÔØ\.\.\.
+" else
+menutrans &Find<Tab>/			&îÁÊÔÉ<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s	&úÁÍÅÎÉÔØ<Tab>:%s
+menutrans Find\ and\ Rep&lace<Tab>:s	&úÁÍÅÎÉÔØ<Tab>:s
 "--------------------
-menutrans Settings\ &Window		ïËÎÏ\ ÎÁÓÔÒÏÊËÉ\ &ÏÐÃÉÊ
-menutrans Startup\ &Settings		îÁÓÔÒÏÊËÉ\ ÚÁÐÕÓ&ËÁ
-menutrans &Global\ Settings		&çÌÏÂÁÌØÎÙÅ\ ÎÁÓÔÒÏÊËÉ
-menutrans F&ile\ Settings		îÁÓÔÒÏÊËÉ\ &ÆÁÊÌÏ×
-menutrans C&olor\ Scheme		&ã×ÅÔÏ×ÁÑ\ ÓÈÅÍÁ
-menutrans &Keymap			òÁÓËÌÁÄËÁ\ ËÌ&Á×ÉÁÔÕÒÙ
-menutrans Select\ Fo&nt\.\.\.		÷ÙÂÏÒ\ &ÛÒÉÆÔÁ\.\.\.
+menutrans Settings\ &Window			÷ÓÅ\ &ÐÁÒÁÍÅÔÒÙ\.\.\.
+menutrans Startup\ &Settings			ðÁÒÁÍÅÔÒÙ\ ÚÁÐÕÓ&ËÁ
+menutrans &Global\ Settings			ï&ÂÝÉÅ\ ÐÁÒÁÍÅÔÒÙ
+menutrans F&ile\ Settings			ðÁÒÁ&ÍÅÔÒÙ\ ÔÅËÕÝÅÇÏ\ ÂÕÆÅÒÁ
+menutrans Show\ C&olor\ Schemes\ in\ Menu	ðÏËÁÚÁÔØ\ ÍÅÎÀ\ ×ÙÂÏÒÁ\ Ã×Å&ÔÏ×ÏÊ\ ÓÈÅÍÙ
+menutrans C&olor\ Scheme			ã×ÅÔÏ×ÁÑ\ Ó&ÈÅÍÁ
+menutrans Show\ &Keymaps\ in\ Menu		ðÏËÁÚÁÔØ\ ÍÅÎÀ\ ×ÙÂÏÒÁ\ ÒÁÓËÌÁÄËÉ\ Ë&ÌÁ×ÉÁÔÕÒÙ
+menutrans &Keymap				&òÁÓËÌÁÄËÁ\ ËÌÁ×ÉÁÔÕÒÙ
+menutrans None					îÅ\ ÉÓÐÏÌØÚÏ×ÁÔØ
+menutrans Select\ Fo&nt\.\.\.			&ûÒÉÆÔ\.\.\.
 ">>>----------------- Edit/Global settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	ðÏÄÓ×ÅÔËÁ\ &ÎÁÊÄÅÎÎÙÈ\ ÓÏÏÔ×ÅÔÓÔ×ÉÊ<Tab>:set\ hls!
-menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!		&òÅÇÉÓÔÒÏÎÅÚÁ×ÉÓÉÍÙÊ\ ÐÏÉÓË<Tab>:set\ ic!
-menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	ðÏËÁÚÙ×ÁÔØ\ ÐÁÒÎÙÅ\ &ÜÌÅÍÅÎÔÙ<Tab>:set\ sm!
-menutrans &Context\ Lines				óÔÒ&ÏË\ ×ÏËÒÕÇ\ ËÕÒÓÏÒÁ
-menutrans &Virtual\ Edit				÷ÉÒ&ÔÕÁÌØÎÏÅ\ ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		òÅÖÉÍ\ &÷ÓÔÁ×ËÉ<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!		&óÏ×ÍÅÓÔÉÍÏÓÔØ\ Ó\ Vi<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.				&ðÕÔØ\ ÄÌÑ\ ÐÏÉÓËÁ\ ÆÁÊÌÏ×\.\.\.
-menutrans Ta&g\ Files\.\.\.				æÁÊÌÙ\ &ÍÅÔÏË\.\.\.
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!		ðÏÄÓ×ÅÔËÁ\ ÓÏ×&ÐÁÄÅÎÉÊ<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!			&òÅÇÉÓÔÒÏÎÅÚÁ×ÉÓÉÍÙÊ\ ÐÏÉÓË<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	ðÏÄÓ×ÅÔËÁ\ ÐÁÒÎÙÈ\ &ÜÌÅÍÅÎÔÏ×<Tab>:set\ sm!
+menutrans &Context\ lines					ëÏÎÔÅËÓÔÎÙÈ\ ÓÔÒ&ÏË
+menutrans &Virtual\ Edit					÷ÉÒ&ÔÕÁÌØÎÏÅ\ ÒÅÄÁËÔÉÒÏ×ÁÎÉÅ
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!			òÅÖÉÍ\ &×ÓÔÁ×ËÉ<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!		&óÏ×ÍÅÓÔÉÍÏÓÔØ\ Ó\ ÒÅÄÁËÔÏÒÏÍ\ Vi<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.					&ëÁÔÁÌÏÇÉ\ ÄÌÑ\ ÐÏÉÓËÁ\ ÆÁÊÌÏ×\.\.\.
+menutrans Ta&g\ Files\.\.\.					é&ÎÄÅËÓÎÙÅ\ ÆÁÊÌÙ\.\.\.
 "
-menutrans Toggle\ &Toolbar				&éÎÓÔÒÕÍÅÎÔÁÌØÎÁÑ\ ÐÁÎÅÌØ
-menutrans Toggle\ &Bottom\ Scrollbar			ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ ×ÎÉ&ÚÕ
-menutrans Toggle\ &Left\ Scrollbar			ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ Ó&ÌÅ×Á
-menutrans Toggle\ &Right\ Scrollbar			ðÏÌÏÓÁ\ ÐÒÏËÒÕÔËÉ\ ÓÐÒ&Á×Á
+menutrans Toggle\ &Toolbar		ðÏËÁÚ\ ÐÁÎÅÌÉ\ &ÉÎÓÔÒÕÍÅÎÔÏ×
+menutrans Toggle\ &Bottom\ Scrollbar	ðÏËÁÚ\ ÐÏÌÏÓÙ\ ÐÒÏËÒÕÔËÉ\ ×ÎÉ&ÚÕ
+menutrans Toggle\ &Left\ Scrollbar	ðÏËÁÚ\ ÐÏÌÏÓÙ\ ÐÒÏËÒÕÔËÉ\ Ó&ÌÅ×Á
+menutrans Toggle\ &Right\ Scrollbar	ðÏËÁÚ\ ÐÏÌÏÓÙ\ ÐÒÏËÒÕÔËÉ\ ÓÐÒ&Á×Á
 ">>>->>>------------- Edit/Global settings/Virtual edit
-menutrans Never						÷ÙËÌÀÞÅÎÏ
-menutrans Block\ Selection				ðÒÉ\ ×ÙÄÅÌÅÎÉÉ\ ÂÌÏËÁ
-menutrans Insert\ Mode					÷\ ÒÅÖÉÍÅ\ ÷ÓÔÁ×ËÉ
-menutrans Block\ and\ Insert				ðÒÉ\ ×ÙÄÅÌÅÎÉÉ\ ÂÌÏËÁ\ É\ ×\ ÒÅÖÉÍÅ\ ÷ÓÔÁ×ËÉ
-menutrans Always					÷ËÌÀÞÅÎÏ\ ×ÓÅÇÄÁ
+menutrans Never				÷ÙËÌÀÞÅÎÏ\ ×Ï\ ×ÓÅÈ\ ÒÅÖÉÍÁÈ
+menutrans Block\ Selection		÷ËÌÀÞÅÎÏ\ ×\ ÒÅÖÉÍÅ\ ×ÉÚÕÁÌØÎÏÇÏ\ ÂÌÏËÁ
+menutrans Insert\ mode			÷ËÌÀÞÅÎÏ\ ×\ ÒÅÖÉÍÅ\ ×ÓÔÁ×ËÉ
+menutrans Block\ and\ Insert		÷ËÌÀÞÅÎÏ\ ×\ ÒÅÖÉÍÁÈ\ ×ÉÚÕÁÌØÎÏÇÏ\ ÂÌÏËÁ\ É\ ×ÓÔÁ×ËÉ
+menutrans Always			÷ËÌÀÞÅÎÏ\ ×Ï\ ×ÓÅÈ\ ÒÅÖÉÍÁÈ
 ">>>----------------- Edit/File settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	&îÕÍÅÒÁÃÉÑ\ ÓÔÒÏË<Tab>:set\ nu!
-menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu!	ïÔÎÏÓÉÔÅ&ÌØÎÁÑ\ ÎÕÍÅÒÁÃÉÑ\ ÓÔÒÏË<Tab>:set\ nru!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!		ïÔÏÂÒÁ&ÖÅÎÉÅ\ ÎÅ×ÉÄÉÍÙÈ\ ÓÉÍ×ÏÌÏ×<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!	&ðÅÒÅÎÏÓ\ ÄÌÉÎÎÙÈ\ ÓÔÒÏË<Tab>:set\ wrap!
-menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr!	ðÅÒÅÎÏÓ\ &ÃÅÌÙÈ\ ÓÌÏ×<Tab>:set\ lbr!
-menutrans Toggle\ Tab\ &Expanding-tab<Tab>:set\ et!	ðÒÏ&ÂÅÌÙ\ ×ÍÅÓÔÏ\ ÔÁÂÕÌÑÃÉÉ<Tab>:set\ et!
-menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!	á×ÔÏÍÁÔÉÞÅÓËÏÅ\ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ\ &ÏÔÓÔÕÐÏ×<Tab>:set\ ai!
-menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!	æÏÒÍÁÔÉÒÏ×ÁÎÉÅ\ ÏÔÓÔÕÐÏ×\ ×\ &ÓÔÉÌÅ\ C<Tab>:set\ cin!
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!		ðÏËÁÚ\ &ÎÕÍÅÒÁÃÉÉ\ ÓÔÒÏË<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	ðÏËÁÚ\ ÏÔÎÏÓÉÔÅ&ÌØÎÏÊ\ ÎÕÍÅÒÁÃÉÉ\ ÓÔÒÏË<Tab>:set\ nru!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!			ðÏËÁÚ\ ÎÅ&ÐÅÞÁÔÁÅÍÙÈ\ ÚÎÁËÏ×<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!		&òÁÚÂÉ×ËÁ\ ÓÔÒÏË\ ÐÏ\ ÇÒÁÎÉÃÅ\ ÏËÎÁ<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ word<Tab>:set\ lbr!		òÁÚÂÉ×ËÁ\ ÓÔÒÏË\ ÐÏ\ &ÇÒÁÎÉÃÅ\ ÓÌÏ×<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et!			úÁÍÅÎÁ\ ÓÉÍ×ÏÌÏ×\ &ÔÁÂÕÌÑÃÉÉ\ ÎÁ\ ÐÒÏÂÅÌÙ<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!		õÓÔÁÎÏ×ËÁ\ ÏÔÓÔÕÐÁ\ ËÁË\ Õ\ ÔÅËÕÝÅÊ\ &ÓÔÒÏËÉ<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!		õÓÔÁÎÏ×ËÁ\ ÏÔÓÔÕÐÁ\ ËÁË\ ×\ &ÑÚÙËÅ\ óÉ<Tab>:set\ cin!
 ">>>---
-menutrans &Shiftwidth					÷ÅÌÉ&ÞÉÎÁ\ ÏÔÓÔÕÐÁ
-menutrans Soft\ &Tabstop				ûÉÒÉÎÁ\ &ÔÁÂÕÌÑÃÉÉ
-menutrans Te&xt\ Width\.\.\.				&ûÉÒÉÎÁ\ ÔÅËÓÔÁ\.\.\.
-menutrans &File\ Format\.\.\.				&æÏÒÍÁÔ\ ÆÁÊÌÁ\.\.\.
+menutrans &Shiftwidth				÷ÅÌÉ&ÞÉÎÁ\ ÏÔÓÔÕÐÁ
+menutrans Soft\ &Tabstop			ûÉÒÉÎÁ\ &ÔÁÂÕÌÑÃÉÉ
+menutrans Te&xt\ Width\.\.\.			&ûÉÒÉÎÁ\ ÔÅËÓÔÁ\.\.\.
+menutrans &File\ Format\.\.\.			&æÏÒÍÁÔ\ ÆÁÊÌÁ\.\.\.
 "
 "
 "
-" Tools menu
-menutrans &Jump\ to\ This\ Tag<Tab>g^]			&ðÅÒÅÊÔÉ\ Ë\ ÍÅÔËÅ<Tab>g^]
-menutrans Jump\ &Back<Tab>^T				&÷ÅÒÎÕÔØÓÑ\ ÎÁÚÁÄ<Tab>^T
-menutrans Build\ &Tags\ File				óÏÚÄÁÔØ\ ÆÁÊÌ\ ÍÅ&ÔÏË
+" Submenu of Tools menu
+menutrans &Jump\ to\ this\ tag<Tab>g^]		&ðÅÒÅÊÔÉ\ ÐÏ\ ÕËÁÚÁÔÅÌÀ<Tab>g\ Ctrl+]
+menutrans Jump\ &back<Tab>^T			&÷ÅÒÎÕÔØÓÑ\ ÎÁÚÁÄ<Tab>Ctrl+T
+menutrans Build\ &Tags\ File			óÏÚÄÁÔØ\ ÆÁÊÌ\ Ó\ &ÉÎÄÅËÓÁÍÉ
 "-------------------
-menutrans &Folding					&óËÌÁÄËÉ
-menutrans &Spelling					ðÒ&Á×ÏÐÉÓÁÎÉÅ
-menutrans &Diff						&ïÔÌÉÞÉÑ\ (diff)
+menutrans &Folding				ó&ÔÒÕËÔÕÒÁ\ ÔÅËÓÔÁ
+menutrans &Spelling				ðÒ&Á×ÏÐÉÓÁÎÉÅ
+menutrans &Diff					&óÒÁ×ÎÅÎÉÅ\ ÔÅËÓÔÁ
 "-------------------
-menutrans &Make<Tab>:make				ëÏ&ÍÐÉÌÉÒÏ×ÁÔØ<Tab>:make
-menutrans &List\ Errors<Tab>:cl				óÐÉÓÏË\ Ï&ÛÉÂÏË<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl!			óÐÉÓÏË\ ÓÏÏ&ÂÝÅÎÉÊ<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn				óÌÅÄÕ&ÀÝÁÑ\ ÏÛÉÂËÁ<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp			ð&ÒÅÄÙÄÕÝÁÑ\ ÏÛÉÂËÁ<Tab>:cp
-menutrans &Older\ List<Tab>:cold			âÏÌÅÅ\ ÓÔÁÒ&ÙÊ\ ÓÐÉÓÏË\ ÏÛÉÂÏË<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew			âÏÌÅÅ\ Ó×Å&ÖÉÊ\ ÓÐÉÓÏË\ ÏÛÉÂÏË<Tab>:cnew
-menutrans Error\ &Window				ïË&ÎÏ\ ÏÛÉÂÏË
-menutrans Se&t\ Compiler				÷ÙÂÏÒ\ &ËÏÍÐÉÌÑÔÏÒÁ
-menutrans Show\ Compiler\ Se&ttings\ in\ Menu		ðÏËÁ&ÚÁÔØ\ ÎÁÓÔÒÏÊËÉ\ ËÏÍÐÉ&ÌÑÔÏÒÁ\ ×\ ÍÅÎÀ 
+menutrans &Make<Tab>:make			ëÏ&ÍÐÉÌÑÃÉÑ<Tab>:make
+menutrans &List\ Errors<Tab>:cl			òÁÓÐÏÚÎÁÎÎÙÅ\ Ï&ÛÉÂËÉ<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!		÷ÅÓ&Ø\ ÓÐÉÓÏË\ ÒÅÚÕÌØÔÁÔÏ×<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn			óÌÅÄÕ&ÀÝÁÑ\ ÚÁÐÉÓØ\ ÉÚ\ ÓÐÉÓËÁ<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp		ðÒ&ÅÄÙÄÕÝÁÑ\ ÚÁÐÉÓØ\ ÉÚ\ ÓÐÉÓËÁ<Tab>:cp
+menutrans &Older\ List<Tab>:cold		ðÒÅÄ&ÙÄÕÝÉÊ\ ÓÐÉÓÏË\ ÒÅÚÕÌØÔÁÔÏ×<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew		ó&ÌÅÄÕÀÝÉÊ\ ÓÐÉÓÏË\ ÒÅÚÕÌØÔÁÔÏ×<Tab>:cnew
+menutrans Error\ &Window			ïË&ÎÏ\ ÓÏ\ ÓÐÉÓËÏÍ\ ÒÅÚÕÌØÔÁÔÏ×
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu	ðÏËÁÚÁÔØ\ ÍÅÎÀ\ ×ÙÂÏÒÁ\ &ËÏÍÐÉÌÑÔÏÒÁ
+menutrans Se&T\ Compiler			÷ÙÂÒÁÔØ\ &ËÏÍÐÉÌÑÔÏÒ
 "-------------------
-menutrans &Convert\ to\ HEX<Tab>:%!xxd			ð&ÅÒÅ×ÅÓÔÉ\ ×\ HEX<Tab>:%!xxd
-menutrans Conve&rt\ Back<Tab>:%!xxd\ -r			ðÅÒÅ×ÅÓÔÉ\ É&Ú\ HEX<Tab>:%!xxd\ -r
+menutrans &Convert\ to\ HEX<Tab>:%!xxd		ðÒÅÏ&ÂÒÁÚÏ×ÁÔØ\ ×\ HEX<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r		ðÒÅÏÂÒÁÚÏ×ÁÔØ\ É&Ú\ HEX<Tab>:%!xxd\ -r
 ">>>---------------- Tools/Spelling
-menutrans &Spell\ Check\ On				&÷ËÌ\ ÐÒÏ×ÅÒËÕ\ ÐÒÁ×ÏÐÉÓÁÎÉÑ
-menutrans Spell\ Check\ &Off				÷Ù&ËÌ\ ÐÒÏ×ÅÒËÕ\ ÐÒÁ×ÏÐÉÓÁÎÉÑ
-menutrans To\ &Next\ Error<Tab>]s			&óÌÅÄÕÀÝÁÑ\ ÏÛÉÂËÁ<Tab>]s
-menutrans To\ &Previous\ Error<Tab>[s			&ðÒÅÄÙÄÕÝÁÑ\ ÏÛÉÂËÁ<Tab>[s
-menutrans Suggest\ &Corrections<Tab>z=			ðÒÅÄÌÏÖÉÔØ\ ÉÓÐ&ÒÁ×ÌÅÎÉÑ<Tab>z=
-menutrans &Repeat\ Correction<Tab>:spellrepall		ðÏ×&ÔÏÒÉÔØ\ ÉÓÐÒÁ×ÌÅÎÉÅ\ ÄÌÑ\ ×ÓÅÈ<Tab>spellrepall
+menutrans &Spell\ Check\ On			÷ÙÐÏÌÎÑÔØ\ &ÐÒÏ×ÅÒËÕ
+menutrans Spell\ Check\ &Off			&îÅ\ ×ÙÐÏÌÎÑÔØ\ ÐÒÏ×ÅÒËÕ
+menutrans To\ &Next\ error<Tab>]s		ó&ÌÅÄÕÀÝÁÑ\ ÏÛÉÂËÁ<Tab>]s
+menutrans To\ &Previous\ error<Tab>[s		ðÒ&ÅÄÙÄÕÝÁÑ\ ÏÛÉÂËÁ<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z=		÷ÁÒÉÁÎÔ&Ù\ ÎÁÐÉÓÁÎÉÑ<Tab>z=
+menutrans &Repeat\ correction<Tab>:spellrepall	úÁÍÅÎÉÔØ\ &×ÓÅ<Tab>:spellrepall
 "-------------------
-menutrans Set\ Language\ to\ "en"			õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en"
-menutrans Set\ Language\ to\ "en_au"			õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_au"
-menutrans Set\ Language\ to\ "en_ca"			õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_ca"
-menutrans Set\ Language\ to\ "en_gb"			õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_gb"
-menutrans Set\ Language\ to\ "en_nz"			õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_nz"
-menutrans Set\ Language\ to\ "en_us"			õÓÔÁÎÏ×ÉÔØ\ ÑÚÙË\ "en_us"
-menutrans &Find\ More\ Languages			&îÁÊÔÉ\ ÂÏÌØÛÅ\ ÑÚÙËÏ×
-let g:menutrans_set_lang_to =				'õÓÔÁÎÏ×ÉÔØ ÑÚÙË'
-"
-"
-" The Spelling popup menu
-"
-"
-let g:menutrans_spell_change_ARG_to =			'éÓÐÒÁ×ÉÔØ\ "%s"\ ÎÁ'
-let g:menutrans_spell_add_ARG_to_word_list =		'äÏÂÁ×ÉÔØ\ "%s"\ ×\ ÓÌÏ×ÁÒØ'
-let g:menutrans_spell_ignore_ARG =			'ðÒÏÐÕÓÔÉÔØ\ "%s"'
+menutrans Set\ language\ to\ "en"		ðÒÏ×ÅÒËÁ\ ÄÌÑ\ ÑÚÙËÁ\ "en"
+menutrans Set\ language\ to\ "en_au"		ðÒÏ×ÅÒËÁ\ ÄÌÑ\ ÑÚÙËÁ\ "en_au"
+menutrans Set\ language\ to\ "en_ca"		ðÒÏ×ÅÒËÁ\ ÄÌÑ\ ÑÚÙËÁ\ "en_ca"
+menutrans Set\ language\ to\ "en_gb"		ðÒÏ×ÅÒËÁ\ ÄÌÑ\ ÑÚÙËÁ\ "en_gb"
+menutrans Set\ language\ to\ "en_nz"		ðÒÏ×ÅÒËÁ\ ÄÌÑ\ ÑÚÙËÁ\ "en_nz"
+menutrans Set\ language\ to\ "en_us"		ðÒÏ×ÅÒËÁ\ ÄÌÑ\ ÑÚÙËÁ\ "en_us"
+menutrans &Find\ More\ Languages		îÁÊÔÉ\ ÄÌÑ\ ÄÒÕÇÉÈ\ &ÑÚÙËÏ×
+let g:menutrans_set_lang_to =			'ðÒÏ×ÅÒËÁ ÄÌÑ ÑÚÙËÁ'
 ">>>---------------- Folds
-menutrans &Enable/Disable\ Folds<Tab>zi			÷ËÌ/×ÙËÌ\ &ÓËÌÁÄËÉ<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv			ïÔËÒÙÔØ\ ÓÔÒÏËÕ\ Ó\ &ËÕÒÓÏÒÏÍ<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx		ïÔËÒÙÔØ\ &ÔÏÌØËÏ\ ÓÔÒÏËÕ\ Ó\ ËÕÒÓÏÒÏÍ<Tab>zMzx
-menutrans C&lose\ More\ Folds<Tab>zm			úÁËÒÙÔØ\ &ÂÏÌØÛÅ\ ÓËÌÁÄÏË<Tab>zm
-menutrans &Close\ All\ Folds<Tab>zM			úÁËÒÙÔØ\ &×ÓÅ\ ÓËÌÁÄËÉ<Tab>zM
-menutrans &Open\ All\ Folds<Tab>zR			ïÔËÒ&ÙÔØ\ ×ÓÅ\ ÓËÌÁÄËÉ<Tab>zR
-menutrans O&pen\ More\ Folds<Tab>zr			ïÔË&ÒÙÔØ\ ÂÏÌØÛÅ\ ÓËÌÁÄÏË<Tab>zr
-menutrans Fold\ Met&hod					&íÅÔÏÄ\ ÓËÌÁÄÏË
-menutrans Create\ &Fold<Tab>zf				óÏ&ÚÄÁÔØ\ ÓËÌÁÄËÕ<Tab>zf
-menutrans &Delete\ Fold<Tab>zd				õ&ÄÁÌÉÔØ\ ÓËÌÁÄËÕ<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD			õÄÁÌÉÔØ\ ×Ó&Å\ ÓËÌÁÄËÉ<Tab>zD
-menutrans Fold\ col&umn\ Width				&ûÉÒÉÎÁ\ ËÏÌÏÎËÉ\ ÓËÌÁÄÏË
+menutrans &Enable/Disable\ folds<Tab>zi		&ðÏËÁÚÁÔØ\ ÉÌÉ\ ÕÂÒÁÔØ\ ÓÔÒÕËÔÕÒÕ<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv		ðÒÏÓÍÏÔÒ\ ÓÔÒÏËÉ\ ÐÏÄ\ &ËÕÒÓÏÒÏÍ<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx	ðÒÏÓÍÏÔÒ\ &ÔÏÌØËÏ\ ÓÔÒÏËÉ\ ÐÏÄ\ ËÕÒÓÏÒÏÍ<Tab>z\ Shift+M\ zx
+menutrans C&lose\ more\ folds<Tab>zm		ó×ÅÒÎÕÔØ\ ×ÌÏ&ÖÅÎÎÙÅ\ ÂÌÏËÉ\ ÓÔÒÕËÔÕÒÙ<Tab>zm
+menutrans &Close\ all\ folds<Tab>zM		ó×ÅÒÎÕÔØ\ &×ÓÅ\ ÂÌÏËÉ\ ÓÔÒÕËÔÕÒÙ<Tab>z\ Shift+M
+menutrans &Open\ all\ folds<Tab>zR		òÁÚ×ÅÒÎÕÔØ\ ×&ÓÅ\ ÂÌÏËÉ\ ÓÔÒÕËÔÕÒÙ<Tab>z\ Shift+R
+menutrans O&pen\ more\ folds<Tab>zr		òÁ&Ú×ÅÒÎÕÔØ\ ×ÌÏÖÅÎÎÙÊ\ ÂÌÏË\ ÓÔÒÕËÔÕÒÙ<Tab>zr
+menutrans Fold\ Met&hod				&íÅÔÏÄ\ ÒÁÚÍÅÔËÉ\ ÓÔÒÕËÔÕÒÙ
+menutrans Create\ &Fold<Tab>zf			óÏ&ÚÄÁÔØ\ ÂÌÏË\ ÓÔÒÕËÔÕÒÙ<Tab>zf
+menutrans &Delete\ Fold<Tab>zd			&õÂÒÁÔØ\ ÂÌÏË\ ÓÔÒÕËÔÕÒÙ<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD		õÂÒÁÔØ\ ×Ó&Å\ ÂÌÏËÉ\ ÓÔÒÕËÔÕÒÙ<Tab>z\ Shift+D
+menutrans Fold\ col&umn\ width			&ûÉÒÉÎÁ\ ÓÔÏÌÂÃÁ\ ÓÏ\ ÚÎÁÞËÁÍÉ\ ÓÔÒÕËÔÕÒÙ
 ">>>->>>----------- Tools/Folds/Fold Method
-menutrans M&anual					÷ÒÕ&ÞÎÕÀ
-menutrans I&ndent					ï&ÔÓÔÕÐ
-menutrans E&xpression					&÷ÙÒÁÖÅÎÉÅ
-menutrans S&yntax					&óÉÎÔÁËÓÉÓ
-menutrans Ma&rker					&íÁÒËÅÒÙ
-">>>--------------- Tools/Diff
-menutrans &Update					ï&ÂÎÏ×ÉÔØ
-menutrans &Get\ Block					éÚÍÅÎÉÔØ\ &ÜÔÏÔ\ ÂÕÆÅÒ
-menutrans &Put\ Block					éÚÍÅÎÉÔØ\ &ÄÒÕÇÏÊ\ ÂÕÆÅÒ
-">>>--------------- Tools/Diff/Error window
-menutrans &Update<Tab>:cwin				ï&ÂÎÏ×ÉÔØ<Tab>:cwin
-menutrans &Close<Tab>:cclose				&úÁËÒÙÔØ<Tab>:cclose
-menutrans &Open<Tab>:copen				&ïÔËÒÙÔØ<Tab>:copen
+menutrans M&anual				òÁÚÍÅÔËÁ\ ×ÒÕ&ÞÎÕÀ
+menutrans I&ndent				îÁ\ ÏÓÎÏ×Å\ Ï&ÔÓÔÕÐÏ×
+menutrans E&xpression				îÁ\ ÏÓÎÏ×Å\ Ò&ÁÓÞ£ÔÏ×
+menutrans S&yntax				îÁ\ ÏÓÎÏ×Å\ &ÓÉÎÔÁËÓÉÓÁ
+menutrans &Diff					îÁ\ ÏÓÎÏ×Å\ ÒÁÚÌÉÞÉÊ\ ×\ ÔÅËÓÔÁÈ
+menutrans Ma&rker				îÁ\ ÏÓÎÏ×Å\ &ÍÁÒËÅÒÏ×
+">>>--------------- Sub of Tools/Diff
+menutrans &Update				ï&ÂÎÏ×ÉÔØ\ ÓÏÄÅÒÖÉÍÏÅ\ ÏËÏÎ
+menutrans &Get\ Block				ðÅÒÅÎÅÓÔÉ\ &×\ ÔÅËÕÝÉÊ\ ÂÕÆÅÒ
+menutrans &Put\ Block				ðÅÒÅÎÅÓÔÉ\ &ÉÚ\ ÔÅËÕÝÅÇÏ\ ÂÕÆÅÒÁ
+">>>--------------- Tools/Error window
+menutrans &Update<Tab>:cwin			ï&ÂÎÏ×ÉÔØ<Tab>:cwin
+menutrans &Close<Tab>:cclose			&úÁËÒÙÔØ<Tab>:cclose
+menutrans &Open<Tab>:copen			&ïÔËÒÙÔØ<Tab>:copen
 "
 "
 " Syntax menu
 "
-menutrans &Show\ File\ Types\ in\ Menu			ðÏËÁÚÁÔØ\ ÍÅÎÀ\ ×ÙÂÏÒÁ\ ÔÉÐÁ\ &ÆÁÊÌÁ
-menutrans Set\ '&syntax'\ only				&éÚÍÅÎÑÔØ\ ÔÏÌØËÏ\ ÚÎÁÞÅÎÉÅ\ 'syntax'
-menutrans Set\ '&filetype'\ too				éÚÍÅÎÑÔØ\ &ÔÁËÖÅ\ ÚÎÁÞÅÎÉÅ\ 'filetype'
-menutrans &Off						&ïÔËÌÀÞÉÔØ
-menutrans &Manual					÷ÒÕ&ÞÎÕÀ
-menutrans A&utomatic					&á×ÔÏÍÁÔÉÞÅÓËÉ
-menutrans On/Off\ for\ &This\ File			÷ËÌ/×ÙËÌ\ ÄÌÑ\ &ÜÔÏÇÏ\ ÆÁÊÌÁ
-menutrans Co&lor\ Test					ðÒÏ×ÅÒËÁ\ &Ã×ÅÔÏ×
-menutrans &Highlight\ Test				ðÒÏ×ÅÒËÁ\ ÐÏÄ&Ó×ÅÔËÉ
-menutrans &Convert\ to\ HTML				ó&ÄÅÌÁÔØ\ HTML\ Ó\ ÐÏÄÓ×ÅÔËÏÊ
+menutrans &Show\ File\ Types\ in\ menu		&ðÏËÁÚÁÔØ\ ÍÅÎÀ\ ×ÙÂÏÒÁ\ ÔÉÐÁ\ ÆÁÊÌÁ
+menutrans Set\ '&syntax'\ only			á&ËÔÉ×ÉÒÏ×ÁÔØ\ ÐÁÒÁÍÅÔÒ\ 'syntax'
+menutrans Set\ '&filetype'\ too			áËÔÉ×ÉÒÏ×ÁÔØ\ ÐÁÒÁ&ÍÅÔÒ\ 'filetype'
+menutrans &Off					&ïÔËÌÀÞÉÔØ\ ÐÏÄÓ×ÅÔËÕ
+menutrans &Manual				÷ËÌÀÞÅÎÉÅ\ ÐÏÄÓ×ÅÔËÉ\ ×ÒÕ&ÞÎÕÀ
+menutrans A&utomatic				÷ËÌÀÞÅÎÉÅ\ ÐÏÄÓ×ÅÔËÉ\ &Á×ÔÏÍÁÔÉÞÅÓËÉ
+menutrans on/off\ for\ &This\ file		éÚÍÅÎÉÔØ\ ÒÅÖÉÍ\ ÄÌÑ\ &ÔÅËÕÝÅÇÏ\ ÆÁÊÌÁ
+menutrans Co&lor\ test				ðÒÏ×ÅÒÉÔØ\ ÐÏÄÄÅÒ&ÖÉ×ÁÅÍÙÅ\ Ã×ÅÔÁ
+menutrans &Highlight\ test			ðÏËÁÚÁÔØ\ ÇÒÕÐÐÙ\ ÐÏÄ&Ó×ÅÔËÉ
+menutrans &Convert\ to\ HTML			ðÒÅÏ&ÂÒÁÚÏ×ÁÔØ\ ÔÅËÕÝÉÊ\ ÆÁÊÌ\ ×\ HTML
 "
 "
 " Buffers menu
 "
-menutrans &Refresh\ menu				ï&ÂÎÏ×ÉÔØ\ ÍÅÎÀ
-menutrans Delete					õ&ÄÁÌÉÔØ
-menutrans &Alternate					&óÏÓÅÄÎÉÊ
-menutrans &Next						ó&ÌÅÄÕÀÝÉÊ
-menutrans &Previous					&ðÒÅÄÙÄÕÝÉÊ
-menutrans [No\ File]					[îÅÔ\ ÆÁÊÌÁ]
+menutrans &Refresh\ menu			&ïÂÎÏ×ÉÔØ\ ÓÐÉÓÏË\ ÂÕÆÅÒÏ×
+menutrans &Delete				&úÁËÒÙÔØ\ ÂÕÆÅÒ
+menutrans &Alternate				&óÏÓÅÄÎÉÊ\ ÂÕÆÅÒ
+menutrans &Next					ó&ÌÅÄÕÀÝÉÊ\ ÂÕÆÅÒ
+menutrans &Previous				&ðÒÅÄÙÄÕÝÉÊ\ ÂÕÆÅÒ
 "
 "
-" Window menu
+" Submenu of Window menu
 "
-menutrans &New<Tab>^Wn					&îÏ×ÏÅ\ ÏËÎÏ<Tab>^Wn
-menutrans S&plit<Tab>^Ws				&òÁÚÄÅÌÉÔØ\ ÏËÎÏ<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^			ïÔËÒÙÔØ\ &ÓÏÓÅÄÎÉÊ\ ÆÁÊÌ\ ×\ ÎÏ×ÏÍ\ ÏËÎÅ<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv			òÁÚÄÅÌÉÔØ\ ÐÏ\ &×ÅÒÔÉËÁÌÉ<Tab>^Wv
-menutrans Split\ File\ E&xplorer			ïÔËÒÙÔØ\ ÐÒÏ×ÏÄÎÉË\ ÐÏ\ &ÆÁÊÌÏ×ÏÊ\ ÓÉÓÔÅÍÅ
+menutrans &New<Tab>^Wn				&óÏÚÄÁÔØ<Tab>Ctrl+W\ n
+menutrans S&plit<Tab>^Ws			òÁÚÄÅÌÉÔØ\ ÐÏ\ &ÇÏÒÉÚÏÎÔÁÌÉ<Tab>Ctrl+W\ s
+menutrans Split\ &Vertically<Tab>^Wv		òÁÚÄÅÌÉÔØ\ ÐÏ\ &×ÅÒÔÉËÁÌÉ<Tab>Ctrl+W\ v
+menutrans Sp&lit\ To\ #<Tab>^W^^		ó&ÏÓÅÄÎÉÊ\ ÆÁÊÌ\ ×\ ÎÏ×ÏÍ\ ÏËÎÅ<Tab>Ctrl+W\ Ctrl+^
+menutrans Split\ File\ E&xplorer		äÉÓÐÅÔÞÅÒ\ ÆÁÊÌÏ×
 "
-menutrans &Close<Tab>^Wc				&úÁËÒÙÔØ\ ÜÔÏ\ ÏËÎÏ<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo			úÁËÒÙÔØ\ &ÏÓÔÁÌØÎÙÅ\ ÏËÎÁ<Tab>^Wo
+menutrans &Close<Tab>^Wc			&úÁËÒÙÔØ\ ÔÅËÕÝÅÅ\ ÏËÎÏ<Tab>Ctrl+W\ c
+menutrans Close\ &Other(s)<Tab>^Wo		ú&ÁËÒÙÔØ\ ÄÒÕÇÉÅ\ ÏËÎÁ<Tab>Ctrl+W\ o
 "
-menutrans Move\ &To					&ðÅÒÅÍÅÓÔÉÔØ
-menutrans Rotate\ &Up<Tab>^WR				óÄ×ÉÎÕÔØ\ ××ÅÒ&È<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr				óÄ×ÉÎÕÔØ\ ×&ÎÉÚ<Tab>^Wr
+menutrans Move\ &To				&ðÅÒÅÍÅÓÔÉÔØ
+menutrans Rotate\ &Up<Tab>^WR			óÄ×ÉÎÕÔØ\ ××ÅÒ&È<Tab>Ctrl+W\ Shift+R
+menutrans Rotate\ &Down<Tab>^Wr			óÄ×ÉÎÕÔØ\ ×&ÎÉÚ<Tab>Ctrl+W\ r
 "
-menutrans &Equal\ Size<Tab>^W=				ï&ÄÉÎÁËÏ×ÙÊ\ ÒÁÚÍÅÒ<Tab>^W=
-menutrans &Max\ Height<Tab>^W_				íÁËÓÉÍÁÌØÎÁÑ\ ×&ÙÓÏÔÁ<Tab>^W_
-menutrans M&in\ Height<Tab>^W1_				íÉÎÉÍÁÌØÎÁÑ\ ×ÙÓÏ&ÔÁ<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\|				íÁËÓÉÍÁÌØÎÁÑ\ &ÛÉÒÉÎÁ<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\|				íÉÎÉÍÁÌ&ØÎÁÑ\ ÛÉÒÉÎÁ<Tab>^W1\|
-">>>----------------- Window/Move To
-menutrans &Top<Tab>^WK					÷&×ÅÒÈ<Tab>^WK
-menutrans &Bottom<Tab>^WJ				÷&ÎÉÚ<Tab>^WJ
-menutrans &Left\ Side<Tab>^WH				÷&ÌÅ×Ï<Tab>^WH
-menutrans &Right\ Side<Tab>^WL				÷&ÐÒÁ×Ï<Tab>^WL
+menutrans &Equal\ Size<Tab>^W=			÷ÙÒÁ×ÎÉ×ÁÎÉÅ\ ÒÁÚ&ÍÅÒÁ<Tab>Ctrl+W\ =
+menutrans &Max\ Height<Tab>^W_			íÁËÓÉÍÁÌØÎÁÑ\ ×&ÙÓÏÔÁ<Tab>Ctrl+W\ _
+menutrans M&in\ Height<Tab>^W1_			íÉÎÉÍÁÌØÎÁÑ\ ×ÙÓÏ&ÔÁ<Tab>Ctrl+W\ 1_
+menutrans Max\ &Width<Tab>^W\|			íÁËÓÉÍÁÌØÎÁÑ\ &ÛÉÒÉÎÁ<Tab>Ctrl+W\ \|
+menutrans Min\ Widt&h<Tab>^W1\|			íÉÎÉÍÁÌØÎÁÑ\ Û&ÉÒÉÎÁ<Tab>Ctrl+W\ 1\|
+">>>----------------- Submenu of Window/Move To
+menutrans &Top<Tab>^WK				÷&×ÅÒÈ<Tab>Ctrl+W\ Shift+K
+menutrans &Bottom<Tab>^WJ			÷&ÎÉÚ<Tab>Ctrl+W\ Shift+J
+menutrans &Left\ side<Tab>^WH			÷&ÌÅ×Ï<Tab>Ctrl+W\ Shift+H
+menutrans &Right\ side<Tab>^WL			÷&ÐÒÁ×Ï<Tab>Ctrl+W\ Shift+L
 "
 "
 " The popup menu
 "
 "
-menutrans &Undo						ï&ÔÍÅÎÉÔØ
-menutrans Cu&t						&÷ÙÒÅÚÁÔØ
-menutrans &Copy						&ëÏÐÉÒÏ×ÁÔØ
-menutrans &Paste					÷Ë&ÌÅÉÔØ
-menutrans &Delete					&õÄÁÌÉÔØ
-menutrans Select\ Blockwise				âÌÏËÏ×ÏÅ\ ×ÙÄÅÌÅÎÉÅ
-menutrans Select\ &Word					÷ÙÄÅÌÉÔØ\ &ÓÌÏ×Ï
-menutrans Select\ &Sentence				÷ÙÄÅÌÉÔØ\ &ÐÒÅÄÌÏÖÅÎÉÅ
-menutrans Select\ Pa&ragraph				÷ÙÄÅÌÉÔØ\ ÐÁÒÁ&ÇÒÁÆ
-menutrans Select\ &Line					÷ÙÄÅÌÉÔØ\ ÓÔ&ÒÏËÕ
-menutrans Select\ &Block				÷ÙÄÅÌÉÔØ\ &ÂÌÏË
-menutrans Select\ &All					÷ÙÄÅÌÉÔØ\ &×Ó£
+menutrans &Undo					&ïÔÍÅÎÉÔØ
+menutrans Cu&t					&÷ÙÒÅÚÁÔØ
+menutrans &Copy					&ëÏÐÉÒÏ×ÁÔØ
+menutrans &Paste				÷ÓÔ&Á×ÉÔØ
+menutrans &Delete				&õÄÁÌÉÔØ
+menutrans Select\ Blockwise			âÌÏËÏ×ÏÅ\ ×ÙÄÅÌÅÎÉÅ
+menutrans Select\ &Word				÷ÙÄÅÌÉÔØ\ Ó&ÌÏ×Ï
+menutrans Select\ &Line				÷ÙÄÅÌÉÔØ\ Ó&ÔÒÏËÕ
+menutrans Select\ &Block			÷ÙÄÅÌÉÔØ\ &ÂÌÏË
+menutrans Select\ &All				÷&ÙÄÅÌÉÔØ\ ×Ó£
+menutrans Select\ &Sentence			÷ÙÄÅÌÉÔØ\ ÐÒÅÄÌÏ&ÖÅÎÉÅ
+menutrans Select\ Pa&ragraph			÷ÙÄÅÌÉÔØ\ ÁÂ&ÚÁÃ
+"
+" The Spelling popup menu
+"
+let g:menutrans_spell_change_ARG_to =		'éÓÐÒÁ×ÉÔØ\ "%s"'
+let g:menutrans_spell_add_ARG_to_word_list =	'äÏÂÁ×ÉÔØ\ "%s"\ ×\ ÓÌÏ×ÁÒØ'
+let g:menutrans_spell_ignore_ARG =		'ðÒÏÐÕÓÔÉÔØ\ "%s"'
 "
 " The GUI toolbar
 "
@@ -282,29 +284,39 @@ if has("toolbar")
   if exists("*Do_toolbar_tmenu")
     delfun Do_toolbar_tmenu
   endif
-  fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open					ïÔËÒÙÔØ ÆÁÊÌ
-    tmenu ToolBar.Save					óÏÈÒÁÎÉÔØ ÆÁÊÌ
-    tmenu ToolBar.SaveAll				óÏÈÒÁÎÉÔØ ×ÓÅ ÆÁÊÌÙ
-    tmenu ToolBar.Print					îÁÐÅÞÁÔÁÔØ
-    tmenu ToolBar.Undo					ïÔÍÅÎÉÔØ
-    tmenu ToolBar.Redo					÷ÅÒÎÕÔØ
-    tmenu ToolBar.Cut					÷ÙÒÅÚÁÔØ
-    tmenu ToolBar.Copy					ëÏÐÉÒÏ×ÁÔØ
-    tmenu ToolBar.Paste					÷ËÌÅÉÔØ
-    tmenu ToolBar.FindNext				îÁÊÔÉ ÓÌÅÄÕÀÝÅÅ
-    tmenu ToolBar.FindPrev				îÁÊÔÉ ÐÒÅÄÙÄÕÝÅÅ
-    tmenu ToolBar.Replace				îÁÊÔÉ ÉÌÉ ÚÁÍÅÎÉÔØ...
-    tmenu ToolBar.LoadSesn				úÁÇÒÕÚÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ
-    tmenu ToolBar.SaveSesn				óÏÈÒÁÎÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ
-    tmenu ToolBar.RunScript				÷ÙÐÏÌÎÉÔØ ÓÃÅÎÁÒÉÊ Vim
-    tmenu ToolBar.Make					ëÏÍÐÉÌÑÃÉÑ
-    tmenu ToolBar.Shell					ïÂÏÌÏÞËÁ
-    tmenu ToolBar.RunCtags				óÏÚÄÁÔØ ÆÁÊÌ ÍÅÔÏË
-    tmenu ToolBar.TagJump				ðÅÒÅÊÔÉ Ë ÍÅÔËÅ
-    tmenu ToolBar.Help					óÐÒÁ×ËÁ
-    tmenu ToolBar.FindHelp				îÁÊÔÉ ÓÐÒÁ×ËÕ
-  endfun
+  def g:Do_toolbar_tmenu()
+    tmenu ToolBar.New				óÏÚÄÁÔØ ÄÏËÕÍÅÎÔ
+    tmenu ToolBar.Open				ïÔËÒÙÔØ ÆÁÊÌ
+    tmenu ToolBar.Save				óÏÈÒÁÎÉÔØ ÆÁÊÌ
+    tmenu ToolBar.SaveAll			óÏÈÒÁÎÉÔØ ×ÓÅ ÆÁÊÌÙ
+    tmenu ToolBar.Print				ðÅÞÁÔØ
+    tmenu ToolBar.Undo				ïÔÍÅÎÉÔØ
+    tmenu ToolBar.Redo				÷ÅÒÎÕÔØ
+    tmenu ToolBar.Cut				÷ÙÒÅÚÁÔØ
+    tmenu ToolBar.Copy				ëÏÐÉÒÏ×ÁÔØ
+    tmenu ToolBar.Paste				÷ÓÔÁ×ÉÔØ
+    tmenu ToolBar.Find				îÁÊÔÉ...
+    tmenu ToolBar.FindNext			îÁÊÔÉ ÓÌÅÄÕÀÝÅÅ
+    tmenu ToolBar.FindPrev			îÁÊÔÉ ÐÒÅÄÙÄÕÝÅÅ
+    tmenu ToolBar.Replace			úÁÍÅÎÉÔØ...
+    tmenu ToolBar.NewSesn			óÏÚÄÁÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ
+    tmenu ToolBar.LoadSesn			úÁÇÒÕÚÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ
+    tmenu ToolBar.SaveSesn			óÏÈÒÁÎÉÔØ ÓÅÁÎÓ ÒÅÄÁËÔÉÒÏ×ÁÎÉÑ
+    tmenu ToolBar.RunScript			÷ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÎÙÊ ÆÁÊÌ ÐÒÏÇÒÁÍÍÙ Vim
+    tmenu ToolBar.Shell				ëÏÍÁÎÄÎÁÑ ÏÂÏÌÏÞËÁ
+    tmenu ToolBar.Make				ëÏÍÐÉÌÑÃÉÑ
+    tmenu ToolBar.RunCtags			óÏÚÄÁÔØ ÆÁÊÌ Ó ÉÎÄÅËÓÁÍÉ
+    tmenu ToolBar.TagJump			ðÅÒÅÊÔÉ ÐÏ ÕËÁÚÁÔÅÌÀ
+    tmenu ToolBar.Help				óÐÒÁ×ËÁ
+    tmenu ToolBar.FindHelp			ðÏÉÓË × ÄÏËÕÍÅÎÔÁÃÉÉ
+    tmenu ToolBar.WinClose			úÁËÒÙÔØ ÔÅËÕÝÅÅ ÏËÎÏ
+    tmenu ToolBar.WinMax			íÁËÓÉÍÁÌØÎÁÑ ×ÙÓÏÔÁ ÔÅËÕÝÅÇÏ ÏËÎÁ
+    tmenu ToolBar.WinMin			íÉÎÉÍÁÌØÎÁÑ ×ÙÓÏÔÁ ÔÅËÕÝÅÇÏ ÏËÎÁ
+    tmenu ToolBar.WinSplit			òÁÚÄÅÌÉÔØ ÏËÎÏ ÐÏ ÇÏÒÉÚÏÎÔÁÌÉ
+    tmenu ToolBar.WinVSplit			òÁÚÄÅÌÉÔØ ÏËÎÏ ÐÏ ×ÅÒÔÉËÁÌÉ
+    tmenu ToolBar.WinMaxWidth			íÁËÓÉÍÁÌØÎÁÑ ÛÉÒÉÎÁ ÔÅËÕÝÅÇÏ ÏËÎÁ
+    tmenu ToolBar.WinMinWidth			íÉÎÉÍÁÌØÎÁÑ ÛÉÒÉÎÁ ÔÅËÕÝÅÇÏ ÏËÎÁ
+  enddef
 endif
 "
 "
@@ -312,26 +324,41 @@ endif
 "
 " Find in help dialog
 "
-let g:menutrans_help_dialog = "÷×ÅÄÉÔÅ ËÏÍÁÎÄÕ ÉÌÉ ÓÌÏ×Ï ÄÌÑ ÐÏÉÓËÁ:\n\näÏÂÁ×ØÔÅ i_ ÄÌÑ ÐÏÉÓËÁ ËÏÍÁÎÄ ÒÅÖÉÍÁ ÷ÓÔÁ×ËÉ (ÎÁÐÒÉÍÅÒ, i_CTRL-X)\näÏÂÁ×ØÔÅ c_ ÄÌÑ ÐÏÉÓËÁ ËÏÍÁÎÄ ïÂÙÞÎÏÇÏ ÒÅÖÉÍÁ (ÎÁÐÒÉÍÅÒ, Ó_<Del>)\näÏÂÁ×ØÔÅ ' ÄÌÑ ÐÏÉÓËÁ ÓÐÒÁ×ËÉ ÐÏ ÏÐÃÉÉ (ÎÁÐÒÉÍÅÒ, 'shiftwidth')"
+let g:menutrans_help_dialog = "îÁÂÅÒÉÔÅ ËÏÍÁÎÄÕ ÉÌÉ ÓÌÏ×Ï, ËÏÔÏÒÙÅ ÔÒÅÂÕÅÔÓÑ ÎÁÊÔÉ × ÄÏËÕÍÅÎÔÁÃÉÉ.\n\nþÔÏÂÙ ÎÁÊÔÉ ËÏÍÁÎÄÙ ÒÅÖÉÍÁ ×ÓÔÁ×ËÉ, ÉÓÐÏÌØÚÕÊÔÅ ÐÒÉÓÔÁ×ËÕ i_ (ÎÁÐÒÉÍÅÒ, i_CTRL-X)\nþÔÏÂÙ ÎÁÊÔÉ ËÏÍÁÎÄÙ ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ, ÉÓÐÏÌØÚÕÊÔÅ ÐÒÉÓÔÁ×ËÕ c_ (ÎÁÐÒÉÍÅÒ, c_<Del>)\nþÔÏÂÙ ÎÁÊÔÉ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÁÒÁÍÅÔÒÁÈ, ÉÓÐÏÌØÚÕÊÔÅ ÓÉÍ×ÏÌ ' (ÎÁÐÒÉÍÅÒ, 'shftwidth')"
 "
-" Searh path dialog
+" Search path dialog
 "
-let g:menutrans_path_dialog = "õËÁÖÉÔÅ ÐÕÔØ ÄÌÑ ÐÏÉÓËÁ ÆÁÊÌÏ×.\néÍÅÎÁ ËÁÔÁÌÏÇÏ× ÒÁÚÄÅÌÑÀÔÓÑ ÚÁÐÑÔÙÍÉ."
+let g:menutrans_path_dialog = "õËÁÖÉÔÅ ÞÅÒÅÚ ÚÁÐÑÔÕÀ ÎÁÉÍÅÎÏ×ÁÎÉÑ ËÁÔÁÌÏÇÏ×, ÇÄÅ ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ ÐÏÉÓË ÆÁÊÌÏ×"
 "
 " Tag files dialog
 "
-let g:menutrans_tags_dialog = "÷×ÅÄÉÔÅ ÉÍÅÎÁ ÆÁÊÌÏ× ÍÅÔÏË (ÞÅÒÅÚ ÚÁÐÑÔÕÀ).\n"
+let g:menutrans_tags_dialog = "õËÁÖÉÔÅ ÞÅÒÅÚ ÚÁÐÑÔÕÀ ÎÁÉÍÅÎÏ×ÁÎÉÑ ÆÁÊÌÏ× ÉÎÄÅËÓÏ×"
 "
 " Text width dialog
 "
-let g:menutrans_textwidth_dialog = "÷×ÅÄÉÔÅ ÛÉÒÉÎÕ ÔÅËÓÔÁ ÄÌÑ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ.\näÌÑ ÏÔÍÅÎÙ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ××ÅÄÉÔÅ 0."
+let g:menutrans_textwidth_dialog = "õËÁÖÉÔÅ ËÏÌÉÞÅÓÔ×Ï ÓÉÍ×ÏÌÏ× ÄÌÑ ÕÓÔÁÎÏ×ËÉ ÛÉÒÉÎÙ ÔÅËÓÔÁ\nþÔÏÂÙ ÏÔÍÅÎÉÔØ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÅ, ÕËÁÖÉÔÅ 0"
 "
 " File format dialog
 "
-let g:menutrans_fileformat_dialog = "÷ÙÂÅÒÉÔÅ ÆÏÒÍÁÔ ÆÁÊÌÁ."
-let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nï&ÔÍÅÎÁ"
+let g:menutrans_fileformat_dialog = "÷ÙÂÅÒÉÔÅ ÆÏÒÍÁÔ ÆÁÊÌÁ"
+let g:menutrans_fileformat_choices = "&1. Unix\n&2. Dos\n&3. Mac\nïÔÍÅÎÁ (&C)"
+"
+let menutrans_no_file = "[âÅÚÙÍÑÎÎÙÊ]"
+
+" Menus to handle Russian encodings
+" Thanks to Pavlo Bohmat for the idea
+" vassily ragosin <vrr[at]users.sourceforge.net>
 "
-let menutrans_no_file = "[îÅÔ ÆÁÊÌÁ]"
+an 10.355 &File.-SEP-					<Nop>
+an 10.360.20 &File.ïÔËÒÙÔØ\ ×\ ËÏÄÉÒÏ×ËÅ\.\.\..CP1251	:browse e ++enc=cp1251<CR>
+an 10.360.30 &File.ïÔËÒÙÔØ\ ×\ ËÏÄÉÒÏ×ËÅ\.\.\..CP866	:browse e ++enc=cp866<CR>
+an 10.360.30 &File.ïÔËÒÙÔØ\ ×\ ËÏÄÉÒÏ×ËÅ\.\.\..KOI8-R	:browse e ++enc=koi8-r<CR>
+an 10.360.40 &File.ïÔËÒÙÔØ\ ×\ ËÏÄÉÒÏ×ËÅ\.\.\..UTF-8	:browse e ++enc=utf-8<CR>
+an 10.365.20 &File.óÏÈÒÁÎÉÔØ\ Ó\ ËÏÄÉÒÏ×ËÏÊ\.\.\..CP1251 :browse w ++enc=cp1251<CR>
+an 10.365.30 &File.óÏÈÒÁÎÉÔØ\ Ó\ ËÏÄÉÒÏ×ËÏÊ\.\.\..CP866	:browse w ++enc=cp866<CR>
+an 10.365.30 &File.óÏÈÒÁÎÉÔØ\ Ó\ ËÏÄÉÒÏ×ËÏÊ\.\.\..KOI8-R :browse w ++enc=koi8-r<CR>
+an 10.365.40 &File.óÏÈÒÁÎÉÔØ\ Ó\ ËÏÄÉÒÏ×ËÏÊ\.\.\..UTF-8	:browse w ++enc=utf-8<CR>
+"
 
 let &cpo = s:keepcpo
 unlet s:keepcpo
--- a/runtime/lang/menu_ru_ru.utf-8.vim
+++ b/runtime/lang/menu_ru_ru.utf-8.vim
@@ -1,23 +1,25 @@
 " Menu Translations:	Russian
-" Maintainer:		Sergey Alyoshin <alyoshin.s@gmail.com>
-" Previous Maintainer:	Vassily Ragosin <vrr[at]users.sourceforge.net>
-" Last Change:		16 May 2018
+" Maintainer:		Restorer, <restorer@mail2k.ru>
+" Previous Maintainer:	Sergey Alyoshin, <alyoshin.s@gmail.com>
+"			vassily ragosin, <vrr[at]users.sourceforge.net>
+" Last Change:		23 Aug 2023
 " Original translations
-" URL:			cvs://cvs.sf.net:/cvsroot/ruvim/extras/menu/menu_ru_ru.vim
+" URL:			https://github.com/RestorerZ/RuVim
 "
-" $Id: menu_ru_ru.vim,v 1.1 2004/06/13 16:09:10 vimboss Exp $
 "
 " Adopted for RuVim project by Vassily Ragosin.
-" First translation: Tim Alexeevsky <realtim [at] mail.ru>,
-" based on ukrainian translation by Bohdan Vlasyuk <bohdan@vstu.edu.ua>
+" First translation: Tim Alexeevsky, <realtim [at] mail.ru>,
+" based on ukrainian translation by Bohdan Vlasyuk, <bohdan@vstu.edu.ua>
 "
 "
 " Quit when menu translations have already been done.
 "
+" Check is
+"
 if exists("did_menu_trans")
    finish
 endif
-let did_menu_trans = 1
+let g:did_menu_trans = 1
 let s:keepcpo= &cpo
 set cpo&vim
 
@@ -25,256 +27,256 @@ scriptencoding utf-8
 
 " Top
 menutrans &File				&Файл
-menutrans &Edit				П&равка
-menutrans &Tools			&ИнÑтрументы
-menutrans &Syntax			&СинтакÑиÑ
+menutrans &Edit				&Правка
+menutrans &Tools			С&ервиÑ
+menutrans &Syntax			Син&такÑиÑ
 menutrans &Buffers			&Буферы
 menutrans &Window			&Окно
-menutrans &Help				С&правка
+menutrans &Help				&Справка
 "
 "
 "
-" Help menu
-menutrans &Overview<Tab><F1>		&Обзор<Tab><F1>
-menutrans &User\ Manual			Руково&дÑтво\ пользователÑ
-menutrans &How-To\ Links		&Как\ Ñто\ Ñделать\.\.\.
-menutrans &Find\.\.\.			&ПоиÑк
+" Submenu of menu Help
+menutrans &Overview<Tab><F1>		О&бщий\ обзор<Tab>F1
+menutrans &User\ Manual			&РуководÑтво\ пользователÑ
+menutrans &How-to\ links		&ИнÑтрукции
+menutrans &Find\.\.\.			&Ðайти\.\.\.
 "--------------------
-menutrans &Credits			&БлагодарноÑти
-menutrans Co&pying			&РаÑпроÑтранение
-menutrans &Sponsor/Register		Помо&щь/РегиÑтрациÑ
-menutrans O&rphans			&Сироты
+menutrans &Credits			Со&авторы
+menutrans Co&pying			&ЛицензиÑ
+menutrans &Sponsor/Register		Сод&ейÑтвие\ и\ региÑтрациÑ
+menutrans O&rphans			&БлаготворительноÑÑ‚ÑŒ
 "--------------------
-menutrans &Version			&ИнформациÑ\ о\ программе
-menutrans &About			&ЗаÑтавка
+menutrans &Version			&ТекущаÑ\ верÑиÑ
+menutrans &About			&О\ программе
 "
 "
-" File menu
+" Submenu of File menu
 menutrans &Open\.\.\.<Tab>:e		&Открыть\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp	По&делить\ окно\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Открыть\ в&кладку\.\.\.<Tab>:tabnew
-menutrans &New<Tab>:enew		&Ðовый<Tab>:enew
+menutrans Sp&lit-Open\.\.\.<Tab>:sp	От&крыть\ в\ новом\ окне\.\.\.<Tab>:sp
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Откры&ть\ в\ новой\ вкладке\.\.\.<Tab>:tabnew
+menutrans &New<Tab>:enew		Созд&ать<Tab>:enew
 menutrans &Close<Tab>:close		&Закрыть<Tab>:close
 "--------------------
 menutrans &Save<Tab>:w			&Сохранить<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav	Сохранить\ &как\.\.\.<Tab>:sav
+menutrans Save\ &As\.\.\.<Tab>:sav	Со&хранить\ как\.\.\.<Tab>:sav
 "--------------------
-menutrans Split\ &Diff\ With\.\.\.	Ср&авнить\ Ñ\.\.\.
-menutrans Split\ Patched\ &By\.\.\.	Сравнить\ Ñ\ применением\ зап&латки\.\.\.
+menutrans Split\ &Diff\ with\.\.\.	Сра&внить\ Ñ\.\.\.
+menutrans Split\ Patched\ &By\.\.\.	Сравн&ить\ и\ иÑправить\.\.\.
 "--------------------
-menutrans &Print			Ðа&печатать
-menutrans Sa&ve-Exit<Tab>:wqa		Ð’Ñ‹&ход\ Ñ\ Ñохранением<Tab>:wqa
-menutrans E&xit<Tab>:qa			&Выход<Tab>:qa
+menutrans &Print			&Печать\.\.\.
+menutrans Sa&ve-Exit<Tab>:wqa		Сохра&нить\ и\ выйти<Tab>:wqa
+menutrans E&xit<Tab>:qa			В&ыход<Tab>:qa
 "
 "
-" Edit menu
-menutrans &Undo<Tab>u			О&тменить<Tab>u
-menutrans &Redo<Tab>^R			В&ернуть<Tab>^R
+" Submenu of Edit menu
+menutrans &Undo<Tab>u			&Отменить<Tab>u
+menutrans &Redo<Tab>^R			В&ернуть<Tab>Ctrl+R
 menutrans Rep&eat<Tab>\.		Повторит&ь<Tab>\.
 "--------------------
 menutrans Cu&t<Tab>"+x			&Вырезать<Tab>"+x
 menutrans &Copy<Tab>"+y			&Копировать<Tab>"+y
-menutrans &Paste<Tab>"+gP		Вк&леить<Tab>"+gP
-menutrans Put\ &Before<Tab>[p		Вклеить\ пере&д<Tab>[p
-menutrans Put\ &After<Tab>]p		Вклеить\ по&Ñле<Tab>]p
+menutrans &Paste<Tab>"+gP		Ð’ÑÑ‚&авить<Tab>"+g\ Shift+P
+menutrans Put\ &Before<Tab>[p		ПомеÑтить\ п&еред<Tab>[p
+menutrans Put\ &After<Tab>]p		ПомеÑтить\ по&Ñле<Tab>]p
 menutrans &Delete<Tab>x			&Удалить<Tab>x
-menutrans &Select\ All<Tab>ggVG		Ð’&ыделить\ вÑÑ‘<Tab>ggVG
+menutrans &Select\ All<Tab>ggVG		Ð’&ыделить\ вÑÑ‘<Tab>gg\ Shift+V\ Shift+G
 "--------------------
-" Athena GUI only
-menutrans &Find<Tab>/			&ПоиÑк<Tab>/
-menutrans Find\ and\ Rep&lace<Tab>:%s	ПоиÑк\ и\ &замена<Tab>:%s
-" End Athena GUI only
-menutrans &Find\.\.\.<Tab>/		&ПоиÑк\.\.\.<Tab>/
-menutrans Find\ and\ Rep&lace\.\.\.	ПоиÑк\ и\ &замена\.\.\.
-menutrans Find\ and\ Rep&lace\.\.\.<Tab>:%s	ПоиÑк\ и\ &замена\.\.\.<Tab>:%s
-menutrans Find\ and\ Rep&lace\.\.\.<Tab>:s	ПоиÑк\ и\ &замена\.\.\.<Tab>:s
+" if has("win32") || has("gui_gtk") || has("gui_kde") || has("gui_motif")
+menutrans &Find\.\.\.			&Ðайти\.\.\.
+menutrans Find\ and\ Rep&lace\.\.\.	&Заменить\.\.\.
+" else
+menutrans &Find<Tab>/			&Ðайти<Tab>/
+menutrans Find\ and\ Rep&lace<Tab>:%s	&Заменить<Tab>:%s
+menutrans Find\ and\ Rep&lace<Tab>:s	&Заменить<Tab>:s
 "--------------------
-menutrans Settings\ &Window		Окно\ наÑтройки\ &опций
-menutrans Startup\ &Settings		ÐаÑтройки\ запуÑ&ка
-menutrans &Global\ Settings		&Глобальные\ наÑтройки
-menutrans F&ile\ Settings		ÐаÑтройки\ &файлов
-menutrans C&olor\ Scheme		&ЦветоваÑ\ Ñхема
-menutrans &Keymap			РаÑкладка\ кл&авиатуры
-menutrans Select\ Fo&nt\.\.\.		Выбор\ &шрифта\.\.\.
+menutrans Settings\ &Window			Ð’Ñе\ &параметры\.\.\.
+menutrans Startup\ &Settings			Параметры\ запуÑ&ка
+menutrans &Global\ Settings			О&бщие\ параметры
+menutrans F&ile\ Settings			Пара&метры\ текущего\ буфера
+menutrans Show\ C&olor\ Schemes\ in\ Menu	Показать\ меню\ выбора\ цве&товой\ Ñхемы
+menutrans C&olor\ Scheme			ЦветоваÑ\ Ñ&хема
+menutrans Show\ &Keymaps\ in\ Menu		Показать\ меню\ выбора\ раÑкладки\ к&лавиатуры
+menutrans &Keymap				&РаÑкладка\ клавиатуры
+menutrans None					Ðе\ иÑпользовать
+menutrans Select\ Fo&nt\.\.\.			&Шрифт\.\.\.
 ">>>----------------- Edit/Global settings
-menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	ПодÑветка\ &найденных\ ÑоответÑтвий<Tab>:set\ hls!
-menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!		&РегиÑтронезавиÑимый\ поиÑк<Tab>:set\ ic!
-menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	Показывать\ парные\ &Ñлементы<Tab>:set\ sm!
-menutrans &Context\ Lines				Стр&ок\ вокруг\ курÑора
-menutrans &Virtual\ Edit				Вир&туальное\ редактирование
-menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		Режим\ &Ð’Ñтавки<Tab>:set\ im!
-menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!		&СовмеÑтимоÑÑ‚ÑŒ\ Ñ\ Vi<Tab>:set\ cp!
-menutrans Search\ &Path\.\.\.				&Путь\ длÑ\ поиÑка\ файлов\.\.\.
-menutrans Ta&g\ Files\.\.\.				Файлы\ &меток\.\.\.
+menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!		ПодÑветка\ Ñов&падений<Tab>:set\ hls!
+menutrans Toggle\ &Ignoring\ Case<Tab>:set\ ic!			&РегиÑтронезавиÑимый\ поиÑк<Tab>:set\ ic!
+menutrans Toggle\ &Showing\ Matched\ Pairs<Tab>:set\ sm!	ПодÑветка\ парных\ &Ñлементов<Tab>:set\ sm!
+menutrans &Context\ lines					КонтекÑтных\ ÑÑ‚Ñ€&ок
+menutrans &Virtual\ Edit					Вир&туальное\ редактирование
+menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!			Режим\ &вÑтавки<Tab>:set\ im!
+menutrans Toggle\ Vi\ C&ompatibility<Tab>:set\ cp!		&СовмеÑтимоÑÑ‚ÑŒ\ Ñ\ редактором\ Vi<Tab>:set\ cp!
+menutrans Search\ &Path\.\.\.					&Каталоги\ длÑ\ поиÑка\ файлов\.\.\.
+menutrans Ta&g\ Files\.\.\.					И&ндекÑные\ файлы\.\.\.
 "
-menutrans Toggle\ &Toolbar				&ИнÑтрументальнаÑ\ панель
-menutrans Toggle\ &Bottom\ Scrollbar			ПолоÑа\ прокрутки\ вни&зу
-menutrans Toggle\ &Left\ Scrollbar			ПолоÑа\ прокрутки\ Ñ&лева
-menutrans Toggle\ &Right\ Scrollbar			ПолоÑа\ прокрутки\ Ñпр&ава
+menutrans Toggle\ &Toolbar		Показ\ панели\ &инÑтрументов
+menutrans Toggle\ &Bottom\ Scrollbar	Показ\ полоÑÑ‹\ прокрутки\ вни&зу
+menutrans Toggle\ &Left\ Scrollbar	Показ\ полоÑÑ‹\ прокрутки\ Ñ&лева
+menutrans Toggle\ &Right\ Scrollbar	Показ\ полоÑÑ‹\ прокрутки\ Ñпр&ава
 ">>>->>>------------- Edit/Global settings/Virtual edit
-menutrans Never						Выключено
-menutrans Block\ Selection				При\ выделении\ блока
-menutrans Insert\ Mode					Ð’\ режиме\ Ð’Ñтавки
-menutrans Block\ and\ Insert				При\ выделении\ блока\ и\ в\ режиме\ Ð’Ñтавки
-menutrans Always					Включено\ вÑегда
+menutrans Never				Выключено\ во\ вÑех\ режимах
+menutrans Block\ Selection		Включено\ в\ режиме\ визуального\ блока
+menutrans Insert\ mode			Включено\ в\ режиме\ вÑтавки
+menutrans Block\ and\ Insert		Включено\ в\ режимах\ визуального\ блока\ и\ вÑтавки
+menutrans Always			Включено\ во\ вÑех\ режимах
 ">>>----------------- Edit/File settings
-menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!	&ÐумерациÑ\ Ñтрок<Tab>:set\ nu!
-menutrans Toggle\ Relati&ve\ Line\ Numbering<Tab>:set\ rnu!	ОтноÑите&льнаÑ\ нумерациÑ\ Ñтрок<Tab>:set\ nru!
-menutrans Toggle\ &List\ Mode<Tab>:set\ list!		Отобра&жение\ невидимых\ Ñимволов<Tab>:set\ list!
-menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!	&ПереноÑ\ длинных\ Ñтрок<Tab>:set\ wrap!
-menutrans Toggle\ W&rapping\ at\ Word<Tab>:set\ lbr!	ПереноÑ\ &целых\ Ñлов<Tab>:set\ lbr!
-menutrans Toggle\ Tab\ &Expanding-tab<Tab>:set\ et!	Про&белы\ вмеÑто\ табулÑции<Tab>:set\ et!
-menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!	ÐвтоматичеÑкое\ форматирование\ &отÑтупов<Tab>:set\ ai!
-menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!	Форматирование\ отÑтупов\ в\ &Ñтиле\ C<Tab>:set\ cin!
+menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!		Показ\ &нумерации\ Ñтрок<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!	Показ\ отноÑите&льной\ нумерации\ Ñтрок<Tab>:set\ nru!
+menutrans Toggle\ &List\ Mode<Tab>:set\ list!			Показ\ не&печатаемых\ знаков<Tab>:set\ list!
+menutrans Toggle\ Line\ &Wrapping<Tab>:set\ wrap!		&Разбивка\ Ñтрок\ по\ границе\ окна<Tab>:set\ wrap!
+menutrans Toggle\ W&rapping\ at\ word<Tab>:set\ lbr!		Разбивка\ Ñтрок\ по\ &границе\ Ñлов<Tab>:set\ lbr!
+menutrans Toggle\ Tab\ &Expanding<Tab>:set\ et!			Замена\ Ñимволов\ &табулÑции\ на\ пробелы<Tab>:set\ et!
+menutrans Toggle\ &Auto\ Indenting<Tab>:set\ ai!		УÑтановка\ отÑтупа\ как\ у\ текущей\ &Ñтроки<Tab>:set\ ai!
+menutrans Toggle\ &C-Style\ Indenting<Tab>:set\ cin!		УÑтановка\ отÑтупа\ как\ в\ &Ñзыке\ Си<Tab>:set\ cin!
 ">>>---
-menutrans &Shiftwidth					Вели&чина\ отÑтупа
-menutrans Soft\ &Tabstop				Ширина\ &табулÑции
-menutrans Te&xt\ Width\.\.\.				&Ширина\ текÑта\.\.\.
-menutrans &File\ Format\.\.\.				&Формат\ файла\.\.\.
+menutrans &Shiftwidth				Вели&чина\ отÑтупа
+menutrans Soft\ &Tabstop			Ширина\ &табулÑции
+menutrans Te&xt\ Width\.\.\.			&Ширина\ текÑта\.\.\.
+menutrans &File\ Format\.\.\.			&Формат\ файла\.\.\.
 "
 "
 "
-" Tools menu
-menutrans &Jump\ to\ This\ Tag<Tab>g^]			&Перейти\ к\ метке<Tab>g^]
-menutrans Jump\ &Back<Tab>^T				&ВернутьÑÑ\ назад<Tab>^T
-menutrans Build\ &Tags\ File				Создать\ файл\ ме&ток
+" Submenu of Tools menu
+menutrans &Jump\ to\ this\ tag<Tab>g^]		&Перейти\ по\ указателю<Tab>g\ Ctrl+]
+menutrans Jump\ &back<Tab>^T			&ВернутьÑÑ\ назад<Tab>Ctrl+T
+menutrans Build\ &Tags\ File			Создать\ файл\ Ñ\ &индекÑами
 "-------------------
-menutrans &Folding					&Складки
-menutrans &Spelling					Пр&авопиÑание
-menutrans &Diff						&ОтличиÑ\ (diff)
+menutrans &Folding				С&труктура\ текÑта
+menutrans &Spelling				Пр&авопиÑание
+menutrans &Diff					&Сравнение\ текÑта
 "-------------------
-menutrans &Make<Tab>:make				Ко&мпилировать<Tab>:make
-menutrans &List\ Errors<Tab>:cl				СпиÑок\ о&шибок<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl!			СпиÑок\ Ñоо&бщений<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn				Следу&ющаÑ\ ошибка<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp			П&редыдущаÑ\ ошибка<Tab>:cp
-menutrans &Older\ List<Tab>:cold			Более\ Ñтар&ый\ ÑпиÑок\ ошибок<Tab>:cold
-menutrans N&ewer\ List<Tab>:cnew			Более\ Ñве&жий\ ÑпиÑок\ ошибок<Tab>:cnew
-menutrans Error\ &Window				Ок&но\ ошибок
-menutrans Se&t\ Compiler				Выбор\ &компилÑтора
-menutrans Show\ Compiler\ Se&ttings\ in\ Menu		Пока&зать\ наÑтройки\ компи&лÑтора\ в\ меню 
+menutrans &Make<Tab>:make			Ко&мпилÑциÑ<Tab>:make
+menutrans &List\ Errors<Tab>:cl			РаÑпознанные\ о&шибки<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!		ВеÑ&ÑŒ\ ÑпиÑок\ результатов<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn			Следу&ющаÑ\ запиÑÑŒ\ из\ ÑпиÑка<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp		Пр&едыдущаÑ\ запиÑÑŒ\ из\ ÑпиÑка<Tab>:cp
+menutrans &Older\ List<Tab>:cold		Пред&ыдущий\ ÑпиÑок\ результатов<Tab>:cold
+menutrans N&ewer\ List<Tab>:cnew		С&ледующий\ ÑпиÑок\ результатов<Tab>:cnew
+menutrans Error\ &Window			Ок&но\ Ñо\ ÑпиÑком\ результатов
+menutrans Show\ Compiler\ Se&ttings\ in\ Menu	Показать\ меню\ выбора\ &компилÑтора
+menutrans Se&T\ Compiler			Выбрать\ &компилÑтор
 "-------------------
-menutrans &Convert\ to\ HEX<Tab>:%!xxd			П&еревеÑти\ в\ HEX<Tab>:%!xxd
-menutrans Conve&rt\ Back<Tab>:%!xxd\ -r			ПеревеÑти\ и&з\ HEX<Tab>:%!xxd\ -r
+menutrans &Convert\ to\ HEX<Tab>:%!xxd		Прео&бразовать\ в\ HEX<Tab>:%!xxd
+menutrans Conve&rt\ back<Tab>:%!xxd\ -r		Преобразовать\ и&з\ HEX<Tab>:%!xxd\ -r
 ">>>---------------- Tools/Spelling
-menutrans &Spell\ Check\ On				&Вкл\ проверку\ правопиÑаниÑ
-menutrans Spell\ Check\ &Off				Ð’Ñ‹&кл\ проверку\ правопиÑаниÑ
-menutrans To\ &Next\ Error<Tab>]s			&СледующаÑ\ ошибка<Tab>]s
-menutrans To\ &Previous\ Error<Tab>[s			&ПредыдущаÑ\ ошибка<Tab>[s
-menutrans Suggest\ &Corrections<Tab>z=			Предложить\ иÑп&равлениÑ<Tab>z=
-menutrans &Repeat\ Correction<Tab>:spellrepall		Пов&торить\ иÑправление\ длÑ\ вÑех<Tab>spellrepall
+menutrans &Spell\ Check\ On			ВыполнÑÑ‚ÑŒ\ &проверку
+menutrans Spell\ Check\ &Off			&Ðе\ выполнÑÑ‚ÑŒ\ проверку
+menutrans To\ &Next\ error<Tab>]s		С&ледующаÑ\ ошибка<Tab>]s
+menutrans To\ &Previous\ error<Tab>[s		Пр&едыдущаÑ\ ошибка<Tab>[s
+menutrans Suggest\ &Corrections<Tab>z=		Вариант&Ñ‹\ напиÑаниÑ<Tab>z=
+menutrans &Repeat\ correction<Tab>:spellrepall	Заменить\ &вÑе<Tab>:spellrepall
 "-------------------
-menutrans Set\ Language\ to\ "en"			УÑтановить\ Ñзык\ "en"
-menutrans Set\ Language\ to\ "en_au"			УÑтановить\ Ñзык\ "en_au"
-menutrans Set\ Language\ to\ "en_ca"			УÑтановить\ Ñзык\ "en_ca"
-menutrans Set\ Language\ to\ "en_gb"			УÑтановить\ Ñзык\ "en_gb"
-menutrans Set\ Language\ to\ "en_nz"			УÑтановить\ Ñзык\ "en_nz"
-menutrans Set\ Language\ to\ "en_us"			УÑтановить\ Ñзык\ "en_us"
-menutrans &Find\ More\ Languages			&Ðайти\ больше\ Ñзыков
-let g:menutrans_set_lang_to =				'УÑтановить Ñзык'
-"
-"
-" The Spelling popup menu
-"
-"
-let g:menutrans_spell_change_ARG_to =			'ИÑправить\ "%s"\ на'
-let g:menutrans_spell_add_ARG_to_word_list =		'Добавить\ "%s"\ в\ Ñловарь'
-let g:menutrans_spell_ignore_ARG =			'ПропуÑтить\ "%s"'
+menutrans Set\ language\ to\ "en"		Проверка\ длÑ\ Ñзыка\ "en"
+menutrans Set\ language\ to\ "en_au"		Проверка\ длÑ\ Ñзыка\ "en_au"
+menutrans Set\ language\ to\ "en_ca"		Проверка\ длÑ\ Ñзыка\ "en_ca"
+menutrans Set\ language\ to\ "en_gb"		Проверка\ длÑ\ Ñзыка\ "en_gb"
+menutrans Set\ language\ to\ "en_nz"		Проверка\ длÑ\ Ñзыка\ "en_nz"
+menutrans Set\ language\ to\ "en_us"		Проверка\ длÑ\ Ñзыка\ "en_us"
+menutrans &Find\ More\ Languages		Ðайти\ длÑ\ других\ &Ñзыков
+let g:menutrans_set_lang_to =			'Проверка Ð´Ð»Ñ Ñзыка'
 ">>>---------------- Folds
-menutrans &Enable/Disable\ Folds<Tab>zi			Вкл/выкл\ &Ñкладки<Tab>zi
-menutrans &View\ Cursor\ Line<Tab>zv			Открыть\ Ñтроку\ Ñ\ &курÑором<Tab>zv
-menutrans Vie&w\ Cursor\ Line\ Only<Tab>zMzx		Открыть\ &только\ Ñтроку\ Ñ\ курÑором<Tab>zMzx
-menutrans C&lose\ More\ Folds<Tab>zm			Закрыть\ &больше\ Ñкладок<Tab>zm
-menutrans &Close\ All\ Folds<Tab>zM			Закрыть\ &вÑе\ Ñкладки<Tab>zM
-menutrans &Open\ All\ Folds<Tab>zR			Откр&Ñ‹Ñ‚ÑŒ\ вÑе\ Ñкладки<Tab>zR
-menutrans O&pen\ More\ Folds<Tab>zr			Отк&рыть\ больше\ Ñкладок<Tab>zr
-menutrans Fold\ Met&hod					&Метод\ Ñкладок
-menutrans Create\ &Fold<Tab>zf				Со&здать\ Ñкладку<Tab>zf
-menutrans &Delete\ Fold<Tab>zd				У&далить\ Ñкладку<Tab>zd
-menutrans Delete\ &All\ Folds<Tab>zD			Удалить\ вÑ&е\ Ñкладки<Tab>zD
-menutrans Fold\ col&umn\ Width				&Ширина\ колонки\ Ñкладок
+menutrans &Enable/Disable\ folds<Tab>zi		&Показать\ или\ убрать\ Ñтруктуру<Tab>zi
+menutrans &View\ Cursor\ Line<Tab>zv		ПроÑмотр\ Ñтроки\ под\ &курÑором<Tab>zv
+menutrans Vie&w\ Cursor\ Line\ only<Tab>zMzx	ПроÑмотр\ &только\ Ñтроки\ под\ курÑором<Tab>z\ Shift+M\ zx
+menutrans C&lose\ more\ folds<Tab>zm		Свернуть\ вло&женные\ блоки\ Ñтруктуры<Tab>zm
+menutrans &Close\ all\ folds<Tab>zM		Свернуть\ &вÑе\ блоки\ Ñтруктуры<Tab>z\ Shift+M
+menutrans &Open\ all\ folds<Tab>zR		Развернуть\ в&Ñе\ блоки\ Ñтруктуры<Tab>z\ Shift+R
+menutrans O&pen\ more\ folds<Tab>zr		Ра&звернуть\ вложенный\ блок\ Ñтруктуры<Tab>zr
+menutrans Fold\ Met&hod				&Метод\ разметки\ Ñтруктуры
+menutrans Create\ &Fold<Tab>zf			Со&здать\ блок\ Ñтруктуры<Tab>zf
+menutrans &Delete\ Fold<Tab>zd			&Убрать\ блок\ Ñтруктуры<Tab>zd
+menutrans Delete\ &All\ Folds<Tab>zD		Убрать\ вÑ&е\ блоки\ Ñтруктуры<Tab>z\ Shift+D
+menutrans Fold\ col&umn\ width			&Ширина\ Ñтолбца\ Ñо\ значками\ Ñтруктуры
 ">>>->>>----------- Tools/Folds/Fold Method
-menutrans M&anual					Вру&чную
-menutrans I&ndent					О&Ñ‚Ñтуп
-menutrans E&xpression					&Выражение
-menutrans S&yntax					&СинтакÑиÑ
-menutrans Ma&rker					&Маркеры
-">>>--------------- Tools/Diff
-menutrans &Update					О&бновить
-menutrans &Get\ Block					Изменить\ &Ñтот\ буфер
-menutrans &Put\ Block					Изменить\ &другой\ буфер
-">>>--------------- Tools/Diff/Error window
-menutrans &Update<Tab>:cwin				О&бновить<Tab>:cwin
-menutrans &Close<Tab>:cclose				&Закрыть<Tab>:cclose
-menutrans &Open<Tab>:copen				&Открыть<Tab>:copen
+menutrans M&anual				Разметка\ вру&чную
+menutrans I&ndent				Ðа\ оÑнове\ о&Ñ‚Ñтупов
+menutrans E&xpression				Ðа\ оÑнове\ Ñ€&аÑчётов
+menutrans S&yntax				Ðа\ оÑнове\ &ÑинтакÑиÑа
+menutrans &Diff					Ðа\ оÑнове\ различий\ в\ текÑтах
+menutrans Ma&rker				Ðа\ оÑнове\ &маркеров
+">>>--------------- Sub of Tools/Diff
+menutrans &Update				О&бновить\ Ñодержимое\ окон
+menutrans &Get\ Block				ПеренеÑти\ &в\ текущий\ буфер
+menutrans &Put\ Block				ПеренеÑти\ &из\ текущего\ буфера
+">>>--------------- Tools/Error window
+menutrans &Update<Tab>:cwin			О&бновить<Tab>:cwin
+menutrans &Close<Tab>:cclose			&Закрыть<Tab>:cclose
+menutrans &Open<Tab>:copen			&Открыть<Tab>:copen
 "
 "
 " Syntax menu
 "
-menutrans &Show\ File\ Types\ in\ Menu			Показать\ меню\ выбора\ типа\ &файла
-menutrans Set\ '&syntax'\ only				&ИзменÑÑ‚ÑŒ\ только\ значение\ 'syntax'
-menutrans Set\ '&filetype'\ too				ИзменÑÑ‚ÑŒ\ &также\ значение\ 'filetype'
-menutrans &Off						&Отключить
-menutrans &Manual					Вру&чную
-menutrans A&utomatic					&ÐвтоматичеÑки
-menutrans On/Off\ for\ &This\ File			Вкл/выкл\ длÑ\ &Ñтого\ файла
-menutrans Co&lor\ Test					Проверка\ &цветов
-menutrans &Highlight\ Test				Проверка\ под&Ñветки
-menutrans &Convert\ to\ HTML				С&делать\ HTML\ Ñ\ подÑветкой
+menutrans &Show\ File\ Types\ in\ menu		&Показать\ меню\ выбора\ типа\ файла
+menutrans Set\ '&syntax'\ only			Ð&ктивировать\ параметр\ 'syntax'
+menutrans Set\ '&filetype'\ too			Ðктивировать\ пара&метр\ 'filetype'
+menutrans &Off					&Отключить\ подÑветку
+menutrans &Manual				Включение\ подÑветки\ вру&чную
+menutrans A&utomatic				Включение\ подÑветки\ &автоматичеÑки
+menutrans on/off\ for\ &This\ file		Изменить\ режим\ длÑ\ &текущего\ файла
+menutrans Co&lor\ test				Проверить\ поддер&живаемые\ цвета
+menutrans &Highlight\ test			Показать\ группы\ под&Ñветки
+menutrans &Convert\ to\ HTML			Прео&бразовать\ текущий\ файл\ в\ HTML
 "
 "
 " Buffers menu
 "
-menutrans &Refresh\ menu				О&бновить\ меню
-menutrans Delete					У&далить
-menutrans &Alternate					&СоÑедний
-menutrans &Next						С&ледующий
-menutrans &Previous					&Предыдущий
-menutrans [No\ File]					[Ðет\ файла]
+menutrans &Refresh\ menu			&Обновить\ ÑпиÑок\ буферов
+menutrans &Delete				&Закрыть\ буфер
+menutrans &Alternate				&СоÑедний\ буфер
+menutrans &Next					С&ледующий\ буфер
+menutrans &Previous				&Предыдущий\ буфер
 "
 "
-" Window menu
+" Submenu of Window menu
 "
-menutrans &New<Tab>^Wn					&Ðовое\ окно<Tab>^Wn
-menutrans S&plit<Tab>^Ws				&Разделить\ окно<Tab>^Ws
-menutrans Sp&lit\ To\ #<Tab>^W^^			Открыть\ &ÑоÑедний\ файл\ в\ новом\ окне<Tab>^W^^
-menutrans Split\ &Vertically<Tab>^Wv			Разделить\ по\ &вертикали<Tab>^Wv
-menutrans Split\ File\ E&xplorer			Открыть\ проводник\ по\ &файловой\ ÑиÑтеме
+menutrans &New<Tab>^Wn				&Создать<Tab>Ctrl+W\ n
+menutrans S&plit<Tab>^Ws			Разделить\ по\ &горизонтали<Tab>Ctrl+W\ s
+menutrans Split\ &Vertically<Tab>^Wv		Разделить\ по\ &вертикали<Tab>Ctrl+W\ v
+menutrans Sp&lit\ To\ #<Tab>^W^^		С&оÑедний\ файл\ в\ новом\ окне<Tab>Ctrl+W\ Ctrl+^
+menutrans Split\ File\ E&xplorer		ДиÑпетчер\ файлов
 "
-menutrans &Close<Tab>^Wc				&Закрыть\ Ñто\ окно<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo			Закрыть\ &оÑтальные\ окна<Tab>^Wo
+menutrans &Close<Tab>^Wc			&Закрыть\ текущее\ окно<Tab>Ctrl+W\ c
+menutrans Close\ &Other(s)<Tab>^Wo		З&акрыть\ другие\ окна<Tab>Ctrl+W\ o
 "
-menutrans Move\ &To					&ПеремеÑтить
-menutrans Rotate\ &Up<Tab>^WR				Сдвинуть\ ввер&х<Tab>^WR
-menutrans Rotate\ &Down<Tab>^Wr				Сдвинуть\ в&низ<Tab>^Wr
+menutrans Move\ &To				&ПеремеÑтить
+menutrans Rotate\ &Up<Tab>^WR			Сдвинуть\ ввер&х<Tab>Ctrl+W\ Shift+R
+menutrans Rotate\ &Down<Tab>^Wr			Сдвинуть\ в&низ<Tab>Ctrl+W\ r
 "
-menutrans &Equal\ Size<Tab>^W=				О&динаковый\ размер<Tab>^W=
-menutrans &Max\ Height<Tab>^W_				МакÑимальнаÑ\ в&Ñ‹Ñота<Tab>^W_
-menutrans M&in\ Height<Tab>^W1_				МинимальнаÑ\ выÑо&та<Tab>^W1_
-menutrans Max\ &Width<Tab>^W\|				МакÑимальнаÑ\ &ширина<Tab>^W\|
-menutrans Min\ Widt&h<Tab>^W1\|				Минимал&ьнаÑ\ ширина<Tab>^W1\|
-">>>----------------- Window/Move To
-menutrans &Top<Tab>^WK					В&верх<Tab>^WK
-menutrans &Bottom<Tab>^WJ				В&низ<Tab>^WJ
-menutrans &Left\ Side<Tab>^WH				В&лево<Tab>^WH
-menutrans &Right\ Side<Tab>^WL				В&право<Tab>^WL
+menutrans &Equal\ Size<Tab>^W=			Выравнивание\ раз&мера<Tab>Ctrl+W\ =
+menutrans &Max\ Height<Tab>^W_			МакÑимальнаÑ\ в&Ñ‹Ñота<Tab>Ctrl+W\ _
+menutrans M&in\ Height<Tab>^W1_			МинимальнаÑ\ выÑо&та<Tab>Ctrl+W\ 1_
+menutrans Max\ &Width<Tab>^W\|			МакÑимальнаÑ\ &ширина<Tab>Ctrl+W\ \|
+menutrans Min\ Widt&h<Tab>^W1\|			МинимальнаÑ\ ш&ирина<Tab>Ctrl+W\ 1\|
+">>>----------------- Submenu of Window/Move To
+menutrans &Top<Tab>^WK				В&верх<Tab>Ctrl+W\ Shift+K
+menutrans &Bottom<Tab>^WJ			В&низ<Tab>Ctrl+W\ Shift+J
+menutrans &Left\ side<Tab>^WH			В&лево<Tab>Ctrl+W\ Shift+H
+menutrans &Right\ side<Tab>^WL			В&право<Tab>Ctrl+W\ Shift+L
 "
 "
 " The popup menu
 "
 "
-menutrans &Undo						О&тменить
-menutrans Cu&t						&Вырезать
-menutrans &Copy						&Копировать
-menutrans &Paste					Вк&леить
-menutrans &Delete					&Удалить
-menutrans Select\ Blockwise				Блоковое\ выделение
-menutrans Select\ &Word					Выделить\ &Ñлово
-menutrans Select\ &Sentence				Выделить\ &предложение
-menutrans Select\ Pa&ragraph				Выделить\ пара&граф
-menutrans Select\ &Line					Выделить\ ÑÑ‚&року
-menutrans Select\ &Block				Выделить\ &блок
-menutrans Select\ &All					Выделить\ &вÑÑ‘
+menutrans &Undo					&Отменить
+menutrans Cu&t					&Вырезать
+menutrans &Copy					&Копировать
+menutrans &Paste				Ð’ÑÑ‚&авить
+menutrans &Delete				&Удалить
+menutrans Select\ Blockwise			Блоковое\ выделение
+menutrans Select\ &Word				Выделить\ Ñ&лово
+menutrans Select\ &Line				Выделить\ Ñ&троку
+menutrans Select\ &Block			Выделить\ &блок
+menutrans Select\ &All				Ð’&ыделить\ вÑÑ‘
+menutrans Select\ &Sentence			Выделить\ предло&жение
+menutrans Select\ Pa&ragraph			Выделить\ аб&зац
+"
+" The Spelling popup menu
+"
+let g:menutrans_spell_change_ARG_to =		'ИÑправить\ "%s"'
+let g:menutrans_spell_add_ARG_to_word_list =	'Добавить\ "%s"\ в\ Ñловарь'
+let g:menutrans_spell_ignore_ARG =		'ПропуÑтить\ "%s"'
 "
 " The GUI toolbar
 "
@@ -282,29 +284,39 @@ if has("toolbar")
   if exists("*Do_toolbar_tmenu")
     delfun Do_toolbar_tmenu
   endif
-  fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open					Открыть файл
-    tmenu ToolBar.Save					Сохранить файл
-    tmenu ToolBar.SaveAll				Сохранить вÑе файлы
-    tmenu ToolBar.Print					Ðапечатать
-    tmenu ToolBar.Undo					Отменить
-    tmenu ToolBar.Redo					Вернуть
-    tmenu ToolBar.Cut					Вырезать
-    tmenu ToolBar.Copy					Копировать
-    tmenu ToolBar.Paste					Вклеить
-    tmenu ToolBar.FindNext				Ðайти Ñледующее
-    tmenu ToolBar.FindPrev				Ðайти предыдущее
-    tmenu ToolBar.Replace				Ðайти или заменить...
-    tmenu ToolBar.LoadSesn				Загрузить ÑÐµÐ°Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ
-    tmenu ToolBar.SaveSesn				Сохранить ÑÐµÐ°Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ
-    tmenu ToolBar.RunScript				Выполнить Ñценарий Vim
-    tmenu ToolBar.Make					КомпилÑциÑ
-    tmenu ToolBar.Shell					Оболочка
-    tmenu ToolBar.RunCtags				Создать файл меток
-    tmenu ToolBar.TagJump				Перейти к метке
-    tmenu ToolBar.Help					Справка
-    tmenu ToolBar.FindHelp				Ðайти Ñправку
-  endfun
+  def g:Do_toolbar_tmenu()
+    tmenu ToolBar.New				Создать документ
+    tmenu ToolBar.Open				Открыть файл
+    tmenu ToolBar.Save				Сохранить файл
+    tmenu ToolBar.SaveAll			Сохранить вÑе файлы
+    tmenu ToolBar.Print				Печать
+    tmenu ToolBar.Undo				Отменить
+    tmenu ToolBar.Redo				Вернуть
+    tmenu ToolBar.Cut				Вырезать
+    tmenu ToolBar.Copy				Копировать
+    tmenu ToolBar.Paste				Ð’Ñтавить
+    tmenu ToolBar.Find				Ðайти...
+    tmenu ToolBar.FindNext			Ðайти Ñледующее
+    tmenu ToolBar.FindPrev			Ðайти предыдущее
+    tmenu ToolBar.Replace			Заменить...
+    tmenu ToolBar.NewSesn			Создать ÑÐµÐ°Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ
+    tmenu ToolBar.LoadSesn			Загрузить ÑÐµÐ°Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ
+    tmenu ToolBar.SaveSesn			Сохранить ÑÐµÐ°Ð½Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ
+    tmenu ToolBar.RunScript			Выполнить командный файл программы Vim
+    tmenu ToolBar.Shell				ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ð¾Ð±Ð¾Ð»Ð¾Ñ‡ÐºÐ°
+    tmenu ToolBar.Make				КомпилÑциÑ
+    tmenu ToolBar.RunCtags			Создать файл Ñ Ð¸Ð½Ð´ÐµÐºÑами
+    tmenu ToolBar.TagJump			Перейти по указателю
+    tmenu ToolBar.Help				Справка
+    tmenu ToolBar.FindHelp			ПоиÑк в документации
+    tmenu ToolBar.WinClose			Закрыть текущее окно
+    tmenu ToolBar.WinMax			МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹Ñота текущего окна
+    tmenu ToolBar.WinMin			ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹Ñота текущего окна
+    tmenu ToolBar.WinSplit			Разделить окно по горизонтали
+    tmenu ToolBar.WinVSplit			Разделить окно по вертикали
+    tmenu ToolBar.WinMaxWidth			МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° текущего окна
+    tmenu ToolBar.WinMinWidth			ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° текущего окна
+  enddef
 endif
 "
 "
@@ -312,26 +324,41 @@ endif
 "
 " Find in help dialog
 "
-let g:menutrans_help_dialog = "Введите команду или Ñлово Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка:\n\nДобавьте i_ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка команд режима Ð’Ñтавки (например, i_CTRL-X)\nДобавьте c_ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка команд Обычного режима (например, Ñ_<Del>)\nДобавьте ' Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка Ñправки по опции (например, 'shiftwidth')"
+let g:menutrans_help_dialog = "Ðаберите команду или Ñлово, которые требуетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ в документации.\n\nЧтобы найти команды режима вÑтавки, иÑпользуйте приÑтавку i_ (например, i_CTRL-X)\nЧтобы найти команды командной Ñтроки, иÑпользуйте приÑтавку c_ (например, c_<Del>)\nЧтобы найти информацию о параметрах, иÑпользуйте Ñимвол ' (например, 'shftwidth')"
 "
-" Searh path dialog
+" Search path dialog
 "
-let g:menutrans_path_dialog = "Укажите путь Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка файлов.\nИмена каталогов разделÑÑŽÑ‚ÑÑ Ð·Ð°Ð¿Ñтыми."
+let g:menutrans_path_dialog = "Укажите через запÑтую Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð², где будет выполнÑÑ‚ÑŒÑÑ Ð¿Ð¾Ð¸Ñк файлов"
 "
 " Tag files dialog
 "
-let g:menutrans_tags_dialog = "Введите имена файлов меток (через запÑтую).\n"
+let g:menutrans_tags_dialog = "Укажите через запÑтую Ð½Ð°Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² индекÑов"
 "
 " Text width dialog
 "
-let g:menutrans_textwidth_dialog = "Введите ширину текÑта Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ.\nÐ”Ð»Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ñ‹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð²ÐµÐ´Ð¸Ñ‚Ðµ 0."
+let g:menutrans_textwidth_dialog = "Укажите количеÑтво Ñимволов Ð´Ð»Ñ ÑƒÑтановки ширины текÑта\nЧтобы отменить форматирование, укажите 0"
 "
 " File format dialog
 "
-let g:menutrans_fileformat_dialog = "Выберите формат файла."
-let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\nО&тмена"
+let g:menutrans_fileformat_dialog = "Выберите формат файла"
+let g:menutrans_fileformat_choices = "&1. Unix\n&2. Dos\n&3. Mac\nОтмена (&C)"
+"
+let menutrans_no_file = "[БезымÑнный]"
+
+" Menus to handle Russian encodings
+" Thanks to Pavlo Bohmat for the idea
+" vassily ragosin <vrr[at]users.sourceforge.net>
 "
-let menutrans_no_file = "[Ðет файла]"
+an 10.355 &File.-SEP-					<Nop>
+an 10.360.20 &File.Открыть\ в\ кодировке\.\.\..CP1251	:browse e ++enc=cp1251<CR>
+an 10.360.30 &File.Открыть\ в\ кодировке\.\.\..CP866	:browse e ++enc=cp866<CR>
+an 10.360.30 &File.Открыть\ в\ кодировке\.\.\..KOI8-R	:browse e ++enc=koi8-r<CR>
+an 10.360.40 &File.Открыть\ в\ кодировке\.\.\..UTF-8	:browse e ++enc=utf-8<CR>
+an 10.365.20 &File.Сохранить\ Ñ\ кодировкой\.\.\..CP1251 :browse w ++enc=cp1251<CR>
+an 10.365.30 &File.Сохранить\ Ñ\ кодировкой\.\.\..CP866	:browse w ++enc=cp866<CR>
+an 10.365.30 &File.Сохранить\ Ñ\ кодировкой\.\.\..KOI8-R :browse w ++enc=koi8-r<CR>
+an 10.365.40 &File.Сохранить\ Ñ\ кодировкой\.\.\..UTF-8	:browse w ++enc=utf-8<CR>
+"
 
 let &cpo = s:keepcpo
 unlet s:keepcpo
--- a/runtime/lang/menu_ru_ru.vim
+++ b/runtime/lang/menu_ru_ru.vim
@@ -1,3 +1,14 @@
 " Menu Translations:	Russian
 
-source <sfile>:p:h/menu_ru_ru.utf-8.vim
+if ('utf-8' ==? &enc) && filereadable(expand('<sfile>:p:h') . '/menu_ru_ru.utf-8.vim')
+    source <sfile>:p:h/menu_ru_ru.utf-8.vim
+elseif ('cp1251' ==? &enc) && filereadable(expand('<sfile>:p:h') . '/menu_ru_ru.cp1251.vim')
+    source <sfile>:p:h/menu_ru_ru.cp1251.vim
+" elseif ('cp866' ==? &enc) && filereadable(expand('<sfile>:p:h') . '/menu_ru_ru.cp866.vim')
+"    source <sfile>:p:h/menu_ru_ru.cp866.vim
+elseif ('koi8-r' ==? &enc) && filereadable(expand('<sfile>:p:h') . '/menu_ru_ru.koi8-r.vim')
+    source <sfile>:p:h/menu_ru_ru.koi8-r.vim
+else
+    echomsg 'Could not find the menu file matching the current encoding'
+endif
+
--- a/runtime/lang/menu_sl_si.cp1250.vim
+++ b/runtime/lang/menu_sl_si.cp1250.vim
@@ -21,7 +21,7 @@ scriptencoding cp1250
 menutrans &File				&Datoteka
 menutrans &Open\.\.\.<Tab>:e		&Odpri\ \.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Odpri\ de&ljeno\ \.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nova<Tab>:enew
 menutrans &Close<Tab>:close		&Zapri<Tab>:close
 menutrans &Save<Tab>:w			&Shrani<Tab>:w
--- a/runtime/lang/menu_sl_si.latin2.vim
+++ b/runtime/lang/menu_sl_si.latin2.vim
@@ -21,7 +21,7 @@ scriptencoding latin2
 menutrans &File				&Datoteka
 menutrans &Open\.\.\.<Tab>:e		&Odpri\ \.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Odpri\ de&ljeno\ \.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nova<Tab>:enew
 menutrans &Close<Tab>:close		&Zapri<Tab>:close
 menutrans &Save<Tab>:w			&Shrani<Tab>:w
--- a/runtime/lang/menu_sl_si.utf-8.vim
+++ b/runtime/lang/menu_sl_si.utf-8.vim
@@ -21,7 +21,7 @@ scriptencoding utf-8
 menutrans &File				&Datoteka
 menutrans &Open\.\.\.<Tab>:e		&Odpri\ \.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Odpri\ de&ljeno\ \.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Odpri\ v\ zavi&hku\ \.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Nova<Tab>:enew
 menutrans &Close<Tab>:close		&Zapri<Tab>:close
 menutrans &Save<Tab>:w			&Shrani<Tab>:w
--- a/runtime/lang/menu_sr_rs.ascii.vim
+++ b/runtime/lang/menu_sr_rs.ascii.vim
@@ -31,7 +31,7 @@ menutrans &About	      &O\ programu
 menutrans &File			    &Fajl
 menutrans &Open\.\.\.<Tab>:e	    &Otvori\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otvori\ karticu\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otvori\ karticu\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew	    &Nov<Tab>:enew
 menutrans &Close<Tab>:close	    &Zatvori<Tab>:close
 menutrans &Save<Tab>:w		    &Sacuvaj<Tab>:w
--- a/runtime/lang/menu_sr_rs.iso_8859-2.vim
+++ b/runtime/lang/menu_sr_rs.iso_8859-2.vim
@@ -31,7 +31,7 @@ menutrans &About	      &O\ programu
 menutrans &File			    &Fajl
 menutrans &Open\.\.\.<Tab>:e	    &Otvori\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp &Podeli-otvori\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Otvori\ karticu\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Otvori\ karticu\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew	    &Nov<Tab>:enew
 menutrans &Close<Tab>:close	    &Zatvori<Tab>:close
 menutrans &Save<Tab>:w		    &Saèuvaj<Tab>:w
--- a/runtime/lang/menu_sr_rs.iso_8859-5.vim
+++ b/runtime/lang/menu_sr_rs.iso_8859-5.vim
@@ -31,7 +31,7 @@ menutrans &About	      &¾\ ßàÞÓàÐÜã
 menutrans &File			    &ÄÐøÛ
 menutrans &Open\.\.\.<Tab>:e	    &¾âÒÞàØ\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp &¿ÞÔÕÛØ-ÞâÒÞàØ\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	¾âÒÞàØ\ ÚÐàâØæã\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	¾âÒÞàØ\ ÚÐàâØæã\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew	    &½ÞÒ<Tab>:enew
 menutrans &Close<Tab>:close	    &·ÐâÒÞàØ<Tab>:close
 menutrans &Save<Tab>:w		    &ÁÐçãÒÐø<Tab>:w
--- a/runtime/lang/menu_sr_rs.utf-8.vim
+++ b/runtime/lang/menu_sr_rs.utf-8.vim
@@ -31,7 +31,7 @@ menutrans &About	      &О\ програму
 menutrans &File			    &Фајл
 menutrans &Open\.\.\.<Tab>:e	    &Отвори\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp &Подели-отвори\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Отвори\ картицу\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Отвори\ картицу\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew	    &Ðов<Tab>:enew
 menutrans &Close<Tab>:close	    &Затвори<Tab>:close
 menutrans &Save<Tab>:w		    &Сачувај<Tab>:w
--- a/runtime/lang/menu_sv_se.latin1.vim
+++ b/runtime/lang/menu_sv_se.latin1.vim
@@ -34,7 +34,7 @@ menutrans &About		&Om
 menutrans &File				&Arkiv
 menutrans &Open\.\.\.<Tab>:e		&Öppna\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	Öppna\ i\ splitt-vy\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	Öppna\ flik\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	Öppna\ flik\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Ny<Tab>:enew
 menutrans &Close<Tab>:close		S&täng<Tab>:close
 menutrans &Save<Tab>:w			&Spara<Tab>:w
--- a/runtime/lang/menu_tr_tr.cp1254.vim
+++ b/runtime/lang/menu_tr_tr.cp1254.vim
@@ -37,7 +37,7 @@ menutrans &About	&Hakkýnda
 " File menu
 menutrans &Open\.\.\.<Tab>:e		&Aç\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	&Yeni\ Bölümde\ Aç\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	S&ekme\ Aç\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	S&ekme\ Aç\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew	        Yeni\ &Sekme<Tab>:enew
 menutrans &Close<Tab>:close		Ka&pat<Tab>:close
 "--------------------
--- a/runtime/lang/menu_tr_tr.iso_8859-9.vim
+++ b/runtime/lang/menu_tr_tr.iso_8859-9.vim
@@ -37,7 +37,7 @@ menutrans &About	&Hakkýnda
 " File menu
 menutrans &Open\.\.\.<Tab>:e		&Aç\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	&Yeni\ Bölümde\ Aç\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	S&ekme\ Aç\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	S&ekme\ Aç\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew	        Yeni\ &Sekme<Tab>:enew
 menutrans &Close<Tab>:close		Ka&pat<Tab>:close
 "--------------------
--- a/runtime/lang/menu_tr_tr.utf-8.vim
+++ b/runtime/lang/menu_tr_tr.utf-8.vim
@@ -37,7 +37,7 @@ menutrans &About	&Hakkında
 " File menu
 menutrans &Open\.\.\.<Tab>:e		&Aç\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	&Yeni\ Bölümde\ Aç\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	S&ekme\ Aç\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew	S&ekme\ Aç\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew	        Yeni\ &Sekme<Tab>:enew
 menutrans &Close<Tab>:close		Ka&pat<Tab>:close
 "--------------------
--- a/runtime/lang/menu_zh_cn.utf-8.vim
+++ b/runtime/lang/menu_zh_cn.utf-8.vim
@@ -44,7 +44,7 @@ menutrans &File 文件(&F)
 " File menuitems {{{1
 menutrans &Open\.\.\.<Tab>:e 打开(&O)\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp 在拆分窗å£æ‰“å¼€(&L)\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew 在标签页打开\.\.\.<Tab>:tabnew
+menutrans Open\ &Tab\.\.\.<Tab>:tabnew 在标签页打开(&T)\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew 新建(&N)<Tab>:enew
 menutrans &Close<Tab>:close 关闭(&C)<Tab>:close
 menutrans &Save<Tab>:w ä¿å­˜(&S)<Tab>:w
--- a/runtime/makemenu.vim
+++ b/runtime/makemenu.vim
@@ -678,6 +678,7 @@ SynMenu WXYZ.XFree86\ Config:xf86conf
 SynMenu WXYZ.YAML:yaml
 SynMenu WXYZ.Yacc:yacc
 SynMenu WXYZ.Zimbu:zimbu
+SynMenu WXYZ.Zserio:zserio
 
 append(lnum, "")
 
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -122,7 +122,7 @@ enddef
 " File menu
 an 10.310 &File.&Open\.\.\.<Tab>:e		:browse confirm e<CR>
 an 10.320 &File.Sp&lit-Open\.\.\.<Tab>:sp	:browse sp<CR>
-an 10.320 &File.Open\ Tab\.\.\.<Tab>:tabnew	:browse tabnew<CR>
+an 10.320 &File.Open\ &Tab\.\.\.<Tab>:tabnew	:browse tabnew<CR>
 an 10.325 &File.&New<Tab>:enew			:confirm enew<CR>
 an <silent> 10.330 &File.&Close<Tab>:close
 	\ :if winheight(2) < 0 && tabpagewinnr(2) == 0 <Bar>
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	The Vim Project <https://github.com/vim/vim>
-" Last Change:	2023 Aug 10
+" Last Change:	2023 Aug 31
 " Former Maintainer:	Bram Moolenaar <Bram@vim.org>
 
 " If there already is an option window, jump to that one.
@@ -518,7 +518,7 @@ call <SID>OptionG("swb", &swb)
 call <SID>AddOption("splitbelow", gettext("a new window is put below the current one"))
 call <SID>BinOptionG("sb", &sb)
 call <SID>AddOption("splitkeep", gettext("determines scroll behavior for split windows"))
-call <SID>BinOptionG("spk", &spk)
+call <SID>OptionG("spk", &spk)
 call <SID>AddOption("splitright", gettext("a new window is put right of the current one"))
 call <SID>BinOptionG("spr", &spr)
 call <SID>AddOption("scrollbind", gettext("this window scrolls together with other bound windows"))
--- a/runtime/pack/dist/opt/editexisting/plugin/editexisting.vim
+++ b/runtime/pack/dist/opt/editexisting/plugin/editexisting.vim
@@ -1,6 +1,6 @@
 " Vim Plugin:	Edit the file with an existing Vim if possible
-" Maintainer:	Bram Moolenaar
-" Last Change:	2022 Jun 17
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
+" Last Change:	2023 Aug 13
 
 " To use add ":packadd! editexisting" in your vimrc file.
 
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/.editorconfig
@@ -0,0 +1,27 @@
+root = true
+
+[*]
+end_of_line = lf
+charset = utf-8
+max_line_length = 80
+
+[*.{vim,sh}]
+indent_style = space
+indent_size = 4
+insert_final_newline = true
+trim_trailing_whitespace = true
+max_line_length = 80
+
+[*.rb]
+indent_style = space
+indent_size = 2
+insert_final_newline = true
+trim_trailing_whitespace = true
+max_line_length = 120
+
+[*.yml]
+indent_style = space
+indent_size = 2
+
+[*.{bat,vbs,ps1}]
+end_of_line = CRLF
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/CONTRIBUTORS
@@ -0,0 +1,6 @@
+Contributors to the EditorConfig Vim Plugin:
+
+Hong Xu
+Trey Hunner
+Kent Frazier
+Chris White
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/LICENSE
@@ -0,0 +1,26 @@
+Unless otherwise stated, all files are distributed under the Simplified BSD
+license included below.
+
+Copyright (c) 2011-2019 EditorConfig Team
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
new file mode 100755
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/LICENSE.PSF
@@ -0,0 +1,53 @@
+Some code in editorconfig-vim is derived from code licensed under the
+PSF license.  The following is the text of that license, retrieved 2019-05-05
+from https://docs.python.org/2.6/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python
+
+PSF LICENSE AGREEMENT FOR PYTHON 2.6.9
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+(``PSF''), and the Individual or Organization (``Licensee'') accessing and
+otherwise using Python 2.6.9 software in source or binary form and its
+associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python 2.6.9
+alone or in any derivative version, provided, however, that PSF's
+License Agreement and PSF's notice of copyright, i.e., ``Copyright (c)
+2001-2010 Python Software Foundation; All Rights Reserved'' are
+retained in Python 2.6.9 alone or in any derivative version prepared
+by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 2.6.9 or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python 2.6.9.
+
+4. PSF is making Python 2.6.9 available to Licensee on an ``AS IS''
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED.
+BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY
+REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY
+PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 2.6.9 WILL NOT INFRINGE
+ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+2.6.9 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.6.9,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python 2.6.9, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+# vi: set ft=:
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/README.md
@@ -0,0 +1,148 @@
+# EditorConfig Vim Plugin
+
+[![Travis Build Status](https://img.shields.io/travis/cxw42/editorconfig-vim.svg?logo=travis)](https://travis-ci.org/editorconfig/editorconfig-vim)
+[![Appveyor Build Status](https://img.shields.io/appveyor/ci/cxw42/editorconfig-vim.svg?logo=appveyor)](https://ci.appveyor.com/project/cxw42/editorconfig-vim)
+
+This is an [EditorConfig][] plugin for Vim. This plugin can be found on both
+[GitHub][] and [Vim online][].
+
+## Installation
+
+To install this plugin, you can use one of the following ways:
+
+### Install with the archive
+
+Download the [archive][] and extract it into your Vim runtime directory
+(`~/.vim` on UNIX/Linux and `$VIM_INSTALLATION_FOLDER\vimfiles` on windows).
+You should have 4 sub-directories in this runtime directory now: "autoload",
+"doc", "ftdetect" and "plugin".
+
+### Install as Vim8 plugin
+
+Install as a Vim 8 plugin. Note `local` can be any name, but some path
+element must be present. On Windows, instead of `~/.vim` use
+`$VIM_INSTALLATION_FOLDER\vimfiles`.
+```shell
+mkdir -p ~/.vim/pack/local/start
+cd ~/.vim/pack/local/start
+git clone https://github.com/editorconfig/editorconfig-vim.git
+```
+
+### Install with [pathogen][]
+
+Use pathogen (the git repository of this plugin is
+https://github.com/editorconfig/editorconfig-vim.git)
+
+### Install with [Vundle][]
+
+Use Vundle by adding to your `.vimrc` Vundle plugins section:
+
+```viml
+Plugin 'editorconfig/editorconfig-vim'
+```
+
+Then call `:PluginInstall`.
+
+### Install with [vim-plug][]
+
+Use vim-plug by adding to your `.vimrc` in your plugin section:
+
+```viml
+Plug 'editorconfig/editorconfig-vim'
+```
+
+Source your `.vimrc` by calling `:source $MYVIMRC`.
+
+Then call `:PlugInstall`.
+
+### No external editorconfig core library is required
+
+Previous versions of this plugin also required a Python "core".
+The core included the code to parse `.editorconfig` files.
+This plugin **includes** the core, so you don't need to download the
+core separately.
+
+## Supported properties
+
+The EditorConfig Vim plugin supports the following EditorConfig [properties][]:
+
+* `indent_style`
+* `indent_size`
+* `tab_width`
+* `end_of_line`
+* `charset`
+* `insert_final_newline` (Feature `+fixendofline`, available on Vim 7.4.785+,
+  or [PreserveNoEOL][] is required for this property)
+* `trim_trailing_whitespace`
+* `max_line_length`
+* `root` (only used by EditorConfig core)
+
+## Selected Options
+
+The supported options are documented in [editorconfig.txt][]
+and can be viewed by executing the following: `:help editorconfig`. You may
+need to execute `:helptags ALL` so that Vim is aware of editorconfig.txt.
+
+### Excluded patterns
+
+To ensure that this plugin works well with [Tim Pope's fugitive][], use the
+following patterns array:
+
+```viml
+let g:EditorConfig_exclude_patterns = ['fugitive://.*']
+```
+
+If you wanted to avoid loading EditorConfig for any remote files over ssh:
+
+```viml
+let g:EditorConfig_exclude_patterns = ['scp://.*']
+```
+
+Of course these two items could be combined into the following:
+
+```viml
+let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*']
+```
+
+### Disable for a specific filetype
+
+You can disable this plugin for a specific buffer by setting
+`b:EditorConfig_disable`.  Therefore, you can disable the
+plugin for all buffers of a specific filetype. For example, to disable
+EditorConfig for all git commit messages (filetype `gitcommit`):
+
+```viml
+au FileType gitcommit let b:EditorConfig_disable = 1
+```
+
+### Disable rules
+
+In very rare cases,
+you might need to override some project-specific EditorConfig rules in global
+or local vimrc in some cases, e.g., to resolve conflicts of trailing whitespace
+trimming and buffer autosaving.  This is not recommended, but you can:
+
+```viml
+let g:EditorConfig_disable_rules = ['trim_trailing_whitespace']
+```
+
+You are able to disable any supported EditorConfig properties.
+
+## Bugs and Feature Requests
+
+Feel free to submit bugs, feature requests, and other issues to the
+[issue tracker][]. Be sure you have read the [contribution guidelines][]!
+
+[EditorConfig]: http://editorconfig.org
+[GitHub]: https://github.com/editorconfig/editorconfig-vim
+[PreserveNoEOL]: http://www.vim.org/scripts/script.php?script_id=4550
+[Tim Pope's fugitive]: https://github.com/tpope/vim-fugitive
+[Vim online]: http://www.vim.org/scripts/script.php?script_id=3934
+[Vundle]: https://github.com/gmarik/Vundle.vim
+[archive]: https://github.com/editorconfig/editorconfig-vim/archive/master.zip
+[contribution guidelines]: https://github.com/editorconfig/editorconfig/blob/master/CONTRIBUTING.md#submitting-an-issue
+[issue tracker]: https://github.com/editorconfig/editorconfig-vim/issues
+[pathogen]: https://github.com/tpope/vim-pathogen
+[properties]: http://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties
+[editorconfig.txt]: https://github.com/editorconfig/editorconfig-vim/blob/master/doc/editorconfig.txt
+[vim-plug]: https://github.com/junegunn/vim-plug
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig.vim
@@ -0,0 +1,60 @@
+" autoload/editorconfig.vim: EditorConfig native Vimscript plugin
+" Copyright (c) 2011-2019 EditorConfig Team
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+"    this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+"    this list of conditions and the following disclaimer in the documentation
+"    and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE.
+"
+
+if v:version < 700
+    finish
+endif
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" {{{1 variables
+let s:hook_list = []
+
+function! editorconfig#AddNewHook(func) " {{{1
+    " Add a new hook
+
+    call add(s:hook_list, a:func)
+endfunction
+
+function! editorconfig#ApplyHooks(config) abort " {{{1
+    " apply hooks
+
+    for Hook in s:hook_list
+        let l:hook_ret = Hook(a:config)
+
+        if type(l:hook_ret) != type(0) && l:hook_ret != 0
+            " TODO print some debug info here
+        endif
+    endfor
+endfunction
+
+" }}}
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vim: fdm=marker fdc=3
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core.vim
@@ -0,0 +1,147 @@
+" autoload/editorconfig_core.vim: top-level functions for
+" editorconfig-core-vimscript and editorconfig-vim.
+
+" Copyright (c) 2018-2020 EditorConfig Team, including Chris White {{{1
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+"    this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+"    this list of conditions and the following disclaimer in the documentation
+"    and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE. }}}1
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" Variables {{{1
+
+" Note: we create this variable in every script that accesses it.  Normally, I
+" would put this in plugin/editorconfig.vim.  However, in some of my tests,
+" the command-line testing environment did not load plugin/* in the normal
+" way.  Therefore, I do the check everywhere so I don't have to special-case
+" the command line.
+
+if !exists('g:editorconfig_core_vimscript_debug')
+    let g:editorconfig_core_vimscript_debug = 0
+endif
+" }}}1
+
+" The latest version of the specification that we support.
+" See discussion at https://github.com/editorconfig/editorconfig/issues/395
+function! editorconfig_core#version()
+    return [0,13,0]
+endfunction
+
+" === CLI =============================================================== {{{1
+
+" For use from the command line.  Output settings for in_name to
+" the buffer named out_name.  If an optional argument is provided, it is the
+" name of the config file to use (default '.editorconfig').
+" TODO support multiple files
+"
+" filename (if any)
+" @param names  {Dictionary}    The names of the files to use for this run
+"   - output    [required]  Where the editorconfig settings should be written
+"   - target    [required]  A string or list of strings to process.  Each
+"                           must be a full path.
+"   - dump      [optional]  If present, write debug info to this file
+" @param job    {Dictionary}    What to do - same format as the input of
+"                               editorconfig_core#handler#get_configurations(),
+"                               except without the target member.
+
+function! editorconfig_core#currbuf_cli(names, job) " out_name, in_name, ...
+    let l:output = []
+
+    " Preprocess the job
+    let l:job = deepcopy(a:job)
+
+    if has_key(l:job, 'version')    " string to list
+        let l:ver = split(editorconfig_core#util#strip(l:job.version), '\v\.')
+        for l:idx in range(len(l:ver))
+            let l:ver[l:idx] = str2nr(l:ver[l:idx])
+        endfor
+
+        let l:job.version = l:ver
+    endif
+
+    " TODO provide version output from here instead of the shell script
+"    if string(a:names) ==? 'version'
+"        return
+"    endif
+"
+    if type(a:names) != type({}) || type(a:job) != type({})
+        throw 'Need two Dictionary arguments'
+    endif
+
+    if has_key(a:names, 'dump')
+        execute 'redir! > ' . fnameescape(a:names.dump)
+        echom 'Names: ' . string(a:names)
+        echom 'Job: ' . string(l:job)
+        let g:editorconfig_core_vimscript_debug = 1
+    endif
+
+    if type(a:names['target']) == type([])
+        let l:targets = a:names.target
+    else
+        let l:targets = [a:names.target]
+    endif
+
+    for l:target in l:targets
+
+        " Pre-process quoting weirdness so we are more flexible in the face
+        " of CMake+CTest+BAT+Powershell quoting.
+
+        " Permit wrapping in double-quotes
+        let l:target = substitute(l:target, '\v^"(.*)"$', '\1', '')
+
+        " Permit empty ('') entries in l:targets
+        if strlen(l:target)<1
+            continue
+        endif
+
+        if has_key(a:names, 'dump')
+            echom 'Trying: ' . string(l:target)
+        endif
+
+        let l:job.target = l:target
+        let l:options = editorconfig_core#handler#get_configurations(l:job)
+
+        if has_key(a:names, 'dump')
+            echom 'editorconfig_core#currbuf_cli result: ' . string(l:options)
+        endif
+
+        if len(l:targets) > 1
+            let l:output += [ '[' . l:target . ']' ]
+        endif
+
+        for [ l:key, l:value ] in items(l:options)
+            let l:output += [ l:key . '=' . l:value ]
+        endfor
+
+    endfor "foreach target
+
+    " Write the output file
+    call writefile(l:output, a:names.output)
+endfunction "editorconfig_core#currbuf_cli
+
+" }}}1
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vi: set fdm=marker fo-=ro:
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/fnmatch.vim
@@ -0,0 +1,467 @@
+" autoload/editorconfig_core/fnmatch.vim: Globbing for
+" editorconfig-vim.  Ported from the Python core's fnmatch.py.
+
+" Copyright (c) 2012-2019 EditorConfig Team {{{1
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+"    this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+"    this list of conditions and the following disclaimer in the documentation
+"    and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE. }}}1
+
+"Filename matching with shell patterns.
+"
+"fnmatch(FILENAME, PATH, PATTERN) matches according to the local convention.
+"fnmatchcase(FILENAME, PATH, PATTERN) always takes case in account.
+"
+"The functions operate by translating the pattern into a regular
+"expression.  They cache the compiled regular expressions for speed.
+"
+"The function translate(PATTERN) returns a regular expression
+"corresponding to PATTERN.  (It does not compile it.)
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" variables {{{1
+if !exists('g:editorconfig_core_vimscript_debug')
+    let g:editorconfig_core_vimscript_debug = 0
+endif
+" }}}1
+" === Regexes =========================================================== {{{1
+let s:LEFT_BRACE = '\v[\\]@8<!\{'
+" 8 is an arbitrary byte-count limit to the lookbehind (micro-optimization)
+"LEFT_BRACE = re.compile(
+"    r"""
+"
+"    (?<! \\ ) # Not preceded by "\"
+"
+"    \{                  # "{"
+"
+"    """, re.VERBOSE
+")
+
+let s:RIGHT_BRACE = '\v[\\]@8<!\}'
+" 8 is an arbitrary byte-count limit to the lookbehind (micro-optimization)
+"RIGHT_BRACE = re.compile(
+"    r"""
+"
+"    (?<! \\ ) # Not preceded by "\"
+"
+"    \}                  # "}"
+"
+"    """, re.VERBOSE
+")
+
+let s:NUMERIC_RANGE = '\v([+-]?\d+)' . '\.\.' . '([+-]?\d+)'
+"NUMERIC_RANGE = re.compile(
+"    r"""
+"    (               # Capture a number
+"        [+-] ?      # Zero or one "+" or "-" characters
+"        \d +        # One or more digits
+"    )
+"
+"    \.\.            # ".."
+"
+"    (               # Capture a number
+"        [+-] ?      # Zero or one "+" or "-" characters
+"        \d +        # One or more digits
+"    )
+"    """, re.VERBOSE
+")
+
+" }}}1
+" === Internal functions ================================================ {{{1
+
+" Dump the bytes of a:text.  For debugging use.
+function! s:dump_bytes(text)
+    let l:idx=0
+    while l:idx < strlen(a:text)
+        let l:byte_val = char2nr(a:text[l:idx])
+        echom printf('%10s%-5d%02x %s', '', l:idx, l:byte_val,
+            \ a:text[l:idx])
+        let l:idx+=1
+    endwhile
+endfunction "s:dump_bytes
+
+" Dump the characters of a:text and their codepoints.  For debugging use.
+function! s:dump_chars(text)
+    let l:chars = split(a:text, '\zs')
+    let l:idx = 0
+    let l:out1 = ''
+    let l:out2 = ''
+    while l:idx < len(l:chars)
+        let l:char = l:chars[l:idx]
+        let l:out1 .= printf('%5s', l:char)
+        let l:out2 .= printf('%5x', char2nr(l:char))
+        let l:idx+=1
+    endwhile
+
+    echom l:out1
+    echom l:out2
+endfunction "s:dump_chars
+
+" }}}1
+" === Translating globs to patterns ===================================== {{{1
+
+" Used by s:re_escape: backslash-escape any character below U+0080;
+" replace all others with a %U escape.
+" See https://vi.stackexchange.com/a/19617/1430 by yours truly
+" (https://vi.stackexchange.com/users/1430/cxw).
+unlockvar s:replacement_expr
+let s:replacement_expr =
+    \ '\=' .
+    \ '((char2nr(submatch(1)) >= 128) ? ' .
+    \       'printf("%%U%08x", char2nr(submatch(1))) : ' .
+    \       '("\\" . submatch(1))' .
+    \ ')'
+lockvar s:replacement_expr
+
+" Escaper for very-magic regexes
+function! s:re_escape(text)
+    return substitute(a:text, '\v([^0-9a-zA-Z_])', s:replacement_expr, 'g')
+endfunction
+
+"def translate(pat, nested=0):
+"    Translate a shell PATTERN to a regular expression.
+"    There is no way to quote meta-characters.
+function! editorconfig_core#fnmatch#translate(pat, ...)
+    let l:nested = 0
+    if a:0
+        let l:nested = a:1
+    endif
+
+    if g:editorconfig_core_vimscript_debug
+        echom '- fnmatch#translate: pattern ' . a:pat
+        echom printf(
+            \ '- %d chars', strlen(substitute(a:pat, ".", "x", "g")))
+        call s:dump_chars(a:pat)
+    endif
+
+    let l:pat = a:pat   " TODO remove if we wind up not needing this
+
+    " Note: the Python sets MULTILINE and DOTALL, but Vim has \_.
+    " instead of DOTALL, and \_^ / \_$ instead of MULTILINE.
+
+    let l:is_escaped = 0
+
+    " Find out whether the pattern has balanced braces.
+    let l:left_braces=[]
+    let l:right_braces=[]
+    call substitute(l:pat, s:LEFT_BRACE, '\=add(l:left_braces, 1)', 'g')
+    call substitute(l:pat, s:RIGHT_BRACE, '\=add(l:right_braces, 1)', 'g')
+    " Thanks to http://jeromebelleman.gitlab.io/posts/productivity/vimsub/
+    let l:matching_braces = (len(l:left_braces) == len(l:right_braces))
+
+    " Unicode support (#2).  Indexing l:pat[l:index] returns bytes, per
+    " https://github.com/neovim/neovim/issues/68#issue-28114985 .
+    " Instead, use split() per vimdoc to break the input string into an
+    " array of *characters*, and process that.
+    let l:characters = split(l:pat, '\zs')
+
+    let l:index = 0     " character index
+    let l:length = len(l:characters)
+    let l:brace_level = 0
+    let l:in_brackets = 0
+
+    let l:result = ''
+    let l:numeric_groups = []
+    while l:index < l:length
+        let l:current_char = l:characters[l:index]
+        let l:index += 1
+
+"         if g:editorconfig_core_vimscript_debug
+"             echom ' - fnmatch#translate: ' . l:current_char . '@' .
+"                 \ (l:index-1) . '; result ' . l:result
+"         endif
+
+        if l:current_char ==# '*'
+            let l:pos = l:index
+            if l:pos < l:length && l:characters[l:pos] ==# '*'
+                let l:result .= '\_.*'
+                let l:index += 1    " skip the second star
+            else
+                let l:result .= '[^/]*'
+            endif
+
+        elseif l:current_char ==# '?'
+            let l:result .= '\_[^/]'
+
+        elseif l:current_char ==# '['
+            if l:in_brackets
+                let l:result .= '\['
+            else
+                let l:pos = l:index
+                let l:has_slash = 0
+                while l:pos < l:length && l:characters[l:pos] != ']'
+                    if l:characters[l:pos] ==# '/' && l:characters[l:pos-1] !=# '\'
+                        let has_slash = 1
+                        break
+                    endif
+                    let l:pos += 1
+                endwhile
+                if l:has_slash
+                    " POSIX IEEE 1003.1-2017 sec. 2.13.3: '/' cannot occur
+                    " in a bracket expression, so [/] matches a literal
+                    " three-character string '[' . '/' . ']'.
+                    let l:result .= '\['
+                        \ . s:re_escape(join(l:characters[l:index : l:pos-1], ''))
+                        \ . '\/'
+                        " escape the slash
+                    let l:index = l:pos + 1
+                        " resume after the slash
+                else
+                    if l:index < l:length && l:characters[l:index] =~# '\v%(\^|\!)'
+                        let l:index += 1
+                        let l:result .= '[^'
+                    else
+                        let l:result .= '['
+                    endif
+                    let l:in_brackets = 1
+                endif
+            endif
+
+        elseif l:current_char ==# '-'
+            if l:in_brackets
+                let l:result .= l:current_char
+            else
+                let l:result .= '\' . l:current_char
+            endif
+
+        elseif l:current_char ==# ']'
+            if l:in_brackets && !l:is_escaped
+                let l:result .= ']'
+                let l:in_brackets = 0
+            elseif l:is_escaped
+                let l:result .= '\]'
+                let l:is_escaped = 0
+            else
+                let l:result .= '\]'
+            endif
+
+        elseif l:current_char ==# '{'
+            let l:pos = l:index
+            let l:has_comma = 0
+            while l:pos < l:length && (l:characters[l:pos] !=# '}' || l:is_escaped)
+                if l:characters[l:pos] ==# ',' && ! l:is_escaped
+                    let l:has_comma = 1
+                    break
+                endif
+                let l:is_escaped = l:characters[l:pos] ==# '\' && ! l:is_escaped
+                let l:pos += 1
+            endwhile
+            if ! l:has_comma && l:pos < l:length
+                let l:num_range =
+                    \ matchlist(join(l:characters[l:index : l:pos-1], ''),
+                    \           s:NUMERIC_RANGE)
+                if len(l:num_range) > 0     " Remember the ranges
+                    call add(l:numeric_groups, [ 0+l:num_range[1], 0+l:num_range[2] ])
+                    let l:result .= '([+-]?\d+)'
+                else
+                    let l:inner_xlat = editorconfig_core#fnmatch#translate(
+                        \ join(l:characters[l:index : l:pos-1], ''), 1)
+                    let l:inner_result = l:inner_xlat[0]
+                    let l:inner_groups = l:inner_xlat[1]
+                    let l:result .= '\{' . l:inner_result . '\}'
+                    let l:numeric_groups += l:inner_groups
+                endif
+                let l:index = l:pos + 1
+            elseif l:matching_braces
+                let l:result .= '%('
+                let l:brace_level += 1
+            else
+                let l:result .= '\{'
+            endif
+
+        elseif l:current_char ==# ','
+            if l:brace_level > 0 && ! l:is_escaped
+                let l:result .= '|'
+            else
+                let l:result .= '\,'
+            endif
+
+        elseif l:current_char ==# '}'
+            if l:brace_level > 0 && ! l:is_escaped
+                let l:result .= ')'
+                let l:brace_level -= 1
+            else
+                let l:result .= '\}'
+            endif
+
+        elseif l:current_char ==# '/'
+            if join(l:characters[l:index : (l:index + 2)], '') ==# '**/'
+                let l:result .= '%(/|/\_.*/)'
+                let l:index += 3
+            else
+                let l:result .= '\/'
+            endif
+
+        elseif l:current_char != '\'
+            let l:result .= s:re_escape(l:current_char)
+        endif
+
+        if l:current_char ==# '\'
+            if l:is_escaped
+                let l:result .= s:re_escape(l:current_char)
+            endif
+            let l:is_escaped = ! l:is_escaped
+        else
+            let l:is_escaped = 0
+        endif
+
+    endwhile
+
+    if ! l:nested
+        let l:result .= '\_$'
+    endif
+
+    return [l:result, l:numeric_groups]
+endfunction " #editorconfig_core#fnmatch#translate
+
+let s:_cache = {}
+function! s:cached_translate(pat)
+    if ! has_key(s:_cache, a:pat)
+        "regex = re.compile(res)
+        let s:_cache[a:pat] =
+            \ editorconfig_core#fnmatch#translate(a:pat)
+            " we don't compile the regex
+    endif
+    return s:_cache[a:pat]
+endfunction " cached_translate
+
+" }}}1
+" === Matching functions ================================================ {{{1
+
+function! editorconfig_core#fnmatch#fnmatch(name, path, pattern)
+"def fnmatch(name, pat):
+"    """Test whether FILENAME matches PATH/PATTERN.
+"
+"    Patterns are Unix shell style:
+"
+"    - ``*``             matches everything except path separator
+"    - ``**``            matches everything
+"    - ``?``             matches any single character
+"    - ``[seq]``         matches any character in seq
+"    - ``[!seq]``        matches any char not in seq
+"    - ``{s1,s2,s3}``    matches any of the strings given (separated by commas)
+"
+"    An initial period in FILENAME is not special.
+"    Both FILENAME and PATTERN are first case-normalized
+"    if the operating system requires it.
+"    If you don't want this, use fnmatchcase(FILENAME, PATTERN).
+"    """
+"
+    " Note: This throws away the backslash in '\.txt' on Cygwin, but that
+    " makes sense since it's Windows under the hood.
+    " We don't care about shellslash since we're going to change backslashes
+    " to slashes in just a moment anyway.
+    let l:localname = fnamemodify(a:name, ':p')
+
+    if editorconfig_core#util#is_win()      " normalize
+        let l:localname = substitute(tolower(l:localname), '\v\\', '/', 'g')
+        let l:path = substitute(tolower(a:path), '\v\\', '/', 'g')
+        let l:pattern = tolower(a:pattern)
+    else
+        let l:localname = l:localname
+        let l:path = a:path
+        let l:pattern = a:pattern
+    endif
+
+    if g:editorconfig_core_vimscript_debug
+        echom '- fnmatch#fnmatch testing <' . l:localname . '> against <' .
+            \ l:pattern . '> wrt <' . l:path . '>'
+    endif
+
+    return editorconfig_core#fnmatch#fnmatchcase(l:localname, l:path, l:pattern)
+endfunction " fnmatch
+
+function! editorconfig_core#fnmatch#fnmatchcase(name, path, pattern)
+"def fnmatchcase(name, pat):
+"    """Test whether FILENAME matches PATH/PATTERN, including case.
+"
+"    This is a version of fnmatch() which doesn't case-normalize
+"    its arguments.
+"    """
+"
+    let [regex, num_groups] = s:cached_translate(a:pattern)
+
+    let l:escaped_path = s:re_escape(a:path)
+    let l:regex = '\v' . l:escaped_path . l:regex
+
+    if g:editorconfig_core_vimscript_debug
+        echom '- fnmatch#fnmatchcase: regex    ' . l:regex
+        call s:dump_chars(l:regex)
+        echom '- fnmatch#fnmatchcase: checking ' . a:name
+        call s:dump_chars(a:name)
+    endif
+
+    let l:match_groups = matchlist(a:name, l:regex)[1:]   " [0] = full match
+
+    if g:editorconfig_core_vimscript_debug
+        echom printf('  Got %d matches', len(l:match_groups))
+    endif
+
+    if len(l:match_groups) == 0
+        return 0
+    endif
+
+    " Check numeric ranges
+    let pattern_matched = 1
+    for l:idx in range(0,len(l:match_groups))
+        let l:num = l:match_groups[l:idx]
+        if l:num ==# ''
+            break
+        endif
+
+        let [min_num, max_num] = num_groups[l:idx]
+        if (min_num > (0+l:num)) || ((0+l:num) > max_num)
+            let pattern_matched = 0
+            break
+        endif
+
+        " Reject leading zeros without sign.  This is very odd ---
+        " see editorconfig/editorconfig#371.
+        if match(l:num, '\v^0') != -1
+            let pattern_matched = 0
+            break
+        endif
+    endfor
+
+    if g:editorconfig_core_vimscript_debug
+        echom '- fnmatch#fnmatchcase: ' . (pattern_matched ? 'matched' : 'did not match')
+    endif
+
+    return pattern_matched
+endfunction " fnmatchcase
+
+" }}}1
+" === Copyright notices ================================================= {{{1
+" Based on code from fnmatch.py file distributed with Python 2.6.
+" Portions Copyright (c) 2001-2010 Python Software Foundation;
+" All Rights Reserved.  Licensed under PSF License (see LICENSE.PSF file).
+"
+" Changes to original fnmatch:
+"
+" - translate function supports ``*`` and ``**`` similarly to fnmatch C library
+" }}}1
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vi: set fdm=marker:
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/handler.vim
@@ -0,0 +1,183 @@
+" autoload/editorconfig_core/handler.vim: Main worker for
+" editorconfig-core-vimscript and editorconfig-vim.
+" Modified from the Python core's handler.py.
+
+" Copyright (c) 2012-2019 EditorConfig Team {{{1
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+"    this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+"    this list of conditions and the following disclaimer in the documentation
+"    and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE. }}}1
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" Return full filepath for filename in each directory in and above path. {{{1
+" Input path must be an absolute path.
+" TODO shellslash/shellescape?
+function! s:get_filenames(path, config_filename)
+    let l:path = a:path
+    let l:path_list = []
+    while 1
+        call add(l:path_list, editorconfig_core#util#path_join(l:path, a:config_filename))
+        let l:newpath = fnamemodify(l:path, ':h')
+        if l:path ==? l:newpath || !strlen(l:path)
+            break
+        endif
+        let l:path = l:newpath
+    endwhile
+    return l:path_list
+endfunction " get_filenames
+
+" }}}1
+" === Main ============================================================== {{{1
+
+" Find EditorConfig files and return all options matching target_filename.
+" Throws on failure.
+" @param job    {Dictionary}    required 'target'; optional 'config' and 'version'
+function! editorconfig_core#handler#get_configurations(job)
+    " TODO? support VERSION checks?
+
+"    Special exceptions that may be raised by this function include:
+"    - ``VersionError``: self.version is invalid EditorConfig version
+"    - ``PathError``: self.filepath is not a valid absolute filepath
+"    - ``ParsingError``: improperly formatted EditorConfig file found
+
+    let l:job = deepcopy(a:job)
+    if has_key(l:job, 'config')
+        let l:config_filename = l:job.config
+    else
+        let l:config_filename = '.editorconfig'
+        let l:job.config = l:config_filename
+    endif
+
+    if has_key(l:job, 'version')
+        let l:version = l:job.version
+    else
+        let l:version = editorconfig_core#version()
+        let l:job.version = l:version
+    endif
+
+    let l:target_filename = l:job.target
+
+    "echom 'Beginning job ' . string(l:job)
+    if !s:check_assertions(l:job)
+        throw "Assertions failed"
+    endif
+
+    let l:fullpath = fnamemodify(l:target_filename,':p')
+    let l:path = fnamemodify(l:fullpath, ':h')
+    let l:conf_files = s:get_filenames(l:path, l:config_filename)
+
+    " echom 'fullpath ' . l:fullpath
+    " echom 'path ' . l:path
+
+    let l:retval = {}
+
+    " Attempt to find and parse every EditorConfig file in filetree
+    for l:conf_fn in l:conf_files
+        "echom 'Trying ' . l:conf_fn
+        let l:parsed = editorconfig_core#ini#read_ini_file(l:conf_fn, l:target_filename)
+        if !has_key(l:parsed, 'options')
+            continue
+        endif
+        " echom '  Has options'
+
+        " Merge new EditorConfig file's options into current options
+        let l:old_options = l:retval
+        let l:retval = l:parsed.options
+        " echom 'Old options ' . string(l:old_options)
+        " echom 'New options ' . string(l:retval)
+        call extend(l:retval, l:old_options, 'force')
+
+        " Stop parsing if parsed file has a ``root = true`` option
+        if l:parsed.root
+            break
+        endif
+    endfor
+
+    call s:preprocess_values(l:job, l:retval)
+    return l:retval
+endfunction " get_configurations
+
+function! s:check_assertions(job)
+" TODO
+"    """Raise error if filepath or version have invalid values"""
+
+"    # Raise ``PathError`` if filepath isn't an absolute path
+"    if not os.path.isabs(self.filepath):
+"        raise PathError("Input file must be a full path name.")
+
+    " Throw if version specified is greater than current
+    let l:v = a:job.version
+    let l:us = editorconfig_core#version()
+    " echom 'Comparing requested version ' . string(l:v) .
+    "     \ ' to our version ' . string(l:us)
+    if l:v[0] > l:us[0] || l:v[1] > l:us[1] || l:v[2] > l:us[2]
+        throw 'Required version ' . string(l:v) .
+                    \ ' is greater than the current version ' . string(l:us)
+    endif
+
+    return 1    " All OK if we got here
+endfunction " check_assertions
+
+" }}}1
+
+" Preprocess option values for consumption by plugins.  {{{1
+" Modifies its argument in place.
+function! s:preprocess_values(job, opts)
+
+    " Lowercase option value for certain options
+    for l:name in ['end_of_line', 'indent_style', 'indent_size',
+                \ 'insert_final_newline', 'trim_trailing_whitespace',
+                \ 'charset']
+        if has_key(a:opts, l:name)
+            let a:opts[l:name] = tolower(a:opts[l:name])
+        endif
+    endfor
+
+    " Set indent_size to "tab" if indent_size is unspecified and
+    " indent_style is set to "tab", provided we are at least v0.10.0.
+    if get(a:opts, 'indent_style', '') ==? "tab" &&
+                \ !has_key(a:opts, 'indent_size') &&
+                \ ( a:job.version[0]>0 || a:job.version[1] >=10 )
+        let a:opts['indent_size'] = 'tab'
+    endif
+
+    " Set tab_width to indent_size if indent_size is specified and
+    " tab_width is unspecified
+    if has_key(a:opts, 'indent_size') && !has_key(a:opts, 'tab_width') &&
+                \ get(a:opts, 'indent_size', '') !=? "tab"
+        let a:opts['tab_width'] = a:opts['indent_size']
+    endif
+
+    " Set indent_size to tab_width if indent_size is "tab"
+    if has_key(a:opts, 'indent_size') && has_key(a:opts, 'tab_width') &&
+                \ get(a:opts, 'indent_size', '') ==? "tab"
+        let a:opts['indent_size'] = a:opts['tab_width']
+    endif
+endfunction " preprocess_values
+
+" }}}1
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vi: set fdm=marker fdl=1:
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/ini.vim
@@ -0,0 +1,264 @@
+" autoload/editorconfig_core/ini.vim: Config-file parser for
+" editorconfig-core-vimscript and editorconfig-vim.
+" Modifed from the Python core's ini.py.
+
+" Copyright (c) 2012-2019 EditorConfig Team {{{2
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+"    this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+"    this list of conditions and the following disclaimer in the documentation
+"    and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE. }}}2
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" variables {{{2
+if !exists('g:editorconfig_core_vimscript_debug')
+    let g:editorconfig_core_vimscript_debug = 0
+endif
+" }}}2
+" === Constants, including regexes ====================================== {{{2
+" Regular expressions for parsing section headers and options.
+" Allow ``]`` and escaped ``;`` and ``#`` characters in section headers.
+" In fact, allow \ to escape any single character - it needs to cover at
+" least \ * ? [ ! ] { }.
+unlockvar s:SECTCRE s:OPTCRE s:MAX_SECTION_NAME s:MAX_PROPERTY_NAME s:MAX_PROPERTY_VALUE
+let s:SECTCRE = '\v^\s*\[(%([^\\#;]|\\.)+)\]'
+
+" Regular expression for parsing option name/values.
+" Allow any amount of whitespaces, followed by separator
+" (either ``:`` or ``=``), followed by any amount of whitespace and then
+" any characters to eol
+let s:OPTCRE = '\v\s*([^:=[:space:]][^:=]*)\s*([:=])\s*(.*)$'
+
+let s:MAX_SECTION_NAME = 4096
+let s:MAX_PROPERTY_NAME = 1024
+let s:MAX_PROPERTY_VALUE = 4096
+
+lockvar s:SECTCRE s:OPTCRE s:MAX_SECTION_NAME s:MAX_PROPERTY_NAME s:MAX_PROPERTY_VALUE
+
+" }}}2
+" === Main ============================================================== {{{1
+
+" Read \p config_filename and return the options applicable to
+" \p target_filename.  This is the main entry point in this file.
+function! editorconfig_core#ini#read_ini_file(config_filename, target_filename)
+    if !filereadable(a:config_filename)
+        return {}
+    endif
+
+    try
+        let l:lines = readfile(a:config_filename)
+        if &encoding !=? 'utf-8'
+            " strip BOM
+            if len(l:lines) > 0 && l:lines[0][:2] ==# "\xEF\xBB\xBF"
+                let l:lines[0] = l:lines[0][3:]
+            endif
+            " convert from UTF-8 to 'encoding'
+            call map(l:lines, 'iconv(v:val, "utf-8", &encoding)')
+        endif
+        let result = s:parse(a:config_filename, a:target_filename, l:lines)
+    catch
+        " rethrow, but with a prefix since throw 'Vim...' fails.
+        throw 'Could not read editorconfig file at ' . v:throwpoint . ': ' . string(v:exception)
+    endtry
+
+    return result
+endfunction
+
+function! s:parse(config_filename, target_filename, lines)
+"    Parse a sectioned setup file.
+"    The sections in setup file contains a title line at the top,
+"    indicated by a name in square brackets (`[]'), plus key/value
+"    options lines, indicated by `name: value' format lines.
+"    Continuations are represented by an embedded newline then
+"    leading whitespace.  Blank lines, lines beginning with a '#',
+"    and just about everything else are ignored.
+
+    let l:in_section = 0
+    let l:matching_section = 0
+    let l:optname = ''
+    let l:lineno = 0
+    let l:e = []    " Errors, if any
+
+    let l:options = {}  " Options applicable to this file
+    let l:is_root = 0   " Whether a:config_filename declares root=true
+
+    while 1
+        if l:lineno == len(a:lines)
+            break
+        endif
+
+        let l:line = a:lines[l:lineno]
+        let l:lineno = l:lineno + 1
+
+        " comment or blank line?
+        if editorconfig_core#util#strip(l:line) ==# ''
+            continue
+        endif
+        if l:line =~# '\v^[#;]'
+            continue
+        endif
+
+        " is it a section header?
+        if g:editorconfig_core_vimscript_debug
+            echom "Header? <" . l:line . ">"
+        endif
+
+        let l:mo = matchlist(l:line, s:SECTCRE)
+        if len(l:mo)
+            let l:sectname = l:mo[1]
+            let l:in_section = 1
+            if strlen(l:sectname) > s:MAX_SECTION_NAME
+                " Section name too long => ignore the section
+                let l:matching_section = 0
+            else
+                let l:matching_section = s:matches_filename(
+                    \ a:config_filename, a:target_filename, l:sectname)
+            endif
+
+            if g:editorconfig_core_vimscript_debug
+                echom 'In section ' . l:sectname . ', which ' .
+                    \ (l:matching_section ? 'matches' : 'does not match')
+                    \ ' file ' . a:target_filename . ' (config ' .
+                    \ a:config_filename . ')'
+            endif
+
+            " So sections can't start with a continuation line
+            let l:optname = ''
+
+        " Is it an option line?
+        else
+            let l:mo = matchlist(l:line, s:OPTCRE)
+            if len(l:mo)
+                let l:optname = mo[1]
+                let l:optval = mo[3]
+
+                if g:editorconfig_core_vimscript_debug
+                    echom printf('Saw raw opt <%s>=<%s>', l:optname, l:optval)
+                endif
+
+                let l:optval = editorconfig_core#util#strip(l:optval)
+                " allow empty values
+                if l:optval ==? '""'
+                    let l:optval = ''
+                endif
+                let l:optname = s:optionxform(l:optname)
+                if !l:in_section && optname ==? 'root'
+                    let l:is_root = (optval ==? 'true')
+                endif
+                if g:editorconfig_core_vimscript_debug
+                    echom printf('Saw opt <%s>=<%s>', l:optname, l:optval)
+                endif
+
+                if l:matching_section &&
+                            \ strlen(l:optname) <= s:MAX_PROPERTY_NAME &&
+                            \ strlen(l:optval) <= s:MAX_PROPERTY_VALUE
+                    let l:options[l:optname] = l:optval
+                endif
+            else
+                " a non-fatal parsing error occurred.  set up the
+                " exception but keep going. the exception will be
+                " raised at the end of the file and will contain a
+                " list of all bogus lines
+                call add(e, "Parse error in '" . a:config_filename . "' at line " .
+                    \ l:lineno . ": '" . l:line . "'")
+            endif
+        endif
+    endwhile
+
+    " if any parsing errors occurred, raise an exception
+    if len(l:e)
+        throw string(l:e)
+    endif
+
+    return {'root': l:is_root, 'options': l:options}
+endfunction!
+
+" }}}1
+" === Helpers =========================================================== {{{1
+
+" Preprocess option names
+function! s:optionxform(optionstr)
+    let l:result = substitute(a:optionstr, '\v\s+$', '', 'g')   " rstrip
+    return tolower(l:result)
+endfunction
+
+" Return true if \p glob matches \p target_filename
+function! s:matches_filename(config_filename, target_filename, glob)
+"    config_dirname = normpath(dirname(config_filename)).replace(sep, '/')
+    let l:config_dirname = fnamemodify(a:config_filename, ':p:h') . '/'
+
+    if editorconfig_core#util#is_win()
+        " Regardless of whether shellslash is set, make everything slashes
+        let l:config_dirname =
+                \ tolower(substitute(l:config_dirname, '\v\\', '/', 'g'))
+    endif
+
+    let l:glob = substitute(a:glob, '\v\\([#;])', '\1', 'g')
+
+    " Take account of the path to the editorconfig file.
+    " editorconfig-core-c/src/lib/editorconfig.c says:
+    "  "Pattern would be: /dir/of/editorconfig/file[double_star]/[section] if
+    "   section does not contain '/', or /dir/of/editorconfig/file[section]
+    "   if section starts with a '/', or /dir/of/editorconfig/file/[section] if
+    "   section contains '/' but does not start with '/'."
+
+    if stridx(l:glob, '/') != -1    " contains a slash
+        if l:glob[0] ==# '/'
+            let l:glob = l:glob[1:]     " trim leading slash
+        endif
+" This will be done by fnmatch
+"        let l:glob = l:config_dirname . l:glob
+    else                            " does not contain a slash
+        let l:config_dirname = l:config_dirname[:-2]
+            " Trim trailing slash
+        let l:glob = '**/' . l:glob
+    endif
+
+    if g:editorconfig_core_vimscript_debug
+        echom '- ini#matches_filename: checking <' . a:target_filename .
+            \ '> against <' . l:glob . '> with respect to config file <' .
+            \ a:config_filename . '>'
+        echom '- ini#matches_filename: config_dirname is ' . l:config_dirname
+    endif
+
+    return editorconfig_core#fnmatch#fnmatch(a:target_filename,
+        \ l:config_dirname, l:glob)
+endfunction " matches_filename
+
+" }}}1
+" === Copyright notices ================================================= {{{2
+" Based on code from ConfigParser.py file distributed with Python 2.6.
+" Portions Copyright (c) 2001-2010 Python Software Foundation;
+" All Rights Reserved.  Licensed under PSF License (see LICENSE.PSF file).
+"
+" Changes to original ConfigParser:
+"
+" - Special characters can be used in section names
+" - Octothorpe can be used for comments (not just at beginning of line)
+" - Only track INI options in sections that match target filename
+" - Stop parsing files with when ``root = true`` is found
+" }}}2
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vi: set fdm=marker fdl=1:
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/util.vim
@@ -0,0 +1,84 @@
+" util.vim: part of editorconfig-core-vimscript and editorconfig-vim.
+" Copyright (c) 2018-2019 EditorConfig Team, including Chris White {{{1
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+"    this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+"    this list of conditions and the following disclaimer in the documentation
+"    and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE. }}}1
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" A verbatim copy of ingo#fs#path#Separator()  {{{1
+" from https://github.com/vim-scripts/ingo-library/blob/558132e2221db3af26dc2f2c6756d092d48a459f/autoload/ingo/fs/path.vim
+" distributed under the Vim license.
+function! editorconfig_core#util#Separator()
+    return (exists('+shellslash') && ! &shellslash ? '\' : '/')
+endfunction " }}}1
+
+" path_join(): ('a','b')->'a/b'; ('a/','b')->'a/b'. {{{1
+function! editorconfig_core#util#path_join(a, b)
+    " TODO shellescape/shellslash?
+    "echom 'Joining <' . a:a . '> and <' . a:b . '>'
+    "echom 'Length is ' . strlen(a:a)
+    "echom 'Last char is ' . char2nr(a:a[-1])
+    if a:a !~# '\v%(\/|\\)$'
+        return a:a . editorconfig_core#util#Separator() . a:b
+    else
+        return a:a . a:b
+    endif
+endfunction " }}}1
+
+" is_win() by xolox {{{1
+" The following function is modified from
+" https://github.com/xolox/vim-misc/blob/master/autoload/xolox/misc/os.vim
+" Copyright (c) 2015 Peter Odding <peter@peterodding.com>
+"
+" Permission is hereby granted, free of charge, to any person obtaining a copy
+" of this software and associated documentation files (the "Software"), to deal
+" in the Software without restriction, including without limitation the rights
+" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+" copies of the Software, and to permit persons to whom the Software is
+" furnished to do so, subject to the following conditions:
+"
+" The above copyright notice and this permission notice shall be included in all
+" copies or substantial portions of the Software.
+"
+" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+" SOFTWARE.
+function! editorconfig_core#util#is_win()
+    " Returns 1 (true) when on Microsoft Windows, 0 (false) otherwise.
+    return has('win16') || has('win32') || has('win64')
+endfunction " }}}1
+
+" strip() {{{1
+function! editorconfig_core#util#strip(s)
+    return substitute(a:s, '\v^\s+|\s+$','','g')
+endfunction " }}}1
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vi: set fdm=marker:
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/doc/editorconfig.txt
@@ -0,0 +1,233 @@
+*editorconfig.txt*   EditorConfig plugin for Vim
+
+File: editorconfig.txt
+Version: 1.1.1
+Maintainer: EditorConfig Team <http://editorconfig.org>
+Description: EditorConfig vim plugin
+
+License:
+   Copyright (c) 2011-2019 EditorConfig Team
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+   1. Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+   2. Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGE.
+
+
+CONTENTS~
+                                            *editorconfig-contents*
+----------------------------------------------------------------------------
+1.  Overview                                 |editorconfig-overview|
+2.  Installation                             |editorconfig-installation|
+3.  Commands                                 |editorconfig-commands|
+4.  Settings                                 |editorconfig-settings|
+5.  Advanced                                 |editorconfig-advanced|
+
+
+OVERVIEW~
+                                            *editorconfig-overview*
+----------------------------------------------------------------------------
+This is the EditorConfig plugin for vim.
+
+
+INSTALLATION~
+                                            *editorconfig-installation*
+----------------------------------------------------------------------------
+Follow the instructions in the README.md file to install this plugin.
+
+COMMANDS~
+                                            *editorconfig-commands*
+----------------------------------------------------------------------------
+
+                                            *:EditorConfigReload*
+Command:
+    :EditorConfigReload
+
+Reload the EditorConfig conf files. When `.editorconfig` files are modified,
+this command could prevent you to reload the current edited file to load the
+new configuration.
+
+SETTINGS~
+                                            *editorconfig-settings*
+----------------------------------------------------------------------------
+                                            *g:EditorConfig_core_mode*
+Specify the mode of EditorConfig core. Generally it is OK to leave this option
+empty. Currently, the supported modes are "vim_core" (default) and
+"external_command".
+
+    vim_core:           Use the included VimScript EditorConfig Core.
+    external_command:   Run external EditorConfig Core.
+
+If "g:EditorConfig_core_mode" is not specified, this plugin will automatically
+choose "vim_core".
+
+If you choose "external_command" mode, you must also set
+|g:EditorConfig_exec_path|.
+
+Changes to "g:EditorConfig_core_mode" will not take effect until Vim
+is restarted.
+
+                                            *b:EditorConfig_disable*
+This is a buffer-local variable that disables the EditorConfig plugin for a
+single buffer.
+
+Example: Disable EditorConfig for the current buffer:
+>
+ let b:EditorConfig_disable = 1
+<
+Example: Disable EditorConfig for all git commit messages:
+>
+ au FileType gitcommit let b:EditorConfig_disable = 1
+<
+
+                                            *g:EditorConfig_exclude_patterns*
+This is a list contains file path patterns which will be ignored by
+EditorConfig plugin. When the path of the opened buffer (i.e.
+"expand('%:p')") matches any of the patterns in the list, EditorConfig will
+not load for this file. The default is an empty list.
+
+Example: Avoid loading EditorConfig for any remote files over ssh
+>
+ let g:EditorConfig_exclude_patterns = ['scp://.*']
+<
+
+                                            *g:EditorConfig_exec_path*
+The file path to the EditorConfig core executable. You can set this value in
+your |vimrc| like this:
+>
+ let g:EditorConfig_exec_path = 'Path to your EditorConfig Core executable'
+<
+The default value is empty.
+
+If "g:EditorConfig_exec_path" is not set, the plugin will use the "vim_core"
+mode regardless of the setting of |g:EditorConfig_core_mode|.
+
+Changes to "g:EditorConfig_exec_path" will not take effect until Vim
+is restarted.
+
+                                            *g:EditorConfig_max_line_indicator*
+The way to show the line where the maximal length is reached. Accepted values
+are "line", "fill", "exceeding" and "fillexceeding", otherwise there will be
+no max line indicator.
+
+    "line":          the right column of the max line length column will be
+                     highlighted on all lines, by adding +1 to 'colorcolumn'.
+
+    "fill":          all the columns to the right of the max line length
+                     column will be highlighted on all lines, by setting
+                     'colorcolumn' to a list starting from "max_line_length +
+                     1" to the number of columns on the screen.
+
+    "exceeding":     the right column of the max line length column will be
+                     highlighted on lines that exceed the max line length, by
+                     adding a match for the ColorColumn group.
+
+    "fillexceeding": all the columns to the right of the max line length
+                     column will be highlighted on lines that exceed the max
+                     line length, by adding a match for the ColorColumn group.
+
+    "none":          no max line length indicator will be shown. Recommended
+                     when you do not want any indicator to be shown, but any
+                     value other than those listed above also work as "none".
+
+To set this option, add any of the following lines to your |vimrc| file:
+>
+ let g:EditorConfig_max_line_indicator = "line"
+ let g:EditorConfig_max_line_indicator = "fill"
+ let g:EditorConfig_max_line_indicator = "exceeding"
+ let g:EditorConfig_max_line_indicator = "fillexceeding"
+ let g:EditorConfig_max_line_indicator = "none"
+<
+The default value is "line".
+
+                                            *g:EditorConfig_enable_for_new_buf*
+Set this to 1 if you want EditorConfig plugin to set options
+for new empty buffers too.
+Path to .editorconfig will be determined based on CWD (see |getcwd()|)
+>
+ let g:EditorConfig_enable_for_new_buf = 1
+<
+This option defaults to 0.
+
+                                            *g:EditorConfig_preserve_formatoptions*
+Set this to 1 if you don't want your formatoptions modified when
+max_line_length is set:
+>
+ let g:EditorConfig_preserve_formatoptions = 1
+<
+This option defaults to 0.
+
+                                            *g:EditorConfig_softtabstop_space*
+When spaces are used for indent, Vim's 'softtabstop' feature will make the
+backspace key delete one indent level. If you turn off that feature (by
+setting the option to 0), only a single space will be deleted.
+This option defaults to 1, which enables 'softtabstop' and uses the
+'shiftwidth' value for it. You can also set this to -1 to automatically follow
+the current 'shiftwidth' value (since Vim 7.3.693). Or set this to [] if
+EditorConfig should not touch 'softtabstop' at all.
+
+                                            *g:EditorConfig_softtabstop_tab*
+When tabs are used for indent, Vim's 'softtabstop' feature only applies to
+backspacing over existing runs of spaces.
+This option defaults to 1, so backspace will delete one indent level worth of
+spaces; -1 does the same but automatically follows the current 'shiftwidth'
+value. Set this to 0 to have backspace delete just a single space character.
+Or set this to [] if EditorConfig should not touch 'softtabstop' at all.
+
+                                            *g:EditorConfig_verbose*
+Set this to 1 if you want debug info printed:
+>
+ let g:EditorConfig_verbose = 1
+<
+
+ADVANCED~
+                                            *editorconfig-advanced*
+----------------------------------------------------------------------------
+                                            *editorconfig-hook*
+                                            *EditorConfig#AddNewHook()*
+While this plugin offers several builtin supported properties (as mentioned
+here: https://github.com/editorconfig/editorconfig-vim#supported-properties),
+we are also able to add our own hooks to support additional EditorConfig
+properties, including those not in the EditorConfig standard. For example, we
+are working on an Objective-C project, and all our "*.m" files should be
+Objective-C source files. However, vim sometimes detect "*.m" files as MATLAB
+source files, which causes incorrect syntax highlighting, code indentation,
+etc. To solve the case, we could write the following code into the |vimrc|
+file:
+>
+ function! FiletypeHook(config)
+     if has_key(a:config, 'vim_filetype')
+         let &filetype = a:config['vim_filetype']
+     endif
+
+     return 0   " Return 0 to show no error happened
+ endfunction
+
+ call editorconfig#AddNewHook(function('FiletypeHook'))
+<
+And add the following code to your .editorconfig file:
+>
+ [*.m]
+ vim_filetype = objc
+<
+Then try to open an Objective-C file, you will find the |filetype| is set to
+"objc".
+
+vim:ft=help:tw=78
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/doc/tags
@@ -0,0 +1,20 @@
+:EditorConfigReload	editorconfig.txt	/*:EditorConfigReload*
+EditorConfig#AddNewHook()	editorconfig.txt	/*EditorConfig#AddNewHook()*
+b:EditorConfig_disable	editorconfig.txt	/*b:EditorConfig_disable*
+editorconfig-advanced	editorconfig.txt	/*editorconfig-advanced*
+editorconfig-commands	editorconfig.txt	/*editorconfig-commands*
+editorconfig-contents	editorconfig.txt	/*editorconfig-contents*
+editorconfig-hook	editorconfig.txt	/*editorconfig-hook*
+editorconfig-installation	editorconfig.txt	/*editorconfig-installation*
+editorconfig-overview	editorconfig.txt	/*editorconfig-overview*
+editorconfig-settings	editorconfig.txt	/*editorconfig-settings*
+editorconfig.txt	editorconfig.txt	/*editorconfig.txt*
+g:EditorConfig_core_mode	editorconfig.txt	/*g:EditorConfig_core_mode*
+g:EditorConfig_enable_for_new_buf	editorconfig.txt	/*g:EditorConfig_enable_for_new_buf*
+g:EditorConfig_exclude_patterns	editorconfig.txt	/*g:EditorConfig_exclude_patterns*
+g:EditorConfig_exec_path	editorconfig.txt	/*g:EditorConfig_exec_path*
+g:EditorConfig_max_line_indicator	editorconfig.txt	/*g:EditorConfig_max_line_indicator*
+g:EditorConfig_preserve_formatoptions	editorconfig.txt	/*g:EditorConfig_preserve_formatoptions*
+g:EditorConfig_softtabstop_space	editorconfig.txt	/*g:EditorConfig_softtabstop_space*
+g:EditorConfig_softtabstop_tab	editorconfig.txt	/*g:EditorConfig_softtabstop_tab*
+g:EditorConfig_verbose	editorconfig.txt	/*g:EditorConfig_verbose*
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/ftdetect/editorconfig.vim
@@ -0,0 +1,1 @@
+autocmd BufNewFile,BufRead .editorconfig setfiletype dosini
new file mode 100755
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/mkzip.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+zip -r editorconfig-vim-$*.zip autoload/* doc/* ftdetect/* plugin/*
new file mode 100644
--- /dev/null
+++ b/runtime/pack/dist/opt/editorconfig/plugin/editorconfig.vim
@@ -0,0 +1,614 @@
+" plugin/editorconfig.vim: EditorConfig native Vimscript plugin file
+" Copyright (c) 2011-2019 EditorConfig Team
+" All rights reserved.
+"
+" Redistribution and use in source and binary forms, with or without
+" modification, are permitted provided that the following conditions are met:
+"
+" 1. Redistributions of source code must retain the above copyright notice,
+"    this list of conditions and the following disclaimer.
+" 2. Redistributions in binary form must reproduce the above copyright notice,
+"    this list of conditions and the following disclaimer in the documentation
+"    and/or other materials provided with the distribution.
+"
+" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+" ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+" POSSIBILITY OF SUCH DAMAGE.
+"
+
+" check for Vim versions and duplicate script loading.
+if v:version < 700 || exists("g:loaded_EditorConfig")
+    finish
+endif
+let g:loaded_EditorConfig = 1
+
+let s:saved_cpo = &cpo
+set cpo&vim
+
+" variables {{{1
+
+" Make sure the globals all exist
+if !exists('g:EditorConfig_exec_path')
+    let g:EditorConfig_exec_path = ''
+endif
+
+if !exists('g:EditorConfig_verbose')
+    let g:EditorConfig_verbose = 0
+endif
+
+if !exists('g:EditorConfig_preserve_formatoptions')
+    let g:EditorConfig_preserve_formatoptions = 0
+endif
+
+if !exists('g:EditorConfig_max_line_indicator')
+    let g:EditorConfig_max_line_indicator = 'line'
+endif
+
+if !exists('g:EditorConfig_exclude_patterns')
+    let g:EditorConfig_exclude_patterns = []
+endif
+
+if !exists('g:EditorConfig_disable_rules')
+    let g:EditorConfig_disable_rules = []
+endif
+
+if !exists('g:EditorConfig_enable_for_new_buf')
+    let g:EditorConfig_enable_for_new_buf = 0
+endif
+
+if !exists('g:EditorConfig_softtabstop_space')
+    let g:EditorConfig_softtabstop_space = 1
+endif
+
+if !exists('g:EditorConfig_softtabstop_tab')
+    let g:EditorConfig_softtabstop_tab = 1
+endif
+
+" Copy some of the globals into script variables --- changes to these
+" globals won't affect the plugin until the plugin is reloaded.
+if exists('g:EditorConfig_core_mode') && !empty(g:EditorConfig_core_mode)
+    let s:editorconfig_core_mode = g:EditorConfig_core_mode
+else
+    let s:editorconfig_core_mode = ''
+endif
+
+if exists('g:EditorConfig_exec_path') && !empty(g:EditorConfig_exec_path)
+    let s:editorconfig_exec_path = g:EditorConfig_exec_path
+else
+    let s:editorconfig_exec_path = ''
+endif
+
+let s:initialized = 0
+
+" }}}1
+
+" shellslash handling {{{1
+function! s:DisableShellSlash(bufnr) " {{{2
+    " disable shellslash for proper escaping of Windows paths
+
+    " In Windows, 'shellslash' also changes the behavior of 'shellescape'.
+    " It makes 'shellescape' behave like in UNIX environment. So ':setl
+    " noshellslash' before evaluating 'shellescape' and restore the
+    " settings afterwards when 'shell' does not contain 'sh' somewhere.
+    let l:shell = getbufvar(a:bufnr, '&shell')
+    if has('win32') && empty(matchstr(l:shell, 'sh'))
+        let s:old_shellslash = getbufvar(a:bufnr, '&shellslash')
+        setbufvar(a:bufnr, '&shellslash', 0)
+    endif
+endfunction " }}}2
+
+function! s:ResetShellSlash(bufnr) " {{{2
+    " reset shellslash to the user-set value, if any
+    if exists('s:old_shellslash')
+        setbufvar(a:bufnr, '&shellslash', s:old_shellslash)
+        unlet! s:old_shellslash
+    endif
+endfunction " }}}2
+" }}}1
+
+" Mode initialization functions {{{1
+
+function! s:InitializeVimCore()
+" Initialize vim core.  Returns 1 on failure; 0 on success
+" At the moment, all we need to do is to check that it is installed.
+    try
+        let l:vim_core_ver = editorconfig_core#version()
+    catch
+        return 1
+    endtry
+    return 0
+endfunction
+
+function! s:InitializeExternalCommand()
+" Initialize external_command mode
+
+    if empty(s:editorconfig_exec_path)
+        echo 'Please specify a g:EditorConfig_exec_path'
+        return 1
+    endif
+
+    if g:EditorConfig_verbose
+        echo 'Checking for external command ' . s:editorconfig_exec_path . ' ...'
+    endif
+
+    if !executable(s:editorconfig_exec_path)
+        echo 'File ' . s:editorconfig_exec_path . ' is not executable.'
+        return 1
+    endif
+
+    return 0
+endfunction
+" }}}1
+
+function! s:Initialize() " Initialize the plugin.  {{{1
+    " Returns truthy on error, falsy on success.
+
+    if empty(s:editorconfig_core_mode)
+        let s:editorconfig_core_mode = 'vim_core'   " Default core choice
+    endif
+
+    if s:editorconfig_core_mode ==? 'external_command'
+        if s:InitializeExternalCommand()
+            echohl WarningMsg
+            echo 'EditorConfig: Failed to initialize external_command mode.  ' .
+                \ 'Falling back to vim_core mode.'
+            echohl None
+            let s:editorconfig_core_mode = 'vim_core'
+        endif
+    endif
+
+    if s:editorconfig_core_mode ==? 'vim_core'
+        if s:InitializeVimCore()
+            echohl ErrorMsg
+            echo 'EditorConfig: Failed to initialize vim_core mode.  ' .
+                \ 'The plugin will not function.'
+            echohl None
+            return 1
+        endif
+
+    elseif s:editorconfig_core_mode ==? 'external_command'
+        " Nothing to do here, but this elseif is required to avoid
+        " external_command falling into the else clause.
+
+    else    " neither external_command nor vim_core
+        echohl ErrorMsg
+        echo "EditorConfig: I don't know how to use mode " . s:editorconfig_core_mode
+        echohl None
+        return 1
+    endif
+
+    let s:initialized = 1
+    return 0
+endfunction " }}}1
+
+function! s:GetFilenames(path, filename) " {{{1
+" Yield full filepath for filename in each directory in and above path
+
+    let l:path_list = []
+    let l:path = a:path
+    while 1
+        let l:path_list += [l:path . '/' . a:filename]
+        let l:newpath = fnamemodify(l:path, ':h')
+        if l:path == l:newpath
+            break
+        endif
+        let l:path = l:newpath
+    endwhile
+    return l:path_list
+endfunction " }}}1
+
+function! s:UseConfigFiles(from_autocmd) abort " Apply config to the current buffer {{{1
+    " from_autocmd is truthy if called from an autocmd, falsy otherwise.
+
+    " Get the properties of the buffer we are working on
+    if a:from_autocmd
+        let l:bufnr = str2nr(expand('<abuf>'))
+        let l:buffer_name = expand('<afile>:p')
+        let l:buffer_path = expand('<afile>:p:h')
+    else
+        let l:bufnr = bufnr('%')
+        let l:buffer_name = expand('%:p')
+        let l:buffer_path = expand('%:p:h')
+    endif
+    call setbufvar(l:bufnr, 'editorconfig_tried', 1)
+
+    " Only process normal buffers (do not treat help files as '.txt' files)
+    " When starting Vim with a directory, the buftype might not yet be set:
+    " Therefore, also check if buffer_name is a directory.
+    if index(['', 'acwrite'], &buftype) == -1 || isdirectory(l:buffer_name)
+        return
+    endif
+
+    if empty(l:buffer_name)
+        if g:EditorConfig_enable_for_new_buf
+            let l:buffer_name = getcwd() . "/."
+        else
+            if g:EditorConfig_verbose
+                echo 'Skipping EditorConfig for unnamed buffer'
+            endif
+            return
+        endif
+    endif
+
+    if getbufvar(l:bufnr, 'EditorConfig_disable', 0)
+        if g:EditorConfig_verbose
+            echo 'EditorConfig disabled --- skipping buffer "' . l:buffer_name . '"'
+        endif
+        return
+    endif
+
+    " Ignore specific patterns
+    for pattern in g:EditorConfig_exclude_patterns
+        if l:buffer_name =~ pattern
+            if g:EditorConfig_verbose
+                echo 'Skipping EditorConfig for buffer "' . l:buffer_name .
+                    \ '" based on pattern "' . pattern . '"'
+            endif
+            return
+        endif
+    endfor
+
+    " Check if any .editorconfig does exist
+    let l:conf_files = s:GetFilenames(l:buffer_path, '.editorconfig')
+    let l:conf_found = 0
+    for conf_file in conf_files
+        if filereadable(conf_file)
+            let l:conf_found = 1
+            break
+        endif
+    endfor
+    if !l:conf_found
+        return
+    endif
+
+    if !s:initialized
+        if s:Initialize()
+            return
+        endif
+    endif
+
+    if g:EditorConfig_verbose
+        echo 'Applying EditorConfig ' . s:editorconfig_core_mode .
+            \ ' on file "' . l:buffer_name . '"'
+    endif
+
+    if s:editorconfig_core_mode ==? 'vim_core'
+        if s:UseConfigFiles_VimCore(l:bufnr, l:buffer_name) == 0
+            call setbufvar(l:bufnr, 'editorconfig_applied', 1)
+        endif
+    elseif s:editorconfig_core_mode ==? 'external_command'
+        call s:UseConfigFiles_ExternalCommand(l:bufnr, l:buffer_name)
+        call setbufvar(l:bufnr, 'editorconfig_applied', 1)
+    else
+        echohl Error |
+                    \ echo "Unknown EditorConfig Core: " .
+                    \ s:editorconfig_core_mode |
+                    \ echohl None
+    endif
+endfunction " }}}1
+
+" Custom commands, and autoloading {{{1
+
+" Autocommands, and function to enable/disable the plugin {{{2
+function! s:EditorConfigEnable(should_enable)
+    augroup editorconfig
+        autocmd!
+        if a:should_enable
+            autocmd BufNewFile,BufReadPost,BufFilePost * call s:UseConfigFiles(1)
+            autocmd VimEnter,BufNew * call s:UseConfigFiles(1)
+        endif
+    augroup END
+endfunction
+
+" }}}2
+
+" Commands {{{2
+command! EditorConfigEnable call s:EditorConfigEnable(1)
+command! EditorConfigDisable call s:EditorConfigEnable(0)
+
+command! EditorConfigReload call s:UseConfigFiles(0) " Reload EditorConfig files
+" }}}2
+
+" On startup, enable the autocommands
+call s:EditorConfigEnable(1)
+
+" }}}1
+
+" UseConfigFiles function for different modes {{{1
+
+function! s:UseConfigFiles_VimCore(bufnr, target)
+" Use the vimscript EditorConfig core
+    try
+        let l:config = editorconfig_core#handler#get_configurations(
+            \ { 'target': a:target } )
+        call s:ApplyConfig(a:bufnr, l:config)
+        return 0    " success
+    catch
+        return 1    " failure
+    endtry
+endfunction
+
+function! s:UseConfigFiles_ExternalCommand(bufnr, target)
+" Use external EditorConfig core (e.g., the C core)
+
+    call s:DisableShellSlash(a:bufnr)
+    let l:exec_path = shellescape(s:editorconfig_exec_path)
+    call s:ResetShellSlash(a:bufnr)
+
+    call s:SpawnExternalParser(a:bufnr, l:exec_path, a:target)
+endfunction
+
+function! s:SpawnExternalParser(bufnr, cmd, target) " {{{2
+" Spawn external EditorConfig. Used by s:UseConfigFiles_ExternalCommand()
+
+    let l:cmd = a:cmd
+
+    if empty(l:cmd)
+        throw 'No cmd provided'
+    endif
+
+    let l:config = {}
+
+    call s:DisableShellSlash(a:bufnr)
+    let l:cmd = l:cmd . ' ' . shellescape(a:target)
+    call s:ResetShellSlash(a:bufnr)
+
+    let l:parsing_result = split(system(l:cmd), '\v[\r\n]+')
+
+    " if editorconfig core's exit code is not zero, give out an error
+    " message
+    if v:shell_error != 0
+        echohl ErrorMsg
+        echo 'Failed to execute "' . l:cmd . '". Exit code: ' .
+                    \ v:shell_error
+        echo ''
+        echo 'Message:'
+        echo l:parsing_result
+        echohl None
+        return
+    endif
+
+    if g:EditorConfig_verbose
+        echo 'Output from EditorConfig core executable:'
+        echo l:parsing_result
+    endif
+
+    for one_line in l:parsing_result
+        let l:eq_pos = stridx(one_line, '=')
+
+        if l:eq_pos == -1 " = is not found. Skip this line
+            continue
+        endif
+
+        let l:eq_left = strpart(one_line, 0, l:eq_pos)
+        if l:eq_pos + 1 < strlen(one_line)
+            let l:eq_right = strpart(one_line, l:eq_pos + 1)
+        else
+            let l:eq_right = ''
+        endif
+
+        let l:config[l:eq_left] = l:eq_right
+    endfor
+
+    call s:ApplyConfig(a:bufnr, l:config)
+endfunction " }}}2
+
+" }}}1
+
+" Set the buffer options {{{1
+function! s:SetCharset(bufnr, charset) abort " apply config['charset']
+
+    " Remember the buffer's state so we can set `nomodifed` at the end
+    " if appropriate.
+    let l:orig_fenc = getbufvar(a:bufnr, "&fileencoding")
+    let l:orig_enc = getbufvar(a:bufnr, "&encoding")
+    let l:orig_modified = getbufvar(a:bufnr, "&modified")
+
+    if a:charset == "utf-8"
+        call setbufvar(a:bufnr, '&fileencoding', 'utf-8')
+        call setbufvar(a:bufnr, '&bomb', 0)
+    elseif a:charset == "utf-8-bom"
+        call setbufvar(a:bufnr, '&fileencoding', 'utf-8')
+        call setbufvar(a:bufnr, '&bomb', 1)
+    elseif a:charset == "latin1"
+        call setbufvar(a:bufnr, '&fileencoding', 'latin1')
+        call setbufvar(a:bufnr, '&bomb', 0)
+    elseif a:charset == "utf-16be"
+        call setbufvar(a:bufnr, '&fileencoding', 'utf-16be')
+        call setbufvar(a:bufnr, '&bomb', 1)
+    elseif a:charset == "utf-16le"
+        call setbufvar(a:bufnr, '&fileencoding', 'utf-16le')
+        call setbufvar(a:bufnr, '&bomb', 1)
+    endif
+
+    let l:new_fenc = getbufvar(a:bufnr, "&fileencoding")
+
+    " If all we did was change the fileencoding from the default to a copy
+    " of the default, we didn't actually modify the file.
+    if !l:orig_modified && (l:orig_fenc ==# '') && (l:new_fenc ==# l:orig_enc)
+        if g:EditorConfig_verbose
+            echo 'Setting nomodified on buffer ' . a:bufnr
+        endif
+        call setbufvar(a:bufnr, '&modified', 0)
+    endif
+endfunction
+
+function! s:ApplyConfig(bufnr, config) abort
+    if g:EditorConfig_verbose
+        echo 'Options: ' . string(a:config)
+    endif
+
+    if s:IsRuleActive('indent_style', a:config)
+        if a:config["indent_style"] == "tab"
+            call setbufvar(a:bufnr, '&expandtab', 0)
+        elseif a:config["indent_style"] == "space"
+            call setbufvar(a:bufnr, '&expandtab', 1)
+        endif
+    endif
+
+    if s:IsRuleActive('tab_width', a:config)
+        let l:tabstop = str2nr(a:config["tab_width"])
+        call setbufvar(a:bufnr, '&tabstop', l:tabstop)
+    else
+        " Grab the current ts so we can use it below
+        let l:tabstop = getbufvar(a:bufnr, '&tabstop')
+    endif
+
+    if s:IsRuleActive('indent_size', a:config)
+        " if indent_size is 'tab', set shiftwidth to tabstop;
+        " if indent_size is a positive integer, set shiftwidth to the integer
+        " value
+        if a:config["indent_size"] == "tab"
+            call setbufvar(a:bufnr, '&shiftwidth', l:tabstop)
+            if type(g:EditorConfig_softtabstop_tab) != type([])
+                call setbufvar(a:bufnr, '&softtabstop',
+                            \ g:EditorConfig_softtabstop_tab > 0 ?
+                            \ l:tabstop : g:EditorConfig_softtabstop_tab)
+            endif
+        else
+            let l:indent_size = str2nr(a:config["indent_size"])
+            if l:indent_size > 0
+                call setbufvar(a:bufnr, '&shiftwidth', l:indent_size)
+                if type(g:EditorConfig_softtabstop_space) != type([])
+                    call setbufvar(a:bufnr, '&softtabstop',
+                            \ g:EditorConfig_softtabstop_space > 0 ?
+                            \ l:indent_size : g:EditorConfig_softtabstop_space)
+                endif
+            endif
+        endif
+
+    endif
+
+    if s:IsRuleActive('end_of_line', a:config) &&
+                \ getbufvar(a:bufnr, '&modifiable')
+        if a:config["end_of_line"] == "lf"
+            call setbufvar(a:bufnr, '&fileformat', 'unix')
+        elseif a:config["end_of_line"] == "crlf"
+            call setbufvar(a:bufnr, '&fileformat', 'dos')
+        elseif a:config["end_of_line"] == "cr"
+            call setbufvar(a:bufnr, '&fileformat', 'mac')
+        endif
+    endif
+
+    if s:IsRuleActive('charset', a:config) &&
+                \ getbufvar(a:bufnr, '&modifiable')
+        call s:SetCharset(a:bufnr, a:config["charset"])
+    endif
+
+    augroup editorconfig_trim_trailing_whitespace
+        autocmd! BufWritePre <buffer>
+        if s:IsRuleActive('trim_trailing_whitespace', a:config) &&
+                    \ get(a:config, 'trim_trailing_whitespace', 'false') ==# 'true'
+            execute 'autocmd BufWritePre <buffer=' . a:bufnr . '> call s:TrimTrailingWhitespace()'
+        endif
+    augroup END
+
+    if s:IsRuleActive('insert_final_newline', a:config)
+        if exists('+fixendofline')
+            if a:config["insert_final_newline"] == "false"
+                call setbufvar(a:bufnr, '&fixendofline', 0)
+            else
+                call setbufvar(a:bufnr, '&fixendofline', 1)
+            endif
+        elseif  exists(':SetNoEOL') == 2
+            if a:config["insert_final_newline"] == "false"
+                silent! SetNoEOL    " Use the PreserveNoEOL plugin to accomplish it
+            endif
+        endif
+    endif
+
+    " highlight the columns following max_line_length
+    if s:IsRuleActive('max_line_length', a:config) &&
+                \ a:config['max_line_length'] != 'off'
+        let l:max_line_length = str2nr(a:config['max_line_length'])
+
+        if l:max_line_length >= 0
+            call setbufvar(a:bufnr, '&textwidth', l:max_line_length)
+            if g:EditorConfig_preserve_formatoptions == 0
+                " setlocal formatoptions+=tc
+                let l:fo = getbufvar(a:bufnr, '&formatoptions')
+                if l:fo !~# 't'
+                    let l:fo .= 't'
+                endif
+                if l:fo !~# 'c'
+                    let l:fo .= 'c'
+                endif
+                call setbufvar(a:bufnr, '&formatoptions', l:fo)
+            endif
+        endif
+
+        if exists('+colorcolumn')
+            if l:max_line_length > 0
+                if g:EditorConfig_max_line_indicator == 'line'
+                    " setlocal colorcolumn+=+1
+                    let l:cocol = getbufvar(a:bufnr, '&colorcolumn')
+                    if !empty(l:cocol)
+                        let l:cocol .= ','
+                    endif
+                    let l:cocol .= '+1'
+                    call setbufvar(a:bufnr, '&colorcolumn', l:cocol)
+                elseif g:EditorConfig_max_line_indicator == 'fill' &&
+                            \ l:max_line_length < getbufvar(a:bufnr, '&columns')
+                    " Fill only if the columns of screen is large enough
+                    call setbufvar(a:bufnr, '&colorcolumn',
+                            \ join(range(l:max_line_length+1,
+                            \           getbufvar(a:bufnr, '&columns')),
+                            \       ','))
+                elseif g:EditorConfig_max_line_indicator == 'exceeding'
+                    call setbufvar(a:bufnr, '&colorcolumn', '')
+                    for l:match in getmatches()
+                        if get(l:match, 'group', '') == 'ColorColumn'
+                            call matchdelete(get(l:match, 'id'))
+                        endif
+                    endfor
+                    call matchadd('ColorColumn',
+                        \ '\%' . (l:max_line_length + 1) . 'v.', 100)
+                elseif g:EditorConfig_max_line_indicator == 'fillexceeding'
+                    let &l:colorcolumn = ''
+                    for l:match in getmatches()
+                        if get(l:match, 'group', '') == 'ColorColumn'
+                            call matchdelete(get(l:match, 'id'))
+                        endif
+                    endfor
+                    call matchadd('ColorColumn',
+                        \ '\%'. (l:max_line_length + 1) . 'v.\+', -1)
+                endif
+            endif
+        endif
+    endif
+
+    call editorconfig#ApplyHooks(a:config)
+endfunction
+
+" }}}1
+
+function! s:TrimTrailingWhitespace() " {{{1
+    " Called from within a buffer-specific autocmd, so we can use '%'
+    if getbufvar('%', '&modifiable')
+        " don't lose user position when trimming trailing whitespace
+        let s:view = winsaveview()
+        try
+            silent! keeppatterns keepjumps %s/\s\+$//e
+        finally
+            call winrestview(s:view)
+        endtry
+    endif
+endfunction " }}}1
+
+function! s:IsRuleActive(name, config) " {{{1
+    return index(g:EditorConfig_disable_rules, a:name) < 0 &&
+                 \ has_key(a:config, a:name)
+endfunction "}}}1
+
+let &cpo = s:saved_cpo
+unlet! s:saved_cpo
+
+" vim: fdm=marker fdc=3
--- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
+++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim
@@ -2,7 +2,7 @@
 "
 " Author: Bram Moolenaar
 " Copyright: Vim license applies, see ":help license"
-" Last Change: 2023 Jun 24
+" Last Change: 2023 Aug 23
 "
 " WORK IN PROGRESS - The basics works stable, more to come
 " Note: In general you need at least GDB 7.12 because this provides the
@@ -229,13 +229,13 @@ endfunc
 func s:CloseBuffers()
   exe 'bwipe! ' . s:ptybuf
   exe 'bwipe! ' . s:commbuf
-  if s:asmbuf > 0
+  if s:asmbuf > 0 && bufexists(s:asmbuf)
     exe 'bwipe! ' . s:asmbuf
   endif
-  if s:varbuf > 0
+  if s:varbuf > 0 && bufexists(s:varbuf)
     exe 'bwipe! ' . s:varbuf
   endif
-  s:running = 0
+  let s:running = 0
   unlet! s:gdbwin
 endfunc
 
@@ -453,6 +453,8 @@ func s:StartDebug_prompt(dict)
     exe 'bwipe! ' . s:promptbuf
     return
   endif
+  exe $'au BufUnload <buffer={s:promptbuf}> ++once ' ..
+	\ 'call job_stop(s:gdbjob, ''kill'')'
   " Mark the buffer modified so that it's not easy to close.
   set modified
   let s:gdb_channel = job_getchannel(s:gdbjob)
@@ -617,9 +619,16 @@ endfunc
 func s:GdbOutCallback(channel, text)
   call ch_log('received from gdb: ' . a:text)
 
+  " Disassembly messages need to be forwarded as-is.
+  if s:parsing_disasm_msg
+    call s:CommOutput(a:channel, a:text)
+    return
+  end
+
   " Drop the gdb prompt, we have our own.
   " Drop status and echo'd commands.
-  if a:text == '(gdb) ' || a:text == '^done' || a:text[0] == '&'
+  if a:text == '(gdb) ' || a:text == '^done' ||
+	\ (a:text[0] == '&' && a:text !~ '^&"disassemble')
     return
   endif
   if a:text =~ '^\^error,msg='
@@ -647,8 +656,9 @@ func s:GdbOutCallback(channel, text)
 endfunc
 
 " Decode a message from gdb.  "quotedText" starts with a ", return the text up
-" to the next ", unescaping characters:
+" to the next unescaped ", unescaping characters:
 " - remove line breaks (unless "literal" is v:true)
+" - change \" to "
 " - change \\t to \t (unless "literal" is v:true)
 " - change \0xhh to \xhh (disabled for now)
 " - change \ooo to octal
@@ -659,24 +669,25 @@ func s:DecodeMessage(quotedText, literal
     return
   endif
   let msg = a:quotedText
-        \ ->substitute('^"\|".*', '', 'g')
-        " multi-byte characters arrive in octal form
-        " NULL-values must be kept encoded as those break the string otherwise
+        \ ->substitute('^"\|[^\\]\zs".*', '', 'g')
+        \ ->substitute('\\"', '"', 'g')
+        "\ multi-byte characters arrive in octal form
+        "\ NULL-values must be kept encoded as those break the string otherwise
         \ ->substitute('\\000', s:NullRepl, 'g')
         \ ->substitute('\\\o\o\o', {-> eval('"' .. submatch(0) .. '"')}, 'g')
-        " Note: GDB docs also mention hex encodings - the translations below work
-        "       but we keep them out for performance-reasons until we actually see
-        "       those in mi-returns
-        " \ ->substitute('\\0x\(\x\x\)', {-> eval('"\x' .. submatch(1) .. '"')}, 'g')
-        " \ ->substitute('\\0x00', s:NullRepl, 'g')
+        "\ Note: GDB docs also mention hex encodings - the translations below work
+        "\       but we keep them out for performance-reasons until we actually see
+        "\       those in mi-returns
+        "\ \ ->substitute('\\0x\(\x\x\)', {-> eval('"\x' .. submatch(1) .. '"')}, 'g')
+        "\ \ ->substitute('\\0x00', s:NullRepl, 'g')
         \ ->substitute('\\\\', '\', 'g')
         \ ->substitute(s:NullRepl, '\\000', 'g')
   if !a:literal
-          return msg
+    return msg
         \ ->substitute('\\t', "\t", 'g')
         \ ->substitute('\\n', '', 'g')
   else
-          return msg
+    return msg
   endif
 endfunc
 const s:NullRepl = 'XXXNULLXXX'
@@ -709,15 +720,7 @@ func s:EndTermDebug(job, status)
   endif
 
   exe 'bwipe! ' . s:commbuf
-  if s:asmbuf > 0
-    exe 'bwipe! ' . s:asmbuf
-  endif
-  if s:varbuf > 0
-    exe 'bwipe! ' . s:varbuf
-  endif
-  let s:running = 0
   unlet s:gdbwin
-
   call s:EndDebugCommon()
 endfunc
 
@@ -727,6 +730,13 @@ func s:EndDebugCommon()
   if exists('s:ptybuf') && s:ptybuf
     exe 'bwipe! ' . s:ptybuf
   endif
+  if s:asmbuf > 0 && bufexists(s:asmbuf)
+    exe 'bwipe! ' . s:asmbuf
+  endif
+  if s:varbuf > 0 && bufexists(s:varbuf)
+    exe 'bwipe! ' . s:varbuf
+  endif
+  let s:running = 0
 
   " Restore 'signcolumn' in all buffers for which it was set.
   call win_gotoid(s:sourcewin)
@@ -774,12 +784,8 @@ func s:EndPromptDebug(job, status)
     doauto <nomodeline> User TermdebugStopPre
   endif
 
-  let curwinid = win_getid()
-  call win_gotoid(s:gdbwin)
-  set nomodified
-  close
-  if curwinid != s:gdbwin
-    call win_gotoid(curwinid)
+  if bufexists(s:promptbuf)
+    exe 'bwipe! ' . s:promptbuf
   endif
 
   call s:EndDebugCommon()
@@ -789,7 +795,6 @@ endfunc
 
 " Disassembly window - added by Michael Sartain
 "
-" - CommOutput: disassemble $pc
 " - CommOutput: &"disassemble $pc\n"
 " - CommOutput: ~"Dump of assembler code for function main(int, char**):\n"
 " - CommOutput: ~"   0x0000555556466f69 <+0>:\tpush   rbp\n"
@@ -799,7 +804,6 @@ endfunc
 " - CommOutput: ~"End of assembler dump.\n"
 " - CommOutput: ^done
 
-" - CommOutput: disassemble $pc
 " - CommOutput: &"disassemble $pc\n"
 " - CommOutput: &"No function contains specified address.\n"
 " - CommOutput: ^error,msg="No function contains specified address."
@@ -831,12 +835,12 @@ func s:HandleDisasmMsg(msg)
       call s:SendCommand('disassemble $pc,+100')
     endif
     let s:parsing_disasm_msg = 0
-  elseif a:msg =~ '\&\"disassemble \$pc'
+  elseif a:msg =~ '^&"disassemble \$pc'
     if a:msg =~ '+100'
       " This is our second disasm attempt
       let s:parsing_disasm_msg = 2
     endif
-  else
+  elseif a:msg !~ '^&"disassemble'
     let value = substitute(a:msg, '^\~\"[ ]*', '', '')
     let value = substitute(value, '^=>[ ]*', '', '')
     let value = substitute(value, '\\n\"\r$', '', '')
@@ -920,9 +924,10 @@ func s:CommOutput(chan, msg)
         call s:HandleEvaluate(msg)
       elseif msg =~ '^\^error,msg='
         call s:HandleError(msg)
-      elseif msg =~ '^disassemble'
+      elseif msg =~ '^&"disassemble'
         let s:parsing_disasm_msg = 1
         let s:asm_lines = []
+	call s:HandleDisasmMsg(msg)
       elseif msg =~ '^\^done,variables='
 	call s:HandleVariablesMsg(msg)
       endif
@@ -965,6 +970,10 @@ func s:InstallCommands()
     command Continue call term_sendkeys(s:gdbbuf, "continue\r")
   endif
 
+  command -nargs=* Frame call s:Frame(<q-args>)
+  command -count=1 Up call s:Up(<count>)
+  command -count=1 Down call s:Down(<count>)
+
   command -range -nargs=* Evaluate call s:Evaluate(<range>, <q-args>)
   command Gdb call win_gotoid(s:gdbwin)
   command Program call s:GotoProgram()
@@ -984,6 +993,25 @@ func s:InstallCommands()
     nnoremap K :Evaluate<CR>
   endif
 
+  let map = 1
+  if exists('g:termdebug_config')
+    let map = get(g:termdebug_config, 'map_plus', 1)
+  endif
+  if map
+    let s:plus_map_saved = maparg('+', 'n', 0, 1)
+    nnoremap <expr> + $'<Cmd>{v:count1}Up<CR>'
+  endif
+
+  let map = 1
+  if exists('g:termdebug_config')
+    let map = get(g:termdebug_config, 'map_minus', 1)
+  endif
+  if map
+    let s:minus_map_saved = maparg('-', 'n', 0, 1)
+    nnoremap <expr> - $'<Cmd>{v:count1}Down<CR>'
+  endif
+
+
   if has('menu') && &mouse != ''
     call s:InstallWinbar(0)
 
@@ -1040,6 +1068,9 @@ func s:DeleteCommands()
   delcommand Arguments
   delcommand Stop
   delcommand Continue
+  delcommand Frame
+  delcommand Up
+  delcommand Down
   delcommand Evaluate
   delcommand Gdb
   delcommand Program
@@ -1056,6 +1087,22 @@ func s:DeleteCommands()
     endif
     unlet s:k_map_saved
   endif
+  if exists('s:plus_map_saved')
+    if empty(s:plus_map_saved)
+      nunmap +
+    else
+      call mapset(s:plus_map_saved)
+    endif
+    unlet s:plus_map_saved
+  endif
+  if exists('s:minus_map_saved')
+    if empty(s:minus_map_saved)
+      nunmap -
+    else
+      call mapset(s:minus_map_saved)
+    endif
+    unlet s:minus_map_saved
+  endif
 
   if has('menu')
     " Remove the WinBar entries from all windows where it was added.
@@ -1172,6 +1219,37 @@ func s:Run(args)
   call s:SendResumingCommand('-exec-run')
 endfunc
 
+" :Frame - go to a specfic frame in the stack
+func s:Frame(arg)
+  " Note: we explicit do not use mi's command
+  " call s:SendCommand('-stack-select-frame "' . a:arg .'"')
+  " as we only get a "done" mi response and would have to open the file
+  " 'manually' - using cli command "frame" provides us with the mi response
+  " already parsed and allows for more formats
+  if a:arg =~ '^\d\+$' || a:arg == ''
+    " specify frame by number
+    call s:SendCommand('-interpreter-exec mi "frame ' . a:arg .'"')
+  elseif a:arg =~ '^0x[0-9a-fA-F]\+$'
+    " specify frame by stack address
+    call s:SendCommand('-interpreter-exec mi "frame address ' . a:arg .'"')
+  else
+    " specify frame by function name
+    call s:SendCommand('-interpreter-exec mi "frame function ' . a:arg .'"')
+  endif
+endfunc
+
+" :Up - go a:count frames in the stack "higher"
+func s:Up(count)
+  " the 'correct' one would be -stack-select-frame N, but we don't know N
+  call s:SendCommand($'-interpreter-exec console "up {a:count}"')
+endfunc
+
+" :Down - go a:count frames in the stack "below"
+func s:Down(count)
+  " the 'correct' one would be -stack-select-frame N, but we don't know N
+  call s:SendCommand($'-interpreter-exec console "down {a:count}"')
+endfunc
+
 func s:SendEval(expr)
   " check for "likely" boolean expressions, in which case we take it as lhs
   if a:expr =~ "[=!<>]="
@@ -1358,7 +1436,7 @@ func s:GotoAsmwinOrCreateIt()
     setlocal signcolumn=no
     setlocal modifiable
 
-    if s:asmbuf > 0
+    if s:asmbuf > 0 && bufexists(s:asmbuf)
       exe 'buffer' . s:asmbuf
     else
       silent file Termdebug-asm-listing
@@ -1420,7 +1498,7 @@ func s:GotoVariableswinOrCreateIt()
     setlocal signcolumn=no
     setlocal modifiable
 
-    if s:varbuf > 0
+    if s:varbuf > 0 && bufexists(s:varbuf)
       exe 'buffer' . s:varbuf
     else
       silent file Termdebug-variables-listing
--- a/runtime/plugin/tohtml.vim
+++ b/runtime/plugin/tohtml.vim
@@ -1,6 +1,6 @@
 " Vim plugin for converting a syntax highlighted file to HTML.
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2023 Jan 01
+" Last Change: 2023 Sep 07
 "
 " The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
 " $VIMRUNTIME/syntax/2html.vim
@@ -8,11 +8,29 @@
 if exists('g:loaded_2html_plugin')
   finish
 endif
-let g:loaded_2html_plugin = 'vim9.0_v1'
+let g:loaded_2html_plugin = 'vim9.0_v2'
 
 "
 " Changelog: {{{
-"   9.0_v1  (this version): - Implement g:html_no_doc and g:html_no_modeline
+"   9.0_v2  (this version): - Warn if using deprecated g:use_xhtml option
+"                           - Change default g:html_use_input_for_pc to "none"
+"                             instead of "fallback". All modern browsers support
+"                             the "user-select: none" and "content:" CSS
+"                             properties so the older method relying on extra
+"                             markup and unspecified browser/app clipboard
+"                             handling is only needed in rare special cases.
+"                           - Fix SourceForge issue #33: generate diff filler
+"                             correctly when new lines have been added to or
+"                             removed from end of buffer.
+"                           - Fix SourceForge issue #32/Vim Github issue #8547:
+"                             use translated highlight ID for styling the
+"                             special-use group names (e.g. LineNr) used
+"                             directly by name in the 2html processing.
+"                           - Fix SourceForge issue #26, refactoring to use
+"                             :let-heredoc style string assignment and
+"                             additional fixes for ".." vs. "." style string
+"                             concatenation. Requires Vim v8.1.1354 or higher.
+"   9.0_v1  (Vim 9.0.1275): - Implement g:html_no_doc and g:html_no_modeline
 "                             for diff mode. Add tests.
 "           (Vim 9.0.1122): NOTE: no version string update for this version!
 "                           - Bugfix for variable name in g:html_no_doc
@@ -21,7 +39,8 @@ let g:loaded_2html_plugin = 'vim9.0_v1'
 "                             and g:html_no_modeline (partially included in Vim
 "                             runtime prior to version string update).
 "                           - Updates for new Vim9 string append style (i.e. use
-"                             ".." instead of ".")
+"                             ".." instead of "."). Requires Vim version
+"                             8.1.1114 or higher.
 "
 "   8.1 updates: {{{
 "   8.1_v2  (Vim 8.1.2312): - Fix SourceForge issue #19: fix calculation of tab
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -28,10 +28,16 @@ com! -nargs=0                VimballList
 com! -nargs=* -complete=dir  RmVimball						call vimball#SaveSettings()|call vimball#RmVimball(<f-args>)|call vimball#RestoreSettings()
 augroup Vimball
  au!
- au BufEnter  *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz	setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif
+ au BufEnter  *.vba,*.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz
+	   \ if getline(1) =~ '^" Vimball Archiver' |
+	   \  setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0, "Source this file to extract it! (:so %)")|endif |
+	   \ endif
  au SourceCmd *.vba.gz,*.vba.bz2,*.vba.zip,*.vba.xz			let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
  au SourceCmd *.vba											if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
- au BufEnter  *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz	setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif
+ au BufEnter  *.vmb,*.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz
+	   \ if getline(1) =~ '^" Vimball Archiver' |
+	   \  setlocal bt=nofile fmr=[[[,]]] fdm=marker|if &ff != 'unix'|setlocal ma ff=unix noma|endif|if line('$') > 1|call vimball#ShowMesg(0,"Source this file to extract it! (:so %)")|endif |
+	   \ endif
  au SourceCmd *.vmb.gz,*.vmb.bz2,*.vmb.zip,*.vmb.xz			let s:origfile=expand("%")|if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|endif|call vimball#Decompress(expand("<amatch>"))|so %|if s:origfile!=expand("<afile>")|close|endif
  au SourceCmd *.vmb											if expand("%")!=expand("<afile>") | exe "1sp" fnameescape(expand("<afile>"))|call vimball#Vimball(1)|close|else|call vimball#Vimball(1)|endif
 augroup END
@@ -41,3 +47,5 @@ augroup END
 " vim: fdm=marker
 let &cpo= s:keepcpo
 unlet s:keepcpo
+
+" vim: ts=4:
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -1,16 +1,12 @@
 " Vim support file to detect file types in scripts
 "
 " Maintainer:	The Vim Project <https://github.com/vim/vim>
-" Last Change:	2023 Aug 10
+" Last Change:	2023 Aug 27
 " Former Maintainer:	Bram Moolenaar <Bram@vim.org>
 
 " This file is called by an autocommand for every file that has just been
 " loaded into a buffer.  It checks if the type of file can be recognized by
 " the file contents.  The autocommand is in $VIMRUNTIME/filetype.vim.
-"
-" Note that the pattern matches are done with =~# to avoid the value of the
-" 'ignorecase' option making a difference.  Where case is to be ignored use
-" =~? instead.  Do not use =~ anywhere.
 
 
 " Bail out when a FileType autocommand has already set the filetype.
--- a/runtime/synmenu.vim
+++ b/runtime/synmenu.vim
@@ -645,6 +645,7 @@ an 50.170.390 &Syntax.WXYZ.XFree86\ Conf
 an 50.170.410 &Syntax.WXYZ.YAML :cal SetSyn("yaml")<CR>
 an 50.170.420 &Syntax.WXYZ.Yacc :cal SetSyn("yacc")<CR>
 an 50.170.440 &Syntax.WXYZ.Zimbu :cal SetSyn("zimbu")<CR>
+an 50.170.440 &Syntax.WXYZ.Zserio:cal SetSyn("zserio")<CR>
 
 " The End Of The Syntax Menu
 
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -1,6 +1,6 @@
 " Vim syntax support file
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2023 Jan 01
+" Last Change: 2023 Sep 05
 "
 " Additional contributors:
 "
@@ -32,9 +32,9 @@ let s:end=line('$')
 " Font
 if exists("g:html_font")
   if type(g:html_font) == type([])
-    let s:htmlfont = "'". join(g:html_font,"','") . "', monospace"
+    let s:htmlfont = "'".. join(g:html_font,"','") .. "', monospace"
   else
-    let s:htmlfont = "'". g:html_font . "', monospace"
+    let s:htmlfont = "'".. g:html_font .. "', monospace"
   endif
 else
   let s:htmlfont = "monospace"
@@ -221,8 +221,8 @@ else
 endif
 
 " Find out the background and foreground color for use later
-let s:fgc = s:HtmlColor(synIDattr(hlID("Normal"), "fg#", s:whatterm))
-let s:bgc = s:HtmlColor(synIDattr(hlID("Normal"), "bg#", s:whatterm))
+let s:fgc = s:HtmlColor(synIDattr(hlID("Normal")->synIDtrans(), "fg#", s:whatterm))
+let s:bgc = s:HtmlColor(synIDattr(hlID("Normal")->synIDtrans(), "bg#", s:whatterm))
 if s:fgc == ""
   let s:fgc = ( &background == "dark" ? "#ffffff" : "#000000" )
 endif
@@ -234,41 +234,43 @@ if !s:settings.use_css
   " Return opening HTML tag for given highlight id
   function! s:HtmlOpening(id, extra_attrs)
     let a = ""
-    if synIDattr(a:id, "inverse")
+    let translated_ID = synIDtrans(a:id)
+    if synIDattr(translated_ID, "inverse")
       " For inverse, we always must set both colors (and exchange them)
-      let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
-      let a = a . '<span '.a:extra_attrs.'style="background-color: ' . ( x != "" ? x : s:fgc ) . '">'
-      let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
-      let a = a . '<font color="' . ( x != "" ? x : s:bgc ) . '">'
+      let x = s:HtmlColor(synIDattr(translated_ID, "fg#", s:whatterm))
+      let a = a .. '<span '..a:extra_attrs..'style="background-color: ' .. ( x != "" ? x : s:fgc ) .. '">'
+      let x = s:HtmlColor(synIDattr(translated_ID, "bg#", s:whatterm))
+      let a = a .. '<font color="' .. ( x != "" ? x : s:bgc ) .. '">'
     else
-      let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
+      let x = s:HtmlColor(synIDattr(translated_ID, "bg#", s:whatterm))
       if x != ""
-	let a = a . '<span '.a:extra_attrs.'style="background-color: ' . x . '">'
+	let a = a .. '<span '..a:extra_attrs..'style="background-color: ' .. x .. '">'
       elseif !empty(a:extra_attrs)
-	let a = a . '<span '.a:extra_attrs.'>'
+	let a = a .. '<span '..a:extra_attrs..'>'
       endif
-      let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
-      if x != "" | let a = a . '<font color="' . x . '">' | endif
+      let x = s:HtmlColor(synIDattr(translated_ID, "fg#", s:whatterm))
+      if x != "" | let a = a .. '<font color="' .. x .. '">' | endif
     endif
-    if synIDattr(a:id, "bold") | let a = a . "<b>" | endif
-    if synIDattr(a:id, "italic") | let a = a . "<i>" | endif
-    if synIDattr(a:id, "underline") | let a = a . "<u>" | endif
+    if synIDattr(translated_ID, "bold") | let a = a .. "<b>" | endif
+    if synIDattr(translated_ID, "italic") | let a = a .. "<i>" | endif
+    if synIDattr(translated_ID, "underline") | let a = a .. "<u>" | endif
     return a
   endfun
 
   " Return closing HTML tag for given highlight id
   function! s:HtmlClosing(id, has_extra_attrs)
     let a = ""
-    if synIDattr(a:id, "underline") | let a = a . "</u>" | endif
-    if synIDattr(a:id, "italic") | let a = a . "</i>" | endif
-    if synIDattr(a:id, "bold") | let a = a . "</b>" | endif
-    if synIDattr(a:id, "inverse")
-      let a = a . '</font></span>'
+    let translated_ID = synIDtrans(a:id)
+    if synIDattr(translated_ID, "underline") | let a = a .. "</u>" | endif
+    if synIDattr(translated_ID, "italic") | let a = a .. "</i>" | endif
+    if synIDattr(translated_ID, "bold") | let a = a .. "</b>" | endif
+    if synIDattr(translated_ID, "inverse")
+      let a = a .. '</font></span>'
     else
-      let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
-      if x != "" | let a = a . '</font>' | endif
-      let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
-      if x != "" || a:has_extra_attrs | let a = a . '</span>' | endif
+      let x = s:HtmlColor(synIDattr(translated_ID, "fg#", s:whatterm))
+      if x != "" | let a = a .. '</font>' | endif
+      let x = s:HtmlColor(synIDattr(translated_ID, "bg#", s:whatterm))
+      if x != "" || a:has_extra_attrs | let a = a .. '</span>' | endif
     endif
     return a
   endfun
@@ -286,84 +288,102 @@ if s:settings.use_css
   " save CSS to a list of rules to add to the output at the end of processing
 
   " first, get the style names we need
-  let wrapperfunc_lines = [
-	\ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, make_unselectable, unformatted)',
-	\ '',
-	\ '  let l:style_name = synIDattr(a:style_id, "name", s:whatterm)'
-	\ ]
+  let s:wrapperfunc_lines = []
+  call add(s:wrapperfunc_lines, [])
+  let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, make_unselectable, unformatted)
+	
+	  let l:style_name = synIDattr(a:style_id, "name", s:whatterm)
+  ENDLET
   if &diff
-    let wrapperfunc_lines += [
-	\ '  let l:diff_style_name = synIDattr(a:diff_style_id, "name", s:whatterm)']
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	  let l:diff_style_name = synIDattr(a:diff_style_id, "name", s:whatterm)
+    ENDLET
 
-  " Add normal groups and diff groups to separate lists so we can order them to
-  " allow diff highlight to override normal highlight
+    " Add normal groups and diff groups to separate lists so we can order them to
+    " allow diff highlight to override normal highlight
 
-  " if primary style IS a diff style, grab it from the diff cache instead
-  " (always succeeds because we pre-populate it)
-  let wrapperfunc_lines += [
-	\ '',
-	\ '  if a:style_id == s:DIFF_D_ID || a:style_id == s:DIFF_A_ID ||'.
-	\ '          a:style_id == s:DIFF_C_ID || a:style_id == s:DIFF_T_ID',
-	\ '    let l:saved_style = get(s:diffstylelist,a:style_id)',
-	\ '  else'
-	\ ]
+    " if primary style IS a diff style, grab it from the diff cache instead
+    " (always succeeds because we pre-populate it)
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim ENDLET
+
+	  if a:style_id == s:DIFF_D_ID || a:style_id == s:DIFF_A_ID || a:style_id == s:DIFF_C_ID || a:style_id == s:DIFF_T_ID
+	    let l:saved_style = get(s:diffstylelist,a:style_id)
+	  else
+    ENDLET
   endif
 
   " get primary style info from cache or build it on the fly if not found
-  let wrapperfunc_lines += [
-	\ '    let l:saved_style = get(s:stylelist,a:style_id)',
-	\ '    if type(l:saved_style) == type(0)',
-	\ '      unlet l:saved_style',
-	\ '      let l:saved_style = s:CSS1(a:style_id)',
-	\ '      if l:saved_style != ""',
-	\ '        let l:saved_style = "." . l:style_name . " { " . l:saved_style . "}"',
-	\ '      endif',
-	\ '      let s:stylelist[a:style_id]= l:saved_style',
-	\ '    endif'
-	\ ]
+  call add(s:wrapperfunc_lines, [])
+  let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	    let l:saved_style = get(s:stylelist,a:style_id)
+	    if type(l:saved_style) == type(0)
+	      unlet l:saved_style
+	      let l:saved_style = s:CSS1(a:style_id)
+	      if l:saved_style != ""
+	        let l:saved_style = "." .. l:style_name .. " { " .. l:saved_style .. "}"
+	      endif
+	      let s:stylelist[a:style_id] = l:saved_style
+	    endif
+  ENDLET
   if &diff
-    let wrapperfunc_lines += [ '  endif' ]
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	  endif
+    ENDLET
   endif
+" Ignore this comment, just bypassing a highlighting issue: if
 
   " Build the wrapper tags around the text. It turns out that caching these
   " gives pretty much zero performance gain and adds a lot of logic.
 
-  let wrapperfunc_lines += [
-	\ '',
-	\ '  if l:saved_style == "" && empty(a:extra_attrs)'
-	\ ]
+  call add(s:wrapperfunc_lines, [])
+  let s:wrapperfunc_lines[-1] =<< trim ENDLET
+
+	  if l:saved_style == "" && empty(a:extra_attrs)
+  ENDLET
   if &diff
-    let wrapperfunc_lines += [
-	\ '    if a:diff_style_id <= 0'
-	\ ]
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	    if a:diff_style_id <= 0
+    ENDLET
   endif
   " no surroundings if neither primary nor diff style has any info
-  let wrapperfunc_lines += [
-	\ '       return a:text'
-	\ ]
+  call add(s:wrapperfunc_lines, [])
+  let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	      return a:text
+  ENDLET
   if &diff
     " no primary style, but diff style
-    let wrapperfunc_lines += [
-	\ '     else',
-	\ '       return "<span class=\"" .l:diff_style_name . "\">".a:text."</span>"',
-	\ '     endif'
-	\ ]
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	    else
+	      return '<span class="' ..l:diff_style_name .. '">'..a:text.."</span>"
+	    endif
+    ENDLET
   endif
+  " Ignore this comment, just bypassing a highlighting issue: if
+
   " open tag for non-empty primary style
-  let wrapperfunc_lines += [
-	\ '  else']
+  call add(s:wrapperfunc_lines, [])
+  let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	  else
+  ENDLET
   " non-empty primary style. handle either empty or non-empty diff style.
   "
   " separate the two classes by a space to apply them both if there is a diff
   " style name, unless the primary style is empty, then just use the diff style
   " name
-  let diffstyle =
-	  \ (&diff ? '(a:diff_style_id <= 0 ? "" : " ". l:diff_style_name) .'
-	  \        : "")
+  let s:diffstyle =
+	  \ (&diff ? '(a:diff_style_id <= 0 ? "" : " " .. l:diff_style_name)..'
+	  \        : '')
   if s:settings.prevent_copy == ""
-    let wrapperfunc_lines += [
-	  \ '    return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\">".a:text."</span>"'
-	  \ ]
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim eval ENDLET
+	    return "<span "..a:extra_attrs..'class="' .. l:style_name ..{s:diffstyle}'">'..a:text.."</span>"
+    ENDLET
   else
 
     " New method: use generated content in the CSS. The only thing needed here
@@ -388,59 +408,76 @@ if s:settings.use_css
     " Note, if maxlength property needs to be added in the future, it will need
     " to use strchars(), because HTML specifies that the maxlength parameter
     " uses the number of unique codepoints for its limit.
-    let wrapperfunc_lines += [
-	  \   '    if a:make_unselectable',
-	  \   '      return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\"'
-	  \ ]
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim eval ENDLET
+	    if a:make_unselectable
+	      let return_span = "<span "..a:extra_attrs..'class="' .. l:style_name ..{s:diffstyle}'"'
+    ENDLET
     if s:settings.use_input_for_pc !=# 'all'
-      let wrapperfunc_lines[-1] .= ' " . "data-" . l:style_name . "-content=\"".a:text."\"'
+      call add(s:wrapperfunc_lines, [])
+      let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	      let return_span ..= " data-" .. l:style_name .. '-content="'..a:text..'"'
+      ENDLET
     endif
-    let wrapperfunc_lines[-1] .= '>'
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	      let return_span ..= '>'
+    ENDLET
     if s:settings.use_input_for_pc !=# 'none'
-      let wrapperfunc_lines[-1] .=
-	    \                '<input'.s:unselInputType.' class=\"" . l:style_name .'.diffstyle.'"\"'.
-	    \                 ' value=\"".substitute(a:unformatted,''\s\+$'',"","")."\"'.
-	    \                 ' onselect=''this.blur(); return false;'''.
-	    \                 ' onmousedown=''this.blur(); return false;'''.
-	    \                 ' onclick=''this.blur(); return false;'''.
-	    \                 ' readonly=''readonly'''.
-	    \                 ' size=\"".strwidth(a:unformatted)."\"'.
-	    \                 (s:settings.use_xhtml ? '/' : '').'>'
+      call add(s:wrapperfunc_lines, [])
+      let s:wrapperfunc_lines[-1] =<< trim eval ENDLET
+	      let return_span ..=   '<input'..s:unselInputType..' class="' .. l:style_name ..{s:diffstyle}'"'
+	      let return_span ..=   ' value="'..substitute(a:unformatted,'\s\+$',"","")..'"'
+	      let return_span ..=   " onselect='this.blur(); return false;'"
+	      let return_span ..=   " onmousedown='this.blur(); return false;'"
+	      let return_span ..=   " onclick='this.blur(); return false;'"
+	      let return_span ..=   " readonly='readonly'"
+	      let return_span ..=   ' size="'..strwidth(a:unformatted)..'"'
+	      let return_span ..=   (s:settings.use_xhtml ? '/>' : '>')
+      ENDLET
     endif
-    let wrapperfunc_lines[-1] .= '</span>"'
-    let wrapperfunc_lines += [
-	  \ '    else',
-	  \ '      return "<span ".a:extra_attrs."class=\"" . l:style_name .'. diffstyle .'"\">".a:text."</span>"'
-	  \ ]
+    call add(s:wrapperfunc_lines, [])
+    let s:wrapperfunc_lines[-1] =<< trim eval ENDLET
+	      return return_span..'</span>'
+	    else
+	      return "<span "..a:extra_attrs..'class="' .. l:style_name .. {s:diffstyle}'">'..a:text.."</span>"
+	    endif
+    ENDLET
   endif
-  let wrapperfunc_lines += [
-	\ '  endif',
-	\ 'endfun'
-	\ ]
+  call add(s:wrapperfunc_lines, [])
+  let s:wrapperfunc_lines[-1] =<< trim ENDLET
+	  endif
+	endfun
+  ENDLET
 else
   " Non-CSS method just needs the wrapper.
   "
   " Functions used to get opening/closing automatically return null strings if
   " no styles exist.
   if &diff
-    let wrapperfunc_lines = [
-	  \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)',
-	  \ '  return s:HtmlOpening(a:style_id, a:extra_attrs).(a:diff_style_id <= 0 ? "" :'.
-	  \                                     's:HtmlOpening(a:diff_style_id, "")).a:text.'.
-	  \   '(a:diff_style_id <= 0 ? "" : s:HtmlClosing(a:diff_style_id, 0)).s:HtmlClosing(a:style_id, !empty(a:extra_attrs))',
-	  \ 'endfun'
-	  \ ]
+    let s:wrapperfunc_lines =<< trim ENDLET
+	function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)
+	  if a:diff_style_id <= 0
+	    let l:diff_opening = s:HtmlOpening(a:diff_style_id, "")
+	    let l:diff_closing = s:HtmlClosing(a:diff_style_id, 0)
+	  else
+	    let l:diff_opening = ""
+	    let l:diff_closing = ""
+	  endif
+	  return s:HtmlOpening(a:style_id, a:extra_attrs)..l:diff_opening..a:text..l:diff_closing..s:HtmlClosing(a:style_id, !empty(a:extra_attrs))
+	endfun
+    ENDLET
   else
-    let wrapperfunc_lines = [
-	  \ 'function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)',
-	  \ '  return s:HtmlOpening(a:style_id, a:extra_attrs).a:text.s:HtmlClosing(a:style_id, !empty(a:extra_attrs))',
-	  \ 'endfun'
-	  \ ]
+    let s:wrapperfunc_lines =<< trim ENDLET
+	function! s:BuildStyleWrapper(style_id, diff_style_id, extra_attrs, text, unusedarg, unusedarg2)
+	  return s:HtmlOpening(a:style_id, a:extra_attrs)..a:text..s:HtmlClosing(a:style_id, !empty(a:extra_attrs))
+	endfun
+    ENDLET
   endif
 endif
 
 " create the function we built line by line above
-exec join(wrapperfunc_lines, "\n")
+exec join(flatten(s:wrapperfunc_lines), "\n")
 
 let s:diff_mode = &diff
 
@@ -471,7 +508,7 @@ function! s:HtmlFormat(text, style_id, d
 
   " Replace double spaces, leading spaces, and trailing spaces if needed
   if ' ' != s:HtmlSpace
-    let formatted = substitute(formatted, '  ', s:HtmlSpace . s:HtmlSpace, 'g')
+    let formatted = substitute(formatted, '  ', s:HtmlSpace .. s:HtmlSpace, 'g')
     let formatted = substitute(formatted, '^ ', s:HtmlSpace, 'g')
     let formatted = substitute(formatted, ' \+$', s:HtmlSpace, 'g')
   endif
@@ -487,7 +524,7 @@ if s:settings.prevent_copy =~# 'n'
     if s:settings.line_ids
       function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
 	if a:lnr > 0
-	  return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 1)
+	  return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'..(exists('g:html_diff_win_num') ? 'W'..g:html_diff_win_num : "")..'L'..a:lnr..s:settings.id_suffix..'" ', 1)
 	else
 	  return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 1)
 	endif
@@ -503,14 +540,14 @@ if s:settings.prevent_copy =~# 'n'
     " always be non-zero, however we don't want to use the <input> because that
     " won't work as nice for empty text
     function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
-      return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
+      return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'..(exists('g:html_diff_win_num') ? 'W'..g:html_diff_win_num : "")..'L'..a:lnr..s:settings.id_suffix..'" ', 0)
     endfun
   endif
 else
   if s:settings.line_ids
     function! s:HtmlFormat_n(text, style_id, diff_style_id, lnr)
       if a:lnr > 0
-	return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'.(exists('g:html_diff_win_num') ? 'W'.g:html_diff_win_num : "").'L'.a:lnr.s:settings.id_suffix.'" ', 0)
+	return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, 'id="'..(exists('g:html_diff_win_num') ? 'W'..g:html_diff_win_num : "")..'L'..a:lnr..s:settings.id_suffix..'" ', 0)
       else
 	return s:HtmlFormat(a:text, a:style_id, a:diff_style_id, "", 0)
       endif
@@ -535,8 +572,8 @@ if s:settings.prevent_copy =~# 'f'
     " Simply space-pad to the desired width inside the generated content (note
     " that the FoldColumn definition includes a whitespace:pre rule)
     function! s:FoldColumn_build(char, len, numfill, char2, class, click)
-      return "<a href='#' class='".a:class."' onclick='".a:click."' data-FoldColumn-content='".
-	    \ repeat(a:char, a:len).a:char2.repeat(' ', a:numfill).
+      return "<a href='#' class='"..a:class.."' onclick='"..a:click.."' data-FoldColumn-content='".
+	    \ repeat(a:char, a:len)..a:char2..repeat(' ', a:numfill).
 	    \ "'></a>"
     endfun
     function! s:FoldColumn_fill()
@@ -554,35 +591,38 @@ if s:settings.prevent_copy =~# 'f'
     "
     " Note, 'exec' commands do not recognize line continuations, so must
     " concatenate lines rather than continue them.
-    let build_fun_lines = [
-	  \ 'function! s:FoldColumn_build(char, len, numfill, char2, class, click)',
-	  \ '  let l:input_open = "<input readonly=''readonly''".s:unselInputType.'.
-	  \ '          " onselect=''this.blur(); return false;''".'.
-	  \ '          " onmousedown=''this.blur(); ".a:click." return false;''".'.
-	  \ '          " onclick=''return false;'' size=''".'.
-	  \ '          string(a:len + (empty(a:char2) ? 0 : 1) + a:numfill) .'.
-	  \ '          "'' "',
-	  \ '  let l:common_attrs = "class=''FoldColumn'' value=''"',
-	  \ '  let l:input_close = (s:settings.use_xhtml ? "'' />" : "''>")'
-	  \ ]
+    let s:build_fun_lines = []
+    call add(s:build_fun_lines, [])
+    let s:build_fun_lines[-1] =<< trim ENDLET
+	  function! s:FoldColumn_build(char, len, numfill, char2, class, click)
+	    let l:input_open = "<input readonly='readonly'"..s:unselInputType
+	    let l:input_open ..= " onselect='this.blur(); return false;'"
+	    let l:input_open ..= " onmousedown='this.blur(); "..a:click.." return false;'"
+	    let l:input_open ..= " onclick='return false;' size='"
+	    let l:input_open ..= string(a:len + (empty(a:char2) ? 0 : 1) + a:numfill) .. "' "
+	    let l:common_attrs = "class='FoldColumn' value='"
+	    let l:input_close = (s:settings.use_xhtml ? "' />" : "'>")
+	    let l:return_span = "<span class='"..a:class.."'>"
+	    let l:return_span ..= l:input_open..l:common_attrs..repeat(a:char, a:len)..(a:char2)
+	    let l:return_span ..= l:input_close
+    ENDLET
     if s:settings.use_input_for_pc ==# 'fallback'
-      let build_fun_lines += [
-	    \ '  let l:gen_content_link ='.
-	    \ '          "<a href=''#'' class=''FoldColumn'' onclick=''".a:click."'' data-FoldColumn-content=''".'.
-	    \ '          repeat(a:char, a:len).a:char2.repeat('' '', a:numfill).'.
-	    \ '          "''></a>"'
-	    \ ]
+      call add(s:build_fun_lines, [])
+      let s:build_fun_lines[-1] =<< trim ENDLET
+	    let l:return_span ..= "<a href='#' class='FoldColumn' onclick='"..a:click.."'"
+	    let l:return_span ..= " data-FoldColumn-content='"
+	    let l:return_span ..= repeat(a:char, a:len)..a:char2..repeat(' ', a:numfill)
+	    let l:return_span ..= "'></a>"
+      ENDLET
     endif
-    let build_fun_lines += [
-	  \ '  return "<span class=''".a:class."''>".'.
-	  \ '          l:input_open.l:common_attrs.repeat(a:char, a:len).(a:char2).'.
-	  \ '          l:input_close.'.
-	  \ (s:settings.use_input_for_pc ==# 'fallback' ? 'l:gen_content_link.' : "").
-	  \ '          "</span>"',
-	  \ 'endfun'
-	  \ ]
+    call add(s:build_fun_lines, [])
+    let s:build_fun_lines[-1] =<< trim ENDLET
+	    let l:return_span ..= "</span>"
+	    return l:return_span
+	  endfun
+    ENDLET
     " create the function we built line by line above
-    exec join(build_fun_lines, "\n")
+    exec join(flatten(s:build_fun_lines), "\n")
 
     function! s:FoldColumn_fill()
       return s:FoldColumn_build(' ', s:foldcolumn, 0, '', 'FoldColumn', '')
@@ -592,8 +632,8 @@ else
   " For normal fold columns, simply space-pad to the desired width (note that
   " the FoldColumn definition includes a whitespace:pre rule)
   function! s:FoldColumn_build(char, len, numfill, char2, class, click)
-    return "<a href='#' class='".a:class."' onclick='".a:click."'>".
-	  \ repeat(a:char, a:len).a:char2.repeat(' ', a:numfill).
+    return "<a href='#' class='"..a:class.."' onclick='"..a:click.."'>".
+	  \ repeat(a:char, a:len)..a:char2..repeat(' ', a:numfill).
 	  \ "</a>"
   endfun
   function! s:FoldColumn_fill()
@@ -625,29 +665,30 @@ endif
 " Return CSS style describing given highlight id (can be empty)
 function! s:CSS1(id)
   let a = ""
-  if synIDattr(a:id, "inverse")
+  let translated_ID = synIDtrans(a:id)
+  if synIDattr(translated_ID, "inverse")
     " For inverse, we always must set both colors (and exchange them)
-    let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
-    let a = a . "color: " . ( x != "" ? x : s:bgc ) . "; "
-    let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
-    let a = a . "background-color: " . ( x != "" ? x : s:fgc ) . "; "
+    let x = s:HtmlColor(synIDattr(translated_ID, "bg#", s:whatterm))
+    let a = a .. "color: " .. ( x != "" ? x : s:bgc ) .. "; "
+    let x = s:HtmlColor(synIDattr(translated_ID, "fg#", s:whatterm))
+    let a = a .. "background-color: " .. ( x != "" ? x : s:fgc ) .. "; "
   else
-    let x = s:HtmlColor(synIDattr(a:id, "fg#", s:whatterm))
-    if x != "" | let a = a . "color: " . x . "; " | endif
-    let x = s:HtmlColor(synIDattr(a:id, "bg#", s:whatterm))
+    let x = s:HtmlColor(synIDattr(translated_ID, "fg#", s:whatterm))
+    if x != "" | let a = a .. "color: " .. x .. "; " | endif
+    let x = s:HtmlColor(synIDattr(translated_ID, "bg#", s:whatterm))
     if x != ""
-      let a = a . "background-color: " . x . "; "
+      let a = a .. "background-color: " .. x .. "; "
       " stupid hack because almost every browser seems to have at least one font
       " which shows 1px gaps between lines which have background
-      let a = a . "padding-bottom: 1px; "
-    elseif (a:id == s:FOLDED_ID || a:id == s:LINENR_ID || a:id == s:FOLD_C_ID) && !empty(s:settings.prevent_copy)
+      let a = a .. "padding-bottom: 1px; "
+    elseif (translated_ID == s:FOLDED_ID || translated_ID == s:LINENR_ID || translated_ID == s:FOLD_C_ID) && !empty(s:settings.prevent_copy)
       " input elements default to a different color than the rest of the page
-      let a = a . "background-color: " . s:bgc . "; "
+      let a = a .. "background-color: " .. s:bgc .. "; "
     endif
   endif
-  if synIDattr(a:id, "bold") | let a = a . "font-weight: bold; " | endif
-  if synIDattr(a:id, "italic") | let a = a . "font-style: italic; " | endif
-  if synIDattr(a:id, "underline") | let a = a . "text-decoration: underline; " | endif
+  if synIDattr(translated_ID, "bold") | let a = a .. "font-weight: bold; " | endif
+  if synIDattr(translated_ID, "italic") | let a = a .. "font-style: italic; " | endif
+  if synIDattr(translated_ID, "underline") | let a = a .. "text-decoration: underline; " | endif
   return a
 endfun
 
@@ -720,7 +761,7 @@ if exists("g:loaded_2html_plugin")
   let s:pluginversion = g:loaded_2html_plugin
 else
   if !exists("g:unloaded_tohtml_plugin")
-    let s:main_plugin_path = expand("<sfile>:p:h:h")."/plugin/tohtml.vim"
+    let s:main_plugin_path = expand("<sfile>:p:h:h").."/plugin/tohtml.vim"
     if filereadable(s:main_plugin_path)
       let s:lines = readfile(s:main_plugin_path, "", 20)
       call filter(s:lines, 'v:val =~ "loaded_2html_plugin = "')
@@ -743,12 +784,12 @@ let s:orgbufnr = winbufnr(0)
 let s:origwin_stl = &l:stl
 if expand("%") == ""
   if exists('g:html_diff_win_num')
-    exec 'new Untitled_win'.g:html_diff_win_num.'.'.(s:settings.use_xhtml ? 'x' : '').'html'
+    exec 'new Untitled_win'..g:html_diff_win_num..'.'.(s:settings.use_xhtml ? 'xhtml' : 'html')
   else
-    exec 'new Untitled.'.(s:settings.use_xhtml ? 'x' : '').'html'
+    exec 'new Untitled.'..(s:settings.use_xhtml ? 'xhtml' : 'html')
   endif
 else
-  exec 'new %.'.(s:settings.use_xhtml ? 'x' : '').'html'
+  exec 'new %.'..(s:settings.use_xhtml ? 'xhtml' : 'html')
 endif
 
 " Resize the new window to very small in order to make it draw faster
@@ -795,7 +836,7 @@ let s:lines = []
 
 if s:settings.use_xhtml
   if s:settings.encoding != ""
-    call add(s:lines, "<?xml version=\"1.0\" encoding=\"" . s:settings.encoding . "\"?>")
+    call add(s:lines, "<?xml version=\"1.0\" encoding=\"" .. s:settings.encoding .. "\"?>")
   else
     call add(s:lines, "<?xml version=\"1.0\"?>")
   endif
@@ -808,9 +849,9 @@ let s:HtmlSpace = ' '
 let s:LeadingSpace = ' '
 let s:HtmlEndline = ''
 if s:settings.no_pre
-  let s:HtmlEndline = '<br' . s:tag_close
+  let s:HtmlEndline = '<br' .. s:tag_close
   let s:LeadingSpace = s:settings.use_xhtml ? '&#160;' : '&nbsp;'
-  let s:HtmlSpace = '\' . s:LeadingSpace
+  let s:HtmlSpace = '\' .. s:LeadingSpace
 endif
 
 " HTML header, with the title and generator ;-). Left free space for the CSS,
@@ -823,30 +864,30 @@ if !s:settings.no_doc
   " contained in XML information (to avoid haggling over content type)
   if s:settings.encoding != "" && !s:settings.use_xhtml
     if s:html5
-      call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
+      call add(s:lines, '<meta charset="' .. s:settings.encoding .. '"' .. s:tag_close)
     else
-      call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
+      call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" .. s:settings.encoding .. '"' .. s:tag_close)
     endif
   endif
   call extend(s:lines, [
-	\ ("<title>".expand("%:p:~")."</title>"),
-	\ ("<meta name=\"Generator\" content=\"Vim/".v:version/100.".".v:version%100.'"'.s:tag_close),
-	\ ("<meta name=\"plugin-version\" content=\"".s:pluginversion.'"'.s:tag_close)
+	\ ("<title>"..expand("%:p:~").."</title>"),
+	\ ("<meta name=\"Generator\" content=\"Vim/"..v:version/100.."."..v:version%100..'"'..s:tag_close),
+	\ ("<meta name=\"plugin-version\" content=\""..s:pluginversion..'"'..s:tag_close)
 	\ ])
-  call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_close)
-  call add(s:lines, '<meta name="settings" content="'.
-	\ join(filter(keys(s:settings),'s:settings[v:val]'),',').
-	\ ',prevent_copy='.s:settings.prevent_copy.
-	\ ',use_input_for_pc='.s:settings.use_input_for_pc.
-	\ '"'.s:tag_close)
-  call add(s:lines, '<meta name="colorscheme" content="'.
+  call add(s:lines, '<meta name="syntax" content="'..s:current_syntax..'"'..s:tag_close)
+  call add(s:lines, '<meta name="settings" content="'..
+	\ join(filter(keys(s:settings),'s:settings[v:val]'),',')..
+	\ ',prevent_copy='..s:settings.prevent_copy..
+	\ ',use_input_for_pc='..s:settings.use_input_for_pc..
+	\ '"'..s:tag_close)
+  call add(s:lines, '<meta name="colorscheme" content="'..
 	\ (exists('g:colors_name')
 	\ ? g:colors_name
-	\ : 'none'). '"'.s:tag_close)
+	\ : 'none').. '"'..s:tag_close)
 
   if s:settings.use_css
     call extend(s:lines, [
-	  \ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
+	  \ "<style" .. (s:html5 ? "" : " type=\"text/css\"") .. ">",
 	  \ s:settings.use_xhtml ? "" : "<!--"])
     let s:ieonly = []
     if s:settings.dynamic_folds
@@ -921,7 +962,7 @@ if !s:settings.no_doc
   if s:uses_script
     call extend(s:lines, [
 	  \ "",
-	  \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
+	  \ "<script" .. (s:html5 ? "" : " type='text/javascript'") .. ">",
 	  \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
   endif
 
@@ -968,7 +1009,7 @@ if !s:settings.no_doc
 	    \ "",
 	    \ "  /* navigate upwards in the DOM tree to open all folds containing the line */",
 	    \ "  var node = lineElem;",
-	    \ "  while (node && node.id != 'vimCodeElement".s:settings.id_suffix."')",
+	    \ "  while (node && node.id != 'vimCodeElement"..s:settings.id_suffix.."')",
 	    \ "  {",
 	    \ "    if (node.className == 'closed-fold')",
 	    \ "    {",
@@ -1003,7 +1044,7 @@ if !s:settings.no_doc
   endif
 
   call extend(s:lines, ["</head>",
-	\ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
+	\ "<body"..(s:settings.line_ids ? " onload='JumpToLine();'" : "")..">"])
 endif
 
 if s:settings.no_pre
@@ -1015,20 +1056,20 @@ else
   call extend(s:lines, ["<pre id='vimCodeElement" .. s:settings.id_suffix .. "'>"])
 endif
 
-exe s:orgwin . "wincmd w"
+exe s:orgwin .. "wincmd w"
 
 " caches of style data
 " initialize to include line numbers if using them
 if s:settings.number_lines
-  let s:stylelist = { s:LINENR_ID : ".LineNr { " . s:CSS1( s:LINENR_ID ) . "}" }
+  let s:stylelist = { s:LINENR_ID : ".LineNr { " .. s:CSS1( s:LINENR_ID ) .. "}" }
 else
   let s:stylelist = {}
 endif
 let s:diffstylelist = {
-      \   s:DIFF_A_ID : ".DiffAdd { " . s:CSS1( s:DIFF_A_ID ) . "}",
-      \   s:DIFF_C_ID : ".DiffChange { " . s:CSS1( s:DIFF_C_ID ) . "}",
-      \   s:DIFF_D_ID : ".DiffDelete { " . s:CSS1( s:DIFF_D_ID ) . "}",
-      \   s:DIFF_T_ID : ".DiffText { " . s:CSS1( s:DIFF_T_ID ) . "}"
+      \   s:DIFF_A_ID : ".DiffAdd { " .. s:CSS1( s:DIFF_A_ID ) .. "}",
+      \   s:DIFF_C_ID : ".DiffChange { " .. s:CSS1( s:DIFF_C_ID ) .. "}",
+      \   s:DIFF_D_ID : ".DiffDelete { " .. s:CSS1( s:DIFF_D_ID ) .. "}",
+      \   s:DIFF_T_ID : ".DiffText { " .. s:CSS1( s:DIFF_T_ID ) .. "}"
       \ }
 
 " set up progress bar in the status line
@@ -1046,17 +1087,17 @@ if !s:settings.no_progress
        \ g:colors_name != s:last_colors_name
       let s:last_colors_name = exists("g:colors_name") ? g:colors_name : "none"
 
-      let l:diffatr = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? "fg#" : "bg#"
-      let l:stlatr = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? "fg#" : "bg#"
+      let l:diffatr = synIDattr(hlID("DiffDelete")->synIDtrans(), "reverse", s:whatterm) ? "fg#" : "bg#"
+      let l:stlatr = synIDattr(hlID("StatusLine")->synIDtrans(), "reverse", s:whatterm) ? "fg#" : "bg#"
 
-      let l:progbar_color = synIDattr(hlID("DiffDelete"), l:diffatr, s:whatterm)
-      let l:stl_color = synIDattr(hlID("StatusLine"), l:stlatr, s:whatterm)
+      let l:progbar_color = synIDattr(hlID("DiffDelete")->synIDtrans(), l:diffatr, s:whatterm)
+      let l:stl_color = synIDattr(hlID("StatusLine")->synIDtrans(), l:stlatr, s:whatterm)
 
       if "" == l:progbar_color
-	let l:progbar_color = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? s:fgc : s:bgc
+	let l:progbar_color = synIDattr(hlID("DiffDelete")->synIDtrans(), "reverse", s:whatterm) ? s:fgc : s:bgc
       endif
       if "" == l:stl_color
-	let l:stl_color = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? s:fgc : s:bgc
+	let l:stl_color = synIDattr(hlID("StatusLine")->synIDtrans(), "reverse", s:whatterm) ? s:fgc : s:bgc
       endif
 
       if l:progbar_color == l:stl_color
@@ -1086,13 +1127,13 @@ if !s:settings.no_progress
 	endif
 	echomsg "diff detected progbar color set to" l:progbar_color
       endif
-      exe "hi TOhtmlProgress_auto" s:whatterm."bg=".l:progbar_color
+      exe "hi TOhtmlProgress_auto" s:whatterm.."bg="..l:progbar_color
     endif
   endfun
 
   func! s:ProgressBar(title, max_value, winnr)
     let pgb=copy(s:progressbar)
-    let pgb.title = a:title.' '
+    let pgb.title = a:title..' '
     let pgb.max_value = a:max_value
     let pgb.winnr = a:winnr
     let pgb.cur_value = 0
@@ -1194,6 +1235,66 @@ if !s:settings.no_progress
   call s:SetProgbarColor()
 endif
 
+let s:build_fun_lines = []
+call add(s:build_fun_lines, [])
+let s:build_fun_lines[-1] =<< trim ENDLET
+    func! s:Add_diff_fill(lnum)
+      let l:filler = diff_filler(a:lnum)
+      if l:filler > 0
+	let l:to_insert = l:filler
+	while l:to_insert > 0
+	  let l:new = repeat(s:difffillchar, 3)
+
+	  if l:to_insert > 2 && l:to_insert < l:filler && !s:settings.whole_filler
+	    let l:new = l:new .. " " .. l:filler .. " inserted lines "
+	    let l:to_insert = 2
+	  endif
+ENDLET
+call add(s:build_fun_lines, [])
+if !s:settings.no_pre
+  let s:build_fun_lines[-1] =<< trim ENDLET
+	  " HTML line wrapping is off--go ahead and fill to the margin
+	  " TODO: what about when CSS wrapping is turned on?
+	  let l:new = l:new .. repeat(s:difffillchar, &columns - strlen(l:new) - s:margin)
+  ENDLET
+else
+  let s:build_fun_lines[-1] =<< trim ENDLET
+	  let l:new = l:new .. repeat(s:difffillchar, 3)
+  ENDLET
+endif
+call add(s:build_fun_lines, [])
+let s:build_fun_lines[-1] =<< trim ENDLET
+	let l:new = s:HtmlFormat_d(l:new, s:DIFF_D_ID, 0)
+ENDLET
+if s:settings.number_lines
+  call add(s:build_fun_lines, [])
+  let s:build_fun_lines[-1] =<< trim ENDLET
+	  " Indent if line numbering is on. Indent gets style of line number
+	  " column.
+	  let l:new = s:HtmlFormat_n(repeat(' ', s:margin), s:LINENR_ID, 0, 0) .. l:new
+  ENDLET
+endif
+if s:settings.dynamic_folds && !s:settings.no_foldcolumn 
+  call add(s:build_fun_lines, [])
+  let s:build_fun_lines[-1] =<< trim ENDLET
+	  if s:foldcolumn > 0
+	    " Indent for foldcolumn if there is one. Assume it's empty, there should
+	    " not be a fold for deleted lines in diff mode.
+	    let l:new = s:FoldColumn_fill() .. l:new
+	  endif
+  ENDLET
+endif
+" Ignore this comment, just bypassing a highlighting issue: if
+call add(s:build_fun_lines, [])
+let s:build_fun_lines[-1] =<< trim ENDLET
+	call add(s:lines, l:new..s:HtmlEndline)
+	let l:to_insert = l:to_insert - 1
+      endwhile
+    endif
+  endfun
+ENDLET
+exec join(flatten(s:build_fun_lines), "\n")
+
 " First do some preprocessing for dynamic folding. Do this for the entire file
 " so we don't accidentally start within a closed fold or something.
 let s:allfolds = []
@@ -1220,7 +1321,7 @@ if s:settings.dynamic_folds
       let s:newfold = {'firstline': s:lnum, 'lastline': foldclosedend(s:lnum), 'level': s:level,'type': "closed-fold"}
       call add(s:allfolds, s:newfold)
       " open the fold so we can find any contained folds
-      execute s:lnum."foldopen"
+      execute s:lnum.."foldopen"
     else
       if !s:settings.no_progress
 	call s:pgb.incr()
@@ -1252,7 +1353,7 @@ if s:settings.dynamic_folds
 	call add(s:allfolds, s:newfold)
       endif
       " open the fold so we can find any contained folds
-      execute s:lnum."foldopen"
+      execute s:lnum.."foldopen"
     else
       if !s:settings.no_progress
 	call s:pgb.incr()
@@ -1339,7 +1440,7 @@ if s:settings.dynamic_folds
   " Note that only when a start and an end line is specified will a fold
   " containing the current range ever be removed.
   while leveladjust > 0
-    exe g:html_start_line."foldopen"
+    exe g:html_start_line.."foldopen"
     let leveladjust -= 1
   endwhile
 endif
@@ -1399,47 +1500,11 @@ endif
 while s:lnum <= s:end
 
   " If there are filler lines for diff mode, show these above the line.
-  let s:filler = diff_filler(s:lnum)
-  if s:filler > 0
-    let s:n = s:filler
-    while s:n > 0
-      let s:new = repeat(s:difffillchar, 3)
-
-      if s:n > 2 && s:n < s:filler && !s:settings.whole_filler
-	let s:new = s:new . " " . s:filler . " inserted lines "
-	let s:n = 2
-      endif
-
-      if !s:settings.no_pre
-	" HTML line wrapping is off--go ahead and fill to the margin
-	" TODO: what about when CSS wrapping is turned on?
-	let s:new = s:new . repeat(s:difffillchar, &columns - strlen(s:new) - s:margin)
-      else
-	let s:new = s:new . repeat(s:difffillchar, 3)
-      endif
-
-      let s:new = s:HtmlFormat_d(s:new, s:DIFF_D_ID, 0)
-      if s:settings.number_lines
-	" Indent if line numbering is on. Indent gets style of line number
-	" column.
-	let s:new = s:HtmlFormat_n(repeat(' ', s:margin), s:LINENR_ID, 0, 0) . s:new
-      endif
-      if s:settings.dynamic_folds && !s:settings.no_foldcolumn && s:foldcolumn > 0
-	" Indent for foldcolumn if there is one. Assume it's empty, there should
-	" not be a fold for deleted lines in diff mode.
-	let s:new = s:FoldColumn_fill() . s:new
-      endif
-      call add(s:lines, s:new.s:HtmlEndline)
-
-      let s:n = s:n - 1
-    endwhile
-    unlet s:n
-  endif
-  unlet s:filler
+  call s:Add_diff_fill(s:lnum)
 
   " Start the line with the line number.
   if s:settings.number_lines
-    let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) . s:lnum . ' '
+    let s:numcol = repeat(' ', s:margin - 1 - strlen(s:lnum)) .. s:lnum .. ' '
   endif
 
   let s:new = ""
@@ -1450,11 +1515,11 @@ while s:lnum <= s:end
     let s:new = foldtextresult(s:lnum)
     if !s:settings.no_pre
       " HTML line wrapping is off--go ahead and fill to the margin
-      let s:new = s:new . repeat(s:foldfillchar, &columns - strlen(s:new))
+      let s:new = s:new .. repeat(s:foldfillchar, &columns - strlen(s:new))
     endif
 
     " put numcol in a separate group for sake of unselectable text
-    let s:new = (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, s:lnum): "") . s:HtmlFormat_t(s:new, s:FOLDED_ID, 0)
+    let s:new = (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, s:lnum): "") .. s:HtmlFormat_t(s:new, s:FOLDED_ID, 0)
 
     " Skip to the end of the fold
     let s:new_lnum = foldclosedend(s:lnum)
@@ -1475,7 +1540,7 @@ while s:lnum <= s:end
     if s:settings.dynamic_folds
       " First insert a closing for any open folds that end on this line
       while !empty(s:foldstack) && get(s:foldstack,0).lastline == s:lnum-1
-	let s:new = s:new."</span></span>"
+	let s:new = s:new.."</span></span>"
 	call remove(s:foldstack, 0)
       endwhile
 
@@ -1483,9 +1548,9 @@ while s:lnum <= s:end
       let s:firstfold = 1
       while !empty(s:allfolds) && get(s:allfolds,0).firstline == s:lnum
 	let s:foldId = s:foldId + 1
-	let s:new .= "<span id='"
-	let s:new .= (exists('g:html_diff_win_num') ? "win".g:html_diff_win_num : "")
-	let s:new .= "fold".s:foldId.s:settings.id_suffix."' class='".s:allfolds[0].type."'>"
+	let s:new ..= "<span id='"
+	let s:new ..= (exists('g:html_diff_win_num') ? "win"..g:html_diff_win_num : "")
+	let s:new ..= "fold"..s:foldId..s:settings.id_suffix.."' class='"..s:allfolds[0].type.."'>"
 
 
 	" Unless disabled, add a fold column for the opening line of a fold.
@@ -1496,20 +1561,20 @@ while s:lnum <= s:end
 	if !s:settings.no_foldcolumn
 	  " add fold column that can open the new fold
 	  if s:allfolds[0].level > 1 && s:firstfold
-	    let s:new = s:new . s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
-		  \ 'toggle-open FoldColumn','javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
+	    let s:new = s:new .. s:FoldColumn_build('|', s:allfolds[0].level - 1, 0, "",
+		  \ 'toggle-open FoldColumn','javascript:toggleFold("fold'..s:foldstack[0].id..s:settings.id_suffix..'");')
 	  endif
 	  " add the filler spaces separately from the '+' char so that it can be
 	  " shown/hidden separately during a hover unfold
-	  let s:new = s:new . s:FoldColumn_build("+", 1, 0, "",
-		\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+	  let s:new = s:new .. s:FoldColumn_build("+", 1, 0, "",
+		\ 'toggle-open FoldColumn', 'javascript:toggleFold("fold'..s:foldId..s:settings.id_suffix..'");')
 	  " If this is not the last fold we're opening on this line, we need
 	  " to keep the filler spaces hidden if the fold is opened by mouse
 	  " hover. If it is the last fold to open in the line, we shouldn't hide
 	  " them, so don't apply the toggle-filler class.
-	  let s:new = s:new . s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
-		\ 'toggle-open FoldColumn'. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
-		\ 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+	  let s:new = s:new .. s:FoldColumn_build(" ", 1, s:foldcolumn - s:allfolds[0].level - 1, "",
+		\ 'toggle-open FoldColumn'.. (get(s:allfolds, 1, {'firstline': 0}).firstline == s:lnum ?" toggle-filler" :""),
+		\ 'javascript:toggleFold("fold'..s:foldId..s:settings.id_suffix..'");')
 
 	  " add fold column that can close the new fold
 	  " only add extra blank space if we aren't opening another fold on the
@@ -1522,12 +1587,12 @@ while s:lnum <= s:end
 	  if s:firstfold
 	    " the first fold in a line has '|' characters from folds opened in
 	    " previous lines, before the '-' for this fold
-	    let s:new .= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
-		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+	    let s:new ..= s:FoldColumn_build('|', s:allfolds[0].level - 1, s:extra_space, '-',
+		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'..s:foldId..s:settings.id_suffix..'");')
 	  else
 	    " any subsequent folds in the line only add a single '-'
-	    let s:new = s:new . s:FoldColumn_build("-", 1, s:extra_space, "",
-		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'.s:foldId.s:settings.id_suffix.'");')
+	    let s:new = s:new .. s:FoldColumn_build("-", 1, s:extra_space, "",
+		  \ 'toggle-closed FoldColumn', 'javascript:toggleFold("fold'..s:foldId..s:settings.id_suffix..'");')
 	  endif
 	  let s:firstfold = 0
 	endif
@@ -1535,12 +1600,12 @@ while s:lnum <= s:end
 	" Add fold text, moving the span ending to the next line so collapsing
 	" of folds works correctly.
 	" Put numcol in a separate group for sake of unselectable text.
-	let s:new = s:new . (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, 0) : "") . substitute(s:HtmlFormat_t(foldtextresult(s:lnum), s:FOLDED_ID, 0), '</span>', s:HtmlEndline.'\n\0', '')
-	let s:new = s:new . "<span class='fulltext'>"
+	let s:new = s:new .. (s:settings.number_lines ? s:HtmlFormat_n(s:numcol, s:FOLDED_ID, 0, 0) : "") .. substitute(s:HtmlFormat_t(foldtextresult(s:lnum), s:FOLDED_ID, 0), '</span>', s:HtmlEndline..'\n\0', '')
+	let s:new = s:new .. "<span class='fulltext'>"
 
 	" open the fold now that we have the fold text to allow retrieval of
 	" fold text for subsequent folds
-	execute s:lnum."foldopen"
+	execute s:lnum.."foldopen"
 	call insert(s:foldstack, remove(s:allfolds,0))
 	let s:foldstack[0].id = s:foldId
       endwhile
@@ -1555,13 +1620,13 @@ while s:lnum <= s:end
 	  " add the empty foldcolumn for unfolded lines if there is a fold
 	  " column at all
 	  if s:foldcolumn > 0
-	    let s:new = s:new . s:FoldColumn_fill()
+	    let s:new = s:new .. s:FoldColumn_fill()
 	  endif
 	else
 	  " add the fold column for folds not on the opening line
 	  if get(s:foldstack, 0).firstline < s:lnum
-	    let s:new = s:new . s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
-		  \ 'FoldColumn', 'javascript:toggleFold("fold'.s:foldstack[0].id.s:settings.id_suffix.'");')
+	    let s:new = s:new .. s:FoldColumn_build('|', s:foldstack[0].level, s:foldcolumn - s:foldstack[0].level, "",
+		  \ 'FoldColumn', 'javascript:toggleFold("fold'..s:foldstack[0].id..s:settings.id_suffix..'");')
 	  endif
 	endif
       endif
@@ -1569,9 +1634,9 @@ while s:lnum <= s:end
 
     " Now continue with the unfolded line text
     if s:settings.number_lines
-      let s:new = s:new . s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
+      let s:new = s:new .. s:HtmlFormat_n(s:numcol, s:LINENR_ID, 0, s:lnum)
     elseif s:settings.line_ids
-      let s:new = s:new . s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
+      let s:new = s:new .. s:HtmlFormat_n("", s:LINENR_ID, 0, s:lnum)
     endif
 
     " Get the diff attribute, if any.
@@ -1611,7 +1676,7 @@ while s:lnum <= s:end
 	if s:len < &columns && !s:settings.no_pre
 	  " Add spaces at the end of the raw text line to extend the changed
 	  " line to the full width.
-	  let s:line = s:line . repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
+	  let s:line = s:line .. repeat(' ', &columns - virtcol([s:lnum, s:len]) - s:margin)
 	  let s:len = &columns
 	endif
       else
@@ -1649,11 +1714,11 @@ while s:lnum <= s:end
 		" if the found tab is the first character in the text being
 		" processed, we need to get the character prior to the text,
 		" given by startcol.
-		let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:offset) . 'c')
+		let s:prevc = matchstr(s:line, '.\%' .. (s:startcol + s:offset) .. 'c')
 	      else
 		" Otherwise, the byte index of the tab into s:expandedtab is
 		" given by s:idx.
-		let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
+		let s:prevc = matchstr(s:expandedtab, '.\%' .. (s:idx + 1) .. 'c')
 	      endif
 	      let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
 
@@ -1689,12 +1754,12 @@ while s:lnum <= s:end
       " Output the text with the same synID, with class set to the highlight ID
       " name, unless it has been concealed completely.
       if strlen(s:expandedtab) > 0
-	let s:new = s:new . s:HtmlFormat(s:expandedtab,  s:id, s:diff_id, "", 0)
+	let s:new = s:new .. s:HtmlFormat(s:expandedtab,  s:id, s:diff_id, "", 0)
       endif
     endwhile
   endif
 
-  call extend(s:lines, split(s:new.s:HtmlEndline, '\n', 1))
+  call extend(s:lines, split(s:new..s:HtmlEndline, '\n', 1))
   if !s:settings.no_progress && s:pgb.needs_redraw
     redrawstatus
     let s:pgb.needs_redraw = 0
@@ -1706,17 +1771,21 @@ while s:lnum <= s:end
   endif
 endwhile
 
+" Diff filler is returned based on what needs inserting *before* the given line.
+" So to get diff filler at the end of the buffer, we need to use last line + 1
+call s:Add_diff_fill(s:end+1)
+
 if s:settings.dynamic_folds
   " finish off any open folds
   while !empty(s:foldstack)
-    let s:lines[-1].="</span></span>"
+    let s:lines[-1]..="</span></span>"
     call remove(s:foldstack, 0)
   endwhile
 
   " add fold column to the style list if not already there
   let s:id = s:FOLD_C_ID
   if !has_key(s:stylelist, s:id)
-    let s:stylelist[s:id] = '.FoldColumn { ' . s:CSS1(s:id) . '}'
+    let s:stylelist[s:id] = '.FoldColumn { ' .. s:CSS1(s:id) .. '}'
   endif
 endif
 
@@ -1734,7 +1803,7 @@ if !s:settings.no_doc
   call extend(s:lines, ["</body>", "</html>"])
 endif
 
-exe s:newwin . "wincmd w"
+exe s:newwin .. "wincmd w"
 call setline(1, s:lines)
 unlet s:lines
 
@@ -1757,17 +1826,17 @@ if s:settings.use_css && !s:settings.no_
 
   " Normal/global attributes
   if s:settings.no_pre
-    call append('.', "body { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }")
+    call append('.', "body { color: " .. s:fgc .. "; background-color: " .. s:bgc .. "; font-family: ".. s:htmlfont .."; }")
     +
   else
-    call append('.', "pre { " . s:whitespace . "font-family: ". s:htmlfont ."; color: " . s:fgc . "; background-color: " . s:bgc . "; }")
+    call append('.', "pre { " .. s:whitespace .. "font-family: ".. s:htmlfont .."; color: " .. s:fgc .. "; background-color: " .. s:bgc .. "; }")
     +
     yank
     put
     execute "normal! ^cwbody\e"
     " body should not have the wrap formatting, only the pre section
     if s:whitespace != ''
-      exec 's#'.s:whitespace
+      exec 's#'..s:whitespace
     endif
   endif
   " fix browser inconsistencies (sometimes within the same browser) of different
@@ -1778,13 +1847,13 @@ if s:settings.use_css && !s:settings.no_
   " like normal text
   if !empty(s:settings.prevent_copy)
     if s:settings.use_input_for_pc !=# "none"
-      call append('.', 'input { border: none; margin: 0; padding: 0; font-family: '.s:htmlfont.'; }')
+      call append('.', 'input { border: none; margin: 0; padding: 0; font-family: '..s:htmlfont..'; }')
       +
       " ch units for browsers which support them, em units for a somewhat
       " reasonable fallback.
       for w in range(1, 20, 1)
 	call append('.', [
-	      \ "input[size='".w."'] { width: ".w."em; width: ".w."ch; }"
+	      \ "input[size='"..w.."'] { width: "..w.."em; width: "..w.."ch; }"
 	      \ ])
 	+
       endfor
@@ -1828,14 +1897,15 @@ if s:settings.use_css && !s:settings.no_
       endif
       for s:style_name in s:unselectable_styles
 	call append('.', [
-	      \ '  .'.s:style_name.' { user-select: none; }',
-	      \ '  [data-'.s:style_name.'-content]::before { content: attr(data-'.s:style_name.'-content); }',
-	      \ '  [data-'.s:style_name.'-content]::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
-	      \ '  span[data-'.s:style_name.'-content]::before { cursor: default; }',
+	      \ '  .'..s:style_name..' { user-select: none; }',
+	      \ '  [data-'..s:style_name..'-content]::before { content: attr(data-'..s:style_name..'-content); }',
+	      \ '  [data-'..s:style_name..'-content]::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
+	      \ '  span[data-'..s:style_name..'-content]::before { cursor: default; }',
 	      \ ])
 	+4
       endfor
       if s:settings.use_input_for_pc !=# 'none'
+	" Note, the extra '}' is to match the "@supports" above
 	call append('.', [
 	      \ '  input { display: none; }',
 	      \ '}'
@@ -1851,12 +1921,12 @@ if s:settings.use_css && !s:settings.no_
 	" Make the cursor show active fold columns as active areas, and empty fold
 	" columns as not interactive.
 	call append('.', ['input.FoldColumn { cursor: pointer; }',
-	      \ 'input.FoldColumn[value="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
+	      \ 'input.FoldColumn[value="'..repeat(' ', s:foldcolumn)..'"] { cursor: default; }'
 	      \ ])
 	+2
 	if s:settings.use_input_for_pc !=# 'all'
 	  call append('.', [
-		\ 'a[data-FoldColumn-content="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
+		\ 'a[data-FoldColumn-content="'..repeat(' ', s:foldcolumn)..'"] { cursor: default; }'
 		\ ])
 	  +1
 	end
@@ -1884,7 +1954,7 @@ endif
 if !s:settings.use_css && !s:settings.no_doc
   " For Netscape 4, set <body> attributes too, though, strictly speaking, it's
   " incorrect.
-  execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"'
+  execute '%s:<body\([^>]*\):<body bgcolor="' .. s:bgc .. '" text="' .. s:fgc .. '"\1>\r<font face="'.. s:htmlfont ..'"'
 endif
 
 " Gather attributes for all other classes. Do diff first so that normal
@@ -1935,7 +2005,7 @@ let @/ = s:old_search
 let &more = s:old_more
 
 " switch to original window to restore those settings
-exe s:orgwin . "wincmd w"
+exe s:orgwin .. "wincmd w"
 
 if !s:settings.expand_tabs
   let &l:isprint = s:old_isprint
@@ -1945,7 +2015,7 @@ let &l:et = s:old_et
 let &l:scrollbind = s:old_bind
 
 " and back to the new window again to end there
-exe s:newwin . "wincmd w"
+exe s:newwin .. "wincmd w"
 
 let &l:stl = s:newwin_stl
 exec 'resize' s:old_winheight
@@ -1982,10 +2052,13 @@ if !v:profiling
     delfunc s:progressbar.incr
     unlet s:pgb s:progressbar
   endif
+
+  delfunc s:Add_diff_fill
 endif
 
-unlet! s:new_lnum s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace
+unlet! s:new_lnum s:diffattr s:difffillchar s:foldfillchar s:HtmlSpace s:diffstyle
 unlet! s:LeadingSpace s:HtmlEndline s:firstfold s:numcol s:foldcolumn
+unlet! s:wrapperfunc_lines s:build_fun_lines
 unlet s:foldstack s:allfolds s:foldId s:settings
 
 let &cpo = s:cpo_sav
--- a/runtime/syntax/8th.vim
+++ b/runtime/syntax/8th.vim
@@ -363,7 +363,7 @@ syn region eighthComment start="\zs\\" e
 if !exists("did_eighth_syntax_inits")
     let did_eighth_syntax_inits=1
 
-    " The default methods for highlighting. Can be overriden later.
+    " The default methods for highlighting. Can be overridden later.
     hi def link eighthTodo Todo
     hi def link eighthOperators Operator
     hi def link eighthMath Number
--- a/runtime/syntax/a65.vim
+++ b/runtime/syntax/a65.vim
@@ -118,7 +118,7 @@ syn match a65Section	"\(^\|\s\)\.)\($\|\
 " Strings
 syn match a65String	"\".*\""
 
-" Programm Counter
+" Program Counter
 syn region a65PC	start="\*=" end="\>" keepend
 
 " HI/LO Byte
--- a/runtime/syntax/bash.vim
+++ b/runtime/syntax/bash.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	bash
-" Maintainer:	Bram
-" Last Change:	2019 Sep 27
+" Maintainer:	The Vim Project <https://github.com/vim/vim>
+" Last Change:	2023 Aug 13
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
--- a/runtime/syntax/bindzone.vim
+++ b/runtime/syntax/bindzone.vim
@@ -33,7 +33,7 @@ syn match       zoneDomain      containe
 syn match       zoneSpecial     contained /^[@*.]\s/
 syn match       zoneTTL         contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite
 syn keyword     zoneClass       contained IN CHAOS CH HS HESIOD nextgroup=zoneRRType,zoneTTL skipwhite
-syn keyword     zoneRRType      contained A AAAA CAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM OPENPGPKEY PTR RP RRSIG SMIMEA SOA SPF SRV SSHFP TLSA TXT nextgroup=zoneRData skipwhite
+syn keyword     zoneRRType      contained A AAAA APL CAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM OPENPGPKEY PTR RP RRSIG SMIMEA SOA SPF SRV SSHFP TLSA TXT nextgroup=zoneRData skipwhite
 syn match       zoneRData       contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
 
 syn match       zoneIPAddr      contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
@@ -60,7 +60,7 @@ syn match       zoneIP6Addr     containe
 
 syn match       zoneText        contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/
 syn match       zoneNumber      contained /\<[0-9]\+\(\s\|;\|$\)\@=/
-syn match       zoneSerial      contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
+syn match       zoneSerial      contained /\<[0-9]\{1,10}\(\s\|;\|$\)\@=/
 
 syn match       zoneErrParen    /)/
 syn region      zoneParen       contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment
--- a/runtime/syntax/chaiscript.vim
+++ b/runtime/syntax/chaiscript.vim
@@ -61,7 +61,7 @@ syn region  chaiscriptFunc         match
 " Intentionally leaving out all of the normal, well known operators
 syn match   chaiscriptOperator     "\.\."
 
-" Guard seperator as an operator
+" Guard separator as an operator
 syn match   chaiscriptOperator     ":"
 
 " Comments
--- a/runtime/syntax/cmake.vim
+++ b/runtime/syntax/cmake.vim
@@ -335,7 +335,7 @@ syn keyword cmakeGeneratorExpressions co
 syn case ignore
 
 syn keyword cmakeCommand
-            \ add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue create_test_sourcelist ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload define_property enable_language enable_testing endfunction endmacro execute_process export file find_file find_library find_package find_path find_program fltk_wrap_ui function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property include include_directories include_external_msproject include_guard include_regular_expression install link_directories list load_cache load_command macro mark_as_advanced math message option project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_libraries target_sources try_compile try_run unset variable_watch
+            \ add_compile_options add_compile_definitions add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_subdirectory add_test aux_source_directory break build_command cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue create_test_sourcelist ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload define_property enable_language enable_testing endfunction endmacro execute_process export file find_file find_library find_package find_path find_program fltk_wrap_ui function get_cmake_property get_directory_property get_filename_component get_property get_source_file_property get_target_property get_test_property include include_directories include_external_msproject include_guard include_regular_expression install link_directories list load_cache load_command macro mark_as_advanced math message option project qt_wrap_cpp qt_wrap_ui remove_definitions return separate_arguments set set_directory_properties set_property set_source_files_properties set_target_properties set_tests_properties site_name source_group string target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_libraries target_sources try_compile try_run unset variable_watch
             \ nextgroup=cmakeArguments
 
 syn keyword cmakeCommandConditional
--- a/runtime/syntax/crontab.vim
+++ b/runtime/syntax/crontab.vim
@@ -5,7 +5,7 @@
 " License: This file can be redistribued and/or modified under the same terms
 "   as Vim itself.
 " Filenames: /tmp/crontab.* used by "crontab -e"
-" Last Change: 2015-01-20
+" Last Change: 2022-09-22
 "
 " crontab line format:
 " Minutes   Hours   Days   Months   Days_of_Week   Commands # comments
@@ -15,20 +15,20 @@ if exists("b:current_syntax")
 	finish
 endif
 
-syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite
+syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\|every_minute\|every_second\)\>" nextgroup=crontabCmd skipwhite
 
 syntax match crontabVar "^\s*\k\w*\s*="me=e-1
 
 syntax case ignore
 
-syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite
-syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained
-syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained
+syntax match crontabMin "^\s*[-~0-9/,.*]\+" nextgroup=crontabHr skipwhite
+syntax match crontabHr "\s[-~0-9/,.*]\+" nextgroup=crontabDay skipwhite contained
+syntax match crontabDay "\s[-~0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained
 
-syntax match crontabMnth "\s[-a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained
+syntax match crontabMnth "\s[-~a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained
 syntax keyword crontabMnth12 contained jan feb mar apr may jun jul aug sep oct nov dec
 
-syntax match crontabDow "\s[-a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained
+syntax match crontabDow "\s[-~a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained
 syntax keyword crontabDow7 contained sun mon tue wed thu fri sat
 
 syntax region crontabCmd start="\S" end="$" skipwhite contained keepend contains=crontabPercent
--- a/runtime/syntax/euphoria4.vim
+++ b/runtime/syntax/euphoria4.vim
@@ -27,7 +27,7 @@ syn keyword euphoria4Debug	includes inli
 " Keywords for conditional compilation - from $EUDIR/include/euphoria/keywords.e:
 syn keyword euphoria4PreProc	elsedef elsifdef ifdef 
 
-" Keywords (Statments) - from $EUDIR/include/euphoria/keywords.e:
+" Keywords (Statements) - from $EUDIR/include/euphoria/keywords.e:
 syn keyword euphoria4Keyword	and as break by case constant continue do else     
 syn keyword euphoria4Keyword	elsif end entry enum exit export
 syn keyword euphoria4Keyword	fallthru for function global goto if include
--- a/runtime/syntax/flexwiki.vim
+++ b/runtime/syntax/flexwiki.vim
@@ -67,10 +67,10 @@ syntax match flexwikiEmoticons      /\((
 " Aggregate all the regular text highlighting into flexwikiText
 syntax cluster flexwikiText contains=flexwikiItalic,flexwikiBold,flexwikiCode,flexwikiDeEmphasis,flexwikiDelText,flexwikiInsText,flexwikiSuperScript,flexwikiSubScript,flexwikiCitation,flexwikiLink,flexwikiWord,flexwikiEmoticons
 
-" single-line WikiPropertys
+" single-line WikiProperties
 syntax match flexwikiSingleLineProperty /^:\?[A-Z_][_a-zA-Z0-9]\+:/
 
-" TODO: multi-line WikiPropertys
+" TODO: multi-line WikiProperties
 
 " Header levels, 1-6
 syntax match flexwikiH1             /^!.*$/
--- a/runtime/syntax/forth.vim
+++ b/runtime/syntax/forth.vim
@@ -1,10 +1,20 @@
 " Vim syntax file
-" Language:    FORTH
-" Current Maintainer:  Johan Kotlinski <kotlinski@gmail.com>
-" Previous Maintainer:  Christian V. J. Br�ssow <cvjb@cvjb.de>
-" Last Change: 2023-01-12
-" Filenames:   *.fs,*.ft
-" URL:	       https://github.com/jkotlinski/forth.vim
+" Language:		Forth
+" Maintainer:		Johan Kotlinski <kotlinski@gmail.com>
+" Previous Maintainer:	Christian V. J. Brüssow <cvjb@cvjb.de>
+" Last Change:		2023 Aug 13
+" Filenames:		*.f,*.fs,*.ft,*.fth,*.4th
+" URL:			https://github.com/jkotlinski/forth.vim
+
+" Supports the Forth-2012 Standard.
+"
+" Removed words from the earlier Forth-79, Forth-83 and Forth-94 standards are
+" also included.
+"
+" These have been organised according to the version in which they were
+" initially included and the version in which they were removed (obsolescent
+" status is ignored).  Words with "experimental" or "uncontrolled" status are
+" not included unless they were later standardised.
 
 " quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -15,19 +25,15 @@ let s:cpo_save = &cpo
 set cpo&vim
 
 " Synchronization method
-syn sync ccomment
-syn sync maxlines=200
+exe "syn sync minlines=" .. get(g:, "forth_minlines", 50)
 
-" I use gforth, so I set this to case ignore
 syn case ignore
 
-" Some special, non-FORTH keywords
-syn keyword forthTodo contained TODO FIXME XXX
-
 " Characters allowed in keywords
 " I don't know if 128-255 are allowed in ANS-FORTH
-setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255
+syn iskeyword 33-126,128-255
 
+" Space errors {{{1
 " when wanted, highlight trailing white space
 if exists("forth_space_errors")
     if !exists("forth_no_trail_space_error")
@@ -38,188 +44,369 @@ if exists("forth_space_errors")
     endif
 endif
 
-" Keywords
+" Core words {{{1
+
+" basic mathematical and logical operators {{{2
+syn keyword forthOperators * */ */MOD + - / /MOD 0< 0= 1+ 1- 2* 2/ < = > ABS
+syn keyword forthOperators AND FM/MOD INVERT LSHIFT M* MAX MIN MOD NEGATE OR
+syn keyword forthOperators RSHIFT SM/REM U< UM* UM/MOD XOR
+  " extension words
+syn keyword forthOperators 0<> 0> <> U> WITHIN
+  " Forth-79
+syn keyword forthOperators U* U/ U/MOD
+  " Forth-79, Forth-83
+syn keyword forthOperators NOT
+  " Forth-83
+syn keyword forthOperators 2+ 2-
+
+" non-standard basic mathematical and logical operators
+syn keyword forthOperators 0<= 0>= 8* <= >= ?DNEGATE ?NEGATE U<= U>= UNDER+
+
+" various words that take an input and do something with it {{{2
+syn keyword forthFunction . U.
+  " extension words
+syn keyword forthFunction .R U.R
 
-" basic mathematical and logical operators
-syn keyword forthOperators + - * / MOD /MOD NEGATE ABS MIN MAX
-syn keyword forthOperators AND OR XOR NOT LSHIFT RSHIFT INVERT 2* 2/ 1+
-syn keyword forthOperators 1- 2+ 2- 8* UNDER+
-syn keyword forthOperators M+ */ */MOD M* UM* M*/ UM/MOD FM/MOD SM/REM
-syn keyword forthOperators D+ D- DNEGATE DABS DMIN DMAX D2* D2/
-syn keyword forthOperators F+ F- F* F/ FNEGATE FABS FMAX FMIN FLOOR FROUND
-syn keyword forthOperators F** FSQRT FEXP FEXPM1 FLN FLNP1 FLOG FALOG FSIN
-syn keyword forthOperators FCOS FSINCOS FTAN FASIN FACOS FATAN FATAN2 FSINH
-syn keyword forthOperators FCOSH FTANH FASINH FACOSH FATANH F2* F2/ 1/F
-syn keyword forthOperators F~REL F~ABS F~
-syn keyword forthOperators 0< 0<= 0<> 0= 0> 0>= < <= <> = > >= U< U<=
-syn keyword forthOperators U> U>= D0< D0<= D0<> D0= D0> D0>= D< D<= D<>
-syn keyword forthOperators D= D> D>= DU< DU<= DU> DU>= WITHIN ?NEGATE
-syn keyword forthOperators ?DNEGATE TRUE FALSE
+" stack manipulations {{{2
+syn keyword forthStack 2DROP 2DUP 2OVER 2SWAP >R ?DUP DROP DUP OVER R> R@ ROT
+syn keyword forthStack SWAP
+  " extension words
+syn keyword forthStack  NIP PICK ROLL TUCK
+syn keyword forthRStack 2>R 2R> 2R@
+
+" non-standard stack manipulations
+syn keyword forthStack  -ROT 3DROP 3DUP 4-ROT 4DROP 4DUP 4ROT 4SWAP 4TUCK
+syn keyword forthStack  5DROP 5DUP 8DROP 8DUP 8SWAP
+syn keyword forthRStack 4>R 4R> 4R@ 4RDROP RDROP
+
+" stack pointer manipulations {{{2
+syn keyword forthSP DEPTH
 
-" various words that take an input and do something with it
-syn keyword forthFunction . U. .R U.R
+" non-standard stack pointer manipulations
+syn keyword forthSP FP!  FP@ LP!  LP@ RP!  RP@ SP!  SP@
+
+" address operations {{{2
+syn keyword forthMemory !  +!  2!  2@ @ C!  C@
+syn keyword forthAdrArith ALIGN ALIGNED ALLOT CELL+ CELLS CHAR+ CHARS
+syn keyword forthMemBlks  FILL MOVE
+  " extension words
+syn keyword forthMemBlks  ERASE UNUSED
+
+" non-standard address operations
+syn keyword forthAdrArith ADDRESS-UNIT-BITS CELL CFALIGN CFALIGNED FLOAT
+syn keyword forthAdrArith MAXALIGN MAXALIGNED
+
+" conditionals {{{2
+syn keyword forthCond ELSE IF THEN
+  " extension words
+syn keyword forthCond CASE ENDCASE ENDOF OF
 
-" stack manipulations
-syn keyword forthStack DROP NIP DUP OVER TUCK SWAP ROT -ROT ?DUP PICK ROLL
-syn keyword forthStack 2DROP 2NIP 2DUP 2OVER 2TUCK 2SWAP 2ROT 2-ROT
-syn keyword forthStack 3DUP 4DUP 5DUP 3DROP 4DROP 5DROP 8DROP 4SWAP 4ROT
-syn keyword forthStack 4-ROT 4TUCK 8SWAP 8DUP
-syn keyword forthRStack >R R> R@ RDROP 2>R 2R> 2R@ 2RDROP
-syn keyword forthRstack 4>R 4R> 4R@ 4RDROP
-syn keyword forthFStack FDROP FNIP FDUP FOVER FTUCK FSWAP FROT
+" non-standard conditionals
+syn keyword forthCond ?DUP-0=-IF ?DUP-IF ENDIF
+
+" iterations {{{2
+syn keyword forthLoop +LOOP BEGIN DO EXIT I J LEAVE LOOP RECURSE REPEAT UNLOOP
+syn keyword forthLoop UNTIL WHILE
+  " extension words
+syn keyword forthLoop ?DO AGAIN
+
+" non-standard iterations
+syn keyword forthLoop +DO -DO -LOOP ?LEAVE DONE FOR K NEXT U+DO U-DO
 
-" stack pointer manipulations
-syn keyword forthSP SP@ SP! FP@ FP! RP@ RP! LP@ LP! DEPTH
+" new words {{{2
+syn match   forthColonDef      "\<:\s*[^ \t]\+\>"
+syn keyword forthEndOfColonDef ;
+syn keyword forthDefine ' , C, CONSTANT CREATE DOES> EXECUTE IMMEDIATE LITERAL
+syn keyword forthDefine POSTPONE STATE VARIABLE ]
+syn match   forthDefine "\<\[']\>"
+syn match   forthDefine "\<\[\>"
+  " extension words
+syn keyword forthColonDef :NONAME
+syn keyword forthDefine   BUFFER: COMPILE, DEFER IS MARKER TO VALUE
+syn match   forthDefine   "\<\[COMPILE]\>"
+  " Forth-79, Forth-83
+syn keyword forthDefine COMPILE
 
-" address operations
-syn keyword forthMemory @ ! +! C@ C! 2@ 2! F@ F! SF@ SF! DF@ DF!
-syn keyword forthAdrArith CHARS CHAR+ CELLS CELL+ CELL ALIGN ALIGNED FLOATS
-syn keyword forthAdrArith FLOAT+ FLOAT FALIGN FALIGNED SFLOATS SFLOAT+
-syn keyword forthAdrArith SFALIGN SFALIGNED DFLOATS DFLOAT+ DFALIGN DFALIGNED
-syn keyword forthAdrArith MAXALIGN MAXALIGNED CFALIGN CFALIGNED
-syn keyword forthAdrArith ADDRESS-UNIT-BITS ALLOT ALLOCATE HERE
-syn keyword forthMemBlks MOVE ERASE CMOVE CMOVE> FILL BLANK UNUSED
+" non-standard new words
+syn match   forthClassDef       "\<:CLASS\s*[^ \t]\+\>"
+syn keyword forthEndOfClassDef  ;CLASS
+syn match   forthObjectDef      "\<:OBJECT\s*[^ \t]\+\>"
+syn keyword forthEndOfObjectDef ;OBJECT
+syn match   forthColonDef       "\<:M\s*[^ \t]\+\>"
+syn keyword forthEndOfColonDef  ;M
+syn keyword forthDefine 2, <BUILDS <COMPILATION <INTERPRETATION C; COMP'
+syn keyword forthDefine COMPILATION> COMPILE-ONLY CREATE-INTERPRET/COMPILE
+syn keyword forthDefine CVARIABLE F, FIND-NAME INTERPRET INTERPRETATION>
+syn keyword forthDefine LASTXT NAME>COMP NAME>INT NAME?INT POSTPONE, RESTRICT
+syn keyword forthDefine USER
+syn match   forthDefine "\<\[COMP']\>"
 
-" conditionals
-syn keyword forthCond IF ELSE ENDIF THEN CASE OF ENDOF ENDCASE ?DUP-IF
-syn keyword forthCond ?DUP-0=-IF AHEAD CS-PICK CS-ROLL CATCH THROW WITHIN
+" basic character operations {{{2
+syn keyword forthCharOps BL COUNT CR EMIT FIND KEY SPACE SPACES TYPE WORD
+" recognize 'char (' or '[CHAR] (' correctly, so it doesn't
+" highlight everything after the paren as a comment till a closing ')'
+syn match forthCharOps '\<CHAR\s\S\s'
+syn match forthCharOps '\<\[CHAR]\s\S\s'
+  " Forth-83, Forth-94
+syn keyword forthCharOps EXPECT #TIB TIB
 
-" iterations
-syn keyword forthLoop BEGIN WHILE REPEAT UNTIL AGAIN
-syn keyword forthLoop ?DO LOOP I J K +DO U+DO -DO U-DO DO +LOOP -LOOP
-syn keyword forthLoop UNLOOP LEAVE ?LEAVE EXIT DONE FOR NEXT RECURSE
+" non-standard basic character operations
+syn keyword forthCharOps (.)
+
+" char-number conversion {{{2
+syn keyword forthConversion # #> #S <# >NUMBER HOLD S>D SIGN
+  " extension words
+syn keyword forthConversion HOLDS
+  " Forth-79, Forth-83, Forth-93
+syn keyword forthConversion CONVERT
+
+" non-standard char-number conversion
+syn keyword forthConversion #>> (NUMBER) (NUMBER?) <<# DIGIT DPL HLD NUMBER
 
-" new words
-syn match forthClassDef '\<:class\s*[^ \t]\+\>'
-syn match forthObjectDef '\<:object\s*[^ \t]\+\>'
-syn match forthColonDef '\<:m\?\s*[^ \t]\+\>'
-syn keyword forthEndOfColonDef ; ;M ;m
-syn keyword forthEndOfClassDef ;class
-syn keyword forthEndOfObjectDef ;object
-syn keyword forthDefine CONSTANT 2CONSTANT FCONSTANT VARIABLE 2VARIABLE
-syn keyword forthDefine FVARIABLE CREATE USER VALUE TO DEFER IS <BUILDS DOES> IMMEDIATE
-syn keyword forthDefine COMPILE-ONLY COMPILE RESTRICT INTERPRET POSTPONE EXECUTE
-syn keyword forthDefine LITERAL CREATE-INTERPRET/COMPILE INTERPRETATION>
-syn keyword forthDefine <INTERPRETATION COMPILATION> <COMPILATION ] LASTXT
-syn keyword forthDefine COMP' POSTPONE, FIND-NAME NAME>INT NAME?INT NAME>COMP
-syn keyword forthDefine NAME>STRING STATE C; CVARIABLE BUFFER: MARKER
-syn keyword forthDefine , 2, F, C, COMPILE,
-syn match forthDefine "\[DEFINED]"
-syn match forthDefine "\[UNDEFINED]"
-syn match forthDefine "\[IF]"
-syn match forthDefine "\[IFDEF]"
-syn match forthDefine "\[IFUNDEF]"
-syn match forthDefine "\[THEN]"
-syn match forthDefine "\[ENDIF]"
-syn match forthDefine "\[ELSE]"
-syn match forthDefine "\[?DO]"
-syn match forthDefine "\[DO]"
-syn match forthDefine "\[LOOP]"
-syn match forthDefine "\[+LOOP]"
-syn match forthDefine "\[NEXT]"
-syn match forthDefine "\[BEGIN]"
-syn match forthDefine "\[UNTIL]"
-syn match forthDefine "\[AGAIN]"
-syn match forthDefine "\[WHILE]"
-syn match forthDefine "\[REPEAT]"
-syn match forthDefine "\[COMP']"
-syn match forthDefine "'"
-syn match forthDefine '\<\[\>'
-syn match forthDefine "\[']"
-syn match forthDefine '\[COMPILE]'
-syn match forthDefine '\[CHAR]'
+" interpreter, wordbook, compiler {{{2
+syn keyword forthForth >BODY >IN ACCEPT ENVIRONMENT?  EVALUATE HERE QUIT SOURCE
+  " extension words
+syn keyword forthForth ACTION-OF DEFER!  DEFER@ PAD PARSE PARSE-NAME REFILL
+syn keyword forthForth RESTORE-INPUT SAVE-INPUT SOURCE-ID
+  " Forth-79
+syn keyword forthForth 79-STANDARD
+  " Forth-83
+syn keyword forthForth <MARK <RESOLVE >MARK >RESOLVE ?BRANCH BRANCH FORTH-83
+  " Forth-79, Forth-83, Forth-94
+syn keyword forthForth QUERY
+  " Forth-83, Forth-94
+syn keyword forthForth SPAN
+
+" non-standard interpreter, wordbook, compiler
+syn keyword forthForth ) >LINK >NEXT >VIEW ASSERT( ASSERT0( ASSERT1( ASSERT2(
+syn keyword forthForth ASSERT3( BODY> CFA COLD L>NAME LINK> N>LINK NAME> VIEW
+syn keyword forthForth VIEW>
+
+" booleans {{{2
+  " extension words
+syn match forthBoolean "\<\%(TRUE\|FALSE\)\>"
 
-" debugging
-syn keyword forthDebug PRINTDEBUGDATA PRINTDEBUGLINE
-syn match forthDebug "\<\~\~\>"
+" numbers {{{2
+syn keyword forthMath  BASE DECIMAL
+  " extension words
+syn keyword forthMath  HEX
+syn match forthInteger '\<-\=\d\+\.\=\>'
+syn match forthInteger '\<#-\=\d\+\.\=\>'
+syn match forthInteger '\<\$-\=\x\+\.\=\>'
+syn match forthInteger '\<%-\=[01]\+\.\=\>'
 
-" Assembler
-syn keyword forthAssembler ASSEMBLER CODE END-CODE ;CODE FLUSH-ICACHE C,
+" characters {{{2
+syn match forthCharacter "'\k'"
+
+" strings {{{2
 
-" basic character operations
-syn keyword forthCharOps (.) CHAR EXPECT FIND WORD TYPE -TRAILING EMIT KEY
-syn keyword forthCharOps KEY? TIB CR BL COUNT SPACE SPACES
-" recognize 'char (' or '[char] (' correctly, so it doesn't
-" highlight everything after the paren as a comment till a closing ')'
-syn match forthCharOps '\<char\s\S\s'
-syn match forthCharOps '\<\[char\]\s\S\s'
-syn region forthCharOps start=+."\s+ skip=+\\"+ end=+"+
+" Words that end with " are assumed to start string parsing.
+" This includes standard words: S" ."
+syn region forthString matchgroup=forthString start=+\<\S\+"\s+ end=+"+ end=+$+ contains=@Spell
+  " extension words
+syn region forthString matchgroup=forthString start=+\<C"\s+ end=+"+ end=+$+ contains=@Spell
+" Matches S\"
+syn region forthString matchgroup=forthString start=+\<S\\"\s+ end=+"+ end=+$+ contains=@Spell,forthEscape
+
+syn match forthEscape +\C\\[abeflmnqrtvz"\\]+ contained
+syn match forthEscape "\C\\x\x\x" contained
 
-" char-number conversion
-syn keyword forthConversion <<# <# # #> #>> #S (NUMBER) (NUMBER?) CONVERT D>F
-syn keyword forthConversion D>S DIGIT DPL F>D HLD HOLD NUMBER S>D SIGN >NUMBER
-syn keyword forthConversion F>S S>F HOLDS
+" comments {{{2
+
+syn keyword forthTodo contained TODO FIXME XXX
+
+" Some special, non-FORTH keywords
+syn match forthTodo contained "\<\%(TODO\|FIXME\|XXX\)\%(\>\|:\@=\)"
+
+" XXX If you find this overkill you can remove it. This has to come after the
+" highlighting for numbers and booleans otherwise it has no effect.
+syn region forthComment start='\<\%(0\|FALSE\)\s\+\[IF]' end='\<\[ENDIF]' end='\<\[THEN]' contains=forthTodo
 
-" interpreter, wordbook, compiler
-syn keyword forthForth (LOCAL) BYE COLD ABORT >BODY >NEXT >LINK CFA >VIEW HERE
-syn keyword forthForth PAD WORDS VIEW VIEW> N>LINK NAME> LINK> L>NAME FORGET
-syn keyword forthForth BODY> ASSERT( ASSERT0( ASSERT1( ASSERT2( ASSERT3( )
-syn keyword forthForth >IN ACCEPT ENVIRONMENT? EVALUATE QUIT SOURCE ACTION-OF
-syn keyword forthForth DEFER! DEFER@ PARSE PARSE-NAME REFILL RESTORE-INPUT
-syn keyword forthForth SAVE-INPUT SOURCE-ID
-syn region forthForth start=+ABORT"\s+ skip=+\\"+ end=+"+
+if get(g:, "forth_no_comment_fold", 0)
+    syn region forthComment start='\<(\>' end=')' contains=@Spell,forthTodo,forthSpaceError
+      " extension words
+    syn match  forthComment '\<\\\>.*$' contains=@Spell,forthTodo,forthSpaceError
+else
+    syn region forthComment start='\<(\>' end=')' contains=@Spell,forthTodo,forthSpaceError fold
+      " extension words
+    syn match  forthComment '\<\\\>.*$' contains=@Spell,forthTodo,forthSpaceError
+    syn region forthMultilineComment start="^\s*\\\>" end="\n\%(\s*\\\>\)\@!" contains=forthComment transparent fold
+endif
 
-" vocabularies
-syn keyword forthVocs ONLY FORTH ALSO ROOT SEAL VOCS ORDER CONTEXT #VOCS
-syn keyword forthVocs VOCABULARY DEFINITIONS
+  " extension words
+syn region forthComment start='\<\.(\>' end=')' end='$' contains=@Spell,forthTodo,forthSpaceError
 
-" File keywords
-syn keyword forthFileMode R/O R/W W/O BIN
-syn keyword forthFileWords OPEN-FILE CREATE-FILE CLOSE-FILE DELETE-FILE
-syn keyword forthFileWords RENAME-FILE READ-FILE READ-LINE KEY-FILE
-syn keyword forthFileWords KEY?-FILE WRITE-FILE WRITE-LINE EMIT-FILE
-syn keyword forthFileWords FLUSH-FILE FILE-STATUS FILE-POSITION
-syn keyword forthFileWords REPOSITION-FILE FILE-SIZE RESIZE-FILE
-syn keyword forthFileWords SLURP-FILE SLURP-FID STDIN STDOUT STDERR
-syn keyword forthFileWords INCLUDE-FILE INCLUDED REQUIRED
-syn keyword forthBlocks OPEN-BLOCKS USE LOAD --> BLOCK-OFFSET
-syn keyword forthBlocks GET-BLOCK-FID BLOCK-POSITION LIST SCR BLOCK
-syn keyword forthBlocks BUFER EMPTY-BUFFERS EMPTY-BUFFER UPDATE UPDATED?
-syn keyword forthBlocks SAVE-BUFFERS SAVE-BUFFER FLUSH THRU +LOAD +THRU
-syn keyword forthBlocks BLOCK-INCLUDED BLK
+" ABORT {{{2
+syn keyword forthForth ABORT
+syn region forthForth start=+\<ABORT"\s+ end=+"\>+ end=+$+
+
+" The optional Block word set {{{1
+" Handled as Core words - REFILL
+syn keyword forthBlocks BLK BLOCK BUFFER FLUSH LOAD SAVE-BUFFERS UPDATE
+  " extension words
+syn keyword forthBlocks EMPTY-BUFFERS LIST SCR THRU
+
+" Non-standard Block words
+syn keyword forthBlocks +LOAD +THRU --> BLOCK-INCLUDED BLOCK-OFFSET
+syn keyword forthBlocks BLOCK-POSITION EMPTY-BUFFER GET-BLOCK-FID OPEN-BLOCKS
+syn keyword forthBlocks SAVE-BUFFER UPDATED? USE
 
-" numbers
-syn keyword forthMath DECIMAL HEX BASE
-syn match forthInteger '\<-\=[0-9]\+.\=\>'
-syn match forthInteger '\<&-\=[0-9]\+.\=\>'
-syn match forthInteger '\<#-\=[0-9]\+.\=\>'
-" recognize hex and binary numbers, the '$' and '%' notation is for gforth
-syn match forthInteger '\<\$\x*\x\+\>' " *1* --- don't mess
-syn match forthInteger '\<\x*\d\x*\>'  " *2* --- this order!
-syn match forthInteger '\<%[0-1]*[0-1]\+\>'
-syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe]\d\+\>'
-syn match forthFloat '\<-\=\d*[.]\=\d\+[DdEe][-+]\d\+\>'
+" The optional Double-Number word set {{{1
+syn keyword forthConversion D>S
+syn keyword forthDefine     2CONSTANT 2LITERAL 2VARIABLE
+syn keyword forthFunction   D. D.R
+syn keyword forthOperators  D+ D- D0= D2* D2/ D= DABS DMAX DMIN DNEGATE
+syn keyword forthOperators  D0< D< M+ M*/
+  " extension words
+syn keyword forthDefine    2VALUE
+syn keyword forthOperators DU<
+syn keyword forthStack     2ROT
 
-" XXX If you find this overkill you can remove it. this has to come after the
-" highlighting for numbers otherwise it has no effect.
-syn region forthComment start='0 \[if\]' end='\[endif\]' end='\[then\]' contains=forthTodo
+" Non-standard Double-Number words
+syn keyword forthOperators D0<= D0<> D0> D0>= D<= D<> D> D>= DU<= DU> DU>=
+syn keyword forthStack     2-ROT 2NIP 2RDROP 2TUCK
+
+" The optional Exception word set {{{1
+" Handled as Core words - ABORT ABORT"
+syn keyword forthCond CATCH THROW
 
-" Strings
-syn region forthString start=+\.*\"+ end=+"+ end=+$+ contains=@Spell
-" XXX
-syn region forthString start=+s\"+ end=+"+ end=+$+ contains=@Spell
-syn region forthString start=+s\\\"+ end=+"+ end=+$+ contains=@Spell
-syn region forthString start=+c\"+ end=+"+ end=+$+ contains=@Spell
+" The optional Facility word set {{{1
+syn keyword forthCharOps AT-XY KEY?  PAGE
+  " extension words
+syn keyword forthCharOps EKEY EKEY>CHAR EKEY>FKEY EKEY?  EMIT?  K-ALT-MASK
+syn keyword forthCharOps K-CTRL-MASK K-DELETE K-DOWN K-END K-F1 K-F10 K-F11
+syn keyword forthCharOps K-F12 K-F2 K-F3 K-F4 K-F5 K-F6 K-F7 K-F8 K-F9 K-HOME
+syn keyword forthCharOps K-INSERT K-LEFT K-NEXT K-PRIOR K-RIGHT K-SHIFT-MASK
+syn keyword forthCharOps K-UP
+syn keyword forthDefine  +FIELD BEGIN-STRUCTURE CFIELD: END-STRUCTURE FIELD:
+syn keyword forthForth   MS TIME&DATE
 
-" Comments
-syn match forthComment '\\\%(\s.*\)\=$' contains=@Spell,forthTodo,forthSpaceError
-syn region forthComment start='\\S\s' end='.*' contains=@Spell,forthTodo,forthSpaceError
-syn match forthComment '\.(\s[^)]*)' contains=@Spell,forthTodo,forthSpaceError
-syn region forthComment start='\(^\|\s\)\zs(\s' skip='\\)' end=')' contains=@Spell,forthTodo,forthSpaceError
-syn region forthComment start='/\*' end='\*/' contains=@Spell,forthTodo,forthSpaceError
+" The optional File-Access word set {{{1
+" Handled as Core words - REFILL SOURCE-ID S\" S" (
+syn keyword forthFileMode  BIN R/O R/W W/O
+syn keyword forthFileWords CLOSE-FILE CREATE-FILE DELETE-FILE FILE-POSITION
+syn keyword forthFileWords FILE-SIZE INCLUDE-FILE INCLUDED OPEN-FILE READ-FILE
+syn keyword forthFileWords READ-LINE REPOSITION-FILE RESIZE-FILE WRITE-FILE
+syn keyword forthFileWords WRITE-LINE
+  " extension words
+syn keyword forthFileWords FILE-STATUS FLUSH-FILE RENAME-FILE REQUIRED
+syn match forthInclude '\<INCLUDE\s\+\k\+'
+syn match forthInclude '\<REQUIRE\s\+\k\+'
 
-" Include files
-syn match forthInclude '^INCLUDE\s\+\k\+'
-syn match forthInclude '^REQUIRE\s\+\k\+'
+" Non-standard File-Access words
+syn keyword forthFileWords EMIT-FILE KEY-FILE KEY?-FILE SLURP-FID SLURP-FILE
+syn keyword forthFileWords STDERR STDIN STDOUT
 syn match forthInclude '^FLOAD\s\+'
 syn match forthInclude '^NEEDS\s\+'
 
-" Locals definitions
-syn region forthLocals start='{\s' start='{$' end='\s}' end='^}'
-syn match forthLocals '{ }' " otherwise, at least two spaces between
-syn region forthDeprecated start='locals|' end='|'
+" The optional Floating-Point word set {{{1
+
+" numbers
+syn match   forthFloat      '\<[+-]\=\d\+\.\=\d*[DdEe][+-]\=\d*\>'
+
+syn keyword forthConversion >FLOAT D>F F>D
+syn keyword forthAdrArith   FALIGN FALIGNED FLOAT+ FLOATS
+syn keyword forthDefine     FCONSTANT FLITERAL FVARIABLE
+syn keyword forthFStack     FDROP FDUP FOVER FROT FSWAP
+syn keyword forthFunction   REPRESENT
+syn keyword forthMemory     F! F@
+syn keyword forthOperators  F* F+ F- F/ F0< F0= F< FLOOR FMAX FMIN FNEGATE
+syn keyword forthOperators  FROUND
+syn keyword forthSP         FDEPTH
+  " extension words
+syn keyword forthConversion F>S S>F
+syn keyword forthAdrArith   DFALIGN DFALIGNED DFLOAT+ DFLOATS SFALIGN
+syn keyword forthAdrArith   SFALIGNED SFLOAT+ SFLOATS
+syn keyword forthDefine     DFFIELD: FFIELD: FVALUE SFFIELD:
+syn keyword forthFunction   F. FE. FS. PRECISION SET-PRECISION
+syn keyword forthMemory     DF! DF@ SF! SF@
+syn keyword forthOperators  F** FABS FACOS FACOSH FALOG FASIN FASINH FATAN
+syn keyword forthOperators  FATAN2 FATANH FCOS FCOSH FEXP FEXPM1 FLN FLNP1
+syn keyword forthOperators  FLOG FSIN FSINCOS FSINH FSQRT FTAN FTANH FTRUNC F~
+
+" Non-standard Floating-Point words
+syn keyword forthOperators 1/F F2* F2/ F~ABS F~REL
+syn keyword forthFStack    FNIP FTUCK
+
+" The optional Locals word set {{{1
+syn keyword forthForth (LOCAL)
+  " extension words
+syn region forthLocals start="\<{:\>" end="\<:}\>"
+syn region forthLocals start="\<LOCALS|\>" end="\<|\>"
+
+" Non-standard Locals words
+syn region forthLocals start="\<{\>" end="\<}\>"
+
+" The optional Memory-Allocation word set {{{1
+syn keyword forthMemory ALLOCATE FREE RESIZE
 
-" Define the default highlighting.
+" The optional Programming-Tools wordset {{{1
+syn keyword forthDebug .S ? DUMP SEE WORDS
+  " extension words
+syn keyword forthAssembler ;CODE ASSEMBLER CODE END-CODE
+syn keyword forthCond      AHEAD CS-PICK CS-ROLL
+syn keyword forthDefine    NAME>COMPILE NAME>INTERPRET NAME>STRING SYNONYM
+syn keyword forthDefine    TRAVERSE-WORDLIST
+syn match   forthDefine    "\<\[DEFINED]\>"
+syn match   forthDefine    "\<\[ELSE]\>"
+syn match   forthDefine    "\<\[IF]\>"
+syn match   forthDefine    "\<\[THEN]\>"
+syn match   forthDefine    "\<\[UNDEFINED]\>"
+syn keyword forthForth     BYE FORGET
+syn keyword forthStack     N>R NR>
+syn keyword forthVocs      EDITOR
+
+" Non-standard Programming-Tools words
+syn keyword forthAssembler FLUSH-ICACHE
+syn keyword forthDebug     PRINTDEBUGDATA PRINTDEBUGLINE
+syn match   forthDebug     "\<\~\~\>"
+syn match   forthDefine    "\<\[+LOOP]\>"
+syn match   forthDefine    "\<\[?DO]\>"
+syn match   forthDefine    "\<\[AGAIN]\>"
+syn match   forthDefine    "\<\[BEGIN]\>"
+syn match   forthDefine    "\<\[DO]\>"
+syn match   forthDefine    "\<\[ENDIF]\>"
+syn match   forthDefine    "\<\[IFDEF]\>"
+syn match   forthDefine    "\<\[IFUNDEF]\>"
+syn match   forthDefine    "\<\[LOOP]\>"
+syn match   forthDefine    "\<\[NEXT]\>"
+syn match   forthDefine    "\<\[REPEAT]\>"
+syn match   forthDefine    "\<\[UNTIL]\>"
+syn match   forthDefine    "\<\[WHILE]\>"
+
+" The optional Search-Order word set {{{1
+" Handled as Core words - FIND
+syn keyword forthVocs DEFINITIONS FORTH-WORDLIST GET-CURRENT GET-ORDER
+syn keyword forthVocs SEARCH-WORDLIST SET-CURRENT SET-ORDER WORDLIST
+  " extension words
+syn keyword forthVocs ALSO FORTH ONLY ORDER PREVIOUS
+  " Forth-79, Forth-83
+syn keyword forthVocs CONTEXT CURRENT VOCABULARY
+
+" Non-standard Search-Order words
+syn keyword forthVocs #VOCS ROOT SEAL VOCS
+
+" The optional String word set {{{1
+syn keyword forthFunction -TRAILING /STRING BLANK CMOVE CMOVE> COMPARE SEARCH
+syn keyword forthFunction SLITERAL
+  " extension words
+syn keyword forthFunction REPLACES SUBSTITUTE UNESCAPE
+
+" The optional Extended-Character word set {{{1
+" Handled as Core words - [CHAR] CHAR and PARSE
+syn keyword forthAdrArith XCHAR+
+syn keyword forthCharOps  X-SIZE XC-SIZE XEMIT XKEY XKEY?
+syn keyword forthDefine   XC,
+syn keyword forthMemory   XC!+ XC!+? XC@+
+  " extension words
+syn keyword forthAdrArith   XCHAR- +X/STRING X\\STRING-
+syn keyword forthCharOps    EKEY>XCHAR X-WIDTH XC-WIDTH
+syn keyword forthConversion XHOLD
+syn keyword forthString     -TRAILING-GARBAGE
+
+" Define the default highlighting {{{1
+hi def link forthBoolean Boolean
+hi def link forthCharacter Character
 hi def link forthTodo Todo
 hi def link forthOperators Operator
 hi def link forthMath Number
@@ -243,6 +430,7 @@ hi def link forthCharOps Character
 hi def link forthConversion String
 hi def link forthForth Statement
 hi def link forthVocs Statement
+hi def link forthEscape Special
 hi def link forthString String
 hi def link forthComment Comment
 hi def link forthClassDef Define
@@ -251,16 +439,17 @@ hi def link forthObjectDef Define
 hi def link forthEndOfObjectDef Define
 hi def link forthInclude Include
 hi def link forthLocals Type " nothing else uses type and locals must stand out
-hi def link forthDeprecated Error " if you must, change to Type
 hi def link forthFileMode Function
 hi def link forthFunction Function
 hi def link forthFileWords Statement
 hi def link forthBlocks Statement
 hi def link forthSpaceError Error
+"}}}
 
 let b:current_syntax = "forth"
 
 let &cpo = s:cpo_save
 unlet s:cpo_save
-" vim:ts=8:sw=4:nocindent:smartindent:
 
+" vim:ts=8:sw=4:nocindent:smartindent:fdm=marker:tw=78
+
--- a/runtime/syntax/gdb.vim
+++ b/runtime/syntax/gdb.vim
@@ -30,7 +30,7 @@ syn keyword gdbStatement contained searc
 syn keyword gdbStatement contained stop target tbreak tdump tfind thbreak thread tp trace tstart tstatus tstop
 syn keyword gdbStatement contained tty und[isplay] unset until up watch whatis where while ws x
 syn match gdbFuncDef "\<define\>.*"
-syn match gdbStatmentContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef
+syn match gdbStatementContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef
 syn match gdbStatement "^\s*info" nextgroup=gdbInfo skipwhite skipempty
 
 " some commonly used abbreviations
--- a/runtime/syntax/groovy.vim
+++ b/runtime/syntax/groovy.vim
@@ -362,7 +362,7 @@ exec "syn sync ccomment groovyComment mi
 
 " Mark these as operators
 
-" Hightlight brackets
+" Highlight brackets
 " syn match  groovyBraces		"[{}]"
 " syn match  groovyBraces		"[\[\]]"
 " syn match  groovyBraces		"[\|]"
--- a/runtime/syntax/lite.vim
+++ b/runtime/syntax/lite.vim
@@ -5,7 +5,7 @@
 " Email:	Subject: send syntax_vim.tgz
 " Last Change:	2001 Mai 01
 "
-" Options	lite_sql_query = 1 for SQL syntax highligthing inside strings
+" Options	lite_sql_query = 1 for SQL syntax highlighting inside strings
 "		lite_minlines = x     to sync at least x lines backwards
 
 " quit when a syntax file was already loaded
--- a/runtime/syntax/logtalk.vim
+++ b/runtime/syntax/logtalk.vim
@@ -330,7 +330,7 @@ syn match	logtalkKeyword		"\<t\(an\|runc
 syn match	logtalkKeyword		"\<ceiling\ze("
 
 
-" Other arithemtic functors
+" Other arithmetic functors
 
 syn match	logtalkOperator		"\*\*"
 syn match	logtalkKeyword		"\<s\(in\|qrt\)\ze("
--- a/runtime/syntax/lss.vim
+++ b/runtime/syntax/lss.vim
@@ -9,7 +9,7 @@ if exists("b:current_syntax")
 endif
 
 " This setup is probably atypical for a syntax highlighting file, because
-" most of it is not really intended to be overrideable.  Instead, the
+" most of it is not really intended to be overridable.  Instead, the
 " highlighting is supposed to correspond to the highlighting specified by
 " the .lss file entries themselves; ie. the "bold" keyword should be bold,
 " the "red" keyword should be red, and so forth.  The exceptions to this
--- a/runtime/syntax/model.vim
+++ b/runtime/syntax/model.vim
@@ -5,7 +5,7 @@
 " Former Maintainer:	Bram Moolenaar <Bram@vim.org>
 
 " very basic things only (based on the vgrindefs file).
-" If you use this language, please improve it, and send me the patches!
+" If you use this language, please improve it, and send patches!
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
--- a/runtime/syntax/pymanifest.vim
+++ b/runtime/syntax/pymanifest.vim
@@ -20,7 +20,7 @@ syn match pymanifestComment /\\\@1<!#.*/
 " Commands
 syn keyword pymanifestCommand
             \ include exclude
-            \ recursive-include resursive-exclude
+            \ recursive-include recursive-exclude
             \ global-include global-exclude
             \ graft prune
 
--- a/runtime/syntax/rmd.vim
+++ b/runtime/syntax/rmd.vim
@@ -81,7 +81,7 @@ else
     syn match  yamlEscape contained '\\\%([\\"abefnrtv\^0_ NLP\n]\|x\x\x\|u\x\{4}\|U\x\{8}\)'
     syn match  yamlSingleEscape contained "''"
     syn match yamlComment /#.*/ contained
-    " A second colon is a syntax error, unles within a string or following !expr
+    " A second colon is a syntax error, unless within a string or following !expr
     syn match yamlColonError /:\s*[^'^"^!]*:/ contained
     if &filetype == 'quarto'
       syn region pandocYAMLHeader matchgroup=rmdYamlBlockDelim start=/\%(\%^\|\_^\s*\n\)\@<=\_^-\{3}\ze\n.\+/ end=/^---$/ keepend contains=rmdYamlFieldTtl,yamlFlowString,yamlComment,yamlColonError
--- a/runtime/syntax/ruby.vim
+++ b/runtime/syntax/ruby.vim
@@ -3,7 +3,7 @@
 " Maintainer:		Doug Kearns <dougkearns@gmail.com>
 " URL:			https://github.com/vim-ruby/vim-ruby
 " Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
-" Last Change:		2021 Nov 03
+" Last Change:		2023 Mar 16
 " ----------------------------------------------------------------------------
 "
 " Previous Maintainer:	Mirko Nasato
@@ -145,9 +145,9 @@ syn cluster rubyStringSpecial	 contains=
 syn cluster rubyStringNotTop	 contains=@rubyStringSpecial,@rubyNestedBrackets,@rubySingleCharEscape
 
 " Regular Expression Metacharacters {{{1
-syn region rubyRegexpComment	  matchgroup=rubyRegexpSpecial	 start="(?#"								    skip="\\\\\|\\)"  end=")"  contained
-syn region rubyRegexpParens	  matchgroup=rubyRegexpSpecial	 start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\\\\|\\)"  end=")"  contained transparent contains=@rubyRegexpSpecial
-syn region rubyRegexpBrackets	  matchgroup=rubyRegexpCharClass start="\[\^\="								    skip="\\\\\|\\\]" end="\]" contained transparent contains=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline
+syn region rubyRegexpComment	  matchgroup=rubyRegexpSpecial	 start="(?#"								     skip="\\\\\|\\)"  end=")"	contained
+syn region rubyRegexpParens	  matchgroup=rubyRegexpSpecial	 start="(\%(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\\\\|\\)"  end=")"	contained transparent contains=@rubyRegexpSpecial
+syn region rubyRegexpBrackets	  matchgroup=rubyRegexpCharClass start="\[\^\="								     skip="\\\\\|\\\]" end="\]" contained transparent contains=rubyRegexpBrackets,rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass,rubyRegexpIntersection oneline
 syn match  rubyRegexpCharClass	  "\\[DdHhRSsWw]"	 contained display
 syn match  rubyRegexpCharClass	  "\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|word\|xdigit\):\]" contained
 syn match  rubyRegexpCharClass	  "\\[pP]{^\=.\{-}}"	 contained display
@@ -346,7 +346,7 @@ syn cluster rubyDeclaration contains=rub
 syn match rubyControl	     "\%#=1\<\%(break\|in\|next\|redo\|retry\|return\)\>"
 syn match rubyKeyword	     "\%#=1\<\%(super\|yield\)\>"
 syn match rubyBoolean	     "\%#=1\<\%(true\|false\)\>[?!]\@!"
-syn match rubyPseudoVariable "\%#=1\<\(self\|nil\)\>[?!]\@!"
+syn match rubyPseudoVariable "\%#=1\<\%(self\|nil\)\>[?!]\@!"
 syn match rubyPseudoVariable "\%#=1\<__\%(ENCODING\|dir\|FILE\|LINE\|callee\|method\)__\>"
 syn match rubyBeginEnd	     "\%#=1\<\%(BEGIN\|END\)\>"
 
@@ -399,11 +399,6 @@ if !exists("b:ruby_no_expensive") && !ex
 
   SynFold 'for' syn region rubyRepeatExpression start="\<for\>" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+=-]\|\%(\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\@<![!?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat skip="\<end:" end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
 
-  if !exists("ruby_minlines")
-    let ruby_minlines = 500
-  endif
-  exe "syn sync minlines=" . ruby_minlines
-
 else
   syn match rubyControl "\<def\>"    nextgroup=rubyMethodDeclaration skipwhite skipnl
   syn match rubyControl "\<class\>"  nextgroup=rubyClassDeclaration  skipwhite skipnl
@@ -412,13 +407,18 @@ else
   syn match rubyKeyword "\<\%(alias\|undef\)\>"
 endif
 
+if !exists("ruby_minlines")
+  let ruby_minlines = 500
+endif
+exe "syn sync minlines=" . ruby_minlines
+
 " Special Methods {{{1
 if !exists("ruby_no_special_methods")
   syn match rubyAccess	  "\<\%(public\|protected\|private\)\>" " use re=2
   syn match rubyAccess	  "\%#=1\<\%(public\|private\)_class_method\>"
   syn match rubyAccess	  "\%#=1\<\%(public\|private\)_constant\>"
   syn match rubyAccess	  "\%#=1\<module_function\>"
-  syn match rubyAttribute "\%#=1\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!" " attr is a common variable name
+  syn match rubyAttribute "\%#=1\%(\%(^\|;\)\s*\)\@<=attr\>\%(\s*[.=]\)\@!" " attr is a common variable name
   syn match rubyAttribute "\%#=1\<attr_\%(accessor\|reader\|writer\)\>"
   syn match rubyControl   "\%#=1\<\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>"
   syn match rubyEval	  "\%#=1\<eval\>"
@@ -435,8 +435,8 @@ syn match   rubySharpBang    "\%^#!.*" d
 syn keyword rubyTodo	     FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
 syn match   rubyEncoding     "[[:alnum:]-_]\+" contained display
 syn match   rubyMagicComment "\c\%<3l#\s*\zs\%(coding\|encoding\):"					contained nextgroup=rubyEncoding skipwhite
-syn match   rubyMagicComment "\c\%<10l#\s*\zs\%(frozen_string_literal\|warn_indent\|warn_past_scope\):" contained nextgroup=rubyBoolean  skipwhite
-syn match   rubyMagicComment "\c\%<10l#\s*\zs\%(shareable_constant_value\):"				contained nextgroup=rubyEncoding  skipwhite
+syn match   rubyMagicComment "\c\%<10l#\s*\zs\%(frozen[-_]string[-_]literal\|warn[-_]indent\|warn[-_]past[-_]scope\):" contained nextgroup=rubyBoolean  skipwhite
+syn match   rubyMagicComment "\c\%<10l#\s*\zs\%(shareable[-_]constant[-_]value\):"				contained nextgroup=rubyEncoding  skipwhite
 syn match   rubyComment	     "#.*" contains=@rubyCommentSpecial,rubySpaceError,@Spell
 
 syn cluster rubyCommentSpecial contains=rubySharpBang,rubyTodo,rubyMagicComment
--- a/runtime/syntax/sgml.vim
+++ b/runtime/syntax/sgml.vim
@@ -294,7 +294,7 @@ syn sync minlines=100
 hi def link sgmlTodo			Todo
 hi def link sgmlTag			Function
 hi def link sgmlEndTag			Identifier
-" SGML specifig
+" SGML specific
 hi def link sgmlAbbrEndTag		Identifier
 hi def link sgmlEmptyTag		Function
 hi def link sgmlEntity			Statement
--- a/runtime/syntax/shared/typescriptcommon.vim
+++ b/runtime/syntax/shared/typescriptcommon.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:     TypeScript and TypeScriptReact
-" Maintainer:   Bram Moolenaar, Herrington Darkholme
-" Last Change:	2021 Sep 22
+" Maintainer:   Herrington Darkholme
+" Last Change:	2023 Aug 24
 " Based On:     Herrington Darkholme's yats.vim
-" Changes:      See https:github.com/HerringtonDarkholme/yats.vim
+" Changes:      See https://github.com/HerringtonDarkholme/yats.vim
 " Credits:      See yats.vim on github
 
 if &cpo =~ 'C'
@@ -149,7 +149,7 @@ syntax match typescriptNumber /\<0[bB][0
 syntax match typescriptNumber /\<0[oO][0-7][0-7_]*\>/       nextgroup=@typescriptSymbols skipwhite skipempty
 syntax match typescriptNumber /\<0[xX][0-9a-fA-F][0-9a-fA-F_]*\>/ nextgroup=@typescriptSymbols skipwhite skipempty
 syntax match typescriptNumber /\<\%(\d[0-9_]*\%(\.\d[0-9_]*\)\=\|\.\d[0-9_]*\)\%([eE][+-]\=\d[0-9_]*\)\=\>/
-  \ nextgroup=typescriptSymbols skipwhite skipempty
+  \ nextgroup=@typescriptSymbols skipwhite skipempty
 
 syntax region  typescriptObjectLiteral         matchgroup=typescriptBraces
   \ start=/{/ end=/}/
--- a/runtime/syntax/slrnrc.vim
+++ b/runtime/syntax/slrnrc.vim
@@ -94,7 +94,7 @@ syn region  slrnrcColorObjStr	contained 
 syn keyword slrnrcColorVal	contained default
 syn keyword slrnrcColorVal	contained black blue brightblue brightcyan brightgreen brightmagenta brightred brown cyan gray green lightgray magenta red white yellow
 syn region  slrnrcColorValStr	contained matchgroup=slrnrcColorVal start=+"+ end=+"+ oneline contains=slrnrcColorVal,slrnrcSpaceError
-" Mathcing a function with three arguments
+" Matching a function with three arguments
 syn keyword slrnrcColor		contained color
 syn match   slrnrcColorInit	contained "^\s*color\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Obj\|ObjStr\)\=
 syn match   slrnrcColorLine	"^\s*color\s\+\S\+\s\+\S\+" skipwhite nextgroup=slrnrcColorVal\(Str\)\= contains=slrnrcColor\(Init\|Val\|ValStr\)
--- a/runtime/syntax/spec.vim
+++ b/runtime/syntax/spec.vim
@@ -56,7 +56,7 @@ syn match specListedFilesEtc    containe
 syn match specListedFilesShare  contained '/share/'me=e-1
 syn cluster specListedFiles contains=specListedFilesBin,specListedFilesLib,specListedFilesDoc,specListedFilesEtc,specListedFilesShare,specListedFilesPrefix,specVariables,specSpecialChar
 
-"specComands
+"specCommands
 syn match   specConfigure  contained '\./configure'
 syn match   specTarCommand contained '\<tar\s\+[cxvpzIf]\{,5}\s*'
 syn keyword specCommandSpecial contained root
@@ -87,7 +87,7 @@ syn region specSectionMacroBracketArea o
 "TODO %config valid parameters: missingok\|noreplace
 "TODO %verify valid parameters: \(not\)\= \(md5\|atime\|...\)
 syn region specFilesArea matchgroup=specSection start='^%[Ff][Ii][Ll][Ee][Ss]\>' skip='%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>' end='^%[a-zA-Z]'me=e-2 contains=specFilesOpts,specFilesDirective,@specListedFiles,specComment,specCommandSpecial,specMacroIdentifier
-"tip: remember to include new itens in specFilesArea above
+"tip: remember to include new items in specFilesArea above
 syn match  specFilesDirective contained '%\(attrib\|defattr\|attr\|dir\|config\|docdir\|doc\|lang\|license\|verify\|ghost\|exclude\)\>'
 
 "valid options for certain section headers
--- a/runtime/syntax/sqlinformix.vim
+++ b/runtime/syntax/sqlinformix.vim
@@ -162,7 +162,7 @@ hi def link sqlNumber	Number
 hi def link sqlBoolean	Boolean
 hi def link sqlString	String
 
-" === Statment syntax group ===
+" === Statement syntax group ===
 hi def link sqlStatement	Statement
 hi def link sqlConditional	Conditional
 hi def link sqlRepeat		Repeat
--- a/runtime/syntax/sqlj.vim
+++ b/runtime/syntax/sqlj.vim
@@ -16,7 +16,7 @@ endif
 " Read the Java syntax to start with
 source <sfile>:p:h/java.vim
 
-" SQLJ extentions
+" SQLJ extensions
 " The SQL reserved words, defined as keywords.
 
 syn case ignore
--- a/runtime/syntax/squid.vim
+++ b/runtime/syntax/squid.vim
@@ -31,7 +31,7 @@ syn keyword	squidConf	cache_effective_us
 syn keyword	squidConf	cache_host_domain cache_log cache_mem
 syn keyword	squidConf	cache_mem_high cache_mem_low cache_mgr
 syn keyword	squidConf	cachemgr_passwd cache_peer cache_peer_access
-syn keyword	squidConf	cahce_replacement_policy cache_stoplist
+syn keyword	squidConf	cache_replacement_policy cache_stoplist
 syn keyword	squidConf	cache_stoplist_pattern cache_store_log cache_swap
 syn keyword	squidConf	cache_swap_high cache_swap_log cache_swap_low
 syn keyword	squidConf	client_db client_lifetime client_netmask
--- a/runtime/syntax/tasm.vim
+++ b/runtime/syntax/tasm.vim
@@ -1,6 +1,6 @@
 " Vim syntax file
 " Language: TASM: turbo assembler by Borland
-" Maintaner: FooLman of United Force <foolman@bigfoot.com>
+" Maintainer: FooLman of United Force <foolman@bigfoot.com>
 " Last Change: 2012 Feb 03 by Thilo Six, and 2018 Nov 27.
 
 " quit when a syntax file was already loaded
--- a/runtime/syntax/tf.vim
+++ b/runtime/syntax/tf.vim
@@ -27,7 +27,7 @@ syn keyword tfVar  bamf bg_output borg c
 syn keyword tfVar  emulation end_color gag gethostbyname gpri hook hilite  contained
 syn keyword tfVar  hiliteattr histsize hpri insert isize istrip kecho  contained
 syn keyword tfVar  kprefix login lp lpquote maildelay matching max_iter  contained
-syn keyword tfVar  max_recur mecho more mprefix oldslash promt_sec  contained
+syn keyword tfVar  max_recur mecho more mprefix oldslash prompt_sec  contained
 syn keyword tfVar  prompt_usec proxy_host proxy_port ptime qecho qprefix  contained
 syn keyword tfVar  quite quitdone redef refreshtime scroll shpause snarf sockmload  contained
 syn keyword tfVar  start_color tabsize telopt sub time_format visual  contained
--- a/runtime/syntax/tsalt.vim
+++ b/runtime/syntax/tsalt.vim
@@ -83,11 +83,11 @@ syn keyword tsaltFunction	vGetChrs vGetC
 syn keyword tsaltFunction	vPutChrsA vRstrArea vSaveArea
 
 " Dynamic Data Exchange (DDE) Operations
-syn keyword tsaltFunction	DDEExecute DDEInitate DDEPoke DDERequest
+syn keyword tsaltFunction	DDEExecute DDEInitiate DDEPoke DDERequest
 syn keyword tsaltFunction	DDETerminate DDETerminateAll
 "END FUNCTIONS
 
-"PREDEFINED VARAIABLES
+"PREDEFINED VARIABLES
 syn keyword tsaltSysVar	_add_lf _alarm_on _answerback_str _asc_rcrtrans
 syn keyword tsaltSysVar	_asc_remabort _asc_rlftrans _asc_scpacing
 syn keyword tsaltSysVar	_asc_scrtrans _asc_secho _asc_slpacing
@@ -106,7 +106,7 @@ syn keyword tsaltSysVar	_scr_chk_key _sc
 syn keyword tsaltSysVar	_strip_high _swap_bs _telix_dir _up_dir
 syn keyword tsaltSysVar	_usage_fname _zmodauto _zmod_rcrash
 syn keyword tsaltSysVar	_zmod_scrash
-"END PREDEFINED VARAIABLES
+"END PREDEFINED VARIABLES
 
 "TYPE
 syn keyword tsaltType	str int
--- a/runtime/syntax/typescript.vim
+++ b/runtime/syntax/typescript.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:     TypeScript
-" Maintainer:   Bram Moolenaar, Herrington Darkholme
-" Last Change:	2019 Nov 30
+" Maintainer:   Herrington Darkholme
+" Last Change:  2023 Aug 13
 " Based On:     Herrington Darkholme's yats.vim
-" Changes:      Go to https:github.com/HerringtonDarkholme/yats.vim for recent changes.
+" Changes:      Go to https://github.com/HerringtonDarkholme/yats.vim for recent changes.
 " Origin:       https://github.com/othree/yajs
 " Credits:      Kao Wei-Ko(othree), Jose Elera Campana, Zhao Yi, Claudio Fleiner, Scott Shattuck
 "               (This file is based on their hard work), gumnos (From the #vim
--- a/runtime/syntax/typescriptreact.vim
+++ b/runtime/syntax/typescriptreact.vim
@@ -1,9 +1,9 @@
 " Vim syntax file
 " Language:     TypeScript with React (JSX)
-" Maintainer:   Bram Moolenaar
-" Last Change:	2019 Nov 30
+" Maintainer:   The Vim Project <https://github.com/vim/vim>
+" Last Change:  2023 Aug 13
 " Based On:     Herrington Darkholme's yats.vim
-" Changes:      See https:github.com/HerringtonDarkholme/yats.vim
+" Changes:      See https://github.com/HerringtonDarkholme/yats.vim
 " Credits:      See yats.vim on github
 
 if !exists("main_syntax")
--- a/runtime/syntax/zimbu.vim
+++ b/runtime/syntax/zimbu.vim
@@ -1,7 +1,8 @@
 " Vim syntax file
 " Language:	Zimbu
-" Maintainer:	Bram Moolenaar
-" Last Change:	2014 Nov 23
+" Maintainer:	The·Vim·Project·<https://github.com/vim/vim>
+" Last Change:	2023 Aug 13
+" Note: 	Zimbu seems to be dead :(
 
 if exists("b:current_syntax")
   finish
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/zserio.vim
@@ -0,0 +1,112 @@
+" Vim syntax file
+" Language:	Zserio
+" Maintainer:	Dominique Pellé <dominique.pelle@gmail.com>
+" Last Change:	2023 Jun 18
+"
+" Zserio is a serialization schema language for modeling binary
+" data types, bitstreams or file formats. Based on the zserio
+" language it is possible to automatically generate encoders and
+" decoders for a given schema in various target languages
+" (e.g. Java, C++, Python).
+"
+" Zserio is an evolution of the DataScript language.
+"
+" For more information, see:
+" - http://zserio.org/
+" - https://github.com/ndsev/zserio
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:keepcpo= &cpo
+set cpo&vim
+
+syn case match
+
+syn keyword zserioPackage      import package zserio_compatibility_version
+syn keyword zserioType         bit bool string
+syn keyword zserioType         int int8 int16 int32 int64
+syn keyword zserioType         uint8 uint16 uint32 uint64
+syn keyword zserioType         float16 float32 float64
+syn keyword zserioType         varint varint16 varint32 varint64
+syn keyword zserioType         varuint varsize varuint16 varuint32 varuint64
+syn keyword zserioAlign        align
+syn keyword zserioLabel        case default
+syn keyword zserioConditional  if condition
+syn keyword zserioBoolean      true false
+syn keyword zserioCompound     struct union choice on enum bitmask subtype
+syn keyword zserioKeyword      function return
+syn keyword zserioOperator     lengthof valueof instanceof numbits isset
+syn keyword zserioRpc          service pubsub topic publish subscribe
+syn keyword zserioRule         rule_group rule
+syn keyword zserioStorageClass const implicit packed instantiate
+syn keyword zserioTodo         contained TODO FIXME XXX
+syn keyword zserioSql          sql sql_table sql_database sql_virtual sql_without_rowid
+syn keyword zserioSql          explicit using
+
+" zserioCommentGroup allows adding matches for special things in comments.
+syn cluster zserioCommentGroup  contains=zserioTodo
+
+syn match   zserioOffset        display "^\s*[a-zA-Z_:\.][a-zA-Z0-9_:\.]*\s*:"
+
+syn match   zserioNumber        display "\<\d\+\>"
+syn match   zserioNumberHex     display "\<0[xX]\x\+\>"
+syn match   zserioNumberBin     display "\<[01]\+[bB]\>" contains=zserioBinaryB
+syn match   zserioBinaryB       display contained "[bB]\>"
+syn match   zserioOctal         display "\<0\o\+\>" contains=zserioOctalZero
+syn match   zserioOctalZero     display contained "\<0"
+
+syn match   zserioOctalError    display "\<0\o*[89]\d*\>"
+
+syn match   zserioCommentError      display "\*/"
+syn match   zserioCommentStartError display "/\*"me=e-1 contained
+
+syn region   zserioCommentL
+  \ start="//" skip="\\$" end="$" keepend
+  \ contains=@zserioCommentGroup,@Spell
+syn region   zserioComment
+  \ matchgroup=zserioCommentStart start="/\*" end="\*/"
+  \ contains=@zserioCommentGroup,zserioCommentStartError,@Spell extend
+
+syn region  zserioString
+  \ start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
+
+syn sync ccomment zserioComment
+
+" Define the default highlighting.
+hi def link zserioType              Type
+hi def link zserioEndian            StorageClass
+hi def link zserioStorageClass      StorageClass
+hi def link zserioAlign             Label
+hi def link zserioLabel             Label
+hi def link zserioOffset            Label
+hi def link zserioSql               PreProc
+hi def link zserioCompound          Structure
+hi def link zserioConditional       Conditional
+hi def link zserioBoolean           Boolean
+hi def link zserioKeyword           Statement
+hi def link zserioRpc               Keyword
+hi def link zserioRule              Keyword
+hi def link zserioString            String
+hi def link zserioNumber            Number
+hi def link zserioNumberBin         Number
+hi def link zserioBinaryB           Special
+hi def link zserioOctal             Number
+hi def link zserioOctalZero         Special
+hi def link zserioOctalError        Error
+hi def link zserioNumberHex         Number
+hi def link zserioTodo              Todo
+hi def link zserioOperator          Operator
+hi def link zserioPackage           Include
+hi def link zserioCommentError      Error
+hi def link zserioCommentStartError Error
+hi def link zserioCommentStart      zserioComment
+hi def link zserioCommentL          zserioComment
+hi def link zserioComment           Comment
+
+let b:current_syntax = "zserio"
+
+let &cpo = s:keepcpo
+unlet s:keepcpo
--- a/runtime/tutor/tutor.vim
+++ b/runtime/tutor/tutor.vim
@@ -1,7 +1,7 @@
 " Vim tutor support file
-" Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
-" Maintainer: Bram Moolenaar
-" Last Change:	2019 Nov 11
+" Author:	Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
+" Maintainer:	The·Vim·Project·<https://github.com/vim/vim>
+" Last Change:	2023 Aug 13
 
 " This Vim script is used for detecting if a translation of the
 " tutor file exist, i.e., a tutor.xx file, where xx is the language.
--- a/src/Makefile
+++ b/src/Makefile
@@ -627,7 +627,7 @@ CClink = $(CC)
 #EXTRA_LIBS = /usr/local/lib/libefence.a
 
 # Autoconf binary.
-AUTOCONF = autoconf
+AUTOCONF ?= autoconf
 
 # PURIFY - remove the # to use the "purify" program (hoi Nia++!)
 #PURIFY = purify
@@ -2014,9 +2014,6 @@ reconfig: scratch clean
 # - Use sed to change ./config.log to auto/config.log in the configure script.
 # Autoconf 2.5x (2.59 at least) produces a few more files that we need to take
 # care of:
-# - configure.lineno: has the line numbers replaced with $LINENO.  That
-#   improves patches a LOT, thus use it instead (until someone says it doesn't
-#   work on some system).
 # - autom4te.cache directory is created and not cleaned up.  Delete it.
 # - Uses ">config.log" instead of "./config.log".
 autoconf:
@@ -2154,6 +2151,15 @@ notags:
 tags TAGS: notags
 	$(TAGPRG) $(TAGS_FILES)
 
+# Build the cscope database.
+# This may search more files than necessary.
+.PHONY: cscope csclean
+csclean:
+	-rm -vf cscope.out
+cscope.out:
+	cscope -bv ./*.[ch] ./*.cpp ./if_perl.xs auto/*.h auto/pathdef.c proto/*.pro xxd/xxd.c
+cscope: csclean cscope.out  ;
+
 # Make a highlight file for types.  Requires Exuberant ctags and awk
 types: types.vim
 types.vim: $(TAGS_FILES)
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -1,9 +1,10 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69.
+# Generated by GNU Autoconf 2.71.
 #
 #
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -14,14 +15,16 @@
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
+else $as_nop
   case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
@@ -31,46 +34,46 @@ esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""	$as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -79,13 +82,6 @@ if test "${PATH_SEPARATOR+set}" != set; 
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -94,8 +90,12 @@ case $0 in #((
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
@@ -107,30 +107,10 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 # Use a proper internal environment variable to ensure we don't fall
   # into an infinite loop, continuously re-executing ourselves.
@@ -152,20 +132,22 @@ esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
 # out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
   fi
   # We don't want this to propagate to other subprocesses.
           { _as_can_reexec=; unset _as_can_reexec;}
 if test "x$CONFIG_SHELL" = x; then
-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '\${1+\"\$@\"}'='\"\$@\"'
   setopt NO_GLOB_SUBST
-else
+else \$as_nop
   case \`(set -o) 2>/dev/null\` in #(
   *posix*) :
     set -o posix ;; #(
@@ -185,42 +167,53 @@ as_fn_success || { exitcode=1; echo as_f
 as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
 as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
 as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
-
-else
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
+
+else \$as_nop
   exitcode=1; echo positional parameters were not saved.
 fi
 test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
 test -x / || exit 1"
   as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
   test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
 test \$(( 1 + 1 )) = 2 || exit 1"
-  if (eval "$as_required") 2>/dev/null; then :
+  if (eval "$as_required") 2>/dev/null
+then :
   as_have_required=yes
-else
+else $as_nop
   as_have_required=no
 fi
-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
-
-else
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
+
+else $as_nop
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
   as_found=:
   case $as_dir in #(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
 	     # Try only shells that exist, to save several forks.
-	     as_shell=$as_dir/$as_base
+	     as_shell=$as_dir$as_base
 	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
   CONFIG_SHELL=$as_shell as_have_required=yes
-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
   break 2
 fi
 fi
@@ -228,14 +221,21 @@ fi
        esac
   as_found=false
 done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
   CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
-IFS=$as_save_IFS
-
-
-      if test "x$CONFIG_SHELL" != x; then :
+fi
+fi
+
+
+      if test "x$CONFIG_SHELL" != x
+then :
   export CONFIG_SHELL
              # We cannot yet assume a decent shell, so we have to provide a
 # neutralization value for shells without unset; and this also
@@ -253,18 +253,19 @@ esac
 exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
 # Admittedly, this is quite paranoid, since all the known shells bail
 # out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
 exit 255
 fi
 
-    if test x$as_have_required = xno; then :
-  $as_echo "$0: This script requires a shell more modern than all"
-  $as_echo "$0: the shells that I found on your system."
-  if test x${ZSH_VERSION+set} = xset ; then
-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+    if test x$as_have_required = xno
+then :
+  printf "%s\n" "$0: This script requires a shell more modern than all"
+  printf "%s\n" "$0: the shells that I found on your system."
+  if test ${ZSH_VERSION+y} ; then
+    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
   else
-    $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system,
 $0: including any error possibly output before this
 $0: message. Then install a modern shell, or manually run
 $0: the script under such a shell if you do have one."
@@ -291,6 +292,7 @@ as_fn_unset ()
 }
 as_unset=as_fn_unset
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -308,6 +310,14 @@ as_fn_exit ()
   as_fn_set_status $1
   exit $1
 } # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+  return $?
+}
+as_nop=as_fn_nop
 
 # as_fn_mkdir_p
 # -------------
@@ -322,7 +332,7 @@ as_fn_mkdir_p ()
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -331,7 +341,7 @@ as_fn_mkdir_p ()
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -370,12 +380,13 @@ as_fn_executable_p ()
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
+else $as_nop
   as_fn_append ()
   {
     eval $1=\$$1\$2
@@ -387,18 +398,27 @@ fi # as_fn_append
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
+else $as_nop
   as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
   }
 fi # as_fn_arith
 
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+  return $?
+}
+as_nop=as_fn_nop
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
 # ----------------------------------------
@@ -410,9 +430,9 @@ as_fn_error ()
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -439,7 +459,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -483,7 +503,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
   # already done that, so ensure we don't try to do so again and fall
@@ -497,6 +517,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
   exit
 }
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -510,6 +534,13 @@ case `echo -n x` in #(((((
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -575,50 +606,46 @@ MFLAGS=
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
+PACKAGE_NAME=''
+PACKAGE_TARNAME=''
+PACKAGE_VERSION=''
+PACKAGE_STRING=''
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
 
 ac_unique_file="vim.h"
 # Factoring default headers for most tests.
 ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-#ifdef STDC_HEADERS
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
+#endif
+#ifdef HAVE_STDLIB_H
 # include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-#  include <stdlib.h>
-# endif
 #endif
 #ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-#  include <memory.h>
-# endif
 # include <string.h>
 #endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
 #ifdef HAVE_INTTYPES_H
 # include <inttypes.h>
 #endif
 #ifdef HAVE_STDINT_H
 # include <stdint.h>
 #endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif"
 
+ac_header_c_list=
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 LINK_AS_NEEDED
@@ -763,6 +790,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -899,6 +927,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE}'
@@ -928,8 +957,6 @@ do
   *)    ac_optarg=yes ;;
   esac
 
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
   case $ac_dashdash$ac_option in
   --)
     ac_dashdash=yes ;;
@@ -970,9 +997,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -996,9 +1023,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid feature name: $ac_useropt"
+      as_fn_error $? "invalid feature name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "enable_$ac_useropt"
@@ -1151,6 +1178,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1200,9 +1236,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1216,9 +1252,9 @@ do
     ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
     expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
-      as_fn_error $? "invalid package name: $ac_useropt"
+      as_fn_error $? "invalid package name: \`$ac_useropt'"
     ac_useropt_orig=$ac_useropt
-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
     case $ac_user_opts in
       *"
 "with_$ac_useropt"
@@ -1262,9 +1298,9 @@ Try \`$0 --help' for more information"
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
     : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
@@ -1280,7 +1316,7 @@ if test -n "$ac_unrecognized_opts"; then
   case $enable_option_checking in
     no) ;;
     fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+    *)     printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
 
@@ -1288,7 +1324,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1344,7 +1380,7 @@ if test -z "$srcdir"; then
 	 X"$as_myself" : 'X\(//\)[^/]' \| \
 	 X"$as_myself" : 'X\(//\)$' \| \
 	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -1441,6 +1477,7 @@ Fine tuning of the installation director
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1574,9 +1611,9 @@ if test "$ac_init_help" = "recursive"; t
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1604,7 +1641,8 @@ esac
 ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
     cd "$ac_dir" || { ac_status=$?; continue; }
-    # Check for guested configure.
+    # Check for configure.gnu first; this name is used for a wrapper for
+    # Metaconfig's "Configure" on case-insensitive file systems.
     if test -f "$ac_srcdir/configure.gnu"; then
       echo &&
       $SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1612,7 +1650,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1622,9 +1660,9 @@ test -n "$ac_init_help" && exit $ac_stat
 if $ac_init_version; then
   cat <<\_ACEOF
 configure
-generated by GNU Autoconf 2.69
-
-Copyright (C) 2012 Free Software Foundation, Inc.
+generated by GNU Autoconf 2.71
+
+Copyright (C) 2021 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
@@ -1641,14 +1679,14 @@ fi
 ac_fn_c_try_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext
+  rm -f conftest.$ac_objext conftest.beam
   if { { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -1656,14 +1694,15 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
     cat conftest.er1 >&5
     mv -f conftest.er1 conftest.err
   fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then :
+       } && test -s conftest.$ac_objext
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_retval=1
@@ -1685,7 +1724,7 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -1693,14 +1732,15 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
     cat conftest.er1 >&5
     mv -f conftest.er1 conftest.err
   fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } > conftest.i && {
 	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
 	 test ! -s conftest.err
-       }; then :
+       }
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
     ac_retval=1
@@ -1716,14 +1756,14 @@ fi
 ac_fn_c_try_link ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  rm -f conftest.$ac_objext conftest$ac_exeext
+  rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
   if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
@@ -1731,17 +1771,18 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
     cat conftest.er1 >&5
     mv -f conftest.er1 conftest.err
   fi
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && {
 	 test -z "$ac_c_werror_flag" ||
 	 test ! -s conftest.err
        } && test -s conftest$ac_exeext && {
 	 test "$cross_compiling" = yes ||
 	 test -x conftest$ac_exeext
-       }; then :
+       }
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
 	ac_retval=1
@@ -1758,8 +1799,8 @@ fi
 
 # ac_fn_c_try_run LINENO
 # ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
 ac_fn_c_try_run ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
@@ -1769,25 +1810,26 @@ case "(($ac_try" in
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
   { { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then :
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+then :
   ac_retval=0
-else
-  $as_echo "$as_me: program exited with status $ac_status" >&5
-       $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+  printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+       printf "%s\n" "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
        ac_retval=$ac_status
@@ -1798,93 +1840,6 @@ fi
 
 } # ac_fn_c_try_run
 
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  if eval \${$3+:} false; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_header_compiler=yes
-else
-  ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-  ac_header_preproc=yes
-else
-  ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
-  yes:no: )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-  no:yes:* )
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-    ;;
-esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
 # Tests whether HEADER exists and can be compiled using the include files in
@@ -1892,26 +1847,28 @@ fi
 ac_fn_c_check_header_compile ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 #include <$2>
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   eval "$3=yes"
-else
+else $as_nop
   eval "$3=no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_header_compile
@@ -1922,11 +1879,12 @@ eval ac_res=\$$3
 ac_fn_c_check_func ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 /* Define $2 to an innocuous variant, in case <limits.h> declares $2.
@@ -1934,16 +1892,9 @@ else
 #define $2 innocuous_$2
 
 /* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $2 (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
+   which can conflict with char $2 (); below.  */
+
+#include <limits.h>
 #undef $2
 
 /* Override any GCC internal prototype to avoid an error.
@@ -1961,24 +1912,25 @@ choke me
 #endif
 
 int
-main ()
+main (void)
 {
 return $2 ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   eval "$3=yes"
-else
+else $as_nop
   eval "$3=no"
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 fi
 eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_func
@@ -1997,7 +1949,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) >= 0)];
 test_array [0] = 0;
@@ -2007,14 +1959,15 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_lo=0 ac_mid=0
   while :; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
 test_array [0] = 0;
@@ -2024,9 +1977,10 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_hi=$ac_mid; break
-else
+else $as_nop
   as_fn_arith $ac_mid + 1 && ac_lo=$as_val
 			if test $ac_lo -le $ac_mid; then
 			  ac_lo= ac_hi=
@@ -2034,14 +1988,14 @@ else
 			fi
 			as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   done
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) < 0)];
 test_array [0] = 0;
@@ -2051,14 +2005,15 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_hi=-1 ac_mid=-1
   while :; do
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) >= $ac_mid)];
 test_array [0] = 0;
@@ -2068,9 +2023,10 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_lo=$ac_mid; break
-else
+else $as_nop
   as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
 			if test $ac_mid -le $ac_hi; then
 			  ac_lo= ac_hi=
@@ -2078,14 +2034,14 @@ else
 			fi
 			as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   done
-else
+else $as_nop
   ac_lo= ac_hi=
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 # Binary search between lo and hi bounds.
 while test "x$ac_lo" != "x$ac_hi"; do
   as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
@@ -2093,7 +2049,7 @@ while test "x$ac_lo" != "x$ac_hi"; do
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !(($2) <= $ac_mid)];
 test_array [0] = 0;
@@ -2103,12 +2059,13 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_hi=$ac_mid
-else
+else $as_nop
   as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 done
 case $ac_lo in #((
 ?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
@@ -2118,12 +2075,12 @@ esac
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
 #include <stdio.h>
 #include <stdlib.h>
 int
-main ()
+main (void)
 {
 
   FILE *f = fopen ("conftest.val", "w");
@@ -2151,9 +2108,10 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
+else $as_nop
   ac_retval=1
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -2173,17 +2131,18 @@ rm -f conftest.val
 ac_fn_c_check_type ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   eval "$3=no"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 if (sizeof ($2))
 	 return 0;
@@ -2191,12 +2150,13 @@ if (sizeof ($2))
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $4
 int
-main ()
+main (void)
 {
 if (sizeof (($2)))
 	    return 0;
@@ -2204,18 +2164,19 @@ if (sizeof (($2)))
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
   eval "$3=yes"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_check_type
@@ -2227,11 +2188,12 @@ eval ac_res=\$$3
 ac_fn_c_find_uintX_t ()
 {
   as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
-$as_echo_n "checking for uint$2_t... " >&6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5
+printf %s "checking for uint$2_t... " >&6; }
+if eval test \${$3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   eval "$3=no"
      # Order is important - never check a type that is potentially smaller
      # than half of the expected target width.
@@ -2241,7 +2203,7 @@ else
 /* end confdefs.h.  */
 $ac_includes_default
 int
-main ()
+main (void)
 {
 static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
 test_array [0] = 0;
@@ -2251,7 +2213,8 @@ return test_array [0];
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   case $ac_type in #(
   uint$2_t) :
     eval "$3=yes" ;; #(
@@ -2259,28 +2222,49 @@ if ac_fn_c_try_compile "$LINENO"; then :
     eval "$3=\$ac_type" ;;
 esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-       if eval test \"x\$"$3"\" = x"no"; then :
-
-else
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+       if eval test \"x\$"$3"\" = x"no"
+then :
+
+else $as_nop
   break
 fi
      done
 fi
 eval ac_res=\$$3
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
   eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
 } # ac_fn_c_find_uintX_t
+ac_configure_args_raw=
+for ac_arg
+do
+  case $ac_arg in
+  *\'*)
+    ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+  esac
+  as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+  *$as_nl*)
+    ac_safe_unquote= ;;
+  *)
+    ac_unsafe_z='|&;<>()$`\\"*?[ ''	' # This string ends in space, tab.
+    ac_unsafe_a="$ac_unsafe_z#~"
+    ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+    ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
 cat >auto/config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  $ $0 $@
+generated by GNU Autoconf 2.71.  Invocation command line was
+
+  $ $0$ac_configure_args_raw
 
 _ACEOF
 exec 5>>auto/config.log
@@ -2313,8 +2297,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    $as_echo "PATH: $as_dir"
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    printf "%s\n" "PATH: $as_dir"
   done
 IFS=$as_save_IFS
 
@@ -2349,7 +2337,7 @@ do
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
     1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2384,11 +2372,13 @@ done
 # WARNING: Use '\'' to represent an apostrophe within the trap.
 # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
 trap 'exit_status=$?
+  # Sanitize IFS.
+  IFS=" ""	$as_nl"
   # Save into config.log some information that might help in debugging.
   {
     echo
 
-    $as_echo "## ---------------- ##
+    printf "%s\n" "## ---------------- ##
 ## Cache variables. ##
 ## ---------------- ##"
     echo
@@ -2399,8 +2389,8 @@ trap 'exit_status=$?
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -2424,7 +2414,7 @@ trap 'exit_status=$?
 )
     echo
 
-    $as_echo "## ----------------- ##
+    printf "%s\n" "## ----------------- ##
 ## Output variables. ##
 ## ----------------- ##"
     echo
@@ -2432,14 +2422,14 @@ trap 'exit_status=$?
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      $as_echo "$ac_var='\''$ac_val'\''"
+      printf "%s\n" "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      $as_echo "## ------------------- ##
+      printf "%s\n" "## ------------------- ##
 ## File substitutions. ##
 ## ------------------- ##"
       echo
@@ -2447,15 +2437,15 @@ trap 'exit_status=$?
       do
 	eval ac_val=\$$ac_var
 	case $ac_val in
-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	*\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
 	esac
-	$as_echo "$ac_var='\''$ac_val'\''"
+	printf "%s\n" "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      $as_echo "## ----------- ##
+      printf "%s\n" "## ----------- ##
 ## confdefs.h. ##
 ## ----------- ##"
       echo
@@ -2463,8 +2453,8 @@ trap 'exit_status=$?
       echo
     fi
     test "$ac_signal" != 0 &&
-      $as_echo "$as_me: caught signal $ac_signal"
-    $as_echo "$as_me: exit $exit_status"
+      printf "%s\n" "$as_me: caught signal $ac_signal"
+    printf "%s\n" "$as_me: exit $exit_status"
   } >&5
   rm -f core *.core core.conftest.* &&
     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -2478,63 +2468,48 @@ ac_signal=0
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
 
 # Predefined preprocessor variables.
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
+
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
 
 
 # Let the site file select an alternate cache file if it wants to.
 # Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  # We do not want a PATH search for config.site.
-  case $CONFIG_SITE in #((
-    -*)  ac_site_file1=./$CONFIG_SITE;;
-    */*) ac_site_file1=$CONFIG_SITE;;
-    *)   ac_site_file1=./$CONFIG_SITE;;
-  esac
+  ac_site_files="$CONFIG_SITE"
 elif test "x$prefix" != xNONE; then
-  ac_site_file1=$prefix/share/config.site
-  ac_site_file2=$prefix/etc/config.site
-else
-  ac_site_file1=$ac_default_prefix/share/config.site
-  ac_site_file2=$ac_default_prefix/etc/config.site
-fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
-do
-  test "x$ac_site_file" = xNONE && continue
-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
+else
+  ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+fi
+
+for ac_site_file in $ac_site_files
+do
+  case $ac_site_file in #(
+  */*) :
+     ;; #(
+  *) :
+    ac_site_file=./$ac_site_file ;;
+esac
+  if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
     . "$ac_site_file" \
-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "failed to load site script $ac_site_file
 See \`config.log' for more details" "$LINENO" 5; }
   fi
@@ -2544,832 +2519,34 @@ if test -r "$cache_file"; then
   # Some versions of bash will fail to source /dev/null (special files
   # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
   if test /dev/null != "$cache_file" && test -f "$cache_file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
       *)                      . "./$cache_file";;
     esac
   fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-	# differences in whitespace do not lead to failure.
-	ac_old_val_w=`echo x $ac_old_val`
-	ac_new_val_w=`echo x $ac_new_val`
-	if test "$ac_old_val_w" != "$ac_new_val_w"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	  ac_cache_corrupted=:
-	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
-	  eval $ac_var=\$ac_old_val
-	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
-fi
-## -------------------- ##
-## Main body of script. ##
-## -------------------- ##
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_config_headers="$ac_config_headers auto/config.h:config.h.in"
-
-
-$as_echo "#define UNIX 1" >>confdefs.h
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
-set x ${MAKE-make}
-ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat >conftest.make <<\_ACEOF
-SHELL = /bin/sh
-all:
-	@echo '@@@%%%=$(MAKE)=@@@%%%'
-_ACEOF
-# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
-case `${MAKE-make} -f conftest.make 2>/dev/null` in
-  *@@@%%%=?*=@@@%%%*)
-    eval ac_cv_prog_make_${ac_make}_set=yes;;
-  *)
-    eval ac_cv_prog_make_${ac_make}_set=no;;
-esac
-rm -f conftest.make
-fi
-if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  SET_MAKE=
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  SET_MAKE="MAKE=${MAKE-make}"
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="gcc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-else
-  CC="$ac_cv_prog_CC"
-fi
-
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="${ac_tool_prefix}cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  fi
-fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
-       ac_prog_rejected=yes
-       continue
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
-  fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-    test -n "$CC" && break
-  done
-fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_CC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$ac_ct_CC" && break
-done
-
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-	;;
-    [ab].out )
-	# We found the default executable, but exeext='' is most
-	# certainly right.
-	break;;
-    *.* )
-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-	then :; else
-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	fi
-	# We set ac_cv_exeext here because the later test for it is not
-	# safe: cross compilers may not add the suffix if given an `-o'
-	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-	  break;;
-    * ) break;;
-  esac
-done
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
-else
-  ac_compiler_gnu=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
-else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-	 CFLAGS="-g"
-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
-else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+   Do not test the value of __STDC__, because some compilers set it to 0
+   while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
 #include <stdarg.h>
-#include <stdio.h>
 struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */
 struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
 static char *e (p, i)
      char **p;
      int i;
@@ -3387,87 +2564,47 @@ static char *f (char * (*g) (char **, in
 }
 
 /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+   function prototypes and stuff, but not \xHH hex character constants.
+   These do not provoke an error unfortunately, instead are silently treated
+   as an "x".  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously \x00 != x always comes out true, for an
+   array size at least.  It is necessary to write \x00 == 0 to get something
+   that is true only with -std.  */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
 
 /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
    inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
 
 int test (int i, double x);
 struct s1 {int (*f) (int a);};
 struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
-$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
-if ${ac_cv_prog_cc_c99+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c99=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+               int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
 #include <stdbool.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <stdio.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
 
 // Check varargs macros.  These examples are taken from C99 6.10.3.5.
-#define debug(...) fprintf (stderr, __VA_ARGS__)
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
 #define showlist(...) puts (#__VA_ARGS__)
 #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
 static void
@@ -3486,11 +2623,11 @@ test_varargs_macros (void)
 #define BIG32 4294967295ul
 #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
 #if !BIG_OK
-  your preprocessor is broken;
+  #error "your preprocessor is broken"
 #endif
 #if BIG_OK
 #else
-  your preprocessor is broken;
+  #error "your preprocessor is broken"
 #endif
 static long long int bignum = -9223372036854775807LL;
 static unsigned long long int ubignum = BIG64;
@@ -3515,13 +2652,13 @@ test_restrict (ccp restrict text)
   // See if C++-style comments work.
   // Iterate through items via the restricted pointer.
   // Also check for declarations in for loops.
-  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+  for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
     continue;
   return 0;
 }
 
 // Check varargs and va_copy.
-static void
+static bool
 test_varargs (const char *format, ...)
 {
   va_list args;
@@ -3529,21 +2666,21 @@ test_varargs (const char *format, ...)
   va_list args_copy;
   va_copy (args_copy, args);
 
-  const char *str;
-  int number;
-  float fnumber;
+  const char *str = "";
+  int number = 0;
+  float fnumber = 0;
 
   while (*format)
     {
       switch (*format++)
 	{
-	case 's': // string
+	case '\''s'\'': // string
 	  str = va_arg (args_copy, const char *);
 	  break;
-	case 'd': // int
+	case '\''d'\'': // int
 	  number = va_arg (args_copy, int);
 	  break;
-	case 'f': // float
+	case '\''f'\'': // float
 	  fnumber = va_arg (args_copy, double);
 	  break;
 	default:
@@ -3552,14 +2689,16 @@ test_varargs (const char *format, ...)
     }
   va_end (args_copy);
   va_end (args);
-}
-
-int
-main ()
-{
-
+
+  return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
   // Check bool.
   _Bool success = false;
+  success |= (argc != 0);
 
   // Check restrict.
   if (test_restrict ("String literal") == 0)
@@ -3567,7 +2706,7 @@ main ()
   char *restrict newvar = "Another string";
 
   // Check varargs.
-  test_varargs ("s, d' f .", "string", 65, 34.234);
+  success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
   test_varargs_macros ();
 
   // Check flexible array members.
@@ -3587,85 +2726,1269 @@ main ()
   ni.number = 58;
 
   int dynamic_array[ni.number];
+  dynamic_array[0] = argv[0][0];
   dynamic_array[ni.number - 1] = 543;
 
   // work around unused variable warnings
-  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
-	  || dynamic_array[ni.number - 1] != 543);
-
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
+  ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+	 || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+  int_alignment = _Alignof (int),
+  int_array_alignment = _Alignof (int[100]),
+  char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+  int x;
+  _Static_assert (sizeof (int) <= sizeof (long int),
+                  "_Static_assert does not work in struct");
+  long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+  union {
+    struct { int i; int j; };
+    struct { int k; long int l; } w;
+  };
+  int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+  _Static_assert ((offsetof (struct anonymous, i)
+		   == offsetof (struct anonymous, w.k)),
+		  "Anonymous union alignment botch");
+  v1.i = 2;
+  v1.w.k = 5;
+  ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  ${ac_c_conftest_c99_main}
+  ${ac_c_conftest_c11_main}
+  return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  ${ac_c_conftest_c99_main}
+  return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+  int ok = 0;
+  ${ac_c_conftest_c89_main}
+  return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"
+as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H"
+as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H"
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+printf "%s\n" "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+	    and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_config_headers="$ac_config_headers auto/config.h:config.h.in"
+
+
+printf "%s\n" "#define UNIX 1" >>confdefs.h
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval test \${ac_cv_prog_make_${ac_make}_set+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+  SET_MAKE=
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="clang"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+
+
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion -version; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else $as_nop
+  ac_file=''
+fi
+if test -z "$ac_file"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else $as_nop
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main (void)
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else $as_nop
+  printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_compiler_gnu=yes
+else $as_nop
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+y}
+ac_save_CFLAGS=$CFLAGS
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_g=yes
+else $as_nop
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+  ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c11=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_c_conftest_c11_program
+_ACEOF
+for ac_arg in '' -std=gnu11
 do
   CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c11=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c11" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
+
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c11" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+     CC="$CC $ac_cv_prog_cc_c11"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+  ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_c_conftest_c99_program
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_prog_cc_c99=$ac_arg
 fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
   test "x$ac_cv_prog_cc_c99" != "xno" && break
 done
 rm -f conftest.$ac_ext
 CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c99" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c99"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
-$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c99" != xno; then :
-
-fi
-
+fi
+
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c99" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+     CC="$CC $ac_cv_prog_cc_c99"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+  ac_prog_cc_stdc=c99
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_c_conftest_c89_program
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
+
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+  if test "x$ac_cv_prog_cc_c89" = x
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+     CC="$CC $ac_cv_prog_cc_c89"
+fi
+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+  ac_prog_cc_stdc=c89
+fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 		ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if ${ac_cv_prog_CPP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-      # Double quotes because CPP needs to be expanded
-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+  if test ${ac_cv_prog_CPP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+      # Double quotes because $CC needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
     do
       ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
   # Use a header file that comes with gcc, so configuring glibc
   # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
 		     Syntax error
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
   # Broken: fails on valid input.
 continue
 fi
@@ -3677,10 +4000,11 @@ rm -f conftest.err conftest.i conftest.$
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
   # Broken: success on invalid input.
 continue
-else
+else $as_nop
   # Passes both tests.
 ac_preproc_ok=:
 break
@@ -3690,7 +4014,8 @@ rm -f conftest.err conftest.i conftest.$
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
   break
 fi
 
@@ -3702,29 +4027,24 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
   # Use a header file that comes with gcc, so configuring glibc
   # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
 		     Syntax error
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
   # Broken: fails on valid input.
 continue
 fi
@@ -3736,10 +4056,11 @@ rm -f conftest.err conftest.i conftest.$
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
   # Broken: success on invalid input.
 continue
-else
+else $as_nop
   # Passes both tests.
 ac_preproc_ok=:
 break
@@ -3749,11 +4070,12 @@ rm -f conftest.err conftest.i conftest.$
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
 rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
-
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+if $ac_preproc_ok
+then :
+
+else $as_nop
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
 See \`config.log' for more details" "$LINENO" 5; }
 fi
@@ -3763,13 +4085,12 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -z "$GREP"; then
   ac_path_GREP_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
@@ -3777,10 +4098,15 @@ else
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in grep ggrep; do
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in grep ggrep
+   do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
       as_fn_executable_p "$ac_path_GREP" || continue
 # Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
@@ -3789,13 +4115,13 @@ case `"$ac_path_GREP" --version 2>&1` in
   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
 *)
   ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
+  printf %s 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
+    printf "%s\n" 'GREP' >> "conftest.nl"
     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -3823,16 +4149,17 @@ else
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
    then ac_cv_path_EGREP="$GREP -E"
    else
@@ -3843,10 +4170,15 @@ else
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in egrep; do
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in egrep
+   do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
       as_fn_executable_p "$ac_path_EGREP" || continue
 # Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
@@ -3855,13 +4187,13 @@ case `"$ac_path_EGREP" --version 2>&1` i
   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
 *)
   ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
+  printf %s 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
+    printf "%s\n" 'EGREP' >> "conftest.nl"
     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -3890,25 +4222,16 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "" >/dev/null 2>&1; then :
-
-fi
-rm -f conftest*
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+printf %s "checking for fgrep... " >&6; }
+if test ${ac_cv_path_FGREP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
    then ac_cv_path_FGREP="$GREP -F"
    else
@@ -3919,10 +4242,15 @@ else
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_prog in fgrep; do
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    for ac_prog in fgrep
+   do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext"
       as_fn_executable_p "$ac_path_FGREP" || continue
 # Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
@@ -3931,13 +4259,13 @@ case `"$ac_path_FGREP" --version 2>&1` i
   ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
 *)
   ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
+  printf %s 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
+    printf "%s\n" 'FGREP' >> "conftest.nl"
     "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -3966,74 +4294,20 @@ fi
 
    fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+printf "%s\n" "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
 
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
-$as_echo_n "checking for library containing strerror... " >&6; }
-if ${ac_cv_search_strerror+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char strerror ();
-int
-main ()
-{
-return strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' cposix; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
-  else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-  fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_strerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_strerror+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_strerror+:} false; then :
-
-else
-  ac_cv_search_strerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
-$as_echo "$ac_cv_search_strerror" >&6; }
-ac_res=$ac_cv_search_strerror
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
 		for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
@@ -4041,11 +4315,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4056,11 +4334,11 @@ fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -4069,11 +4347,12 @@ done
 
 # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$STRIP"; then
   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
 else
@@ -4081,11 +4360,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="strip"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4097,134 +4380,24 @@ fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-		   (('a' <= (c) && (c) <= 'i') \
-		     || ('j' <= (c) && (c) <= 'r') \
-		     || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-	|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
-$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if ${ac_cv_header_sys_wait_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
+printf %s "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
+if test ${ac_cv_header_sys_wait_h+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
@@ -4237,7 +4410,7 @@ else
 #endif
 
 int
-main ()
+main (void)
 {
   int s;
   wait (&s);
@@ -4246,18 +4419,19 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_header_sys_wait_h=yes
-else
+else $as_nop
   ac_cv_header_sys_wait_h=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
-$as_echo "$ac_cv_header_sys_wait_h" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5
+printf "%s\n" "$ac_cv_header_sys_wait_h" >&6; }
 if test $ac_cv_header_sys_wait_h = yes; then
 
-$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
 
 fi
 
@@ -4265,14 +4439,17 @@ fi
 if test x"$ac_cv_prog_cc_c99" != xno; then
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+printf %s "checking for unsigned long long int... " >&6; }
+if test ${ac_cv_type_unsigned_long_long_int+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_type_unsigned_long_long_int=yes
-     if test "x${ac_cv_prog_cc_c99-no}" = xno; then
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+     case $ac_prog_cc_stdc in
+       no | c89) ;;
+       *)
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
   /* For now, do not test the preprocessor; as of 2007 there are too many
@@ -4290,7 +4467,7 @@ else
 		     ? 1 : -1)];
       int i = 63;
 int
-main ()
+main (void)
 {
 /* Test availability of runtime routines for shift and division.  */
       long long int llmax = 9223372036854775807ll;
@@ -4304,98 +4481,104 @@ main ()
 }
 
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+
+else $as_nop
   ac_cv_type_unsigned_long_long_int=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-     fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext;;
+     esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; }
   if test $ac_cv_type_unsigned_long_long_int = yes; then
 
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
-
-  fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+
+  fi
+
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+printf %s "checking for long long int... " >&6; }
+if test ${ac_cv_type_long_long_int+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_type_long_long_int=yes
-      if test "x${ac_cv_prog_cc_c99-no}" = xno; then
-	ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
-	if test $ac_cv_type_long_long_int = yes; then
-	  	  	  	  if test "$cross_compiling" = yes; then :
+      case $ac_prog_cc_stdc in
+	no | c89) ;;
+	*)
+	  ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+	  if test $ac_cv_type_long_long_int = yes; then
+	    	    	    	    if test "$cross_compiling" = yes
+then :
   :
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <limits.h>
-		 #ifndef LLONG_MAX
-		 # define HALF \
-			  (1LL << (sizeof (long long int) * CHAR_BIT - 2))
-		 # define LLONG_MAX (HALF - 1 + HALF)
-		 #endif
-int
-main ()
+		   #ifndef LLONG_MAX
+		   # define HALF \
+			    (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+		   # define LLONG_MAX (HALF - 1 + HALF)
+		   #endif
+int
+main (void)
 {
 long long int n = 1;
-		 int i;
-		 for (i = 0; ; i++)
-		   {
-		     long long int m = n << i;
-		     if (m >> i != n)
-		       return 1;
-		     if (LLONG_MAX / 2 < m)
-		       break;
-		   }
-		 return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
+		   int i;
+		   for (i = 0; ; i++)
+		     {
+		       long long int m = n << i;
+		       if (m >> i != n)
+			 return 1;
+		       if (LLONG_MAX / 2 < m)
+			 break;
+		     }
+		   return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"
+then :
+
+else $as_nop
   ac_cv_type_long_long_int=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-	fi
-      fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
+	  fi;;
+      esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_long_long_int" >&6; }
   if test $ac_cv_type_long_long_int = yes; then
 
-$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
 
   fi
 
   if test "$ac_cv_type_long_long_int" = no; then
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "Compiler does not support long long int
 See \`config.log' for more details" "$LINENO" 5; }
   fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports trailing commas" >&5
-$as_echo_n "checking if the compiler supports trailing commas... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the compiler supports trailing commas" >&5
+printf %s "checking if the compiler supports trailing commas... " >&6; }
   trailing_commas=no
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
     enum {
@@ -4405,46 +4588,48 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; trailing_commas=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; trailing_commas=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   if test "$trailing_commas" = no; then
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "Compiler does not support trailing comma in enum
 See \`config.log' for more details" "$LINENO" 5; }
   fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the compiler supports C++ comments" >&5
-$as_echo_n "checking if the compiler supports C++ comments... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the compiler supports C++ comments" >&5
+printf %s "checking if the compiler supports C++ comments... " >&6; }
   slash_comments=no
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 // C++ comments?
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; slash_comments=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; slash_comments=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   if test "$slash_comments" = no; then
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "Compiler does not support C++ comments
 See \`config.log' for more details" "$LINENO" 5; }
   fi
@@ -4453,26 +4638,25 @@ fi
 if test -n "$SOURCE_DATE_EPOCH"; then
   DATE_FMT="%b %d %Y %H:%M:%S"
   BUILD_DATE=$(LC_ALL=C date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || LC_ALL=C date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || LC_ALL=C date -u "+$DATE_FMT")
-  cat >>confdefs.h <<_ACEOF
-#define BUILD_DATE "$BUILD_DATE"
-_ACEOF
+  printf "%s\n" "#define BUILD_DATE \"$BUILD_DATE\"" >>confdefs.h
 
   BUILD_DATE_MSG=-"echo -e '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\nNOTE: build date/time is fixed: $BUILD_DATE\n=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-='"
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5
-$as_echo_n "checking --enable-fail-if-missing argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-fail-if-missing argument" >&5
+printf %s "checking --enable-fail-if-missing argument... " >&6; }
 # Check whether --enable-fail_if_missing was given.
-if test "${enable_fail_if_missing+set}" = set; then :
+if test ${enable_fail_if_missing+y}
+then :
   enableval=$enable_fail_if_missing; fail_if_missing="yes"
-else
+else $as_nop
   fail_if_missing="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $fail_if_missing" >&5
-$as_echo "$fail_if_missing" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $fail_if_missing" >&5
+printf "%s\n" "$fail_if_missing" >&6; }
 
 with_x_arg="$with_x"
 
@@ -4498,35 +4682,35 @@ if test "$GCC" = yes; then
   fi
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clang version" >&5
-$as_echo_n "checking for clang version... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clang version" >&5
+printf %s "checking for clang version... " >&6; }
 CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed  -n -e 's/^.*clang[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/p'`
 if test x"$CLANG_VERSION_STRING" != x"" ; then
   CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*/\1/p'`
   CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*/\1/p'`
   CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\)/\1/p'`
   CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CLANG_VERSION" >&5
-$as_echo "$CLANG_VERSION" >&6; }
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if clang supports -fno-strength-reduce" >&5
-$as_echo_n "checking if clang supports -fno-strength-reduce... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CLANG_VERSION" >&5
+printf "%s\n" "$CLANG_VERSION" >&6; }
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if clang supports -fno-strength-reduce" >&5
+printf %s "checking if clang supports -fno-strength-reduce... " >&6; }
   if test "$CLANG_MAJOR" -ge 10 -o "$CLANG_VERSION" -ge 500002075 ; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
     CFLAGS=`echo "$CFLAGS" | sed -e 's/-fno-strength-reduce/ /'`
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: N/A" >&5
-$as_echo "N/A" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+  fi
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: N/A" >&5
+printf "%s\n" "N/A" >&6; }
 fi
 
 CROSS_COMPILING=
 if test "$cross_compiling" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&5
-$as_echo "cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&5
+printf "%s\n" "cannot compile a simple program; if not cross compiling check CC and CFLAGS" >&6; }
   CROSS_COMPILING=1
 fi
 
@@ -4534,135 +4718,139 @@ fi
 test "$GCC" = yes && CPP_MM=M;
 
 if test -f ./toolcheck; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for buggy tools" >&5
-$as_echo_n "checking for buggy tools... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for buggy tools" >&5
+printf %s "checking for buggy tools... " >&6; }
   sh ./toolcheck 1>&6
 fi
 
 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname" >&5
-$as_echo_n "checking uname... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking uname" >&5
+printf %s "checking uname... " >&6; }
 if test "x$vim_cv_uname_output" = "x" ; then
   vim_cv_uname_output=`(uname) 2>/dev/null`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_output" >&5
-$as_echo "$vim_cv_uname_output" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_output (cached)" >&5
-$as_echo "$vim_cv_uname_output (cached)" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -r" >&5
-$as_echo_n "checking uname -r... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_output" >&5
+printf "%s\n" "$vim_cv_uname_output" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_output (cached)" >&5
+printf "%s\n" "$vim_cv_uname_output (cached)" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking uname -r" >&5
+printf %s "checking uname -r... " >&6; }
 if test "x$vim_cv_uname_r_output" = "x" ; then
   vim_cv_uname_r_output=`(uname -r) 2>/dev/null`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_r_output" >&5
-$as_echo "$vim_cv_uname_r_output" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_r_output (cached)" >&5
-$as_echo "$vim_cv_uname_r_output (cached)" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uname -m" >&5
-$as_echo_n "checking uname -m... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_r_output" >&5
+printf "%s\n" "$vim_cv_uname_r_output" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_r_output (cached)" >&5
+printf "%s\n" "$vim_cv_uname_r_output (cached)" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking uname -m" >&5
+printf %s "checking uname -m... " >&6; }
 if test "x$vim_cv_uname_m_output" = "x" ; then
   vim_cv_uname_m_output=`(uname -m) 2>/dev/null`
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_m_output" >&5
-$as_echo "$vim_cv_uname_m_output" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_m_output (cached)" >&5
-$as_echo "$vim_cv_uname_m_output (cached)" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Haiku" >&5
-$as_echo_n "checking for Haiku... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_m_output" >&5
+printf "%s\n" "$vim_cv_uname_m_output" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_uname_m_output (cached)" >&5
+printf "%s\n" "$vim_cv_uname_m_output (cached)" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Haiku" >&5
+printf %s "checking for Haiku... " >&6; }
 case $vim_cv_uname_output in
-    Haiku) HAIKU=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };;
-    *)     HAIKU=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QNX" >&5
-$as_echo_n "checking for QNX... " >&6; }
+    Haiku) HAIKU=yes; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };;
+    *)     HAIKU=no; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };;
+esac
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for QNX" >&5
+printf %s "checking for QNX... " >&6; }
 case $vim_cv_uname_output in
     QNX)	OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
 		test -z "$with_x" && with_x=no
-		QNX=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };;
-    *)		QNX=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Darwin (Mac OS X)" >&5
-$as_echo_n "checking for Darwin (Mac OS X)... " >&6; }
+		QNX=yes; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };;
+    *)		QNX=no; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };;
+esac
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Darwin (Mac OS X)" >&5
+printf %s "checking for Darwin (Mac OS X)... " >&6; }
 if test "$vim_cv_uname_output" = Darwin; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
   MACOS_X=yes
   CPPFLAGS="$CPPFLAGS -DMACOS_X"
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-darwin argument" >&5
-$as_echo_n "checking --disable-darwin argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-darwin argument" >&5
+printf %s "checking --disable-darwin argument... " >&6; }
   # Check whether --enable-darwin was given.
-if test "${enable_darwin+set}" = set; then :
+if test ${enable_darwin+y}
+then :
   enableval=$enable_darwin;
-else
+else $as_nop
   enable_darwin="yes"
 fi
 
   if test "$enable_darwin" = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Darwin files are there" >&5
-$as_echo_n "checking if Darwin files are there... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Darwin files are there" >&5
+printf %s "checking if Darwin files are there... " >&6; }
     if test -f os_macosx.m; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, Darwin support disabled" >&5
-$as_echo "no, Darwin support disabled" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, Darwin support disabled" >&5
+printf "%s\n" "no, Darwin support disabled" >&6; }
       enable_darwin=no
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, Darwin support excluded" >&5
-$as_echo "yes, Darwin support excluded" >&6; }
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-mac-arch argument" >&5
-$as_echo_n "checking --with-mac-arch argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, Darwin support excluded" >&5
+printf "%s\n" "yes, Darwin support excluded" >&6; }
+  fi
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-mac-arch argument" >&5
+printf %s "checking --with-mac-arch argument... " >&6; }
 
 # Check whether --with-mac-arch was given.
-if test "${with_mac_arch+set}" = set; then :
-  withval=$with_mac_arch; MACARCH="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACARCH" >&5
-$as_echo "$MACARCH" >&6; }
-else
-  MACARCH="current"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $MACARCH" >&5
-$as_echo "defaulting to $MACARCH" >&6; }
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-developer-dir argument" >&5
-$as_echo_n "checking --with-developer-dir argument... " >&6; }
+if test ${with_mac_arch+y}
+then :
+  withval=$with_mac_arch; MACARCH="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MACARCH" >&5
+printf "%s\n" "$MACARCH" >&6; }
+else $as_nop
+  MACARCH="current"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: defaulting to $MACARCH" >&5
+printf "%s\n" "defaulting to $MACARCH" >&6; }
+fi
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-developer-dir argument" >&5
+printf %s "checking --with-developer-dir argument... " >&6; }
 
 # Check whether --with-developer-dir was given.
-if test "${with_developer_dir+set}" = set; then :
-  withval=$with_developer_dir; DEVELOPER_DIR="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEVELOPER_DIR" >&5
-$as_echo "$DEVELOPER_DIR" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not present" >&5
-$as_echo "not present" >&6; }
+if test ${with_developer_dir+y}
+then :
+  withval=$with_developer_dir; DEVELOPER_DIR="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DEVELOPER_DIR" >&5
+printf "%s\n" "$DEVELOPER_DIR" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not present" >&5
+printf "%s\n" "not present" >&6; }
 fi
 
 
   if test "x$DEVELOPER_DIR" = "x"; then
     # Extract the first word of "xcode-select", so it can be a program name with args.
 set dummy xcode-select; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XCODE_SELECT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_XCODE_SELECT+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $XCODE_SELECT in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_XCODE_SELECT="$XCODE_SELECT" # Let the user override the test with a path.
@@ -4672,11 +4860,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_XCODE_SELECT="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_XCODE_SELECT="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -4688,28 +4880,28 @@ esac
 fi
 XCODE_SELECT=$ac_cv_path_XCODE_SELECT
 if test -n "$XCODE_SELECT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XCODE_SELECT" >&5
-$as_echo "$XCODE_SELECT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $XCODE_SELECT" >&5
+printf "%s\n" "$XCODE_SELECT" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
     if test "x$XCODE_SELECT" != "x"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for developer dir using xcode-select" >&5
-$as_echo_n "checking for developer dir using xcode-select... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for developer dir using xcode-select" >&5
+printf %s "checking for developer dir using xcode-select... " >&6; }
       DEVELOPER_DIR=`$XCODE_SELECT -print-path`
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DEVELOPER_DIR" >&5
-$as_echo "$DEVELOPER_DIR" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DEVELOPER_DIR" >&5
+printf "%s\n" "$DEVELOPER_DIR" >&6; }
     else
       DEVELOPER_DIR=/Developer
     fi
   fi
 
   if test "x$MACARCH" = "xboth"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 10.4 universal SDK" >&5
-$as_echo_n "checking for 10.4 universal SDK... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 10.4 universal SDK" >&5
+printf %s "checking for 10.4 universal SDK... " >&6; }
                             save_cppflags="$CPPFLAGS"
     save_cflags="$CFLAGS"
     save_ldflags="$LDFLAGS"
@@ -4718,49 +4910,51 @@ fi
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5
-$as_echo "found" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5
+printf "%s\n" "found" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
 	CFLAGS="$save_cflags"
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if Intel architecture is supported" >&5
-$as_echo_n "checking if Intel architecture is supported... " >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if Intel architecture is supported" >&5
+printf %s "checking if Intel architecture is supported... " >&6; }
 	CPPFLAGS="$CPPFLAGS -arch i386"
 	LDFLAGS="$save_ldflags -arch i386"
 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; MACARCH="intel"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; MACARCH="intel"
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 		MACARCH="ppc"
 		CPPFLAGS="$save_cppflags -arch ppc"
 		LDFLAGS="$save_ldflags -arch ppc"
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   elif test "x$MACARCH" = "xintel"; then
     CPPFLAGS="$CPPFLAGS -arch intel"
@@ -4774,7 +4968,7 @@ rm -f core conftest.err conftest.$ac_obj
     MACOS_X_DARWIN=yes
     OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
     OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
-        $as_echo "#define HAVE_TIMER_CREATE 1" >>confdefs.h
+        printf "%s\n" "#define HAVE_TIMER_CREATE 1" >>confdefs.h
 
             CPPFLAGS="$CPPFLAGS -DMACOS_X_DARWIN"
 
@@ -4783,64 +4977,67 @@ rm -f core conftest.err conftest.$ac_obj
      fi
   fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-		  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in AvailabilityMacros.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default"
-if test "x$ac_cv_header_AvailabilityMacros_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_AVAILABILITYMACROS_H 1
-_ACEOF
-
-fi
-
-done
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
+do
+  if test $ac_cache; then
+    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+      printf "%s\n" "#define $ac_item 1" >> confdefs.h
+    fi
+    ac_header= ac_cache=
+  elif test $ac_header; then
+    ac_cache=$ac_item
+  else
+    ac_header=$ac_item
+  fi
+done
+
+
+
+
+
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "AvailabilityMacros.h" "ac_cv_header_AvailabilityMacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_AvailabilityMacros_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_AVAILABILITYMACROS_H 1" >>confdefs.h
+
+fi
 
 # 10.5 and earlier lack dispatch
-for ac_header in dispatch/dispatch.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "dispatch/dispatch.h" "ac_cv_header_dispatch_dispatch_h" "$ac_includes_default"
-if test "x$ac_cv_header_dispatch_dispatch_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_DISPATCH_DISPATCH_H 1
-_ACEOF
-
-fi
-
-done
+ac_fn_c_check_header_compile "$LINENO" "dispatch/dispatch.h" "ac_cv_header_dispatch_dispatch_h" "$ac_includes_default"
+if test "x$ac_cv_header_dispatch_dispatch_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_DISPATCH_DISPATCH_H 1" >>confdefs.h
+
+fi
 
 
 
 
 
 if test "$cross_compiling" = no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-local-dir argument" >&5
-$as_echo_n "checking --with-local-dir argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-local-dir argument" >&5
+printf %s "checking --with-local-dir argument... " >&6; }
   have_local_include=''
   have_local_lib=''
 
 # Check whether --with-local-dir was given.
-if test "${with_local_dir+set}" = set; then :
+if test ${with_local_dir+y}
+then :
   withval=$with_local_dir;
     local_dir="$withval"
     case "$withval" in
@@ -4852,14 +5049,14 @@ if test "${with_local_dir+set}" = set; t
       ;;
     *) as_fn_error $? "must pass path argument to --with-local-dir" "$LINENO" 5 ;;
     esac
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $local_dir" >&5
-$as_echo "$local_dir" >&6; }
-
-else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $local_dir" >&5
+printf "%s\n" "$local_dir" >&6; }
+
+else $as_nop
 
     local_dir=/usr/local
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to $local_dir" >&5
-$as_echo "Defaulting to $local_dir" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to $local_dir" >&5
+printf "%s\n" "Defaulting to $local_dir" >&6; }
 
 fi
 
@@ -4883,94 +5080,93 @@ fi
   fi
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-vim-name argument" >&5
-$as_echo_n "checking --with-vim-name argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-vim-name argument" >&5
+printf %s "checking --with-vim-name argument... " >&6; }
 
 # Check whether --with-vim-name was given.
-if test "${with_vim_name+set}" = set; then :
-  withval=$with_vim_name; VIMNAME="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VIMNAME" >&5
-$as_echo "$VIMNAME" >&6; }
-else
-  VIMNAME="vim"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to $VIMNAME" >&5
-$as_echo "Defaulting to $VIMNAME" >&6; }
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ex-name argument" >&5
-$as_echo_n "checking --with-ex-name argument... " >&6; }
+if test ${with_vim_name+y}
+then :
+  withval=$with_vim_name; VIMNAME="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $VIMNAME" >&5
+printf "%s\n" "$VIMNAME" >&6; }
+else $as_nop
+  VIMNAME="vim"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to $VIMNAME" >&5
+printf "%s\n" "Defaulting to $VIMNAME" >&6; }
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-ex-name argument" >&5
+printf %s "checking --with-ex-name argument... " >&6; }
 
 # Check whether --with-ex-name was given.
-if test "${with_ex_name+set}" = set; then :
-  withval=$with_ex_name; EXNAME="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXNAME" >&5
-$as_echo "$EXNAME" >&6; }
-else
-  EXNAME="ex"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to ex" >&5
-$as_echo "Defaulting to ex" >&6; }
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-view-name argument" >&5
-$as_echo_n "checking --with-view-name argument... " >&6; }
+if test ${with_ex_name+y}
+then :
+  withval=$with_ex_name; EXNAME="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EXNAME" >&5
+printf "%s\n" "$EXNAME" >&6; }
+else $as_nop
+  EXNAME="ex"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to ex" >&5
+printf "%s\n" "Defaulting to ex" >&6; }
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-view-name argument" >&5
+printf %s "checking --with-view-name argument... " >&6; }
 
 # Check whether --with-view-name was given.
-if test "${with_view_name+set}" = set; then :
-  withval=$with_view_name; VIEWNAME="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VIEWNAME" >&5
-$as_echo "$VIEWNAME" >&6; }
-else
-  VIEWNAME="view"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to view" >&5
-$as_echo "Defaulting to view" >&6; }
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-global-runtime argument" >&5
-$as_echo_n "checking --with-global-runtime argument... " >&6; }
+if test ${with_view_name+y}
+then :
+  withval=$with_view_name; VIEWNAME="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $VIEWNAME" >&5
+printf "%s\n" "$VIEWNAME" >&6; }
+else $as_nop
+  VIEWNAME="view"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to view" >&5
+printf "%s\n" "Defaulting to view" >&6; }
+fi
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-global-runtime argument" >&5
+printf %s "checking --with-global-runtime argument... " >&6; }
 
 # Check whether --with-global-runtime was given.
-if test "${with_global_runtime+set}" = set; then :
-  withval=$with_global_runtime; RUNTIME_GLOBAL="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test ${with_global_runtime+y}
+then :
+  withval=$with_global_runtime; RUNTIME_GLOBAL="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
 if test "X$RUNTIME_GLOBAL" != "X"; then
   RUNTIME_GLOBAL_AFTER=$(printf -- "$RUNTIME_GLOBAL\\n" | $AWK -F, 'BEGIN { comma=0 } { for (i = NF; i > 0; i--) { if (comma) { printf ",%s/after", $i } else { printf "%s/after", $i; comma=1 } } } END { printf "\n" }')
-  cat >>confdefs.h <<_ACEOF
-#define RUNTIME_GLOBAL "$RUNTIME_GLOBAL"
-_ACEOF
-
-  cat >>confdefs.h <<_ACEOF
-#define RUNTIME_GLOBAL_AFTER "$RUNTIME_GLOBAL_AFTER"
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-modified-by argument" >&5
-$as_echo_n "checking --with-modified-by argument... " >&6; }
+  printf "%s\n" "#define RUNTIME_GLOBAL \"$RUNTIME_GLOBAL\"" >>confdefs.h
+
+  printf "%s\n" "#define RUNTIME_GLOBAL_AFTER \"$RUNTIME_GLOBAL_AFTER\"" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-modified-by argument" >&5
+printf %s "checking --with-modified-by argument... " >&6; }
 
 # Check whether --with-modified-by was given.
-if test "${with_modified_by+set}" = set; then :
-  withval=$with_modified_by; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }; cat >>confdefs.h <<_ACEOF
-#define MODIFIED_BY "$withval"
-_ACEOF
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if character set is EBCDIC" >&5
-$as_echo_n "checking if character set is EBCDIC... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
+if test ${with_modified_by+y}
+then :
+  withval=$with_modified_by; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }; printf "%s\n" "#define MODIFIED_BY \"$withval\"" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if character set is EBCDIC" >&5
+printf %s "checking if character set is EBCDIC... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
 {
  /* TryCompile function for CharSet.
    Treat any failure as ASCII for compatibility with existing art.
@@ -4983,20 +5179,21 @@ make an error "Character set is not EBCD
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
    # TryCompile action if true
 cf_cv_ebcdic=yes
-else
+else $as_nop
    # TryCompile action if false
 cf_cv_ebcdic=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 # end of TryCompile ])
 # end of CacheVal CvEbcdic
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cf_cv_ebcdic" >&5
-$as_echo "$cf_cv_ebcdic" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cf_cv_ebcdic" >&5
+printf "%s\n" "$cf_cv_ebcdic" >&6; }
 case "$cf_cv_ebcdic" in  #(vi
-    yes)	$as_echo "#define EBCDIC 1" >>confdefs.h
+    yes)	printf "%s\n" "#define EBCDIC 1" >>confdefs.h
 
 		line_break='"\\n"'
 		;;
@@ -5005,8 +5202,8 @@ esac
 
 
 if test "$cf_cv_ebcdic" = "yes"; then
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for z/OS Unix" >&5
-$as_echo_n "checking for z/OS Unix... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for z/OS Unix" >&5
+printf %s "checking for z/OS Unix... " >&6; }
 case $vim_cv_uname_output in
     OS/390)	zOSUnix="yes";
 										if test "$CC" = "cc"; then
@@ -5036,12 +5233,12 @@ case $vim_cv_uname_output in
 		# Use haltonmsg to force error for missing H files.
 		CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
 		LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 		;;
     *)		zOSUnix="no";
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 		;;
 esac
 fi
@@ -5054,64 +5251,68 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-smack argument" >&5
-$as_echo_n "checking --disable-smack argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-smack argument" >&5
+printf %s "checking --disable-smack argument... " >&6; }
 # Check whether --enable-smack was given.
-if test "${enable_smack+set}" = set; then :
+if test ${enable_smack+y}
+then :
   enableval=$enable_smack;
-else
+else $as_nop
   enable_smack="yes"
 fi
 
 if test "$enable_smack" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  ac_fn_c_check_header_mongrel "$LINENO" "linux/xattr.h" "ac_cv_header_linux_xattr_h" "$ac_includes_default"
-if test "x$ac_cv_header_linux_xattr_h" = xyes; then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  ac_fn_c_check_header_compile "$LINENO" "linux/xattr.h" "ac_cv_header_linux_xattr_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_xattr_h" = xyes
+then :
   true
-else
+else $as_nop
   enable_smack="no"
 fi
 
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 fi
 if test "$enable_smack" = "yes"; then
-  ac_fn_c_check_header_mongrel "$LINENO" "attr/xattr.h" "ac_cv_header_attr_xattr_h" "$ac_includes_default"
-if test "x$ac_cv_header_attr_xattr_h" = xyes; then :
+  ac_fn_c_check_header_compile "$LINENO" "attr/xattr.h" "ac_cv_header_attr_xattr_h" "$ac_includes_default"
+if test "x$ac_cv_header_attr_xattr_h" = xyes
+then :
   true
-else
+else $as_nop
   enable_smack="no"
 fi
 
-
 fi
 if test "$enable_smack" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XATTR_NAME_SMACKEXEC in linux/xattr.h" >&5
-$as_echo_n "checking for XATTR_NAME_SMACKEXEC in linux/xattr.h... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XATTR_NAME_SMACKEXEC in linux/xattr.h" >&5
+printf %s "checking for XATTR_NAME_SMACKEXEC in linux/xattr.h... " >&6; }
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <linux/xattr.h>
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "XATTR_NAME_SMACKEXEC" >/dev/null 2>&1; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; enable_smack="no"
-fi
-rm -f conftest*
+  $EGREP "XATTR_NAME_SMACKEXEC" >/dev/null 2>&1
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; enable_smack="no"
+fi
+rm -rf conftest*
 
 fi
 if test "$enable_smack" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setxattr in -lattr" >&5
-$as_echo_n "checking for setxattr in -lattr... " >&6; }
-if ${ac_cv_lib_attr_setxattr+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setxattr in -lattr" >&5
+printf %s "checking for setxattr in -lattr... " >&6; }
+if test ${ac_cv_lib_attr_setxattr+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lattr  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5120,56 +5321,57 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char setxattr ();
 int
-main ()
+main (void)
 {
 return setxattr ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_attr_setxattr=yes
-else
+else $as_nop
   ac_cv_lib_attr_setxattr=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_setxattr" >&5
-$as_echo "$ac_cv_lib_attr_setxattr" >&6; }
-if test "x$ac_cv_lib_attr_setxattr" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_setxattr" >&5
+printf "%s\n" "$ac_cv_lib_attr_setxattr" >&6; }
+if test "x$ac_cv_lib_attr_setxattr" = xyes
+then :
   LIBS="$LIBS -lattr"
 	   found_smack="yes"
-	   $as_echo "#define HAVE_SMACK 1" >>confdefs.h
+	   printf "%s\n" "#define HAVE_SMACK 1" >>confdefs.h
 
 fi
 
 fi
 
 if test "x$found_smack" = "x"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-selinux argument" >&5
-$as_echo_n "checking --disable-selinux argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-selinux argument" >&5
+printf %s "checking --disable-selinux argument... " >&6; }
   # Check whether --enable-selinux was given.
-if test "${enable_selinux+set}" = set; then :
+if test ${enable_selinux+y}
+then :
   enableval=$enable_selinux;
-else
+else $as_nop
   enable_selinux="yes"
 fi
 
   if test "$enable_selinux" = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5
-$as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; }
-if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5
+printf %s "checking for is_selinux_enabled in -lselinux... " >&6; }
+if test ${ac_cv_lib_selinux_is_selinux_enabled+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lselinux  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5178,57 +5380,57 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char is_selinux_enabled ();
 int
-main ()
+main (void)
 {
 return is_selinux_enabled ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_selinux_is_selinux_enabled=yes
-else
+else $as_nop
   ac_cv_lib_selinux_is_selinux_enabled=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
-$as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
-if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then :
-  ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
-if test "x$ac_cv_header_selinux_selinux_h" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5
+printf "%s\n" "$ac_cv_lib_selinux_is_selinux_enabled" >&6; }
+if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes
+then :
+  ac_fn_c_check_header_compile "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
+if test "x$ac_cv_header_selinux_selinux_h" = xyes
+then :
   LIBS="$LIBS -lselinux"
-	    $as_echo "#define HAVE_SELINUX 1" >>confdefs.h
-
-fi
-
+	    printf "%s\n" "#define HAVE_SELINUX 1" >>confdefs.h
+
+fi
 
 fi
 
   else
-     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-features argument" >&5
-$as_echo_n "checking --with-features argument... " >&6; }
+     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+  fi
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-features argument" >&5
+printf %s "checking --with-features argument... " >&6; }
 
 # Check whether --with-features was given.
-if test "${with_features+set}" = set; then :
-  withval=$with_features; features="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $features" >&5
-$as_echo "$features" >&6; }
-else
-  features="huge"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to huge" >&5
-$as_echo "Defaulting to huge" >&6; }
+if test ${with_features+y}
+then :
+  withval=$with_features; features="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $features" >&5
+printf "%s\n" "$features" >&6; }
+else $as_nop
+  features="huge"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to huge" >&5
+printf "%s\n" "Defaulting to huge" >&6; }
 fi
 
 
@@ -5240,16 +5442,16 @@ esac
 dovimdiff=""
 dogvimdiff=""
 case "$features" in
-  tiny)		$as_echo "#define FEAT_TINY 1" >>confdefs.h
+  tiny)		printf "%s\n" "#define FEAT_TINY 1" >>confdefs.h
  ;;
-  normal)	$as_echo "#define FEAT_NORMAL 1" >>confdefs.h
+  normal)	printf "%s\n" "#define FEAT_NORMAL 1" >>confdefs.h
  dovimdiff="installvimdiff";
 			dogvimdiff="installgvimdiff" ;;
-  huge)		$as_echo "#define FEAT_HUGE 1" >>confdefs.h
+  huge)		printf "%s\n" "#define FEAT_HUGE 1" >>confdefs.h
  dovimdiff="installvimdiff";
 			dogvimdiff="installgvimdiff" ;;
-  *)		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Sorry, $features is not supported" >&5
-$as_echo "Sorry, $features is not supported" >&6; } ;;
+  *)		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sorry, $features is not supported" >&5
+printf "%s\n" "Sorry, $features is not supported" >&6; } ;;
 esac
 
 
@@ -5261,81 +5463,85 @@ else
   has_eval=yes
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-compiledby argument" >&5
-$as_echo_n "checking --with-compiledby argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-compiledby argument" >&5
+printf %s "checking --with-compiledby argument... " >&6; }
 
 # Check whether --with-compiledby was given.
-if test "${with_compiledby+set}" = set; then :
-  withval=$with_compiledby; compiledby="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
-$as_echo "$withval" >&6; }
-else
-  compiledby=""; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-xsmp argument" >&5
-$as_echo_n "checking --disable-xsmp argument... " >&6; }
+if test ${with_compiledby+y}
+then :
+  withval=$with_compiledby; compiledby="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $withval" >&5
+printf "%s\n" "$withval" >&6; }
+else $as_nop
+  compiledby=""; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-xsmp argument" >&5
+printf %s "checking --disable-xsmp argument... " >&6; }
 # Check whether --enable-xsmp was given.
-if test "${enable_xsmp+set}" = set; then :
+if test ${enable_xsmp+y}
+then :
   enableval=$enable_xsmp;
-else
+else $as_nop
   enable_xsmp="yes"
 fi
 
 
 if test "$enable_xsmp" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-xsmp-interact argument" >&5
-$as_echo_n "checking --disable-xsmp-interact argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-xsmp-interact argument" >&5
+printf %s "checking --disable-xsmp-interact argument... " >&6; }
   # Check whether --enable-xsmp-interact was given.
-if test "${enable_xsmp_interact+set}" = set; then :
+if test ${enable_xsmp_interact+y}
+then :
   enableval=$enable_xsmp_interact;
-else
+else $as_nop
   enable_xsmp_interact="yes"
 fi
 
   if test "$enable_xsmp_interact" = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    $as_echo "#define USE_XSMP_INTERACT 1" >>confdefs.h
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+    printf "%s\n" "#define USE_XSMP_INTERACT 1" >>confdefs.h
 
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking diff feature" >&5
-$as_echo_n "checking diff feature... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+  fi
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking diff feature" >&5
+printf %s "checking diff feature... " >&6; }
 if test "x$features" = "xtiny"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled in $features version" >&5
-$as_echo "disabled in $features version" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabled" >&5
-$as_echo "enabled" >&6; }
-  $as_echo "#define FEAT_DIFF 1" >>confdefs.h
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: disabled in $features version" >&5
+printf "%s\n" "disabled in $features version" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: enabled" >&5
+printf "%s\n" "enabled" >&6; }
+  printf "%s\n" "#define FEAT_DIFF 1" >>confdefs.h
 
   XDIFF_OBJS_USED="\$(XDIFF_OBJS)"
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-luainterp argument" >&5
-$as_echo_n "checking --enable-luainterp argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-luainterp argument" >&5
+printf %s "checking --enable-luainterp argument... " >&6; }
 # Check whether --enable-luainterp was given.
-if test "${enable_luainterp+set}" = set; then :
+if test ${enable_luainterp+y}
+then :
   enableval=$enable_luainterp;
-else
+else $as_nop
   enable_luainterp="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_luainterp" >&5
-$as_echo "$enable_luainterp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_luainterp" >&5
+printf "%s\n" "$enable_luainterp" >&6; }
 
 if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
   if test "$has_eval" = "no"; then
@@ -5344,58 +5550,61 @@ if test "$enable_luainterp" = "yes" -o "
 
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-lua-prefix argument" >&5
-$as_echo_n "checking --with-lua-prefix argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-lua-prefix argument" >&5
+printf %s "checking --with-lua-prefix argument... " >&6; }
 
 # Check whether --with-lua_prefix was given.
-if test "${with_lua_prefix+set}" = set; then :
-  withval=$with_lua_prefix; with_lua_prefix="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_lua_prefix" >&5
-$as_echo "$with_lua_prefix" >&6; }
-else
-  with_lua_prefix="";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test ${with_lua_prefix+y}
+then :
+  withval=$with_lua_prefix; with_lua_prefix="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_lua_prefix" >&5
+printf "%s\n" "$with_lua_prefix" >&6; }
+else $as_nop
+  with_lua_prefix="";{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
   if test "X$with_lua_prefix" != "X"; then
        vi_cv_path_lua_pfx="$with_lua_prefix"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking LUA_PREFIX environment var" >&5
-$as_echo_n "checking LUA_PREFIX environment var... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LUA_PREFIX environment var" >&5
+printf %s "checking LUA_PREFIX environment var... " >&6; }
     if test "X$LUA_PREFIX" != "X"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$LUA_PREFIX\"" >&5
-$as_echo "\"$LUA_PREFIX\"" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$LUA_PREFIX\"" >&5
+printf "%s\n" "\"$LUA_PREFIX\"" >&6; }
 	vi_cv_path_lua_pfx="$LUA_PREFIX"
     else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not set, default to /usr" >&5
-$as_echo "not set, default to /usr" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set, default to /usr" >&5
+printf "%s\n" "not set, default to /usr" >&6; }
 	vi_cv_path_lua_pfx="/usr"
     fi
   fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-luajit" >&5
-$as_echo_n "checking --with-luajit... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-luajit" >&5
+printf %s "checking --with-luajit... " >&6; }
 
 # Check whether --with-luajit was given.
-if test "${with_luajit+set}" = set; then :
+if test ${with_luajit+y}
+then :
   withval=$with_luajit; vi_cv_with_luajit="$withval"
-else
+else $as_nop
   vi_cv_with_luajit="no"
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_with_luajit" >&5
-$as_echo "$vi_cv_with_luajit" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_with_luajit" >&5
+printf "%s\n" "$vi_cv_with_luajit" >&6; }
 
   LUA_INC=
   if test "X$vi_cv_path_lua_pfx" != "X"; then
     if test "x$vi_cv_with_luajit" != "xno"; then
             # Extract the first word of "luajit", so it can be a program name with args.
 set dummy luajit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_luajit+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_luajit+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_luajit in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_luajit="$vi_cv_path_luajit" # Let the user override the test with a path.
@@ -5405,11 +5614,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_luajit="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_luajit="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5421,44 +5634,47 @@ esac
 fi
 vi_cv_path_luajit=$ac_cv_path_vi_cv_path_luajit
 if test -n "$vi_cv_path_luajit"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_luajit" >&5
-$as_echo "$vi_cv_path_luajit" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_luajit" >&5
+printf "%s\n" "$vi_cv_path_luajit" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
       if test "X$vi_cv_path_luajit" != "X"; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking LuaJIT version" >&5
-$as_echo_n "checking LuaJIT version... " >&6; }
-if ${vi_cv_version_luajit+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-   vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([0-9.]*\)\.[0-9]\(-[a-z0-9]*\)* .*/\1/'`
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_luajit" >&5
-$as_echo "$vi_cv_version_luajit" >&6; }
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version of LuaJIT" >&5
-$as_echo_n "checking Lua version of LuaJIT... " >&6; }
-if ${vi_cv_version_lua_luajit+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LuaJIT version" >&5
+printf %s "checking LuaJIT version... " >&6; }
+if test ${vi_cv_version_luajit+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+   vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([0-9.]*\)\.[0-9]\(-*[a-z0-9]*\)* .*/\1/'`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_luajit" >&5
+printf "%s\n" "$vi_cv_version_luajit" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Lua version of LuaJIT" >&5
+printf %s "checking Lua version of LuaJIT... " >&6; }
+if test ${vi_cv_version_lua_luajit+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua_luajit" >&5
-$as_echo "$vi_cv_version_lua_luajit" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_lua_luajit" >&5
+printf "%s\n" "$vi_cv_version_lua_luajit" >&6; }
 	vi_cv_path_lua="$vi_cv_path_luajit"
 	vi_cv_version_lua="$vi_cv_version_lua_luajit"
       fi
     else
             # Extract the first word of "lua", so it can be a program name with args.
 set dummy lua; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_plain_lua+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_plain_lua+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_plain_lua in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_plain_lua="$vi_cv_path_plain_lua" # Let the user override the test with a path.
@@ -5468,11 +5684,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_plain_lua="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_plain_lua="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5484,55 +5704,56 @@ esac
 fi
 vi_cv_path_plain_lua=$ac_cv_path_vi_cv_path_plain_lua
 if test -n "$vi_cv_path_plain_lua"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_plain_lua" >&5
-$as_echo "$vi_cv_path_plain_lua" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_plain_lua" >&5
+printf "%s\n" "$vi_cv_path_plain_lua" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
       if test "X$vi_cv_path_plain_lua" != "X"; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5
-$as_echo_n "checking Lua version... " >&6; }
-if ${vi_cv_version_plain_lua+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Lua version" >&5
+printf %s "checking Lua version... " >&6; }
+if test ${vi_cv_version_plain_lua+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_plain_lua" >&5
-$as_echo "$vi_cv_version_plain_lua" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_version_plain_lua" >&5
+printf "%s\n" "$vi_cv_version_plain_lua" >&6; }
       fi
       vi_cv_path_lua="$vi_cv_path_plain_lua"
       vi_cv_version_lua="$vi_cv_version_plain_lua"
     fi
     if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit" >&5
-$as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit" >&5
+printf %s "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit... " >&6; }
       if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	LUA_INC=/luajit-$vi_cv_version_luajit
       fi
     fi
     if test "X$LUA_INC" = "X"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5
-$as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include" >&5
+printf %s "checking if lua.h can be found in $vi_cv_path_lua_pfx/include... " >&6; }
       if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5
-$as_echo_n "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua... " >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua" >&5
+printf %s "checking if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua... " >&6; }
 	if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	  LUA_INC=/lua$vi_cv_version_lua
 	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
 	  # Detect moonjit:
 	  # https://groups.google.com/forum/#!topic/vim_use/O0vek60WuTk
@@ -5545,15 +5766,15 @@ fi
 	      break
 	    fi
 	  done
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $inc_path$lua_suf" >&5
-$as_echo_n "checking if lua.h can be found in $inc_path$lua_suf... " >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if lua.h can be found in $inc_path$lua_suf" >&5
+printf %s "checking if lua.h can be found in $inc_path$lua_suf... " >&6; }
 	  if test -f "$inc_path$lua_suf/lua.h"; then
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	    LUA_INC=$lua_suf
 	  else
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 	    vi_cv_path_lua_pfx=
 	  fi
 	fi
@@ -5589,29 +5810,30 @@ fi
     if test "$enable_luainterp" = "dynamic"; then
       lua_ok="yes"
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if link with ${LUA_LIBS} is sane" >&5
-$as_echo_n "checking if link with ${LUA_LIBS} is sane... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if link with ${LUA_LIBS} is sane" >&5
+printf %s "checking if link with ${LUA_LIBS} is sane... " >&6; }
       libs_save=$LIBS
       LIBS="$LIBS $LUA_LIBS"
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; lua_ok="yes"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; lua_ok="no"; LUA_LIBS=""
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; lua_ok="yes"
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; lua_ok="no"; LUA_LIBS=""
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
       LIBS=$libs_save
     fi
@@ -5620,7 +5842,7 @@ rm -f core conftest.err conftest.$ac_obj
       LUA_SRC="if_lua.c"
       LUA_OBJ="objects/if_lua.o"
       LUA_PRO="if_lua.pro"
-      $as_echo "#define FEAT_LUA 1" >>confdefs.h
+      printf "%s\n" "#define FEAT_LUA 1" >>confdefs.h
 
     fi
     if test "$enable_luainterp" = "dynamic"; then
@@ -5641,8 +5863,8 @@ rm -f core conftest.err conftest.$ac_obj
 	    lib_multiarch="lib/${multiarch}"
 	  fi
 	fi
-			{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx" >&5
-$as_echo_n "checking if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx... " >&6; }
+			{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx" >&5
+printf %s "checking if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx... " >&6; }
 	for subdir in "${lib_multiarch}" lib64 lib; do
 	  if test -z "$subdir"; then
 	    continue
@@ -5659,18 +5881,18 @@ rm -f core conftest.err conftest.$ac_obj
 	  sover=""
 	done
 	if test "X$sover" = "X"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 	  lua_ok="no"
 	  vi_cv_dll_name_lua="liblua${luajit}.${ext}"
 	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	  lua_ok="yes"
 	  vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
 	fi
       fi
-      $as_echo "#define DYNAMIC_LUA 1" >>confdefs.h
+      printf "%s\n" "#define DYNAMIC_LUA 1" >>confdefs.h
 
       LUA_LIBS=""
       LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
@@ -5693,31 +5915,33 @@ rm -f core conftest.err conftest.$ac_obj
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-mzschemeinterp argument" >&5
-$as_echo_n "checking --enable-mzschemeinterp argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-mzschemeinterp argument" >&5
+printf %s "checking --enable-mzschemeinterp argument... " >&6; }
 # Check whether --enable-mzschemeinterp was given.
-if test "${enable_mzschemeinterp+set}" = set; then :
+if test ${enable_mzschemeinterp+y}
+then :
   enableval=$enable_mzschemeinterp;
-else
+else $as_nop
   enable_mzschemeinterp="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_mzschemeinterp" >&5
-$as_echo "$enable_mzschemeinterp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_mzschemeinterp" >&5
+printf "%s\n" "$enable_mzschemeinterp" >&6; }
 
 if test "$enable_mzschemeinterp" = "yes"; then
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-plthome argument" >&5
-$as_echo_n "checking --with-plthome argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-plthome argument" >&5
+printf %s "checking --with-plthome argument... " >&6; }
 
 # Check whether --with-plthome was given.
-if test "${with_plthome+set}" = set; then :
-  withval=$with_plthome; with_plthome="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_plthome" >&5
-$as_echo "$with_plthome" >&6; }
-else
-  with_plthome="";{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
-$as_echo "\"no\"" >&6; }
+if test ${with_plthome+y}
+then :
+  withval=$with_plthome; with_plthome="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_plthome" >&5
+printf "%s\n" "$with_plthome" >&6; }
+else $as_nop
+  with_plthome="";{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
+printf "%s\n" "\"no\"" >&6; }
 fi
 
 
@@ -5725,23 +5949,24 @@ fi
        vi_cv_path_mzscheme_pfx="$with_plthome"
        vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking PLTHOME environment var" >&5
-$as_echo_n "checking PLTHOME environment var... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking PLTHOME environment var" >&5
+printf %s "checking PLTHOME environment var... " >&6; }
     if test "X$PLTHOME" != "X"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$PLTHOME\"" >&5
-$as_echo "\"$PLTHOME\"" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"$PLTHOME\"" >&5
+printf "%s\n" "\"$PLTHOME\"" >&6; }
 	vi_cv_path_mzscheme_pfx="$PLTHOME"
 	vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
     else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not set" >&5
-$as_echo "not set" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set" >&5
+printf "%s\n" "not set" >&6; }
 		# Extract the first word of "mzscheme", so it can be a program name with args.
 set dummy mzscheme; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_mzscheme+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_mzscheme+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_mzscheme in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_mzscheme="$vi_cv_path_mzscheme" # Let the user override the test with a path.
@@ -5751,11 +5976,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_mzscheme="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_mzscheme="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -5767,11 +5996,11 @@ esac
 fi
 vi_cv_path_mzscheme=$ac_cv_path_vi_cv_path_mzscheme
 if test -n "$vi_cv_path_mzscheme"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_mzscheme" >&5
-$as_echo "$vi_cv_path_mzscheme" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_mzscheme" >&5
+printf "%s\n" "$vi_cv_path_mzscheme" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -5784,11 +6013,12 @@ fi
 	fi
 
 	if test "X$vi_cv_path_mzscheme" != "X"; then
-	    	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking MzScheme install prefix" >&5
-$as_echo_n "checking MzScheme install prefix... " >&6; }
-if ${vi_cv_path_mzscheme_pfx+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+	    	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking MzScheme install prefix" >&5
+printf %s "checking MzScheme install prefix... " >&6; }
+if test ${vi_cv_path_mzscheme_pfx+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   	    	    echo "(display (simplify-path		\
 	       (build-path (call-with-values	\
 		(lambda () (split-path (find-system-path (quote exec-file)))) \
@@ -5796,68 +6026,68 @@ else
 	    	     vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
 		sed -e 's+/$++'`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_mzscheme_pfx" >&5
-$as_echo "$vi_cv_path_mzscheme_pfx" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_mzscheme_pfx" >&5
+printf "%s\n" "$vi_cv_path_mzscheme_pfx" >&6; }
 	    rm -f mzdirs.scm
 	fi
     fi
   fi
 
   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for racket include directory" >&5
-$as_echo_n "checking for racket include directory... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for racket include directory" >&5
+printf %s "checking for racket include directory... " >&6; }
     SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'`
     if test "X$SCHEME_INC" != "X"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_INC}" >&5
-$as_echo "${SCHEME_INC}" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_INC}" >&5
+printf "%s\n" "${SCHEME_INC}" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include" >&5
-$as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include" >&5
+printf %s "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include... " >&6; }
       if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then
 	SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt" >&5
-$as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt... " >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt" >&5
+printf %s "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt... " >&6; }
 	if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	  SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
 	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket" >&5
-$as_echo_n "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket... " >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket" >&5
+printf %s "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket... " >&6; }
 	  if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	    SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
 	  else
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/plt/" >&5
-$as_echo_n "checking if scheme.h can be found in /usr/include/plt/... " >&6; }
+	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/plt/" >&5
+printf %s "checking if scheme.h can be found in /usr/include/plt/... " >&6; }
 	    if test -f /usr/include/plt/scheme.h; then
-	      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	      SCHEME_INC=/usr/include/plt
 	    else
-	      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/racket/" >&5
-$as_echo_n "checking if scheme.h can be found in /usr/include/racket/... " >&6; }
+	      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+	      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if scheme.h can be found in /usr/include/racket/" >&5
+printf %s "checking if scheme.h can be found in /usr/include/racket/... " >&6; }
 	      if test -f /usr/include/racket/scheme.h; then
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 		SCHEME_INC=/usr/include/racket
 	      else
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 		vi_cv_path_mzscheme_pfx=
 	      fi
 	    fi
@@ -5869,15 +6099,15 @@ fi
 
   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for racket lib directory" >&5
-$as_echo_n "checking for racket lib directory... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for racket lib directory" >&5
+printf %s "checking for racket lib directory... " >&6; }
     SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'`
     if test "X$SCHEME_LIB" != "X"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_LIB}" >&5
-$as_echo "${SCHEME_LIB}" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_LIB}" >&5
+printf "%s\n" "${SCHEME_LIB}" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
     fi
 
     for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
@@ -5926,32 +6156,32 @@ fi
       fi
     done
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if racket requires -pthread" >&5
-$as_echo_n "checking if racket requires -pthread... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if racket requires -pthread" >&5
+printf %s "checking if racket requires -pthread... " >&6; }
     if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
       MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread"
       MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread"
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for racket config directory" >&5
-$as_echo_n "checking for racket config directory... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+    fi
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for racket config directory" >&5
+printf %s "checking for racket config directory... " >&6; }
     SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'`
     if test "X$SCHEME_CONFIGDIR" != "X"; then
       MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_CONFIGDIR}" >&5
-$as_echo "${SCHEME_CONFIGDIR}" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_CONFIGDIR}" >&5
+printf "%s\n" "${SCHEME_CONFIGDIR}" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
-    fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for racket collects directory" >&5
-$as_echo_n "checking for racket collects directory... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
+    fi
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for racket collects directory" >&5
+printf %s "checking for racket collects directory... " >&6; }
     SCHEME_COLLECTS=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-collects-dir))) (when (path? p) (let-values (((base _1 _2) (split-path p))) (display base))))'`
     if test "X$SCHEME_COLLECTS" = "X"; then
       if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then
@@ -5971,15 +6201,15 @@ fi
       fi
     fi
     if test "X$SCHEME_COLLECTS" != "X" ; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_COLLECTS}" >&5
-$as_echo "${SCHEME_COLLECTS}" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${SCHEME_COLLECTS}" >&5
+printf "%s\n" "${SCHEME_COLLECTS}" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
-    fi
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mzscheme_base.c" >&5
-$as_echo_n "checking for mzscheme_base.c... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
+    fi
+
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mzscheme_base.c" >&5
+printf %s "checking for mzscheme_base.c... " >&6; }
     if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
       MZSCHEME_EXTRA="mzscheme_base.c"
       MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
@@ -5999,18 +6229,19 @@ fi
     fi
     if test "X$MZSCHEME_EXTRA" != "X" ; then
             MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: needed" >&5
-$as_echo "needed" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: needed" >&5
+printf "%s\n" "needed" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not needed" >&5
-$as_echo "not needed" >&6; }
-    fi
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_type_void in -lffi" >&5
-$as_echo_n "checking for ffi_type_void in -lffi... " >&6; }
-if ${ac_cv_lib_ffi_ffi_type_void+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not needed" >&5
+printf "%s\n" "not needed" >&6; }
+    fi
+
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ffi_type_void in -lffi" >&5
+printf %s "checking for ffi_type_void in -lffi... " >&6; }
+if test ${ac_cv_lib_ffi_ffi_type_void+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lffi  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6019,30 +6250,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char ffi_type_void ();
 int
-main ()
+main (void)
 {
 return ffi_type_void ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_ffi_ffi_type_void=yes
-else
+else $as_nop
   ac_cv_lib_ffi_ffi_type_void=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_type_void" >&5
-$as_echo "$ac_cv_lib_ffi_ffi_type_void" >&6; }
-if test "x$ac_cv_lib_ffi_ffi_type_void" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_type_void" >&5
+printf "%s\n" "$ac_cv_lib_ffi_ffi_type_void" >&6; }
+if test "x$ac_cv_lib_ffi_ffi_type_void" = xyes
+then :
   MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"
 fi
 
@@ -6050,8 +6280,8 @@ fi
     MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
       -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for MzScheme are sane" >&5
-$as_echo_n "checking if compile and link flags for MzScheme are sane... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for MzScheme are sane" >&5
+printf %s "checking if compile and link flags for MzScheme are sane... " >&6; }
     cflags_save=$CFLAGS
     libs_save=$LIBS
     CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
@@ -6060,21 +6290,22 @@ fi
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; mzs_ok=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: MZSCHEME DISABLED" >&5
-$as_echo "no: MZSCHEME DISABLED" >&6; }; mzs_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; mzs_ok=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no: MZSCHEME DISABLED" >&5
+printf "%s\n" "no: MZSCHEME DISABLED" >&6; }; mzs_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
     CFLAGS=$cflags_save
     LIBS=$libs_save
@@ -6082,7 +6313,7 @@ rm -f core conftest.err conftest.$ac_obj
       MZSCHEME_SRC="if_mzsch.c"
       MZSCHEME_OBJ="objects/if_mzsch.o"
       MZSCHEME_PRO="if_mzsch.pro"
-      $as_echo "#define FEAT_MZSCHEME 1" >>confdefs.h
+      printf "%s\n" "#define FEAT_MZSCHEME 1" >>confdefs.h
 
     else
       MZSCHEME_CFLAGS=
@@ -6101,17 +6332,18 @@ rm -f core conftest.err conftest.$ac_obj
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-perlinterp argument" >&5
-$as_echo_n "checking --enable-perlinterp argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-perlinterp argument" >&5
+printf %s "checking --enable-perlinterp argument... " >&6; }
 # Check whether --enable-perlinterp was given.
-if test "${enable_perlinterp+set}" = set; then :
+if test ${enable_perlinterp+y}
+then :
   enableval=$enable_perlinterp;
-else
+else $as_nop
   enable_perlinterp="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_perlinterp" >&5
-$as_echo "$enable_perlinterp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_perlinterp" >&5
+printf "%s\n" "$enable_perlinterp" >&6; }
 if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
   if test "$has_eval" = "no"; then
     as_fn_error $? "cannot use Perl with tiny features" "$LINENO" 5
@@ -6119,11 +6351,12 @@ if test "$enable_perlinterp" = "yes" -o 
 
   # Extract the first word of "perl", so it can be a program name with args.
 set dummy perl; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_perl+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_perl+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_perl in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_perl="$vi_cv_path_perl" # Let the user override the test with a path.
@@ -6133,11 +6366,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_perl="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_perl="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6149,17 +6386,17 @@ esac
 fi
 vi_cv_path_perl=$ac_cv_path_vi_cv_path_perl
 if test -n "$vi_cv_path_perl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_perl" >&5
-$as_echo "$vi_cv_path_perl" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_perl" >&5
+printf "%s\n" "$vi_cv_path_perl" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
   if test "X$vi_cv_path_perl" != "X"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking Perl version" >&5
-$as_echo_n "checking Perl version... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Perl version" >&5
+printf %s "checking Perl version... " >&6; }
     if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
      eval `$vi_cv_path_perl -V:usethreads`
      eval `$vi_cv_path_perl -V:libperl`
@@ -6172,18 +6409,18 @@ fi
 	   badthreads=no
 	 else
 	   badthreads=yes
-	   { $as_echo "$as_me:${as_lineno-$LINENO}: result: >>> Perl > 5.6 with 5.5 threads cannot be used <<<" >&5
-$as_echo ">>> Perl > 5.6 with 5.5 threads cannot be used <<<" >&6; }
+	   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: >>> Perl > 5.6 with 5.5 threads cannot be used <<<" >&5
+printf "%s\n" ">>> Perl > 5.6 with 5.5 threads cannot be used <<<" >&6; }
 	 fi
        else
 	 badthreads=yes
-	 { $as_echo "$as_me:${as_lineno-$LINENO}: result: >>> Perl 5.5 with threads cannot be used <<<" >&5
-$as_echo ">>> Perl 5.5 with threads cannot be used <<<" >&6; }
+	 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: >>> Perl 5.5 with threads cannot be used <<<" >&5
+printf "%s\n" ">>> Perl 5.5 with threads cannot be used <<<" >&6; }
        fi
      fi
      if test $badthreads = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5
-$as_echo "OK" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: OK" >&5
+printf "%s\n" "OK" >&6; }
       eval `$vi_cv_path_perl -V:shrpenv`
       if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
 	shrpenv=""
@@ -6210,8 +6447,8 @@ fi
                   perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
 		-e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
 
-                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Perl are sane" >&5
-$as_echo_n "checking if compile and link flags for Perl are sane... " >&6; }
+                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Perl are sane" >&5
+printf %s "checking if compile and link flags for Perl are sane... " >&6; }
       cflags_save=$CFLAGS
       libs_save=$LIBS
       ldflags_save=$LDFLAGS
@@ -6223,21 +6460,22 @@ fi
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; perl_ok=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: PERL DISABLED" >&5
-$as_echo "no: PERL DISABLED" >&6; }; perl_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; perl_ok=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no: PERL DISABLED" >&5
+printf "%s\n" "no: PERL DISABLED" >&6; }; perl_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
       CFLAGS=$cflags_save
       LIBS=$libs_save
@@ -6255,13 +6493,13 @@ rm -f core conftest.err conftest.$ac_obj
 	PERL_SRC="auto/if_perl.c if_perlsfio.c"
 	PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
 	PERL_PRO="if_perl.pro if_perlsfio.pro"
-	$as_echo "#define FEAT_PERL 1" >>confdefs.h
+	printf "%s\n" "#define FEAT_PERL 1" >>confdefs.h
 
       fi
      fi
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: >>> too old; need Perl version 5.003_01 or later <<<" >&5
-$as_echo ">>> too old; need Perl version 5.003_01 or later <<<" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: >>> too old; need Perl version 5.003_01 or later <<<" >&5
+printf "%s\n" ">>> too old; need Perl version 5.003_01 or later <<<" >&6; }
     fi
   fi
 
@@ -6288,9 +6526,10 @@ rm -f core conftest.err conftest.$ac_obj
   fi
   if test "$enable_perlinterp" = "dynamic"; then
     if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
-      $as_echo "#define DYNAMIC_PERL 1" >>confdefs.h
+      printf "%s\n" "#define DYNAMIC_PERL 1" >>confdefs.h
 
       PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+      PERL_LIBS=""
     fi
   fi
 
@@ -6306,33 +6545,35 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-pythoninterp argument" >&5
-$as_echo_n "checking --enable-pythoninterp argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-pythoninterp argument" >&5
+printf %s "checking --enable-pythoninterp argument... " >&6; }
 # Check whether --enable-pythoninterp was given.
-if test "${enable_pythoninterp+set}" = set; then :
+if test ${enable_pythoninterp+y}
+then :
   enableval=$enable_pythoninterp;
-else
+else $as_nop
   enable_pythoninterp="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_pythoninterp" >&5
-$as_echo "$enable_pythoninterp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_pythoninterp" >&5
+printf "%s\n" "$enable_pythoninterp" >&6; }
 if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
   if test "$has_eval" = "no"; then
     as_fn_error $? "cannot use Python with tiny features" "$LINENO" 5
   fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-python-command argument" >&5
-$as_echo_n "checking --with-python-command argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-python-command argument" >&5
+printf %s "checking --with-python-command argument... " >&6; }
 
 
 # Check whether --with-python-command was given.
-if test "${with_python_command+set}" = set; then :
-  withval=$with_python_command; vi_cv_path_python="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python" >&5
-$as_echo "$vi_cv_path_python" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test ${with_python_command+y}
+then :
+  withval=$with_python_command; vi_cv_path_python="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python" >&5
+printf "%s\n" "$vi_cv_path_python" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6341,11 +6582,12 @@ fi
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_python+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_python+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_python in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_python="$vi_cv_path_python" # Let the user override the test with a path.
@@ -6355,11 +6597,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_python="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_python="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6371,11 +6617,11 @@ esac
 fi
 vi_cv_path_python=$ac_cv_path_vi_cv_path_python
 if test -n "$vi_cv_path_python"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python" >&5
-$as_echo "$vi_cv_path_python" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python" >&5
+printf "%s\n" "$vi_cv_path_python" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6385,54 +6631,58 @@ done
   fi
   if test "X$vi_cv_path_python" != "X"; then
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5
-$as_echo_n "checking Python version... " >&6; }
-if ${vi_cv_var_python_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python version" >&5
+printf %s "checking Python version... " >&6; }
+if test ${vi_cv_var_python_version+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   vi_cv_var_python_version=`
 	    ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5
-$as_echo "$vi_cv_var_python_version" >&6; }
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 2.3 or better" >&5
-$as_echo_n "checking Python is 2.3 or better... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5
+printf "%s\n" "$vi_cv_var_python_version" >&6; }
+
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python is 2.3 or better" >&5
+printf %s "checking Python is 2.3 or better... " >&6; }
     if ${vi_cv_path_python} -c \
 	"import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
     then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5
-$as_echo "yep" >&6; }
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5
-$as_echo_n "checking Python's install prefix... " >&6; }
-if ${vi_cv_path_python_pfx+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yep" >&5
+printf "%s\n" "yep" >&6; }
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5
+printf %s "checking Python's install prefix... " >&6; }
+if test ${vi_cv_path_python_pfx+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_path_python_pfx=`
 	    ${vi_cv_path_python} -c \
 		"import sys; print sys.prefix"`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python_pfx" >&5
-$as_echo "$vi_cv_path_python_pfx" >&6; }
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5
-$as_echo_n "checking Python's execution prefix... " >&6; }
-if ${vi_cv_path_python_epfx+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python_pfx" >&5
+printf "%s\n" "$vi_cv_path_python_pfx" >&6; }
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5
+printf %s "checking Python's execution prefix... " >&6; }
+if test ${vi_cv_path_python_epfx+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_path_python_epfx=`
 	    ${vi_cv_path_python} -c \
 		"import sys; print sys.exec_prefix"`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python_epfx" >&5
-$as_echo "$vi_cv_path_python_epfx" >&6; }
-
-
-      if ${vi_cv_path_pythonpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python_epfx" >&5
+printf "%s\n" "$vi_cv_path_python_epfx" >&6; }
+
+
+      if test ${vi_cv_path_pythonpath+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_path_pythonpath=`
 	    unset PYTHONPATH;
 	    ${vi_cv_path_python} -c \
@@ -6443,16 +6693,18 @@ fi
 
 
 # Check whether --with-python-config-dir was given.
-if test "${with_python_config_dir+set}" = set; then :
+if test ${with_python_config_dir+y}
+then :
   withval=$with_python_config_dir;  vi_cv_path_python_conf="${withval}"; have_python_config_dir=1
 fi
 
 
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5
-$as_echo_n "checking Python's configuration directory... " >&6; }
-if ${vi_cv_path_python_conf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5
+printf %s "checking Python's configuration directory... " >&6; }
+if test ${vi_cv_path_python_conf+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 	vi_cv_path_python_conf=
 	d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
@@ -6470,19 +6722,20 @@ else
 	fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python_conf" >&5
-$as_echo "$vi_cv_path_python_conf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python_conf" >&5
+printf "%s\n" "$vi_cv_path_python_conf" >&6; }
 
       PYTHON_CONFDIR="${vi_cv_path_python_conf}"
 
       if test "X$PYTHON_CONFDIR" = "X"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: can't find it!" >&5
-$as_echo "can't find it!" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: can't find it!" >&5
+printf "%s\n" "can't find it!" >&6; }
       else
 
-			if ${vi_cv_path_python_plibs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+			if test ${vi_cv_path_python_plibs+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 	    pwd=`pwd`
 	    tmp_mkf="$pwd/config-PyMake$$"
@@ -6525,11 +6778,12 @@ eof
 
 fi
 
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's dll name" >&5
-$as_echo_n "checking Python's dll name... " >&6; }
-if ${vi_cv_dll_name_python+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's dll name" >&5
+printf %s "checking Python's dll name... " >&6; }
+if test ${vi_cv_dll_name_python+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 	  if test "X$python_DLLLIBRARY" != "X"; then
 	    vi_cv_dll_name_python="$python_DLLLIBRARY"
@@ -6538,8 +6792,8 @@ else
 	  fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_dll_name_python" >&5
-$as_echo "$vi_cv_dll_name_python" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_dll_name_python" >&5
+printf "%s\n" "$vi_cv_dll_name_python" >&6; }
 
 	PYTHON_LIBS="${vi_cv_path_python_plibs}"
 	if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
@@ -6554,8 +6808,8 @@ fi
 	PYTHON_SRC="if_python.c"
 	PYTHON_OBJ="objects/if_python.o"
 
-								{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
-$as_echo_n "checking if -pthread should be used... " >&6; }
+								{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
+printf %s "checking if -pthread should be used... " >&6; }
 	threadsafe_flag=
 	thread_lib=
 	        if test "$vim_cv_uname_output" != Darwin; then
@@ -6577,31 +6831,32 @@ fi
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; LIBS=$libs_save_old
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag"
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; LIBS=$libs_save_old
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 	  CFLAGS=$cflags_save
 	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 	fi
 
-			{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python are sane" >&5
-$as_echo_n "checking if compile and link flags for Python are sane... " >&6; }
+			{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python are sane" >&5
+printf %s "checking if compile and link flags for Python are sane... " >&6; }
 	cflags_save=$CFLAGS
 	libs_save=$LIBS
 	CFLAGS="$CFLAGS $PYTHON_CFLAGS"
@@ -6610,26 +6865,27 @@ rm -f core conftest.err conftest.$ac_obj
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; python_ok=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: PYTHON DISABLED" >&5
-$as_echo "no: PYTHON DISABLED" >&6; }; python_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; python_ok=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no: PYTHON DISABLED" >&5
+printf "%s\n" "no: PYTHON DISABLED" >&6; }; python_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 	CFLAGS=$cflags_save
 	LIBS=$libs_save
 	if test $python_ok = yes; then
-	  $as_echo "#define FEAT_PYTHON 1" >>confdefs.h
+	  printf "%s\n" "#define FEAT_PYTHON 1" >>confdefs.h
 
 	else
 	  LIBS=$libs_save_old
@@ -6640,8 +6896,8 @@ rm -f core conftest.err conftest.$ac_obj
 	fi
       fi
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: too old" >&5
-$as_echo "too old" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: too old" >&5
+printf "%s\n" "too old" >&6; }
     fi
   fi
 
@@ -6657,33 +6913,35 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-python3interp argument" >&5
-$as_echo_n "checking --enable-python3interp argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-python3interp argument" >&5
+printf %s "checking --enable-python3interp argument... " >&6; }
 # Check whether --enable-python3interp was given.
-if test "${enable_python3interp+set}" = set; then :
+if test ${enable_python3interp+y}
+then :
   enableval=$enable_python3interp;
-else
+else $as_nop
   enable_python3interp="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_python3interp" >&5
-$as_echo "$enable_python3interp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_python3interp" >&5
+printf "%s\n" "$enable_python3interp" >&6; }
 if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
   if test "$has_eval" = "no"; then
     as_fn_error $? "cannot use Python with tiny features" "$LINENO" 5
   fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-python3-command argument" >&5
-$as_echo_n "checking --with-python3-command argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-python3-command argument" >&5
+printf %s "checking --with-python3-command argument... " >&6; }
 
 
 # Check whether --with-python3-command was given.
-if test "${with_python3_command+set}" = set; then :
-  withval=$with_python3_command; vi_cv_path_python3="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3" >&5
-$as_echo "$vi_cv_path_python3" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test ${with_python3_command+y}
+then :
+  withval=$with_python3_command; vi_cv_path_python3="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3" >&5
+printf "%s\n" "$vi_cv_path_python3" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6692,11 +6950,12 @@ fi
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_python3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_python3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_python3 in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_python3="$vi_cv_path_python3" # Let the user override the test with a path.
@@ -6706,11 +6965,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_python3="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_python3="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -6722,11 +6985,11 @@ esac
 fi
 vi_cv_path_python3=$ac_cv_path_vi_cv_path_python3
 if test -n "$vi_cv_path_python3"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3" >&5
-$as_echo "$vi_cv_path_python3" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3" >&5
+printf "%s\n" "$vi_cv_path_python3" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -6736,43 +6999,46 @@ done
   fi
   if test "X$vi_cv_path_python3" != "X"; then
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python version" >&5
-$as_echo_n "checking Python version... " >&6; }
-if ${vi_cv_var_python3_version+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python version" >&5
+printf %s "checking Python version... " >&6; }
+if test ${vi_cv_var_python3_version+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   vi_cv_var_python3_version=`
           ${vi_cv_path_python3} -c 'import sys; print("{}.{}".format(sys.version_info.major, sys.version_info.minor))'`
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_version" >&5
-$as_echo "$vi_cv_var_python3_version" >&6; }
-
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 3.0 or better" >&5
-$as_echo_n "checking Python is 3.0 or better... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_version" >&5
+printf "%s\n" "$vi_cv_var_python3_version" >&6; }
+
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python is 3.0 or better" >&5
+printf %s "checking Python is 3.0 or better... " >&6; }
     if ${vi_cv_path_python3} -c \
       "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
     then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5
-$as_echo "yep" >&6; }
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-python3-stable-abi argument" >&5
-$as_echo_n "checking --with-python3-stable-abi argument... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yep" >&5
+printf "%s\n" "yep" >&6; }
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-python3-stable-abi argument" >&5
+printf %s "checking --with-python3-stable-abi argument... " >&6; }
 
 
 # Check whether --with-python3-stable-abi was given.
-if test "${with_python3_stable_abi+set}" = set; then :
-  withval=$with_python3_stable_abi; vi_cv_var_python3_stable_abi="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_stable_abi" >&5
-$as_echo "$vi_cv_var_python3_stable_abi" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test ${with_python3_stable_abi+y}
+then :
+  withval=$with_python3_stable_abi; vi_cv_var_python3_stable_abi="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_stable_abi" >&5
+printf "%s\n" "$vi_cv_var_python3_stable_abi" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
       if test "X$vi_cv_var_python3_stable_abi" != "X"; then
-        if ${vi_cv_var_python3_stable_abi_hex+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+        if test ${vi_cv_var_python3_stable_abi_hex+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
          vi_cv_var_python3_stable_abi_hex=`
          ${vi_cv_path_python3} -c \
@@ -6784,11 +7050,12 @@ fi
         fi
       fi
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5
-$as_echo_n "checking Python's abiflags... " >&6; }
-if ${vi_cv_var_python3_abiflags+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's abiflags" >&5
+printf %s "checking Python's abiflags... " >&6; }
+if test ${vi_cv_var_python3_abiflags+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
        vi_cv_var_python3_abiflags=
        if ${vi_cv_path_python3} -c \
@@ -6798,37 +7065,66 @@ else
            "import sys; print(sys.abiflags)"`
        fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_abiflags" >&5
-$as_echo "$vi_cv_var_python3_abiflags" >&6; }
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5
-$as_echo_n "checking Python's install prefix... " >&6; }
-if ${vi_cv_path_python3_pfx+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python3_abiflags" >&5
+printf "%s\n" "$vi_cv_var_python3_abiflags" >&6; }
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's install prefix" >&5
+printf %s "checking Python's install prefix... " >&6; }
+if test ${vi_cv_path_python3_pfx+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_path_python3_pfx=`
        ${vi_cv_path_python3} -c \
        "import sys; print(sys.prefix)"`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_pfx" >&5
-$as_echo "$vi_cv_path_python3_pfx" >&6; }
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5
-$as_echo_n "checking Python's execution prefix... " >&6; }
-if ${vi_cv_path_python3_epfx+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_pfx" >&5
+printf "%s\n" "$vi_cv_path_python3_pfx" >&6; }
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's execution prefix" >&5
+printf %s "checking Python's execution prefix... " >&6; }
+if test ${vi_cv_path_python3_epfx+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_path_python3_epfx=`
        ${vi_cv_path_python3} -c \
        "import sys; print(sys.exec_prefix)"`
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_epfx" >&5
-$as_echo "$vi_cv_path_python3_epfx" >&6; }
-
-
-      if ${vi_cv_path_python3path+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_epfx" >&5
+printf "%s\n" "$vi_cv_path_python3_epfx" >&6; }
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's include path" >&5
+printf %s "checking Python's include path... " >&6; }
+if test ${vi_cv_path_python3_include+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+   vi_cv_path_python3_include=`
+       ${vi_cv_path_python3} -c \
+       "import sysconfig; print(sysconfig.get_path(\"include\"))"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_include" >&5
+printf "%s\n" "$vi_cv_path_python3_include" >&6; }
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's include path" >&5
+printf %s "checking Python's include path... " >&6; }
+if test ${vi_cv_path_python3_platinclude+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+   vi_cv_path_python3_platinclude=`
+       ${vi_cv_path_python3} -c \
+       "import sysconfig; print(sysconfig.get_path(\"platinclude\"))"`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_platinclude" >&5
+printf "%s\n" "$vi_cv_path_python3_platinclude" >&6; }
+
+
+      if test ${vi_cv_path_python3path+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
    vi_cv_path_python3path=`
        unset PYTHONPATH;
        ${vi_cv_path_python3} -c \
@@ -6839,16 +7135,18 @@ fi
 
 
 # Check whether --with-python3-config-dir was given.
-if test "${with_python3_config_dir+set}" = set; then :
+if test ${with_python3_config_dir+y}
+then :
   withval=$with_python3_config_dir;  vi_cv_path_python3_conf="${withval}"; have_python3_config_dir=1
 fi
 
 
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5
-$as_echo_n "checking Python's configuration directory... " >&6; }
-if ${vi_cv_path_python3_conf+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python's configuration directory" >&5
+printf %s "checking Python's configuration directory... " >&6; }
+if test ${vi_cv_path_python3_conf+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
        vi_cv_path_python3_conf=
        config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
@@ -6870,19 +7168,20 @@ else
        fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_conf" >&5
-$as_echo "$vi_cv_path_python3_conf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_python3_conf" >&5
+printf "%s\n" "$vi_cv_path_python3_conf" >&6; }
 
       PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
 
       if test "X$PYTHON3_CONFDIR" = "X"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: can't find it!" >&5
-$as_echo "can't find it!" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: can't find it!" >&5
+printf "%s\n" "can't find it!" >&6; }
       else
 
-                        if ${vi_cv_path_python3_plibs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+                        if test ${vi_cv_path_python3_plibs+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
             pwd=`pwd`
             tmp_mkf="$pwd/config-PyMake$$"
@@ -6904,11 +7203,12 @@ eof
 
 fi
 
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Python3's dll name" >&5
-$as_echo_n "checking Python3's dll name... " >&6; }
-if ${vi_cv_dll_name_python3+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Python3's dll name" >&5
+printf %s "checking Python3's dll name... " >&6; }
+if test ${vi_cv_dll_name_python3+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
 
 	  if test "X$python3_DLLLIBRARY" != "X"; then
 	    vi_cv_dll_name_python3="$python3_DLLLIBRARY"
@@ -6919,14 +7219,14 @@ else
 	  fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_dll_name_python3" >&5
-$as_echo "$vi_cv_dll_name_python3" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_dll_name_python3" >&5
+printf "%s\n" "$vi_cv_dll_name_python3" >&6; }
 
         PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
-        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
-          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+        if test "${vi_cv_path_python3_include}" = "${vi_cv_path_python3_platinclude}"; then
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_include}"
         else
-          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_include} -I${vi_cv_path_python3_platinclude}"
         fi
         if test "X$have_python3_config_dir" = "X1" -a "$enable_python3interp" = "dynamic"; then
                     PYTHON3_CFLAGS="${PYTHON3_CFLAGS}  -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
@@ -6937,8 +7237,8 @@ fi
         PYTHON3_SRC="if_python3.c"
         PYTHON3_OBJ="objects/if_python3.o"
 
-                                                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
-$as_echo_n "checking if -pthread should be used... " >&6; }
+                                                                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -pthread should be used" >&5
+printf %s "checking if -pthread should be used... " >&6; }
         threadsafe_flag=
         thread_lib=
                 if test "$vim_cv_uname_output" != Darwin; then
@@ -6960,31 +7260,32 @@ fi
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; LIBS=$libs_save_old
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag"
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; LIBS=$libs_save_old
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
           CFLAGS=$cflags_save
         else
-          { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
         fi
 
-                        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python 3 are sane" >&5
-$as_echo_n "checking if compile and link flags for Python 3 are sane... " >&6; }
+                        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compile and link flags for Python 3 are sane" >&5
+printf %s "checking if compile and link flags for Python 3 are sane... " >&6; }
         cflags_save=$CFLAGS
         libs_save=$LIBS
         CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
@@ -6993,26 +7294,27 @@ rm -f core conftest.err conftest.$ac_obj
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; python3_ok=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no: PYTHON3 DISABLED" >&5
-$as_echo "no: PYTHON3 DISABLED" >&6; }; python3_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; python3_ok=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no: PYTHON3 DISABLED" >&5
+printf "%s\n" "no: PYTHON3 DISABLED" >&6; }; python3_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
         CFLAGS=$cflags_save
         LIBS=$libs_save
         if test "$python3_ok" = yes; then
-          $as_echo "#define FEAT_PYTHON3 1" >>confdefs.h
+          printf "%s\n" "#define FEAT_PYTHON3 1" >>confdefs.h
 
         else
           LIBS=$libs_save_old
@@ -7023,8 +7325,8 @@ rm -f core conftest.err conftest.$ac_obj
         fi
       fi
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: too old" >&5
-$as_echo "too old" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: too old" >&5
+printf "%s\n" "too old" >&6; }
     fi
   fi
   if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
@@ -7039,26 +7341,27 @@ fi
 
 
 if test "$python_ok" = yes && test "$python3_ok" = yes; then
-  $as_echo "#define DYNAMIC_PYTHON 1" >>confdefs.h
-
-  $as_echo "#define DYNAMIC_PYTHON3 1" >>confdefs.h
+  printf "%s\n" "#define DYNAMIC_PYTHON 1" >>confdefs.h
+
+  printf "%s\n" "#define DYNAMIC_PYTHON3 1" >>confdefs.h
 
   if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
-    $as_echo "#define DYNAMIC_PYTHON3_STABLE_ABI 1" >>confdefs.h
-
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python" >&5
-$as_echo_n "checking whether we can do without RTLD_GLOBAL for Python... " >&6; }
+    printf "%s\n" "#define DYNAMIC_PYTHON3_STABLE_ABI 1" >>confdefs.h
+
+  fi
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python" >&5
+printf %s "checking whether we can do without RTLD_GLOBAL for Python... " >&6; }
   cflags_save=$CFLAGS
   CFLAGS="$CFLAGS $PYTHON_CFLAGS"
   libs_save=$LIBS
     LIBS="-ldl $LIBS"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
 See \`config.log' for more details" "$LINENO" 5; }
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7096,13 +7399,14 @@ else
       return !not_needed;
     }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };$as_echo "#define PY_NO_RTLD_GLOBAL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };printf "%s\n" "#define PY_NO_RTLD_GLOBAL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -7112,18 +7416,19 @@ fi
   CFLAGS=$cflags_save
   LIBS=$libs_save
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python3" >&5
-$as_echo_n "checking whether we can do without RTLD_GLOBAL for Python3... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we can do without RTLD_GLOBAL for Python3" >&5
+printf %s "checking whether we can do without RTLD_GLOBAL for Python3... " >&6; }
   cflags_save=$CFLAGS
   CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
   libs_save=$LIBS
     LIBS="-ldl $LIBS"
-  if test "$cross_compiling" = yes; then :
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  if test "$cross_compiling" = yes
+then :
+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "cannot run test program while cross compiling
 See \`config.log' for more details" "$LINENO" 5; }
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7162,13 +7467,14 @@ else
       return !not_needed;
     }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };$as_echo "#define PY3_NO_RTLD_GLOBAL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };printf "%s\n" "#define PY3_NO_RTLD_GLOBAL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -7187,15 +7493,15 @@ fi
   PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
   PYTHON3_LIBS=
 elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
-  $as_echo "#define DYNAMIC_PYTHON 1" >>confdefs.h
+  printf "%s\n" "#define DYNAMIC_PYTHON 1" >>confdefs.h
 
   PYTHON_SRC="if_python.c"
   PYTHON_OBJ="objects/if_python.o"
   PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
   PYTHON_LIBS=
 elif test "$python_ok" = yes; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python" >&5
-$as_echo_n "checking if -fPIE can be added for Python... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python" >&5
+printf %s "checking if -fPIE can be added for Python... " >&6; }
   cflags_save=$CFLAGS
   libs_save=$LIBS
   CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
@@ -7204,21 +7510,22 @@ elif test "$python_ok" = yes; then
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; fpie_ok=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; fpie_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; fpie_ok=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; fpie_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   CFLAGS=$cflags_save
   LIBS=$libs_save
@@ -7226,10 +7533,10 @@ rm -f core conftest.err conftest.$ac_obj
     PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
   fi
 elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
-  $as_echo "#define DYNAMIC_PYTHON3 1" >>confdefs.h
+  printf "%s\n" "#define DYNAMIC_PYTHON3 1" >>confdefs.h
 
   if test "X$vi_cv_var_python3_stable_abi_hex" != "X"; then
-    $as_echo "#define DYNAMIC_PYTHON3_STABLE_ABI 1" >>confdefs.h
+    printf "%s\n" "#define DYNAMIC_PYTHON3_STABLE_ABI 1" >>confdefs.h
 
   fi
   PYTHON3_SRC="if_python3.c"
@@ -7237,8 +7544,8 @@ elif test "$python3_ok" = yes && test "$
   PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
   PYTHON3_LIBS=
 elif test "$python3_ok" = yes; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python3" >&5
-$as_echo_n "checking if -fPIE can be added for Python3... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if -fPIE can be added for Python3" >&5
+printf %s "checking if -fPIE can be added for Python3... " >&6; }
   cflags_save=$CFLAGS
   libs_save=$LIBS
   CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
@@ -7247,21 +7554,22 @@ elif test "$python3_ok" = yes; then
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; fpie_ok=yes
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; fpie_ok=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; fpie_ok=yes
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; fpie_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   CFLAGS=$cflags_save
   LIBS=$libs_save
@@ -7270,39 +7578,42 @@ rm -f core conftest.err conftest.$ac_obj
   fi
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-tclinterp argument" >&5
-$as_echo_n "checking --enable-tclinterp argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-tclinterp argument" >&5
+printf %s "checking --enable-tclinterp argument... " >&6; }
 # Check whether --enable-tclinterp was given.
-if test "${enable_tclinterp+set}" = set; then :
+if test ${enable_tclinterp+y}
+then :
   enableval=$enable_tclinterp;
-else
+else $as_nop
   enable_tclinterp="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tclinterp" >&5
-$as_echo "$enable_tclinterp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_tclinterp" >&5
+printf "%s\n" "$enable_tclinterp" >&6; }
 
 if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-tclsh argument" >&5
-$as_echo_n "checking --with-tclsh argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-tclsh argument" >&5
+printf %s "checking --with-tclsh argument... " >&6; }
 
 # Check whether --with-tclsh was given.
-if test "${with_tclsh+set}" = set; then :
-  withval=$with_tclsh; tclsh_name="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tclsh_name" >&5
-$as_echo "$tclsh_name" >&6; }
-else
-  tclsh_name="tclsh8.5"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test ${with_tclsh+y}
+then :
+  withval=$with_tclsh; tclsh_name="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tclsh_name" >&5
+printf "%s\n" "$tclsh_name" >&6; }
+else $as_nop
+  tclsh_name="tclsh8.5"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_tcl+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_tcl+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_tcl in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_tcl="$vi_cv_path_tcl" # Let the user override the test with a path.
@@ -7312,11 +7623,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_tcl="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7328,11 +7643,11 @@ esac
 fi
 vi_cv_path_tcl=$ac_cv_path_vi_cv_path_tcl
 if test -n "$vi_cv_path_tcl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
-$as_echo "$vi_cv_path_tcl" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
+printf "%s\n" "$vi_cv_path_tcl" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -7342,11 +7657,12 @@ fi
     tclsh_name="tclsh8.4"
     # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_tcl+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_tcl+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_tcl in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_tcl="$vi_cv_path_tcl" # Let the user override the test with a path.
@@ -7356,11 +7672,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_tcl="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7372,11 +7692,11 @@ esac
 fi
 vi_cv_path_tcl=$ac_cv_path_vi_cv_path_tcl
 if test -n "$vi_cv_path_tcl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
-$as_echo "$vi_cv_path_tcl" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
+printf "%s\n" "$vi_cv_path_tcl" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -7385,11 +7705,12 @@ fi
     tclsh_name="tclsh8.2"
     # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_tcl+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_tcl+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_tcl in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_tcl="$vi_cv_path_tcl" # Let the user override the test with a path.
@@ -7399,11 +7720,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_tcl="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7415,11 +7740,11 @@ esac
 fi
 vi_cv_path_tcl=$ac_cv_path_vi_cv_path_tcl
 if test -n "$vi_cv_path_tcl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
-$as_echo "$vi_cv_path_tcl" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
+printf "%s\n" "$vi_cv_path_tcl" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -7428,11 +7753,12 @@ fi
     tclsh_name="tclsh8.0"
     # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_tcl+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_tcl+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_tcl in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_tcl="$vi_cv_path_tcl" # Let the user override the test with a path.
@@ -7442,11 +7768,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_tcl="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7458,11 +7788,11 @@ esac
 fi
 vi_cv_path_tcl=$ac_cv_path_vi_cv_path_tcl
 if test -n "$vi_cv_path_tcl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
-$as_echo "$vi_cv_path_tcl" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
+printf "%s\n" "$vi_cv_path_tcl" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -7471,11 +7801,12 @@ fi
     tclsh_name="tclsh"
     # Extract the first word of "$tclsh_name", so it can be a program name with args.
 set dummy $tclsh_name; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_tcl+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_tcl+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_tcl in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_tcl="$vi_cv_path_tcl" # Let the user override the test with a path.
@@ -7485,11 +7816,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_tcl="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_tcl="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7501,27 +7836,27 @@ esac
 fi
 vi_cv_path_tcl=$ac_cv_path_vi_cv_path_tcl
 if test -n "$vi_cv_path_tcl"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
-$as_echo "$vi_cv_path_tcl" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_tcl" >&5
+printf "%s\n" "$vi_cv_path_tcl" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
   fi
   if test "X$vi_cv_path_tcl" != "X"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking Tcl version" >&5
-$as_echo_n "checking Tcl version... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Tcl version" >&5
+printf %s "checking Tcl version... " >&6; }
     if echo 'exit [expr [info tclversion] < 8.0]' | "$vi_cv_path_tcl" - ; then
       tclver=`echo 'puts [info tclversion]' | $vi_cv_path_tcl -`
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tclver - OK" >&5
-$as_echo "$tclver - OK" >&6; };
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tclver - OK" >&5
+printf "%s\n" "$tclver - OK" >&6; };
       tclloc=`echo 'set l [info library];set i [string last lib $l];incr i -2;puts [string range $l 0 $i]' | $vi_cv_path_tcl -`
       tcldll=`echo 'puts libtcl[info tclversion][info sharedlibextension]' | $vi_cv_path_tcl -`
 
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5
-$as_echo_n "checking for location of Tcl include... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5
+printf %s "checking for location of Tcl include... " >&6; }
       if test "x$MACOS_X" != "xyes"; then
 	tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
       else
@@ -7530,20 +7865,20 @@ fi
       TCL_INC=
       for try in $tclinc; do
 	if test -f "$try/tcl.h"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tcl.h" >&5
-$as_echo "$try/tcl.h" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $try/tcl.h" >&5
+printf "%s\n" "$try/tcl.h" >&6; }
 	  TCL_INC=$try
 	  break
 	fi
       done
       if test -z "$TCL_INC"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
-$as_echo "<not found>" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
+printf "%s\n" "<not found>" >&6; }
 	SKIP_TCL=YES
       fi
       if test -z "$SKIP_TCL"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh script" >&5
-$as_echo_n "checking for location of tclConfig.sh script... " >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of tclConfig.sh script" >&5
+printf %s "checking for location of tclConfig.sh script... " >&6; }
 	if test "x$MACOS_X" != "xyes"; then
 	  tclcnf=`echo $tclinc | sed s/include/lib/g`
 	  tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
@@ -7553,8 +7888,8 @@ fi
 	fi
 	for try in $tclcnf; do
 	  if test -f "$try/tclConfig.sh"; then
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5
-$as_echo "$try/tclConfig.sh" >&6; }
+	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5
+printf "%s\n" "$try/tclConfig.sh" >&6; }
 	    . "$try/tclConfig.sh"
 	    	    if test "$enable_tclinterp" = "dynamic"; then
 	      TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
@@ -7566,10 +7901,10 @@ fi
 	  fi
 	done
 	if test -z "$TCL_LIBS"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
-$as_echo "<not found>" >&6; }
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl library by myself" >&5
-$as_echo_n "checking for Tcl library by myself... " >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
+printf "%s\n" "<not found>" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl library by myself" >&5
+printf %s "checking for Tcl library by myself... " >&6; }
 	  tcllib=`echo $tclinc | sed s/include/lib/g`
 	  tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
 	  for ext in .so .a ; do
@@ -7577,8 +7912,8 @@ fi
 	      for try in $tcllib ; do
 		trylib=tcl$ver$ext
 		if test -f "$try/lib$trylib" ; then
-		  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/lib$trylib" >&5
-$as_echo "$try/lib$trylib" >&6; }
+		  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $try/lib$trylib" >&5
+printf "%s\n" "$try/lib$trylib" >&6; }
 		  TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
 		  if test "$vim_cv_uname_output" = SunOS &&
 					 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
@@ -7590,13 +7925,13 @@ fi
 	    done
 	  done
 	  if test -z "$TCL_LIBS"; then
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
-$as_echo "<not found>" >&6; }
+	    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
+printf "%s\n" "<not found>" >&6; }
 	    SKIP_TCL=YES
 	  fi
 	fi
 	if test -z "$SKIP_TCL"; then
-	  $as_echo "#define FEAT_TCL 1" >>confdefs.h
+	  printf "%s\n" "#define FEAT_TCL 1" >>confdefs.h
 
 	  TCL_SRC=if_tcl.c
 	  TCL_OBJ=objects/if_tcl.o
@@ -7605,13 +7940,13 @@ fi
 	fi
       fi
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: too old; need Tcl version 8.0 or later" >&5
-$as_echo "too old; need Tcl version 8.0 or later" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: too old; need Tcl version 8.0 or later" >&5
+printf "%s\n" "too old; need Tcl version 8.0 or later" >&6; }
     fi
   fi
   if test "$enable_tclinterp" = "dynamic"; then
     if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
-      $as_echo "#define DYNAMIC_TCL 1" >>confdefs.h
+      printf "%s\n" "#define DYNAMIC_TCL 1" >>confdefs.h
 
       TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
     fi
@@ -7627,42 +7962,45 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-rubyinterp argument" >&5
-$as_echo_n "checking --enable-rubyinterp argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-rubyinterp argument" >&5
+printf %s "checking --enable-rubyinterp argument... " >&6; }
 # Check whether --enable-rubyinterp was given.
-if test "${enable_rubyinterp+set}" = set; then :
+if test ${enable_rubyinterp+y}
+then :
   enableval=$enable_rubyinterp;
-else
+else $as_nop
   enable_rubyinterp="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_rubyinterp" >&5
-$as_echo "$enable_rubyinterp" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_rubyinterp" >&5
+printf "%s\n" "$enable_rubyinterp" >&6; }
 if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
   if test "$has_eval" = "no"; then
     as_fn_error $? "cannot use Ruby with tiny features" "$LINENO" 5
   fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5
-$as_echo_n "checking --with-ruby-command argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-ruby-command argument" >&5
+printf %s "checking --with-ruby-command argument... " >&6; }
 
 
 # Check whether --with-ruby-command was given.
-if test "${with_ruby_command+set}" = set; then :
-  withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5
-$as_echo "$RUBY_CMD" >&6; }
-else
-  RUBY_CMD="ruby"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5
-$as_echo "defaulting to $RUBY_CMD" >&6; }
+if test ${with_ruby_command+y}
+then :
+  withval=$with_ruby_command; RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RUBY_CMD" >&5
+printf "%s\n" "$RUBY_CMD" >&6; }
+else $as_nop
+  RUBY_CMD="ruby"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: defaulting to $RUBY_CMD" >&5
+printf "%s\n" "defaulting to $RUBY_CMD" >&6; }
 fi
 
   # Extract the first word of "$RUBY_CMD", so it can be a program name with args.
 set dummy $RUBY_CMD; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_vi_cv_path_ruby+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_vi_cv_path_ruby+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $vi_cv_path_ruby in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_vi_cv_path_ruby="$vi_cv_path_ruby" # Let the user override the test with a path.
@@ -7672,11 +8010,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_vi_cv_path_ruby="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_vi_cv_path_ruby="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -7688,34 +8030,34 @@ esac
 fi
 vi_cv_path_ruby=$ac_cv_path_vi_cv_path_ruby
 if test -n "$vi_cv_path_ruby"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_ruby" >&5
-$as_echo "$vi_cv_path_ruby" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_path_ruby" >&5
+printf "%s\n" "$vi_cv_path_ruby" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
   if test "X$vi_cv_path_ruby" != "X"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby version" >&5
-$as_echo_n "checking Ruby version... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Ruby version" >&5
+printf %s "checking Ruby version... " >&6; }
     if $vi_cv_path_ruby -e 'RUBY_VERSION >= "1.9.1" or exit 1' >/dev/null 2>/dev/null; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5
-$as_echo "OK" >&6; }
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby rbconfig" >&5
-$as_echo_n "checking Ruby rbconfig... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: OK" >&5
+printf "%s\n" "OK" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Ruby rbconfig" >&5
+printf %s "checking Ruby rbconfig... " >&6; }
       ruby_rbconfig="RbConfig"
       if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
 	ruby_rbconfig="Config"
       fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ruby_rbconfig" >&5
-$as_echo "$ruby_rbconfig" >&6; }
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking Ruby header files" >&5
-$as_echo_n "checking Ruby header files... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ruby_rbconfig" >&5
+printf "%s\n" "$ruby_rbconfig" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking Ruby header files" >&5
+printf %s "checking Ruby header files... " >&6; }
       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG['rubyhdrdir'] || $ruby_rbconfig::CONFIG['archdir'] || \\$hdrdir" 2>/dev/null`
       if test "X$rubyhdrdir" != "X"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5
-$as_echo "$rubyhdrdir" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $rubyhdrdir" >&5
+printf "%s\n" "$rubyhdrdir" >&6; }
 	RUBY_CFLAGS="-I$rubyhdrdir"
         rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG['rubyarchhdrdir'] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG['arch']"`
         if test -d "$rubyarchdir"; then
@@ -7748,14 +8090,14 @@ fi
 	RUBY_SRC="if_ruby.c"
 	RUBY_OBJ="objects/if_ruby.o"
 	RUBY_PRO="if_ruby.pro"
-	$as_echo "#define FEAT_RUBY 1" >>confdefs.h
+	printf "%s\n" "#define FEAT_RUBY 1" >>confdefs.h
 
 	if test "$enable_rubyinterp" = "dynamic"; then
 	  libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_ALIASES'].split[0]"`
 	  if test -z "$libruby_soname"; then
 	    libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG['LIBRUBY_SO']"`
 	  fi
-	  $as_echo "#define DYNAMIC_RUBY 1" >>confdefs.h
+	  printf "%s\n" "#define DYNAMIC_RUBY 1" >>confdefs.h
 
 	  RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" $RUBY_CFLAGS"
 	  RUBY_LIBS=
@@ -7764,12 +8106,12 @@ fi
 	  RUBY_CFLAGS="$RUBY_CFLAGS -fdeclspec"
 	fi
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found; disabling Ruby" >&5
-$as_echo "not found; disabling Ruby" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found; disabling Ruby" >&5
+printf "%s\n" "not found; disabling Ruby" >&6; }
       fi
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: too old; need Ruby version 1.9.1 or later" >&5
-$as_echo "too old; need Ruby version 1.9.1 or later" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: too old; need Ruby version 1.9.1 or later" >&5
+printf "%s\n" "too old; need Ruby version 1.9.1 or later" >&6; }
     fi
   fi
 
@@ -7784,81 +8126,85 @@ fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-cscope argument" >&5
-$as_echo_n "checking --enable-cscope argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-cscope argument" >&5
+printf %s "checking --enable-cscope argument... " >&6; }
 # Check whether --enable-cscope was given.
-if test "${enable_cscope+set}" = set; then :
+if test ${enable_cscope+y}
+then :
   enableval=$enable_cscope;
-else
+else $as_nop
   enable_cscope="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_cscope" >&5
-$as_echo "$enable_cscope" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_cscope" >&5
+printf "%s\n" "$enable_cscope" >&6; }
 if test "$enable_cscope" = "yes"; then
-  $as_echo "#define FEAT_CSCOPE 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-netbeans argument" >&5
-$as_echo_n "checking --disable-netbeans argument... " >&6; }
+  printf "%s\n" "#define FEAT_CSCOPE 1" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-netbeans argument" >&5
+printf %s "checking --disable-netbeans argument... " >&6; }
 # Check whether --enable-netbeans was given.
-if test "${enable_netbeans+set}" = set; then :
+if test ${enable_netbeans+y}
+then :
   enableval=$enable_netbeans;
-else
+else $as_nop
   enable_netbeans="yes"
 fi
 
 if test "$enable_netbeans" = "yes"; then
   if test "$has_eval" = "no"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot use NetBeans with tiny features" >&5
-$as_echo "cannot use NetBeans with tiny features" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot use NetBeans with tiny features" >&5
+printf "%s\n" "cannot use NetBeans with tiny features" >&6; }
     enable_netbeans="no"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-channel argument" >&5
-$as_echo_n "checking --disable-channel argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  fi
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-channel argument" >&5
+printf %s "checking --disable-channel argument... " >&6; }
 # Check whether --enable-channel was given.
-if test "${enable_channel+set}" = set; then :
+if test ${enable_channel+y}
+then :
   enableval=$enable_channel;
-else
+else $as_nop
   enable_channel="yes"
 fi
 
 if test "$enable_channel" = "yes"; then
   if test "$has_eval" = "no"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot use channels with tiny features" >&5
-$as_echo "cannot use channels with tiny features" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot use channels with tiny features" >&5
+printf "%s\n" "cannot use channels with tiny features" >&6; }
     enable_channel="no"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
   fi
 else
   if test "$enable_netbeans" = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, netbeans also disabled" >&5
-$as_echo "yes, netbeans also disabled" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, netbeans also disabled" >&5
+printf "%s\n" "yes, netbeans also disabled" >&6; }
     enable_netbeans="no"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
   fi
 fi
 
 if test "$enable_channel" = "yes"; then
     if test "x$HAIKU" = "xyes"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5
-$as_echo_n "checking for socket in -lnetwork... " >&6; }
-if ${ac_cv_lib_network_socket+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lnetwork" >&5
+printf %s "checking for socket in -lnetwork... " >&6; }
+if test ${ac_cv_lib_network_socket+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnetwork  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7867,44 +8213,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char socket ();
 int
-main ()
+main (void)
 {
 return socket ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_network_socket=yes
-else
+else $as_nop
   ac_cv_lib_network_socket=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5
-$as_echo "$ac_cv_lib_network_socket" >&6; }
-if test "x$ac_cv_lib_network_socket" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBNETWORK 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_socket" >&5
+printf "%s\n" "$ac_cv_lib_network_socket" >&6; }
+if test "x$ac_cv_lib_network_socket" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBNETWORK 1" >>confdefs.h
 
   LIBS="-lnetwork $LIBS"
 
 fi
 
   else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
-$as_echo_n "checking for socket in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_socket+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
+printf %s "checking for socket in -lsocket... " >&6; }
+if test ${ac_cv_lib_socket_socket+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7913,33 +8257,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char socket ();
 int
-main ()
+main (void)
 {
 return socket ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_socket_socket=yes
-else
+else $as_nop
   ac_cv_lib_socket_socket=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
-$as_echo "$ac_cv_lib_socket_socket" >&6; }
-if test "x$ac_cv_lib_socket_socket" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBSOCKET 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
+printf "%s\n" "$ac_cv_lib_socket_socket" >&6; }
+if test "x$ac_cv_lib_socket_socket" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBSOCKET 1" >>confdefs.h
 
   LIBS="-lsocket $LIBS"
 
@@ -7947,11 +8288,12 @@ fi
 
   fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiling with IPv6 networking is possible" >&5
-$as_echo_n "checking whether compiling with IPv6 networking is possible... " >&6; }
-if ${vim_cv_ipv6_networking+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiling with IPv6 networking is possible" >&5
+printf %s "checking whether compiling with IPv6 networking is possible... " >&6; }
+if test ${vim_cv_ipv6_networking+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7971,7 +8313,7 @@ else
 	};
 
 int
-main ()
+main (void)
 {
 
 		/* Check creating a socket. */
@@ -7988,37 +8330,35 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   vim_cv_ipv6_networking="yes"
-else
+else $as_nop
   vim_cv_ipv6_networking="no"
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_ipv6_networking" >&5
-$as_echo "$vim_cv_ipv6_networking" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_ipv6_networking" >&5
+printf "%s\n" "$vim_cv_ipv6_networking" >&6; }
 
   if test "x$vim_cv_ipv6_networking" = "xyes"; then
-    $as_echo "#define FEAT_IPV6 1" >>confdefs.h
-
-    for ac_func in inet_ntop
-do :
-  ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop"
-if test "x$ac_cv_func_inet_ntop" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_INET_NTOP 1
-_ACEOF
-
-fi
-done
+    printf "%s\n" "#define FEAT_IPV6 1" >>confdefs.h
+
+    ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop"
+if test "x$ac_cv_func_inet_ntop" = xyes
+then :
+  printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h
+
+fi
 
   else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
-$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
-if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+printf %s "checking for gethostbyname in -lnsl... " >&6; }
+if test ${ac_cv_lib_nsl_gethostbyname+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8027,43 +8367,41 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char gethostbyname ();
 int
-main ()
+main (void)
 {
 return gethostbyname ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_nsl_gethostbyname=yes
-else
+else $as_nop
   ac_cv_lib_nsl_gethostbyname=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
-$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBNSL 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBNSL 1" >>confdefs.h
 
   LIBS="-lnsl $LIBS"
 
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiling with IPv4 networking is possible" >&5
-$as_echo_n "checking whether compiling with IPv4 networking is possible... " >&6; }
-if ${vim_cv_ipv4_networking+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiling with IPv4 networking is possible" >&5
+printf %s "checking whether compiling with IPv4 networking is possible... " >&6; }
+if test ${vim_cv_ipv4_networking+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -8083,7 +8421,7 @@ else
 	};
 
 int
-main ()
+main (void)
 {
 
 		/* Check creating a socket. */
@@ -8098,20 +8436,21 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   vim_cv_ipv4_networking="yes"
-else
+else $as_nop
   vim_cv_ipv4_networking="no"; enable_netbeans="no"; enable_channel="no"
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_ipv4_networking" >&5
-$as_echo "$vim_cv_ipv4_networking" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_ipv4_networking" >&5
+printf "%s\n" "$vim_cv_ipv4_networking" >&6; }
   fi
 fi
 if test "$enable_netbeans" = "yes"; then
-  $as_echo "#define FEAT_NETBEANS_INTG 1" >>confdefs.h
+  printf "%s\n" "#define FEAT_NETBEANS_INTG 1" >>confdefs.h
 
   NETBEANS_SRC="netbeans.c"
 
@@ -8119,7 +8458,7 @@ if test "$enable_netbeans" = "yes"; then
 
 fi
 if test "$enable_channel" = "yes"; then
-  $as_echo "#define FEAT_JOB_CHANNEL 1" >>confdefs.h
+  printf "%s\n" "#define FEAT_JOB_CHANNEL 1" >>confdefs.h
 
   CHANNEL_SRC="job.c channel.c"
 
@@ -8127,42 +8466,43 @@ if test "$enable_channel" = "yes"; then
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-terminal argument" >&5
-$as_echo_n "checking --enable-terminal argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-terminal argument" >&5
+printf %s "checking --enable-terminal argument... " >&6; }
 # Check whether --enable-terminal was given.
-if test "${enable_terminal+set}" = set; then :
+if test ${enable_terminal+y}
+then :
   enableval=$enable_terminal;
-else
+else $as_nop
   enable_terminal="auto"
 fi
 
 if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then
   if test "$has_eval" = "no"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot use terminal emulator with tiny features" >&5
-$as_echo "cannot use terminal emulator with tiny features" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot use terminal emulator with tiny features" >&5
+printf "%s\n" "cannot use terminal emulator with tiny features" >&6; }
     enable_terminal="no"
   else
     if test "$enable_terminal" = "auto"; then
       enable_terminal="yes"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to yes" >&5
-$as_echo "defaulting to yes" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: defaulting to yes" >&5
+printf "%s\n" "defaulting to yes" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
     fi
   fi
 else
   if test "$enable_terminal" = "auto"; then
     enable_terminal="no"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to no" >&5
-$as_echo "defaulting to no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: defaulting to no" >&5
+printf "%s\n" "defaulting to no" >&6; }
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
   fi
 fi
 if test "$enable_terminal" = "yes" -a "$enable_channel" = "yes"; then
-  $as_echo "#define FEAT_TERMINAL 1" >>confdefs.h
+  printf "%s\n" "#define FEAT_TERMINAL 1" >>confdefs.h
 
   TERM_SRC="libvterm/src/encoding.c libvterm/src/keyboard.c libvterm/src/mouse.c libvterm/src/parser.c libvterm/src/pen.c libvterm/src/creen.c libvterm/src/state.c libvterm/src/unicode.c libvterm/src/vterm.c"
 
@@ -8172,120 +8512,128 @@ if test "$enable_terminal" = "yes" -a "$
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-autoservername argument" >&5
-$as_echo_n "checking --enable-autoservername argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-autoservername argument" >&5
+printf %s "checking --enable-autoservername argument... " >&6; }
 # Check whether --enable-autoservername was given.
-if test "${enable_autoservername+set}" = set; then :
+if test ${enable_autoservername+y}
+then :
   enableval=$enable_autoservername;
-else
+else $as_nop
   enable_autoservername="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_autoservername" >&5
-$as_echo "$enable_autoservername" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_autoservername" >&5
+printf "%s\n" "$enable_autoservername" >&6; }
 if test "$enable_autoservername" = "yes"; then
-  $as_echo "#define FEAT_AUTOSERVERNAME 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-multibyte argument" >&5
-$as_echo_n "checking --enable-multibyte argument... " >&6; }
+  printf "%s\n" "#define FEAT_AUTOSERVERNAME 1" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-multibyte argument" >&5
+printf %s "checking --enable-multibyte argument... " >&6; }
 # Check whether --enable-multibyte was given.
-if test "${enable_multibyte+set}" = set; then :
+if test ${enable_multibyte+y}
+then :
   enableval=$enable_multibyte;
-else
+else $as_nop
   enable_multibyte="yes"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_multibyte" >&5
-$as_echo "$enable_multibyte" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_multibyte" >&5
+printf "%s\n" "$enable_multibyte" >&6; }
 if test "$enable_multibyte" != "yes"; then
   as_fn_error $? "The multi-byte feature can no longer be disabled. If you have
 		a problem with this, discuss on the Vim mailing list." "$LINENO" 5
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-rightleft argument" >&5
-$as_echo_n "checking --disable-rightleft argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-rightleft argument" >&5
+printf %s "checking --disable-rightleft argument... " >&6; }
 # Check whether --enable-rightleft was given.
-if test "${enable_rightleft+set}" = set; then :
+if test ${enable_rightleft+y}
+then :
   enableval=$enable_rightleft;
-else
+else $as_nop
   enable_rightleft="yes"
 fi
 
 if test "$enable_rightleft" = "yes"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	$as_echo "#define DISABLE_RIGHTLEFT 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-arabic argument" >&5
-$as_echo_n "checking --disable-arabic argument... " >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+	printf "%s\n" "#define DISABLE_RIGHTLEFT 1" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-arabic argument" >&5
+printf %s "checking --disable-arabic argument... " >&6; }
 # Check whether --enable-arabic was given.
-if test "${enable_arabic+set}" = set; then :
+if test ${enable_arabic+y}
+then :
   enableval=$enable_arabic;
-else
+else $as_nop
   enable_arabic="yes"
 fi
 
 if test "$enable_arabic" = "yes"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	$as_echo "#define DISABLE_ARABIC 1" >>confdefs.h
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+	printf "%s\n" "#define DISABLE_ARABIC 1" >>confdefs.h
 
 fi
 
 # Check whether --enable-farsi was given.
-if test "${enable_farsi+set}" = set; then :
+if test ${enable_farsi+y}
+then :
   enableval=$enable_farsi;
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-xim argument" >&5
-$as_echo_n "checking --enable-xim argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-xim argument" >&5
+printf %s "checking --enable-xim argument... " >&6; }
 # Check whether --enable-xim was given.
-if test "${enable_xim+set}" = set; then :
-  enableval=$enable_xim; { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_xim" >&5
-$as_echo "$enable_xim" >&6; }
-else
-  enable_xim="auto"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to auto" >&5
-$as_echo "defaulting to auto" >&6; }
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-fontset argument" >&5
-$as_echo_n "checking --enable-fontset argument... " >&6; }
+if test ${enable_xim+y}
+then :
+  enableval=$enable_xim; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_xim" >&5
+printf "%s\n" "$enable_xim" >&6; }
+else $as_nop
+  enable_xim="auto"; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: defaulting to auto" >&5
+printf "%s\n" "defaulting to auto" >&6; }
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-fontset argument" >&5
+printf %s "checking --enable-fontset argument... " >&6; }
 # Check whether --enable-fontset was given.
-if test "${enable_fontset+set}" = set; then :
+if test ${enable_fontset+y}
+then :
   enableval=$enable_fontset;
-else
+else $as_nop
   enable_fontset="no"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_fontset" >&5
-$as_echo "$enable_fontset" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_fontset" >&5
+printf "%s\n" "$enable_fontset" >&6; }
 
 test -z "$with_x" && with_x=yes
 test "${enable_gui-yes}" != no -a "x$MACOS_X" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
 if test "$with_x" = no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: defaulting to: don't HAVE_X11" >&5
-$as_echo "defaulting to: don't HAVE_X11" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: defaulting to: don't HAVE_X11" >&5
+printf "%s\n" "defaulting to: don't HAVE_X11" >&6; }
 else
 
   # Extract the first word of "xmkmf", so it can be a program name with args.
 set dummy xmkmf; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_xmkmfpath+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_xmkmfpath+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $xmkmfpath in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_xmkmfpath="$xmkmfpath" # Let the user override the test with a path.
@@ -8295,11 +8643,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_xmkmfpath="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_xmkmfpath="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -8311,21 +8663,22 @@ esac
 fi
 xmkmfpath=$ac_cv_path_xmkmfpath
 if test -n "$xmkmfpath"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xmkmfpath" >&5
-$as_echo "$xmkmfpath" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
-$as_echo_n "checking for X... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xmkmfpath" >&5
+printf "%s\n" "$xmkmfpath" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+printf %s "checking for X... " >&6; }
 
 
 # Check whether --with-x was given.
-if test "${with_x+set}" = set; then :
+if test ${with_x+y}
+then :
   withval=$with_x;
 fi
 
@@ -8336,12 +8689,41 @@ if test "x$with_x" = xno; then
 else
   case $x_includes,$x_libraries in #(
     *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
-    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    *,NONE | NONE,*) if test ${ac_cv_have_x+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   # One or both of the vars are not set, and there is no cached value.
-ac_x_includes=no ac_x_libraries=no
-rm -f -r conftest.dir
+ac_x_includes=no
+ac_x_libraries=no
+# Do we need to do anything special at all?
+ac_save_LIBS=$LIBS
+LIBS="-lX11 $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main (void)
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  # We can compile and link X programs with no special options.
+  ac_x_includes=
+  ac_x_libraries=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS="$ac_save_LIBS"
+# If that didn't work, only try xmkmf and file system searches
+# for native compilation.
+if test x"$ac_x_includes" = xno && test "$cross_compiling" = no
+then :
+  rm -f -r conftest.dir
 if mkdir conftest.dir; then
   cd conftest.dir
   cat >Imakefile <<'_ACEOF'
@@ -8380,7 +8762,7 @@ libdir:
   rm -f -r conftest.dir
 fi
 
-# Standard set of common directories for X headers.
+  # Standard set of common directories for X headers.
 # Check X11 before X11Rn because it is often a symlink to the current release.
 ac_x_header_dirs='
 /usr/X11/include
@@ -8407,6 +8789,8 @@ ac_x_header_dirs='
 /usr/local/include/X11R5
 /usr/local/include/X11R4
 
+/opt/X11/include
+
 /usr/X386/include
 /usr/x386/include
 /usr/XFree86/include/X11
@@ -8428,10 +8812,11 @@ if test "$ac_x_includes" = no; then
 /* end confdefs.h.  */
 #include <X11/Xlib.h>
 _ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
   # We can compile using X headers with no special include directory.
 ac_x_includes=
-else
+else $as_nop
   for ac_dir in $ac_x_header_dirs; do
   if test -r "$ac_dir/X11/Xlib.h"; then
     ac_x_includes=$ac_dir
@@ -8452,20 +8837,21 @@ if test "$ac_x_libraries" = no; then
 /* end confdefs.h.  */
 #include <X11/Xlib.h>
 int
-main ()
+main (void)
 {
 XrmInitialize ()
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   LIBS=$ac_save_LIBS
 # We can link X programs with no special library path.
 ac_x_libraries=
-else
+else $as_nop
   LIBS=$ac_save_LIBS
-for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+for ac_dir in `printf "%s\n" "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
 do
   # Don't even attempt the hair of trying to link an X program!
   for ac_extension in a so sl dylib la dll; do
@@ -8476,19 +8862,21 @@ do
   done
 done
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 fi # $ac_x_libraries = no
 
+fi
+# Record the results.
 case $ac_x_includes,$ac_x_libraries in #(
-  no,* | *,no | *\'*)
+  no,* | *,no | *\'*) :
     # Didn't find X, or a directory has "'" in its name.
-    ac_cv_have_x="have_x=no";; #(
-  *)
+    ac_cv_have_x="have_x=no" ;; #(
+  *) :
     # Record where we found X for the cache.
     ac_cv_have_x="have_x=yes\
 	ac_x_includes='$ac_x_includes'\
-	ac_x_libraries='$ac_x_libraries'"
+	ac_x_libraries='$ac_x_libraries'" ;;
 esac
 fi
 ;; #(
@@ -8498,8 +8886,8 @@ fi
 fi # $with_x != no
 
 if test "$have_x" != yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
-$as_echo "$have_x" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+printf "%s\n" "$have_x" >&6; }
   no_x=yes
 else
   # If each of the values was on the command line, it overrides each guess.
@@ -8509,14 +8897,14 @@ else
   ac_cv_have_x="have_x=yes\
 	ac_x_includes='$x_includes'\
 	ac_x_libraries='$x_libraries'"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
-$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+printf "%s\n" "libraries $x_libraries, headers $x_includes" >&6; }
 fi
 
 if test "$no_x" = yes; then
   # Not all programs may use this symbol, but it does not hurt to define it.
 
-$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
+printf "%s\n" "#define X_DISPLAY_MISSING 1" >>confdefs.h
 
   X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
 else
@@ -8529,8 +8917,8 @@ else
     X_LIBS="$X_LIBS -L$x_libraries"
     # For Solaris; some versions of Sun CC require a space after -R and
     # others require no space.  Words are not sufficient . . . .
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
-$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+printf %s "checking whether -R must be followed by a space... " >&6; }
     ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
     ac_xsave_c_werror_flag=$ac_c_werror_flag
     ac_c_werror_flag=yes
@@ -8538,42 +8926,44 @@ else
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
        X_LIBS="$X_LIBS -R$x_libraries"
-else
+else $as_nop
   LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	  X_LIBS="$X_LIBS -R $x_libraries"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
-$as_echo "neither works" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext \
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+printf "%s\n" "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
     ac_c_werror_flag=$ac_xsave_c_werror_flag
     LIBS=$ac_xsave_LIBS
@@ -8596,26 +8986,25 @@ rm -f core conftest.err conftest.$ac_obj
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char XOpenDisplay ();
 int
-main ()
+main (void)
 {
 return XOpenDisplay ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
-$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
-if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+printf %s "checking for dnet_ntoa in -ldnet... " >&6; }
+if test ${ac_cv_lib_dnet_dnet_ntoa+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8624,39 +9013,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dnet_ntoa ();
 int
-main ()
+main (void)
 {
 return dnet_ntoa ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_dnet_dnet_ntoa=yes
-else
+else $as_nop
   ac_cv_lib_dnet_dnet_ntoa=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+printf "%s\n" "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
 fi
 
     if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
-$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
-if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+printf %s "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if test ${ac_cv_lib_dnet_stub_dnet_ntoa+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldnet_stub  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8665,36 +9054,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dnet_ntoa ();
 int
-main ()
+main (void)
 {
 return dnet_ntoa ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_dnet_stub_dnet_ntoa=yes
-else
+else $as_nop
   ac_cv_lib_dnet_stub_dnet_ntoa=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+printf "%s\n" "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
 fi
 
     fi
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
     LIBS="$ac_xsave_LIBS"
 
@@ -8707,16 +9095,18 @@ rm -f core conftest.err conftest.$ac_obj
     # The functions gethostbyname, getservbyname, and inet_addr are
     # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
     ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
-if test "x$ac_cv_func_gethostbyname" = xyes; then :
+if test "x$ac_cv_func_gethostbyname" = xyes
+then :
 
 fi
 
     if test $ac_cv_func_gethostbyname = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
-$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
-if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+printf %s "checking for gethostbyname in -lnsl... " >&6; }
+if test ${ac_cv_lib_nsl_gethostbyname+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lnsl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8725,39 +9115,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char gethostbyname ();
 int
-main ()
+main (void)
 {
 return gethostbyname ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_nsl_gethostbyname=yes
-else
+else $as_nop
   ac_cv_lib_nsl_gethostbyname=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
-$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
 fi
 
       if test $ac_cv_lib_nsl_gethostbyname = no; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
-$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+printf %s "checking for gethostbyname in -lbsd... " >&6; }
+if test ${ac_cv_lib_bsd_gethostbyname+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lbsd  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8766,30 +9156,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char gethostbyname ();
 int
-main ()
+main (void)
 {
 return gethostbyname ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_bsd_gethostbyname=yes
-else
+else $as_nop
   ac_cv_lib_bsd_gethostbyname=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
-$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+printf "%s\n" "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
 fi
 
@@ -8804,16 +9193,18 @@ fi
     # must be given before -lnsl if both are needed.  We assume that
     # if connect needs -lnsl, so does gethostbyname.
     ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
-if test "x$ac_cv_func_connect" = xyes; then :
+if test "x$ac_cv_func_connect" = xyes
+then :
 
 fi
 
     if test $ac_cv_func_connect = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
-$as_echo_n "checking for connect in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_connect+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+printf %s "checking for connect in -lsocket... " >&6; }
+if test ${ac_cv_lib_socket_connect+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8822,30 +9213,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char connect ();
 int
-main ()
+main (void)
 {
 return connect ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_socket_connect=yes
-else
+else $as_nop
   ac_cv_lib_socket_connect=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
-$as_echo "$ac_cv_lib_socket_connect" >&6; }
-if test "x$ac_cv_lib_socket_connect" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+printf "%s\n" "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes
+then :
   X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
 fi
 
@@ -8853,16 +9243,18 @@ fi
 
     # Guillermo Gomez says -lposix is necessary on A/UX.
     ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
-if test "x$ac_cv_func_remove" = xyes; then :
+if test "x$ac_cv_func_remove" = xyes
+then :
 
 fi
 
     if test $ac_cv_func_remove = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
-$as_echo_n "checking for remove in -lposix... " >&6; }
-if ${ac_cv_lib_posix_remove+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+printf %s "checking for remove in -lposix... " >&6; }
+if test ${ac_cv_lib_posix_remove+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8871,30 +9263,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char remove ();
 int
-main ()
+main (void)
 {
 return remove ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_posix_remove=yes
-else
+else $as_nop
   ac_cv_lib_posix_remove=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
-$as_echo "$ac_cv_lib_posix_remove" >&6; }
-if test "x$ac_cv_lib_posix_remove" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+printf "%s\n" "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
 fi
 
@@ -8902,16 +9293,18 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
-if test "x$ac_cv_func_shmat" = xyes; then :
+if test "x$ac_cv_func_shmat" = xyes
+then :
 
 fi
 
     if test $ac_cv_func_shmat = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
-$as_echo_n "checking for shmat in -lipc... " >&6; }
-if ${ac_cv_lib_ipc_shmat+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+printf %s "checking for shmat in -lipc... " >&6; }
+if test ${ac_cv_lib_ipc_shmat+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lipc  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8920,30 +9313,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char shmat ();
 int
-main ()
+main (void)
 {
 return shmat ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_ipc_shmat=yes
-else
+else $as_nop
   ac_cv_lib_ipc_shmat=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
-$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
-if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+printf "%s\n" "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
 fi
 
@@ -8959,11 +9351,12 @@ fi
   # These have to be linked with before -lX11, unlike the other
   # libraries we check for below, so use a different variable.
   # John Interrante, Karl Berry
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
-$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
-if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+printf %s "checking for IceConnectionNumber in -lICE... " >&6; }
+if test ${ac_cv_lib_ICE_IceConnectionNumber+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8972,30 +9365,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char IceConnectionNumber ();
 int
-main ()
+main (void)
 {
 return IceConnectionNumber ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_ICE_IceConnectionNumber=yes
-else
+else $as_nop
   ac_cv_lib_ICE_IceConnectionNumber=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+printf "%s\n" "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes
+then :
   X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
 fi
 
@@ -9013,8 +9405,8 @@ fi
 
   if test -d "$x_includes" && test ! -d "$x_libraries"; then
     x_libraries=`echo "$x_includes" | sed s/include/lib/`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Corrected X libraries to $x_libraries" >&5
-$as_echo "Corrected X libraries to $x_libraries" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Corrected X libraries to $x_libraries" >&5
+printf "%s\n" "Corrected X libraries to $x_libraries" >&6; }
     X_LIBS="$X_LIBS -L$x_libraries"
     if test "$vim_cv_uname_output" = SunOS &&
 					 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
@@ -9024,8 +9416,8 @@ fi
 
   if test -d "$x_libraries" && test ! -d "$x_includes"; then
     x_includes=`echo "$x_libraries" | sed s/lib/include/`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Corrected X includes to $x_includes" >&5
-$as_echo "Corrected X includes to $x_includes" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Corrected X includes to $x_includes" >&5
+printf "%s\n" "Corrected X includes to $x_includes" >&6; }
     X_CFLAGS="$X_CFLAGS -I$x_includes"
   fi
 
@@ -9034,8 +9426,8 @@ fi
     X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
 
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if X11 header files can be found" >&5
-$as_echo_n "checking if X11 header files can be found... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if X11 header files can be found" >&5
+printf %s "checking if X11 header files can be found... " >&6; }
   cflags_save=$CFLAGS
   CFLAGS="$CFLAGS $X_CFLAGS"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9043,27 +9435,28 @@ fi
 #include <X11/Xlib.h>
 #include <X11/Intrinsic.h>
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; no_x=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; no_x=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   CFLAGS=$cflags_save
 
   if test "${no_x-no}" = yes; then
     with_x=no
   else
-    $as_echo "#define HAVE_X11 1" >>confdefs.h
+    printf "%s\n" "#define HAVE_X11 1" >>confdefs.h
 
     X_LIB="-lXt -lX11";
 
@@ -9071,11 +9464,12 @@ rm -f core conftest.err conftest.$ac_obj
     ac_save_LDFLAGS="$LDFLAGS"
     LDFLAGS="-L$x_libraries $LDFLAGS"
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _XdmcpAuthDoIt in -lXdmcp" >&5
-$as_echo_n "checking for _XdmcpAuthDoIt in -lXdmcp... " >&6; }
-if ${ac_cv_lib_Xdmcp__XdmcpAuthDoIt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _XdmcpAuthDoIt in -lXdmcp" >&5
+printf %s "checking for _XdmcpAuthDoIt in -lXdmcp... " >&6; }
+if test ${ac_cv_lib_Xdmcp__XdmcpAuthDoIt+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXdmcp -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9084,39 +9478,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char _XdmcpAuthDoIt ();
 int
-main ()
+main (void)
 {
 return _XdmcpAuthDoIt ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_Xdmcp__XdmcpAuthDoIt=yes
-else
+else $as_nop
   ac_cv_lib_Xdmcp__XdmcpAuthDoIt=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5
-$as_echo "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; }
-if test "x$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&5
+printf "%s\n" "$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" >&6; }
+if test "x$ac_cv_lib_Xdmcp__XdmcpAuthDoIt" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"
 fi
 
 
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceOpenConnection in -lICE" >&5
-$as_echo_n "checking for IceOpenConnection in -lICE... " >&6; }
-if ${ac_cv_lib_ICE_IceOpenConnection+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+                    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for IceOpenConnection in -lICE" >&5
+printf %s "checking for IceOpenConnection in -lICE... " >&6; }
+if test ${ac_cv_lib_ICE_IceOpenConnection+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lICE $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9125,40 +9519,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char IceOpenConnection ();
 int
-main ()
+main (void)
 {
 return IceOpenConnection ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_ICE_IceOpenConnection=yes
-else
+else $as_nop
   ac_cv_lib_ICE_IceOpenConnection=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceOpenConnection" >&5
-$as_echo "$ac_cv_lib_ICE_IceOpenConnection" >&6; }
-if test "x$ac_cv_lib_ICE_IceOpenConnection" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceOpenConnection" >&5
+printf "%s\n" "$ac_cv_lib_ICE_IceOpenConnection" >&6; }
+if test "x$ac_cv_lib_ICE_IceOpenConnection" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"
 fi
 
 
         LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmCreatePixmapFromData in -lXpm" >&5
-$as_echo_n "checking for XpmCreatePixmapFromData in -lXpm... " >&6; }
-if ${ac_cv_lib_Xpm_XpmCreatePixmapFromData+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XpmCreatePixmapFromData in -lXpm" >&5
+printf %s "checking for XpmCreatePixmapFromData in -lXpm... " >&6; }
+if test ${ac_cv_lib_Xpm_XpmCreatePixmapFromData+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXpm -lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9167,36 +9561,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char XpmCreatePixmapFromData ();
 int
-main ()
+main (void)
 {
 return XpmCreatePixmapFromData ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_Xpm_XpmCreatePixmapFromData=yes
-else
+else $as_nop
   ac_cv_lib_Xpm_XpmCreatePixmapFromData=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5
-$as_echo "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; }
-if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&5
+printf "%s\n" "$ac_cv_lib_Xpm_XpmCreatePixmapFromData" >&6; }
+if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = xyes
+then :
   X_PRE_LIBS="$X_PRE_LIBS -lXpm"
 fi
 
 
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if X11 header files implicitly declare return values" >&5
-$as_echo_n "checking if X11 header files implicitly declare return values... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if X11 header files implicitly declare return values" >&5
+printf %s "checking if X11 header files implicitly declare return values... " >&6; }
     cflags_save=$CFLAGS
         if test "$GCC" = yes; then
       CFLAGS="$CFLAGS $X_CFLAGS -Werror"
@@ -9207,41 +9600,43 @@ fi
 /* end confdefs.h.  */
 #include <X11/Xlib.h>
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+else $as_nop
   CFLAGS="$CFLAGS -Wno-implicit-int"
 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <X11/Xlib.h>
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; cflags_save="$cflags_save -Wno-implicit-int"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: test failed" >&5
-$as_echo "test failed" >&6; }
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; cflags_save="$cflags_save -Wno-implicit-int"
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: test failed" >&5
+printf "%s\n" "test failed" >&6; }
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     CFLAGS=$cflags_save
 
     LDFLAGS="$ac_save_LDFLAGS"
@@ -9250,17 +9645,19 @@ rm -f core conftest.err conftest.$ac_obj
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
-$as_echo_n "checking size of wchar_t... " >&6; }
-if ${ac_cv_sizeof_wchar_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t"        "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5
+printf %s "checking size of wchar_t... " >&6; }
+if test ${ac_cv_sizeof_wchar_t+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t"        "$ac_includes_default"
+then :
+
+else $as_nop
   if test "$ac_cv_type_wchar_t" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (wchar_t)
 See \`config.log' for more details" "$LINENO" 5; }
    else
@@ -9269,18 +9666,16 @@ See \`config.log' for more details" "$LI
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
-$as_echo "$ac_cv_sizeof_wchar_t" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5
+printf "%s\n" "$ac_cv_sizeof_wchar_t" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t" >>confdefs.h
 
 
     if test "$ac_cv_sizeof_wchar_t" -le 2; then
-      $as_echo "#define SMALL_WCHAR_T 1" >>confdefs.h
+      printf "%s\n" "#define SMALL_WCHAR_T 1" >>confdefs.h
 
     fi
 
@@ -9293,12 +9688,13 @@ fi
 
 test "x$with_x" = xno -a "x$HAIKU" != "xyes" -a "x$MACOS_X" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-gui argument" >&5
-$as_echo_n "checking --enable-gui argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-gui argument" >&5
+printf %s "checking --enable-gui argument... " >&6; }
 # Check whether --enable-gui was given.
-if test "${enable_gui+set}" = set; then :
+if test ${enable_gui+y}
+then :
   enableval=$enable_gui;
-else
+else $as_nop
   enable_gui="auto"
 fi
 
@@ -9317,91 +9713,92 @@ GUITYPE=NONE
 if test "x$HAIKU" = "xyes"; then
   SKIP_HAIKU=
   case "$enable_gui_canon" in
-    no)     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
-$as_echo "no GUI support" >&6; }
+    no)     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
+printf "%s\n" "no GUI support" >&6; }
             SKIP_HAIKU=YES ;;
-    yes|"") { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - automatic GUI support" >&5
-$as_echo "yes - automatic GUI support" >&6; } ;;
-    auto)   { $as_echo "$as_me:${as_lineno-$LINENO}: result: auto - automatic GUI support" >&5
-$as_echo "auto - automatic GUI support" >&6; } ;;
-    haiku)  { $as_echo "$as_me:${as_lineno-$LINENO}: result: Haiku GUI support" >&5
-$as_echo "Haiku GUI support" >&6; } ;;
-    *)      { $as_echo "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
-$as_echo "Sorry, $enable_gui GUI is not supported" >&6; }
+    yes|"") { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes - automatic GUI support" >&5
+printf "%s\n" "yes - automatic GUI support" >&6; } ;;
+    auto)   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: auto - automatic GUI support" >&5
+printf "%s\n" "auto - automatic GUI support" >&6; } ;;
+    haiku)  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Haiku GUI support" >&5
+printf "%s\n" "Haiku GUI support" >&6; } ;;
+    *)      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
+printf "%s\n" "Sorry, $enable_gui GUI is not supported" >&6; }
             SKIP_HAIKU=YES ;;
     esac
 elif test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
   SKIP_PHOTON=
   case "$enable_gui_canon" in
-    no)		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
-$as_echo "no GUI support" >&6; }
+    no)		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
+printf "%s\n" "no GUI support" >&6; }
 		SKIP_PHOTON=YES ;;
-    yes|""|auto) { $as_echo "$as_me:${as_lineno-$LINENO}: result: automatic GUI support" >&5
-$as_echo "automatic GUI support" >&6; }
+    yes|""|auto) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: automatic GUI support" >&5
+printf "%s\n" "automatic GUI support" >&6; }
     		gui_auto=yes ;;
-    photon)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Photon GUI support" >&5
-$as_echo "Photon GUI support" >&6; } ;;
-    *)		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
-$as_echo "Sorry, $enable_gui GUI is not supported" >&6; }
+    photon)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Photon GUI support" >&5
+printf "%s\n" "Photon GUI support" >&6; } ;;
+    *)		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
+printf "%s\n" "Sorry, $enable_gui GUI is not supported" >&6; }
 		SKIP_PHOTON=YES ;;
   esac
 
 elif test "x$MACOS_X" = "xyes" -a "x$with_x" = "xno" ; then
   case "$enable_gui_canon" in
-    no)		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
-$as_echo "no GUI support" >&6; } ;;
-    yes|"")	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - automatic GUI support" >&5
-$as_echo "yes - automatic GUI support" >&6; }
+    no)		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
+printf "%s\n" "no GUI support" >&6; } ;;
+    yes|"")	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes - automatic GUI support" >&5
+printf "%s\n" "yes - automatic GUI support" >&6; }
     		gui_auto=yes ;;
-    auto)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: auto - disable GUI support for Mac OS" >&5
-$as_echo "auto - disable GUI support for Mac OS" >&6; } ;;
-    *)		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
-$as_echo "Sorry, $enable_gui GUI is not supported" >&6; } ;;
+    auto)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: auto - disable GUI support for Mac OS" >&5
+printf "%s\n" "auto - disable GUI support for Mac OS" >&6; } ;;
+    *)		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
+printf "%s\n" "Sorry, $enable_gui GUI is not supported" >&6; } ;;
   esac
 else
 
   case "$enable_gui_canon" in
-    no|none)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
-$as_echo "no GUI support" >&6; } ;;
-    yes|""|auto)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes/auto - automatic GUI support" >&5
-$as_echo "yes/auto - automatic GUI support" >&6; }
+    no|none)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no GUI support" >&5
+printf "%s\n" "no GUI support" >&6; } ;;
+    yes|""|auto)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes/auto - automatic GUI support" >&5
+printf "%s\n" "yes/auto - automatic GUI support" >&6; }
 		gui_auto=yes
 		SKIP_GTK2=
 		SKIP_GTK3=
 		SKIP_GNOME=
 		SKIP_MOTIF=;;
-    gtk2)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: GTK+ 2.x GUI support" >&5
-$as_echo "GTK+ 2.x GUI support" >&6; }
+    gtk2)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: GTK+ 2.x GUI support" >&5
+printf "%s\n" "GTK+ 2.x GUI support" >&6; }
 		SKIP_GTK2=;;
-    gnome2)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: GNOME 2.x GUI support" >&5
-$as_echo "GNOME 2.x GUI support" >&6; }
+    gnome2)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: GNOME 2.x GUI support" >&5
+printf "%s\n" "GNOME 2.x GUI support" >&6; }
 		SKIP_GNOME=
 		SKIP_GTK2=;;
-    gtk3)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: GTK+ 3.x GUI support" >&5
-$as_echo "GTK+ 3.x GUI support" >&6; }
+    gtk3)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: GTK+ 3.x GUI support" >&5
+printf "%s\n" "GTK+ 3.x GUI support" >&6; }
 		SKIP_GTK3=;;
-    motif)	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Motif GUI support" >&5
-$as_echo "Motif GUI support" >&6; }
+    motif)	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Motif GUI support" >&5
+printf "%s\n" "Motif GUI support" >&6; }
 		SKIP_MOTIF=;;
-    *)		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
-$as_echo "Sorry, $enable_gui GUI is not supported" >&6; } ;;
+    *)		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Sorry, $enable_gui GUI is not supported" >&5
+printf "%s\n" "Sorry, $enable_gui GUI is not supported" >&6; } ;;
   esac
 
 fi
 
 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
 				-a "$enable_gui_canon" != "gnome2"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not to look for GTK+ 2" >&5
-$as_echo_n "checking whether or not to look for GTK+ 2... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether or not to look for GTK+ 2" >&5
+printf %s "checking whether or not to look for GTK+ 2... " >&6; }
   # Check whether --enable-gtk2-check was given.
-if test "${enable_gtk2_check+set}" = set; then :
+if test ${enable_gtk2_check+y}
+then :
   enableval=$enable_gtk2_check;
-else
+else $as_nop
   enable_gtk2_check="yes"
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk2_check" >&5
-$as_echo "$enable_gtk2_check" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_gtk2_check" >&5
+printf "%s\n" "$enable_gtk2_check" >&6; }
   if test "x$enable_gtk2_check" = "xno"; then
     SKIP_GTK2=YES
     SKIP_GNOME=YES
@@ -9409,51 +9806,54 @@ fi
 fi
 
 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not to look for GNOME" >&5
-$as_echo_n "checking whether or not to look for GNOME... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether or not to look for GNOME" >&5
+printf %s "checking whether or not to look for GNOME... " >&6; }
   # Check whether --enable-gnome-check was given.
-if test "${enable_gnome_check+set}" = set; then :
+if test ${enable_gnome_check+y}
+then :
   enableval=$enable_gnome_check;
-else
+else $as_nop
   enable_gnome_check="no"
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gnome_check" >&5
-$as_echo "$enable_gnome_check" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_gnome_check" >&5
+printf "%s\n" "$enable_gnome_check" >&6; }
   if test "x$enable_gnome_check" = "xno"; then
     SKIP_GNOME=YES
   fi
 fi
 
 if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not to look for GTK+ 3" >&5
-$as_echo_n "checking whether or not to look for GTK+ 3... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether or not to look for GTK+ 3" >&5
+printf %s "checking whether or not to look for GTK+ 3... " >&6; }
   # Check whether --enable-gtk3-check was given.
-if test "${enable_gtk3_check+set}" = set; then :
+if test ${enable_gtk3_check+y}
+then :
   enableval=$enable_gtk3_check;
-else
+else $as_nop
   enable_gtk3_check="yes"
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk3_check" >&5
-$as_echo "$enable_gtk3_check" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_gtk3_check" >&5
+printf "%s\n" "$enable_gtk3_check" >&6; }
   if test "x$enable_gtk3_check" = "xno"; then
     SKIP_GTK3=YES
   fi
 fi
 
 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether or not to look for Motif" >&5
-$as_echo_n "checking whether or not to look for Motif... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether or not to look for Motif" >&5
+printf %s "checking whether or not to look for Motif... " >&6; }
   # Check whether --enable-motif-check was given.
-if test "${enable_motif_check+set}" = set; then :
+if test ${enable_motif_check+y}
+then :
   enableval=$enable_motif_check;
-else
+else $as_nop
   enable_motif_check="yes"
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_motif_check" >&5
-$as_echo "$enable_motif_check" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_motif_check" >&5
+printf "%s\n" "$enable_motif_check" >&6; }
   if test "x$enable_motif_check" = "xno"; then
     SKIP_MOTIF=YES
   fi
@@ -9469,11 +9869,12 @@ if test "X$PKG_CONFIG" = "X"; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
 set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PKG_CONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
@@ -9483,11 +9884,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -9499,11 +9904,11 @@ esac
 fi
 PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 if test -n "$PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
-$as_echo "$PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+printf "%s\n" "$PKG_CONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -9512,11 +9917,12 @@ if test -z "$ac_cv_path_PKG_CONFIG"; the
   ac_pt_PKG_CONFIG=$PKG_CONFIG
   # Extract the first word of "pkg-config", so it can be a program name with args.
 set dummy pkg-config; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_ac_pt_PKG_CONFIG+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $ac_pt_PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
@@ -9526,11 +9932,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -9542,11 +9952,11 @@ esac
 fi
 ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
 if test -n "$ac_pt_PKG_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
-$as_echo "$ac_pt_PKG_CONFIG" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+printf "%s\n" "$ac_pt_PKG_CONFIG" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
   if test "x$ac_pt_PKG_CONFIG" = x; then
@@ -9554,8 +9964,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     PKG_CONFIG=$ac_pt_PKG_CONFIG
@@ -9569,21 +9979,22 @@ fi
 
 if test -z "$SKIP_GTK2"; then
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-gtktest argument" >&5
-$as_echo_n "checking --disable-gtktest argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-gtktest argument" >&5
+printf %s "checking --disable-gtktest argument... " >&6; }
   # Check whether --enable-gtktest was given.
-if test "${enable_gtktest+set}" = set; then :
+if test ${enable_gtktest+y}
+then :
   enableval=$enable_gtktest;
-else
+else $as_nop
   enable_gtktest=yes
 fi
 
   if test "x$enable_gtktest" = "xyes" ; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: gtk test enabled" >&5
-$as_echo "gtk test enabled" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gtk test enabled" >&5
+printf "%s\n" "gtk test enabled" >&6; }
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: gtk test disabled" >&5
-$as_echo "gtk test disabled" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gtk test disabled" >&5
+printf "%s\n" "gtk test disabled" >&6; }
   fi
 
   if test "x$PKG_CONFIG" != "xno"; then
@@ -9597,8 +10008,8 @@ fi
 	  && $PKG_CONFIG --exists gtk+-2.0; then
     {
       min_gtk_version=2.2.0
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
-$as_echo_n "checking for GTK - version >= $min_gtk_version... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
+printf %s "checking for GTK - version >= $min_gtk_version... " >&6; }
                         GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
@@ -9613,8 +10024,8 @@ fi
 	  && $PKG_CONFIG --exists gtk+-3.0; then
     {
       min_gtk_version=2.2.0
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
-$as_echo_n "checking for GTK - version >= $min_gtk_version... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
+printf %s "checking for GTK - version >= $min_gtk_version... " >&6; }
 
       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
@@ -9627,8 +10038,8 @@ fi
 	     sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\3/'`
     }
     else
-                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK -dev package" >&5
-$as_echo_n "checking for GTK -dev package... " >&6; }
+                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK -dev package" >&5
+printf %s "checking for GTK -dev package... " >&6; }
       no_gtk=yes
     fi
 
@@ -9640,9 +10051,10 @@ fi
       LIBS="$LIBS $GTK_LIBS"
 
                         rm -f conf.gtktest
-      if test "$cross_compiling" = yes; then :
+      if test "$cross_compiling" = yes
+then :
   echo $ac_n "cross compiling; assumed OK... $ac_c"
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -9679,9 +10091,10 @@ return 1;
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+
+else $as_nop
   no_gtk=yes
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9694,19 +10107,19 @@ fi
     fi
     if test "x$no_gtk" = x ; then
       if test "x$enable_gtktest" = "xyes"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
-$as_echo "yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
+printf "%s\n" "yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
-$as_echo "found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
+printf "%s\n" "found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
       fi
       GUI_LIB_LOC="$GTK_LIBDIR"
 		 GTK_LIBNAME="$GTK_LIBS"
 		GUI_INC_LOC="$GTK_CFLAGS"
     else
     {
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
       GTK_CFLAGS=""
       GTK_LIBS=""
       :
@@ -9744,7 +10157,8 @@ fi
 
 
 # Check whether --with-gnome-includes was given.
-if test "${with_gnome_includes+set}" = set; then :
+if test ${with_gnome_includes+y}
+then :
   withval=$with_gnome_includes; CFLAGS="$CFLAGS -I$withval"
 
 fi
@@ -9752,7 +10166,8 @@ fi
 
 
 # Check whether --with-gnome-libs was given.
-if test "${with_gnome_libs+set}" = set; then :
+if test ${with_gnome_libs+y}
+then :
   withval=$with_gnome_libs; LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval
 
 fi
@@ -9760,7 +10175,8 @@ fi
 
 
 # Check whether --with-gnome was given.
-if test "${with_gnome+set}" = set; then :
+if test ${with_gnome+y}
+then :
   withval=$with_gnome; if test x$withval = xyes; then
       want_gnome=yes
       have_gnome=yes
@@ -9774,37 +10190,37 @@ if test "${with_gnome+set}" = set; then 
 	gnome_prefix=$withval/lib
       fi
     fi
-else
+else $as_nop
   want_gnome=yes
 fi
 
 
   if test "x$want_gnome" = xyes; then
   {
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgnomeui-2.0" >&5
-$as_echo_n "checking for libgnomeui-2.0... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libgnomeui-2.0" >&5
+printf %s "checking for libgnomeui-2.0... " >&6; }
     if $PKG_CONFIG --exists libgnomeui-2.0; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
 
-                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FreeBSD" >&5
-$as_echo_n "checking for FreeBSD... " >&6; }
+                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FreeBSD" >&5
+printf %s "checking for FreeBSD... " >&6; }
       if test "$vim_cv_uname_output" = FreeBSD; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
 	GNOME_LIBS="$GNOME_LIBS -pthread"
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
       fi
       have_gnome=yes
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
       if test "x" = xfail; then
 	as_fn_error $? "Could not find libgnomeui-2.0 via pkg-config" "$LINENO" 5
       fi
@@ -9813,7 +10229,7 @@ fi
   fi
 
       if test "x$have_gnome" = xyes ; then
-	$as_echo "#define FEAT_GUI_GNOME 1" >>confdefs.h
+	printf "%s\n" "#define FEAT_GUI_GNOME 1" >>confdefs.h
 
 	GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
 	GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
@@ -9826,21 +10242,22 @@ fi
 
 if test -z "$SKIP_GTK3"; then
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-gtktest argument" >&5
-$as_echo_n "checking --disable-gtktest argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-gtktest argument" >&5
+printf %s "checking --disable-gtktest argument... " >&6; }
   # Check whether --enable-gtktest was given.
-if test "${enable_gtktest+set}" = set; then :
+if test ${enable_gtktest+y}
+then :
   enableval=$enable_gtktest;
-else
+else $as_nop
   enable_gtktest=yes
 fi
 
   if test "x$enable_gtktest" = "xyes" ; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: gtk test enabled" >&5
-$as_echo "gtk test enabled" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gtk test enabled" >&5
+printf "%s\n" "gtk test enabled" >&6; }
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: gtk test disabled" >&5
-$as_echo "gtk test disabled" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gtk test disabled" >&5
+printf "%s\n" "gtk test disabled" >&6; }
   fi
 
   if test "x$PKG_CONFIG" != "xno"; then
@@ -9854,8 +10271,8 @@ fi
 	  && $PKG_CONFIG --exists gtk+-2.0; then
     {
       min_gtk_version=3.0.0
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
-$as_echo_n "checking for GTK - version >= $min_gtk_version... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
+printf %s "checking for GTK - version >= $min_gtk_version... " >&6; }
                         GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
@@ -9870,8 +10287,8 @@ fi
 	  && $PKG_CONFIG --exists gtk+-3.0; then
     {
       min_gtk_version=3.0.0
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
-$as_echo_n "checking for GTK - version >= $min_gtk_version... " >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK - version >= $min_gtk_version" >&5
+printf %s "checking for GTK - version >= $min_gtk_version... " >&6; }
 
       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
@@ -9884,8 +10301,8 @@ fi
 	     sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\3/'`
     }
     else
-                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK -dev package" >&5
-$as_echo_n "checking for GTK -dev package... " >&6; }
+                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GTK -dev package" >&5
+printf %s "checking for GTK -dev package... " >&6; }
       no_gtk=yes
     fi
 
@@ -9897,9 +10314,10 @@ fi
       LIBS="$LIBS $GTK_LIBS"
 
                         rm -f conf.gtktest
-      if test "$cross_compiling" = yes; then :
+      if test "$cross_compiling" = yes
+then :
   echo $ac_n "cross compiling; assumed OK... $ac_c"
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -9936,9 +10354,10 @@ return 1;
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+
+else $as_nop
   no_gtk=yes
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -9951,19 +10370,19 @@ fi
     fi
     if test "x$no_gtk" = x ; then
       if test "x$enable_gtktest" = "xyes"; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
-$as_echo "yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
+printf "%s\n" "yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
-$as_echo "found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&5
+printf "%s\n" "found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version" >&6; }
       fi
       GUI_LIB_LOC="$GTK_LIBDIR"
 		 GTK_LIBNAME="$GTK_LIBS"
 		GUI_INC_LOC="$GTK_CFLAGS"
     else
     {
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
       GTK_CFLAGS=""
       GTK_LIBS=""
       :
@@ -9988,7 +10407,7 @@ fi
       SKIP_MOTIF=YES
       GUITYPE=GTK
 
-      $as_echo "#define USE_GTK3 1" >>confdefs.h
+      printf "%s\n" "#define USE_GTK3 1" >>confdefs.h
 
     else
       SKIP_GTK2=$save_skip_gtk2
@@ -9997,23 +10416,24 @@ fi
 fi
 
 if test "x$GUITYPE" = "xGTK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of Gdk-Pixbuf" >&5
-$as_echo_n "checking version of Gdk-Pixbuf... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of Gdk-Pixbuf" >&5
+printf %s "checking version of Gdk-Pixbuf... " >&6; }
   gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
   if test "x$gdk_pixbuf_version" != x ; then
     gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
       sed -e 's/[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*/\1/'`
     if test "x$gdk_pixbuf_version_minor" != x -a \
 	$gdk_pixbuf_version_minor -ge 31 ; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK." >&5
-$as_echo "OK." >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: OK." >&5
+printf "%s\n" "OK." >&6; }
       # Extract the first word of "glib-compile-resources", so it can be a program name with args.
 set dummy glib-compile-resources; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GLIB_COMPILE_RESOURCES+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_GLIB_COMPILE_RESOURCES+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $GLIB_COMPILE_RESOURCES in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_GLIB_COMPILE_RESOURCES="$GLIB_COMPILE_RESOURCES" # Let the user override the test with a path.
@@ -10023,11 +10443,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GLIB_COMPILE_RESOURCES="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_GLIB_COMPILE_RESOURCES="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -10040,56 +10464,58 @@ esac
 fi
 GLIB_COMPILE_RESOURCES=$ac_cv_path_GLIB_COMPILE_RESOURCES
 if test -n "$GLIB_COMPILE_RESOURCES"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GLIB_COMPILE_RESOURCES" >&5
-$as_echo "$GLIB_COMPILE_RESOURCES" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking glib-compile-resources" >&5
-$as_echo_n "checking glib-compile-resources... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GLIB_COMPILE_RESOURCES" >&5
+printf "%s\n" "$GLIB_COMPILE_RESOURCES" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking glib-compile-resources" >&5
+printf %s "checking glib-compile-resources... " >&6; }
       if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
 	GLIB_COMPILE_RESOURCES=""
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot be found in PATH." >&5
-$as_echo "cannot be found in PATH." >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot be found in PATH." >&5
+printf "%s\n" "cannot be found in PATH." >&6; }
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: usable." >&5
-$as_echo "usable." >&6; }
-	$as_echo "#define USE_GRESOURCE 1" >>confdefs.h
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: usable." >&5
+printf "%s\n" "usable." >&6; }
+	printf "%s\n" "#define USE_GRESOURCE 1" >>confdefs.h
 
 	GRESOURCE_SRC="auto/gui_gtk_gresources.c"
 	GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
       fi
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable." >&5
-$as_echo "not usable." >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable." >&5
+printf "%s\n" "not usable." >&6; }
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot obtain from pkg_config." >&5
-$as_echo "cannot obtain from pkg_config." >&6; }
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-icon-cache-update argument" >&5
-$as_echo_n "checking --disable-icon-cache-update argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot obtain from pkg_config." >&5
+printf "%s\n" "cannot obtain from pkg_config." >&6; }
+  fi
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-icon-cache-update argument" >&5
+printf %s "checking --disable-icon-cache-update argument... " >&6; }
   # Check whether --enable-icon_cache_update was given.
-if test "${enable_icon_cache_update+set}" = set; then :
+if test ${enable_icon_cache_update+y}
+then :
   enableval=$enable_icon_cache_update;
-else
+else $as_nop
   enable_icon_cache_update="yes"
 fi
 
   if test "$enable_icon_cache_update" = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not set" >&5
-$as_echo "not set" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set" >&5
+printf "%s\n" "not set" >&6; }
     # Extract the first word of "gtk-update-icon-cache", so it can be a program name with args.
 set dummy gtk-update-icon-cache; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_GTK_UPDATE_ICON_CACHE+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_GTK_UPDATE_ICON_CACHE+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $GTK_UPDATE_ICON_CACHE in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_GTK_UPDATE_ICON_CACHE="$GTK_UPDATE_ICON_CACHE" # Let the user override the test with a path.
@@ -10099,11 +10525,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GTK_UPDATE_ICON_CACHE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_GTK_UPDATE_ICON_CACHE="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -10116,42 +10546,44 @@ esac
 fi
 GTK_UPDATE_ICON_CACHE=$ac_cv_path_GTK_UPDATE_ICON_CACHE
 if test -n "$GTK_UPDATE_ICON_CACHE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTK_UPDATE_ICON_CACHE" >&5
-$as_echo "$GTK_UPDATE_ICON_CACHE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GTK_UPDATE_ICON_CACHE" >&5
+printf "%s\n" "$GTK_UPDATE_ICON_CACHE" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
     if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found in PATH." >&5
-$as_echo "not found in PATH." >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found in PATH." >&5
+printf "%s\n" "not found in PATH." >&6; }
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: update disabled" >&5
-$as_echo "update disabled" >&6; }
-  fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-desktop-database-update argument" >&5
-$as_echo_n "checking --disable-desktop-database-update argument... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: update disabled" >&5
+printf "%s\n" "update disabled" >&6; }
+  fi
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-desktop-database-update argument" >&5
+printf %s "checking --disable-desktop-database-update argument... " >&6; }
   # Check whether --enable-desktop_database_update was given.
-if test "${enable_desktop_database_update+set}" = set; then :
+if test ${enable_desktop_database_update+y}
+then :
   enableval=$enable_desktop_database_update;
-else
+else $as_nop
   enable_desktop_database_update="yes"
 fi
 
   if test "$enable_desktop_database_update" = "yes"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not set" >&5
-$as_echo "not set" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not set" >&5
+printf "%s\n" "not set" >&6; }
     # Extract the first word of "update-desktop-database", so it can be a program name with args.
 set dummy update-desktop-database; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_UPDATE_DESKTOP_DATABASE+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_UPDATE_DESKTOP_DATABASE+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   case $UPDATE_DESKTOP_DATABASE in
   [\\/]* | ?:[\\/]*)
   ac_cv_path_UPDATE_DESKTOP_DATABASE="$UPDATE_DESKTOP_DATABASE" # Let the user override the test with a path.
@@ -10161,11 +10593,15 @@ else
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_UPDATE_DESKTOP_DATABASE="$as_dir/$ac_word$ac_exec_ext"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+    ac_cv_path_UPDATE_DESKTOP_DATABASE="$as_dir$ac_word$ac_exec_ext"
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -10178,21 +10614,21 @@ esac
 fi
 UPDATE_DESKTOP_DATABASE=$ac_cv_path_UPDATE_DESKTOP_DATABASE
 if test -n "$UPDATE_DESKTOP_DATABASE"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UPDATE_DESKTOP_DATABASE" >&5
-$as_echo "$UPDATE_DESKTOP_DATABASE" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $UPDATE_DESKTOP_DATABASE" >&5
+printf "%s\n" "$UPDATE_DESKTOP_DATABASE" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
     if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found in PATH." >&5
-$as_echo "not found in PATH." >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found in PATH." >&5
+printf "%s\n" "not found in PATH." >&6; }
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: update disabled" >&5
-$as_echo "update disabled" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: update disabled" >&5
+printf "%s\n" "update disabled" >&6; }
   fi
 fi
 
@@ -10206,8 +10642,8 @@ if test -z "$SKIP_MOTIF"; then
   gui_XXX="/usr/XXX/Motif* /usr/Motif*/XXX /usr/XXX /usr/shlib /usr/X11*/XXX /usr/XXX/X11* /usr/dt/XXX /local/Motif*/XXX /local/XXX/Motif* /usr/local/Motif*/XXX /usr/local/XXX/Motif* /usr/local/XXX /usr/local/X11*/XXX /usr/local/LessTif/Motif*/XXX $MOTIFHOME/XXX"
     GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Motif GUI includes" >&5
-$as_echo_n "checking for location of Motif GUI includes... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of Motif GUI includes" >&5
+printf %s "checking for location of Motif GUI includes... " >&6; }
   gui_includes="`echo $x_includes|sed 's%/^/^/*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
   GUI_INC_LOC=
   for try in $gui_includes; do
@@ -10218,42 +10654,43 @@ if test -z "$SKIP_MOTIF"; then
   if test -n "$GUI_INC_LOC"; then
     if test "$GUI_INC_LOC" = /usr/include; then
       GUI_INC_LOC=
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: in default path" >&5
-$as_echo "in default path" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: in default path" >&5
+printf "%s\n" "in default path" >&6; }
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUI_INC_LOC" >&5
-$as_echo "$GUI_INC_LOC" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GUI_INC_LOC" >&5
+printf "%s\n" "$GUI_INC_LOC" >&6; }
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
-$as_echo "<not found>" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
+printf "%s\n" "<not found>" >&6; }
     SKIP_MOTIF=YES
   fi
 fi
 
 
 if test -z "$SKIP_MOTIF"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-motif-lib argument" >&5
-$as_echo_n "checking --with-motif-lib argument... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-motif-lib argument" >&5
+printf %s "checking --with-motif-lib argument... " >&6; }
 
 # Check whether --with-motif-lib was given.
-if test "${with_motif_lib+set}" = set; then :
+if test ${with_motif_lib+y}
+then :
   withval=$with_motif_lib;  MOTIF_LIBNAME="${withval}"
 fi
 
 
   if test -n "$MOTIF_LIBNAME"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MOTIF_LIBNAME" >&5
-$as_echo "$MOTIF_LIBNAME" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MOTIF_LIBNAME" >&5
+printf "%s\n" "$MOTIF_LIBNAME" >&6; }
     GUI_LIB_LOC=
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
         GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
 
-                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Motif GUI libs" >&5
-$as_echo_n "checking for location of Motif GUI libs... " >&6; }
+                    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for location of Motif GUI libs" >&5
+printf %s "checking for location of Motif GUI libs... " >&6; }
     gui_libs="`echo $x_libraries|sed 's%/^/^/*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
     GUI_LIB_LOC=
     for try in $gui_libs; do
@@ -10269,12 +10706,12 @@ fi
 	   -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
 	   -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
 	GUI_LIB_LOC=
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: in default path" >&5
-$as_echo "in default path" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: in default path" >&5
+printf "%s\n" "in default path" >&6; }
       else
 	if test -n "$GUI_LIB_LOC"; then
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUI_LIB_LOC" >&5
-$as_echo "$GUI_LIB_LOC" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GUI_LIB_LOC" >&5
+printf "%s\n" "$GUI_LIB_LOC" >&6; }
 	  if test "$vim_cv_uname_output" = SunOS &&
 					 echo $vim_cv_uname_r_output | grep '^5' >/dev/null; then
 	    GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
@@ -10283,8 +10720,8 @@ fi
       fi
       MOTIF_LIBNAME=-lXm
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
-$as_echo "<not found>" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <not found>" >&5
+printf "%s\n" "<not found>" >&6; }
       SKIP_MOTIF=YES
     fi
   fi
@@ -10305,11 +10742,12 @@ if test -z "$SKIP_MOTIF"; then
 
     ldflags_save=$LDFLAGS
   LDFLAGS="$X_LIBS $LDFLAGS"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XShapeQueryExtension in -lXext" >&5
-$as_echo_n "checking for XShapeQueryExtension in -lXext... " >&6; }
-if ${ac_cv_lib_Xext_XShapeQueryExtension+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XShapeQueryExtension in -lXext" >&5
+printf %s "checking for XShapeQueryExtension in -lXext... " >&6; }
+if test ${ac_cv_lib_Xext_XShapeQueryExtension+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXext -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10318,38 +10756,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char XShapeQueryExtension ();
 int
-main ()
+main (void)
 {
 return XShapeQueryExtension ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_Xext_XShapeQueryExtension=yes
-else
+else $as_nop
   ac_cv_lib_Xext_XShapeQueryExtension=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
-$as_echo "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
-if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_XShapeQueryExtension" >&5
+printf "%s\n" "$ac_cv_lib_Xext_XShapeQueryExtension" >&6; }
+if test "x$ac_cv_lib_Xext_XShapeQueryExtension" = xyes
+then :
   GUI_X_LIBS="-lXext"
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wslen in -lw" >&5
-$as_echo_n "checking for wslen in -lw... " >&6; }
-if ${ac_cv_lib_w_wslen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wslen in -lw" >&5
+printf %s "checking for wslen in -lw... " >&6; }
+if test ${ac_cv_lib_w_wslen+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lw $GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10358,38 +10796,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char wslen ();
 int
-main ()
+main (void)
 {
 return wslen ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_w_wslen=yes
-else
+else $as_nop
   ac_cv_lib_w_wslen=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_w_wslen" >&5
-$as_echo "$ac_cv_lib_w_wslen" >&6; }
-if test "x$ac_cv_lib_w_wslen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_w_wslen" >&5
+printf "%s\n" "$ac_cv_lib_w_wslen" >&6; }
+if test "x$ac_cv_lib_w_wslen" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
-$as_echo_n "checking for dlsym in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlsym+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5
+printf %s "checking for dlsym in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlsym+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-ldl $GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10398,38 +10836,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char dlsym ();
 int
-main ()
+main (void)
 {
 return dlsym ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_dl_dlsym=yes
-else
+else $as_nop
   ac_cv_lib_dl_dlsym=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5
-$as_echo "$ac_cv_lib_dl_dlsym" >&6; }
-if test "x$ac_cv_lib_dl_dlsym" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlsym" >&6; }
+if test "x$ac_cv_lib_dl_dlsym" = xyes
+then :
   X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"
 fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XmuCreateStippledPixmap in -lXmu" >&5
-$as_echo_n "checking for XmuCreateStippledPixmap in -lXmu... " >&6; }
-if ${ac_cv_lib_Xmu_XmuCreateStippledPixmap+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XmuCreateStippledPixmap in -lXmu" >&5
+printf %s "checking for XmuCreateStippledPixmap in -lXmu... " >&6; }
+if test ${ac_cv_lib_Xmu_XmuCreateStippledPixmap+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXmu $GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10438,39 +10876,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char XmuCreateStippledPixmap ();
 int
-main ()
+main (void)
 {
 return XmuCreateStippledPixmap ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_Xmu_XmuCreateStippledPixmap=yes
-else
+else $as_nop
   ac_cv_lib_Xmu_XmuCreateStippledPixmap=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5
-$as_echo "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; }
-if test "x$ac_cv_lib_Xmu_XmuCreateStippledPixmap" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&5
+printf "%s\n" "$ac_cv_lib_Xmu_XmuCreateStippledPixmap" >&6; }
+if test "x$ac_cv_lib_Xmu_XmuCreateStippledPixmap" = xyes
+then :
   GUI_X_LIBS="-lXmu $GUI_X_LIBS"
 fi
 
   if test -z "$SKIP_MOTIF"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpEndJob in -lXp" >&5
-$as_echo_n "checking for XpEndJob in -lXp... " >&6; }
-if ${ac_cv_lib_Xp_XpEndJob+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XpEndJob in -lXp" >&5
+printf %s "checking for XpEndJob in -lXp... " >&6; }
+if test ${ac_cv_lib_Xp_XpEndJob+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lXp $GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10479,38 +10917,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char XpEndJob ();
 int
-main ()
+main (void)
 {
 return XpEndJob ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_Xp_XpEndJob=yes
-else
+else $as_nop
   ac_cv_lib_Xp_XpEndJob=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xp_XpEndJob" >&5
-$as_echo "$ac_cv_lib_Xp_XpEndJob" >&6; }
-if test "x$ac_cv_lib_Xp_XpEndJob" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xp_XpEndJob" >&5
+printf "%s\n" "$ac_cv_lib_Xp_XpEndJob" >&6; }
+if test "x$ac_cv_lib_Xp_XpEndJob" = xyes
+then :
   GUI_X_LIBS="-lXp $GUI_X_LIBS"
 fi
 
   fi
   LDFLAGS=$ldflags_save
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra X11 defines" >&5
-$as_echo_n "checking for extra X11 defines... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for extra X11 defines" >&5
+printf %s "checking for extra X11 defines... " >&6; }
   NARROW_PROTO=
   rm -fr conftestdir
   if mkdir conftestdir; then
@@ -10526,11 +10963,11 @@ EOF
     rm -fr conftestdir
   fi
   if test -z "$NARROW_PROTO"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NARROW_PROTO" >&5
-$as_echo "$NARROW_PROTO" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NARROW_PROTO" >&5
+printf "%s\n" "$NARROW_PROTO" >&6; }
   fi
 
 fi
@@ -10538,17 +10975,12 @@ fi
 if test "$enable_xsmp" = "yes"; then
   cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  for ac_header in X11/SM/SMlib.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "X11/SM/SMlib.h" "ac_cv_header_X11_SM_SMlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_X11_SM_SMlib_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_X11_SM_SMLIB_H 1
-_ACEOF
-
-fi
-
-done
+  ac_fn_c_check_header_compile "$LINENO" "X11/SM/SMlib.h" "ac_cv_header_X11_SM_SMlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_X11_SM_SMlib_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_X11_SM_SMLIB_H 1" >>confdefs.h
+
+fi
 
   CPPFLAGS=$cppflags_save
 fi
@@ -10557,43 +10989,44 @@ fi
 if test -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2" -o -z "$SKIP_GTK3"; then
     cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  for ac_header in X11/xpm.h X11/Sunkeysym.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
+  ac_fn_c_check_header_compile "$LINENO" "X11/xpm.h" "ac_cv_header_X11_xpm_h" "$ac_includes_default"
+if test "x$ac_cv_header_X11_xpm_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_X11_XPM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "X11/Sunkeysym.h" "ac_cv_header_X11_Sunkeysym_h" "$ac_includes_default"
+if test "x$ac_cv_header_X11_Sunkeysym_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_X11_SUNKEYSYM_H 1" >>confdefs.h
+
+fi
 
 
     if test ! "$enable_xim" = "no"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XIMText in X11/Xlib.h" >&5
-$as_echo_n "checking for XIMText in X11/Xlib.h... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XIMText in X11/Xlib.h" >&5
+printf %s "checking for XIMText in X11/Xlib.h... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <X11/Xlib.h>
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "XIMText" >/dev/null 2>&1; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no; xim has been disabled" >&5
-$as_echo "no; xim has been disabled" >&6; }; enable_xim="no"
-fi
-rm -f conftest*
+  $EGREP "XIMText" >/dev/null 2>&1
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no; xim has been disabled" >&5
+printf "%s\n" "no; xim has been disabled" >&6; }; enable_xim="no"
+fi
+rm -rf conftest*
 
   fi
   CPPFLAGS=$cppflags_save
 
     if test "$enable_xim" = "auto" -a "x$GUITYPE" != "xNONE" ; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: X GUI selected; xim has been enabled" >&5
-$as_echo "X GUI selected; xim has been enabled" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: X GUI selected; xim has been enabled" >&5
+printf "%s\n" "X GUI selected; xim has been enabled" >&6; }
     enable_xim="yes"
   fi
 fi
@@ -10601,31 +11034,32 @@ fi
 if test -z "$SKIP_MOTIF"; then
   cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X11/Xmu/Editres.h" >&5
-$as_echo_n "checking for X11/Xmu/Editres.h... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X11/Xmu/Editres.h" >&5
+printf %s "checking for X11/Xmu/Editres.h... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <X11/Intrinsic.h>
 #include <X11/Xmu/Editres.h>
 int
-main ()
+main (void)
 {
 int i; i = 0;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-		      $as_echo "#define HAVE_X11_XMU_EDITRES_H 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+		      printf "%s\n" "#define HAVE_X11_XMU_EDITRES_H 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   CPPFLAGS=$cppflags_save
 fi
 
@@ -10633,79 +11067,105 @@ if test -z "$SKIP_MOTIF"; then
   cppflags_save=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
   if test "$zOSUnix" = "yes"; then
-	for ac_header in Xm/Xm.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "Xm/Xm.h" "ac_cv_header_Xm_Xm_h" "$ac_includes_default"
-if test "x$ac_cv_header_Xm_Xm_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_XM_XM_H 1
-_ACEOF
-
-fi
-
-done
+	ac_fn_c_check_header_compile "$LINENO" "Xm/Xm.h" "ac_cv_header_Xm_Xm_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_Xm_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_XM_H 1" >>confdefs.h
+
+fi
 
   else
-	for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h Xm/UnhighlightT.h Xm/Notebook.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
+	ac_fn_c_check_header_compile "$LINENO" "Xm/Xm.h" "ac_cv_header_Xm_Xm_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_Xm_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_XM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "Xm/XpmP.h" "ac_cv_header_Xm_XpmP_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_XpmP_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_XPMP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "Xm/JoinSideT.h" "ac_cv_header_Xm_JoinSideT_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_JoinSideT_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_JOINSIDET_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "Xm/TraitP.h" "ac_cv_header_Xm_TraitP_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_TraitP_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_TRAITP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "Xm/Manager.h" "ac_cv_header_Xm_Manager_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_Manager_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_MANAGER_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "Xm/UnhighlightT.h" "ac_cv_header_Xm_UnhighlightT_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_UnhighlightT_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_UNHIGHLIGHTT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "Xm/Notebook.h" "ac_cv_header_Xm_Notebook_h" "$ac_includes_default"
+if test "x$ac_cv_header_Xm_Notebook_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_XM_NOTEBOOK_H 1" >>confdefs.h
+
+fi
 
   fi
 
   if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5
-$as_echo_n "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for XpmAttributes_21 in Xm/XpmP.h" >&5
+printf %s "checking for XpmAttributes_21 in Xm/XpmP.h... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <Xm/XpmP.h>
 int
-main ()
+main (void)
 {
 XpmAttributes_21 attr;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define XPMATTRIBUTES_TYPE XpmAttributes_21" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }; $as_echo "#define XPMATTRIBUTES_TYPE XpmAttributes" >>confdefs.h
-
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define XPMATTRIBUTES_TYPE XpmAttributes_21" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }; printf "%s\n" "#define XPMATTRIBUTES_TYPE XpmAttributes" >>confdefs.h
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   else
-    $as_echo "#define XPMATTRIBUTES_TYPE XpmAttributes" >>confdefs.h
+    printf "%s\n" "#define XPMATTRIBUTES_TYPE XpmAttributes" >>confdefs.h
 
   fi
   CPPFLAGS=$cppflags_save
 fi
 
 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no GUI selected; xim has been disabled" >&5
-$as_echo "no GUI selected; xim has been disabled" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no GUI selected; xim has been disabled" >&5
+printf "%s\n" "no GUI selected; xim has been disabled" >&6; }
   enable_xim="no"
 fi
 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no GUI selected; fontset has been disabled" >&5
-$as_echo "no GUI selected; fontset has been disabled" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no GUI selected; fontset has been disabled" >&5
+printf "%s\n" "no GUI selected; fontset has been disabled" >&6; }
   enable_fontset="no"
 fi
 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: GTK+ 2 GUI selected; fontset has been disabled" >&5
-$as_echo "GTK+ 2 GUI selected; fontset has been disabled" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: GTK+ 2 GUI selected; fontset has been disabled" >&5
+printf "%s\n" "GTK+ 2 GUI selected; fontset has been disabled" >&6; }
   enable_fontset="no"
 fi
 
@@ -10727,72 +11187,74 @@ if test "$enable_workshop" = "yes" -a -n
 fi
 
 if test "$enable_xim" = "yes"; then
-  $as_echo "#define FEAT_XIM 1" >>confdefs.h
+  printf "%s\n" "#define FEAT_XIM 1" >>confdefs.h
 
 fi
 if test "$enable_fontset" = "yes"; then
-  $as_echo "#define FEAT_XFONTSET 1" >>confdefs.h
-
-fi
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc link to executable" >&5
-$as_echo_n "checking for /proc link to executable... " >&6; }
+  printf "%s\n" "#define FEAT_XFONTSET 1" >>confdefs.h
+
+fi
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /proc link to executable" >&5
+printf %s "checking for /proc link to executable... " >&6; }
 if test -L "/proc/self/exe"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: /proc/self/exe" >&5
-$as_echo "/proc/self/exe" >&6; }
-  $as_echo "#define PROC_EXE_LINK \"/proc/self/exe\"" >>confdefs.h
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: /proc/self/exe" >&5
+printf "%s\n" "/proc/self/exe" >&6; }
+  printf "%s\n" "#define PROC_EXE_LINK \"/proc/self/exe\"" >>confdefs.h
 
 elif test -L "/proc/self/path/a.out"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: /proc/self/path/a.out" >&5
-$as_echo "/proc/self/path/a.out" >&6; }
-  $as_echo "#define PROC_EXE_LINK \"/proc/self/path/a.out\"" >>confdefs.h
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: /proc/self/path/a.out" >&5
+printf "%s\n" "/proc/self/path/a.out" >&6; }
+  printf "%s\n" "#define PROC_EXE_LINK \"/proc/self/path/a.out\"" >>confdefs.h
 
 elif test -L "/proc/curproc/file"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: /proc/curproc/file" >&5
-$as_echo "/proc/curproc/file" >&6; }
-  $as_echo "#define PROC_EXE_LINK \"/proc/curproc/file\"" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CYGWIN or MSYS environment" >&5
-$as_echo_n "checking for CYGWIN or MSYS environment... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: /proc/curproc/file" >&5
+printf "%s\n" "/proc/curproc/file" >&6; }
+  printf "%s\n" "#define PROC_EXE_LINK \"/proc/curproc/file\"" >>confdefs.h
+
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CYGWIN or MSYS environment" >&5
+printf %s "checking for CYGWIN or MSYS environment... " >&6; }
 case $vim_cv_uname_output in
-    CYGWIN*|MSYS*)    CYGWIN=yes; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CYGWIN clipboard support" >&5
-$as_echo_n "checking for CYGWIN clipboard support... " >&6; }
+    CYGWIN*|MSYS*)    CYGWIN=yes; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CYGWIN clipboard support" >&5
+printf %s "checking for CYGWIN clipboard support... " >&6; }
                 if test "x$with_x" = "xno" ; then
                   OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
-                  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-                  $as_echo "#define FEAT_CYGWIN_WIN32_CLIPBOARD 1" >>confdefs.h
+                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+                  printf "%s\n" "#define FEAT_CYGWIN_WIN32_CLIPBOARD 1" >>confdefs.h
 
                 else
-                  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no - using X11" >&5
-$as_echo "no - using X11" >&6; }
+                  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no - using X11" >&5
+printf "%s\n" "no - using X11" >&6; }
                 fi ;;
 
-    *)          CYGWIN=no; { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };;
-esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether toupper is broken" >&5
-$as_echo_n "checking whether toupper is broken... " >&6; }
-if ${vim_cv_toupper_broken+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    if test "$cross_compiling" = yes; then :
+    *)          CYGWIN=no; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };;
+esac
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether toupper is broken" >&5
+printf %s "checking whether toupper is broken... " >&6; }
+if test ${vim_cv_toupper_broken+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    if test "$cross_compiling" = yes
+then :
 
     as_fn_error $? "cross-compiling: please set 'vim_cv_toupper_broken'" "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -10805,11 +11267,12 @@ else
 int main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
     vim_cv_toupper_broken=yes
 
-else
+else $as_nop
 
     vim_cv_toupper_broken=no
 
@@ -10819,72 +11282,75 @@ rm -f core *.core core.conftest.* gmon.o
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_toupper_broken" >&5
-$as_echo "$vim_cv_toupper_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_toupper_broken" >&5
+printf "%s\n" "$vim_cv_toupper_broken" >&6; }
 
 if test "x$vim_cv_toupper_broken" = "xyes" ; then
-  $as_echo "#define BROKEN_TOUPPER 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __DATE__ and __TIME__ work" >&5
-$as_echo_n "checking whether __DATE__ and __TIME__ work... " >&6; }
+  printf "%s\n" "#define BROKEN_TOUPPER 1" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __DATE__ and __TIME__ work" >&5
+printf %s "checking whether __DATE__ and __TIME__ work... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdio.h>
 int
-main ()
+main (void)
 {
 printf("(" __DATE__ " " __TIME__ ")");
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_DATE_TIME 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((unused)) is allowed" >&5
-$as_echo_n "checking whether __attribute__((unused)) is allowed... " >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_DATE_TIME 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __attribute__((unused)) is allowed" >&5
+printf %s "checking whether __attribute__((unused)) is allowed... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdio.h>
 int
-main ()
+main (void)
 {
 int x __attribute__((unused));
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_ATTRIBUTE_UNUSED 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-ac_fn_c_check_header_mongrel "$LINENO" "elf.h" "ac_cv_header_elf_h" "$ac_includes_default"
-if test "x$ac_cv_header_elf_h" = xyes; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_ATTRIBUTE_UNUSED 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+ac_fn_c_check_header_compile "$LINENO" "elf.h" "ac_cv_header_elf_h" "$ac_includes_default"
+if test "x$ac_cv_header_elf_h" = xyes
+then :
   HAS_ELF=1
 fi
 
-
 if test "$HAS_ELF" = 1; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lelf" >&5
-$as_echo_n "checking for main in -lelf... " >&6; }
-if ${ac_cv_lib_elf_main+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lelf" >&5
+printf %s "checking for main in -lelf... " >&6; }
+if test ${ac_cv_lib_elf_main+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lelf  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -10892,28 +11358,28 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 
 
 int
-main ()
+main (void)
 {
 return main ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_elf_main=yes
-else
+else $as_nop
   ac_cv_lib_elf_main=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_main" >&5
-$as_echo "$ac_cv_lib_elf_main" >&6; }
-if test "x$ac_cv_lib_elf_main" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBELF 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_main" >&5
+printf "%s\n" "$ac_cv_lib_elf_main" >&6; }
+if test "x$ac_cv_lib_elf_main" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBELF 1" >>confdefs.h
 
   LIBS="-lelf $LIBS"
 
@@ -10923,19 +11389,20 @@ fi
 
 ac_header_dirent=no
 for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+printf %s "checking for $ac_hdr that defines DIR... " >&6; }
+if eval test \${$as_ac_Header+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <$ac_hdr>
 
 int
-main ()
+main (void)
 {
 if ((DIR *) 0)
 return 0;
@@ -10943,19 +11410,21 @@ return 0;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   eval "$as_ac_Header=yes"
-else
+else $as_nop
   eval "$as_ac_Header=no"
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 eval ac_res=\$$as_ac_Header
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1
 _ACEOF
 
 ac_header_dirent=$ac_hdr; break
@@ -10964,11 +11433,12 @@ fi
 done
 # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
 if test $ac_header_dirent = dirent.h; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -10976,56 +11446,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char opendir ();
 int
-main ()
+main (void)
 {
 return opendir ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' dir; do
+for ac_lib in '' dir
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_opendir=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
+  if test ${ac_cv_search_opendir+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_opendir+:} false; then :
-
-else
+if test ${ac_cv_search_opendir+y}
+then :
+
+else $as_nop
   ac_cv_search_opendir=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -11033,46 +11506,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char opendir ();
 int
-main ()
+main (void)
 {
 return opendir ();
   ;
   return 0;
 }
 _ACEOF
-for ac_lib in '' x; do
+for ac_lib in '' x
+do
   if test -z "$ac_lib"; then
     ac_res="none required"
   else
     ac_res=-l$ac_lib
     LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
+  if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_search_opendir=$ac_res
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
+  if test ${ac_cv_search_opendir+y}
+then :
   break
 fi
 done
-if ${ac_cv_search_opendir+:} false; then :
-
-else
+if test ${ac_cv_search_opendir+y}
+then :
+
+else $as_nop
   ac_cv_search_opendir=no
 fi
 rm conftest.$ac_ext
 LIBS=$ac_func_search_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
 ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
@@ -11081,134 +11556,352 @@ fi
 
 
 if test $ac_cv_header_sys_wait_h = no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that defines union wait" >&5
-$as_echo_n "checking for sys/wait.h that defines union wait... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that defines union wait" >&5
+printf %s "checking for sys/wait.h that defines union wait... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/wait.h>
 int
-main ()
+main (void)
 {
 union wait xx, yy; xx = yy
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-			$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
-
-			$as_echo "#define HAVE_UNION_WAIT 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-for ac_header in stdint.h stdlib.h string.h \
-	sys/select.h sys/utsname.h termcap.h fcntl.h \
-	sgtty.h sys/ioctl.h sys/time.h sys/types.h \
-	termio.h iconv.h inttypes.h langinfo.h math.h \
-	unistd.h stropts.h errno.h sys/resource.h \
-	sys/systeminfo.h locale.h sys/stream.h termios.h \
-	libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
-	utime.h sys/param.h sys/ptms.h libintl.h libgen.h \
-	util/debug.h util/msg18n.h frame.h sys/acl.h \
-	sys/access.h sys/sysinfo.h wchar.h wctype.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in sys/ptem.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" "#if defined HAVE_SYS_STREAM_H
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+			printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h
+
+			printf "%s\n" "#define HAVE_UNION_WAIT 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STDINT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdlib_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default"
+if test "x$ac_cv_header_string_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_select_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/utsname.h" "ac_cv_header_sys_utsname_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_utsname_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_UTSNAME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "termcap.h" "ac_cv_header_termcap_h" "$ac_includes_default"
+if test "x$ac_cv_header_termcap_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_TERMCAP_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default"
+if test "x$ac_cv_header_fcntl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sgtty.h" "ac_cv_header_sgtty_h" "$ac_includes_default"
+if test "x$ac_cv_header_sgtty_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SGTTY_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ioctl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_time_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_types_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" "$ac_includes_default"
+if test "x$ac_cv_header_termio_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default"
+if test "x$ac_cv_header_iconv_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_ICONV_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_INTTYPES_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "langinfo.h" "ac_cv_header_langinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_langinfo_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LANGINFO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default"
+if test "x$ac_cv_header_math_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_MATH_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default"
+if test "x$ac_cv_header_unistd_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "stropts.h" "ac_cv_header_stropts_h" "$ac_includes_default"
+if test "x$ac_cv_header_stropts_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STROPTS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" "$ac_includes_default"
+if test "x$ac_cv_header_errno_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_resource_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/systeminfo.h" "ac_cv_header_sys_systeminfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_systeminfo_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SYSTEMINFO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default"
+if test "x$ac_cv_header_locale_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/stream.h" "ac_cv_header_sys_stream_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_stream_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_STREAM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default"
+if test "x$ac_cv_header_termios_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "libc.h" "ac_cv_header_libc_h" "$ac_includes_default"
+if test "x$ac_cv_header_libc_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBC_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/statfs.h" "ac_cv_header_sys_statfs_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_statfs_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_STATFS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_poll_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_poll_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" "$ac_includes_default"
+if test "x$ac_cv_header_pwd_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" "$ac_includes_default"
+if test "x$ac_cv_header_utime_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_param_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/ptms.h" "ac_cv_header_sys_ptms_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_ptms_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_PTMS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default"
+if test "x$ac_cv_header_libintl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBINTL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$ac_includes_default"
+if test "x$ac_cv_header_libgen_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "util/debug.h" "ac_cv_header_util_debug_h" "$ac_includes_default"
+if test "x$ac_cv_header_util_debug_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_UTIL_DEBUG_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "util/msg18n.h" "ac_cv_header_util_msg18n_h" "$ac_includes_default"
+if test "x$ac_cv_header_util_msg18n_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_UTIL_MSG18N_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "frame.h" "ac_cv_header_frame_h" "$ac_includes_default"
+if test "x$ac_cv_header_frame_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_FRAME_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/acl.h" "ac_cv_header_sys_acl_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_acl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_ACL_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/access.h" "ac_cv_header_sys_access_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_access_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_ACCESS_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "sys/sysinfo.h" "ac_cv_header_sys_sysinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysinfo_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SYSINFO_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default"
+if test "x$ac_cv_header_wchar_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h
+
+fi
+ac_fn_c_check_header_compile "$LINENO" "wctype.h" "ac_cv_header_wctype_h" "$ac_includes_default"
+if test "x$ac_cv_header_wctype_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_WCTYPE_H 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_header_compile "$LINENO" "sys/ptem.h" "ac_cv_header_sys_ptem_h" "#if defined HAVE_SYS_STREAM_H
 #  include <sys/stream.h>
 #endif
 "
-if test "x$ac_cv_header_sys_ptem_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_PTEM_H 1
-_ACEOF
-
-fi
-
-done
-
-
-for ac_header in sys/sysctl.h
-do :
-  ac_fn_c_check_header_compile "$LINENO" "sys/sysctl.h" "ac_cv_header_sys_sysctl_h" "#if defined HAVE_SYS_PARAM_H
+if test "x$ac_cv_header_sys_ptem_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_PTEM_H 1" >>confdefs.h
+
+fi
+
+
+ac_fn_c_check_header_compile "$LINENO" "sys/sysctl.h" "ac_cv_header_sys_sysctl_h" "#if defined HAVE_SYS_PARAM_H
 #  include <sys/param.h>
 #endif
 "
-if test "x$ac_cv_header_sys_sysctl_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_SYSCTL_H 1
-_ACEOF
-
-fi
-
-done
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_np.h" >&5
-$as_echo_n "checking for pthread_np.h... " >&6; }
+if test "x$ac_cv_header_sys_sysctl_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SYS_SYSCTL_H 1" >>confdefs.h
+
+fi
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_np.h" >&5
+printf %s "checking for pthread_np.h... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <pthread.h>
 #include <pthread_np.h>
 int
-main ()
+main (void)
 {
 int i; i = 0;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-		      $as_echo "#define HAVE_PTHREAD_NP_H 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-for ac_header in strings.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default"
-if test "x$ac_cv_header_strings_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_STRINGS_H 1
-_ACEOF
-
-fi
-
-done
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+		      printf "%s\n" "#define HAVE_PTHREAD_NP_H 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default"
+if test "x$ac_cv_header_strings_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h
+
+fi
 
 if test "x$MACOS_X" = "xyes"; then
-    $as_echo "#define NO_STRINGS_WITH_STRING_H 1" >>confdefs.h
-
-else
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if strings.h can be included after string.h" >&5
-$as_echo_n "checking if strings.h can be included after string.h... " >&6; }
+    printf "%s\n" "#define NO_STRINGS_WITH_STRING_H 1" >>confdefs.h
+
+else
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strings.h can be included after string.h" >&5
+printf %s "checking if strings.h can be included after string.h... " >&6; }
 cppflags_save=$CPPFLAGS
 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11229,32 +11922,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 int i; i = 0;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  $as_echo "#define NO_STRINGS_WITH_STRING_H 1" >>confdefs.h
-
-		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+  printf "%s\n" "#define NO_STRINGS_WITH_STRING_H 1" >>confdefs.h
+
+		{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 CPPFLAGS=$cppflags_save
 fi
 
 if test $ac_cv_c_compiler_gnu = yes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
-$as_echo_n "checking whether $CC needs -traditional... " >&6; }
-if ${ac_cv_prog_gcc_traditional+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
+printf %s "checking whether $CC needs -traditional... " >&6; }
+if test ${ac_cv_prog_gcc_traditional+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
     ac_pattern="Autoconf.*'x'"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -11262,12 +11957,13 @@ else
 Autoconf TIOCGETP
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+  $EGREP "$ac_pattern" >/dev/null 2>&1
+then :
   ac_cv_prog_gcc_traditional=yes
-else
+else $as_nop
   ac_cv_prog_gcc_traditional=no
 fi
-rm -f conftest*
+rm -rf conftest*
 
 
   if test $ac_cv_prog_gcc_traditional = no; then
@@ -11277,30 +11973,32 @@ rm -f conftest*
 Autoconf TCGETA
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "$ac_pattern" >/dev/null 2>&1; then :
+  $EGREP "$ac_pattern" >/dev/null 2>&1
+then :
   ac_cv_prog_gcc_traditional=yes
 fi
-rm -f conftest*
-
-  fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
-$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
+rm -rf conftest*
+
+  fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
+printf "%s\n" "$ac_cv_prog_gcc_traditional" >&6; }
   if test $ac_cv_prog_gcc_traditional = yes; then
     CC="$CC -traditional"
   fi
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+printf %s "checking for an ANSI C-conforming const... " >&6; }
+if test ${ac_cv_c_const+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
 {
 
 #ifndef __cplusplus
@@ -11313,7 +12011,7 @@ main ()
   /* NEC SVR4.0.2 mips cc rejects this.  */
   struct point {int x, y;};
   static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
+  /* IBM XL C 1.02.0.0 rejects this.
      It does not let you subtract one const X* pointer from another in
      an arm of an if-expression whose if-part is not a constant
      expression */
@@ -11341,7 +12039,7 @@ main ()
     iptr p = 0;
     ++p;
   }
-  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+  { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
        "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
     struct s { int j; const int *ap[3]; } bx;
     struct s *b = &bx; b->j = 5;
@@ -11357,31 +12055,33 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_const=yes
-else
+else $as_nop
   ac_cv_c_const=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+printf "%s\n" "$ac_cv_c_const" >&6; }
 if test $ac_cv_c_const = no; then
 
-$as_echo "#define const /**/" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
-$as_echo_n "checking for working volatile... " >&6; }
-if ${ac_cv_c_volatile+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
+printf "%s\n" "#define const /**/" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
+printf %s "checking for working volatile... " >&6; }
+if test ${ac_cv_c_volatile+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
 {
 
 volatile int x;
@@ -11391,92 +12091,118 @@ return !x && !y;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_volatile=yes
-else
+else $as_nop
   ac_cv_c_volatile=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
-$as_echo "$ac_cv_c_volatile" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
+printf "%s\n" "$ac_cv_c_volatile" >&6; }
 if test $ac_cv_c_volatile = no; then
 
-$as_echo "#define volatile /**/" >>confdefs.h
+printf "%s\n" "#define volatile /**/" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default"
-if test "x$ac_cv_type_mode_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define mode_t int
-_ACEOF
+if test "x$ac_cv_type_mode_t" = xyes
+then :
+
+else $as_nop
+
+printf "%s\n" "#define mode_t int" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
-
-fi
-
-ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default"
-if test "x$ac_cv_type_pid_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define pid_t int
-_ACEOF
-
-fi
+if test "x$ac_cv_type_off_t" = xyes
+then :
+
+else $as_nop
+
+printf "%s\n" "#define off_t long int" >>confdefs.h
+
+fi
+
+
+  ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default
+"
+if test "x$ac_cv_type_pid_t" = xyes
+then :
+
+else $as_nop
+                                          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+          #if defined _WIN64 && !defined __CYGWIN__
+          LLP64
+          #endif
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  ac_pid_type='int'
+else $as_nop
+  ac_pid_type='__int64'
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h
+
+
+fi
+
 
 ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_type_size_t" = xyes
+then :
+
+else $as_nop
+
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+printf %s "checking for uid_t in sys/types.h... " >&6; }
+if test ${ac_cv_type_uid_t+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "uid_t" >/dev/null 2>&1; then :
+  $EGREP "uid_t" >/dev/null 2>&1
+then :
   ac_cv_type_uid_t=yes
-else
+else $as_nop
   ac_cv_type_uid_t=no
 fi
-rm -f conftest*
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
+rm -rf conftest*
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+printf "%s\n" "$ac_cv_type_uid_t" >&6; }
 if test $ac_cv_type_uid_t = no; then
 
-$as_echo "#define uid_t int" >>confdefs.h
-
-
-$as_echo "#define gid_t int" >>confdefs.h
+printf "%s\n" "#define uid_t int" >>confdefs.h
+
+
+printf "%s\n" "#define gid_t int" >>confdefs.h
 
 fi
 
@@ -11485,78 +12211,43 @@ case $ac_cv_c_uint32_t in #(
   no|yes) ;; #(
   *)
 
-$as_echo "#define _UINT32_T 1" >>confdefs.h
-
-
-cat >>confdefs.h <<_ACEOF
-#define uint32_t $ac_cv_c_uint32_t
-_ACEOF
+printf "%s\n" "#define _UINT32_T 1" >>confdefs.h
+
+
+printf "%s\n" "#define uint32_t $ac_cv_c_uint32_t" >>confdefs.h
 ;;
   esac
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_time=yes
-else
-  ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
+
+
 
 ac_fn_c_check_type "$LINENO" "ino_t" "ac_cv_type_ino_t" "$ac_includes_default"
-if test "x$ac_cv_type_ino_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define ino_t long
-_ACEOF
+if test "x$ac_cv_type_ino_t" = xyes
+then :
+
+else $as_nop
+
+printf "%s\n" "#define ino_t long" >>confdefs.h
 
 fi
 
 ac_fn_c_check_type "$LINENO" "dev_t" "ac_cv_type_dev_t" "$ac_includes_default"
-if test "x$ac_cv_type_dev_t" = xyes; then :
-
-else
-
-cat >>confdefs.h <<_ACEOF
-#define dev_t unsigned
-_ACEOF
-
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
-$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
-if ${ac_cv_c_bigendian+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_type_dev_t" = xyes
+then :
+
+else $as_nop
+
+printf "%s\n" "#define dev_t unsigned" >>confdefs.h
+
+fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+printf %s "checking whether byte ordering is bigendian... " >&6; }
+if test ${ac_cv_c_bigendian+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_c_bigendian=unknown
     # See if we're dealing with a universal compiler.
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11567,7 +12258,8 @@ else
 	     typedef int dummy;
 
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
 
 	# Check for potential -arch flags.  It is not universal unless
 	# there are at least two -arch flags with different values.
@@ -11591,7 +12283,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 	 fi
        done
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     if test $ac_cv_c_bigendian = unknown; then
       # See if sys/param.h defines the BYTE_ORDER macro.
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11600,7 +12292,7 @@ rm -f core conftest.err conftest.$ac_obj
 	     #include <sys/param.h>
 
 int
-main ()
+main (void)
 {
 #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
 		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
@@ -11612,7 +12304,8 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   # It does; now see whether it defined to BIG_ENDIAN or not.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -11620,7 +12313,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
 		#include <sys/param.h>
 
 int
-main ()
+main (void)
 {
 #if BYTE_ORDER != BIG_ENDIAN
 		 not big endian
@@ -11630,14 +12323,15 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_bigendian=yes
-else
+else $as_nop
   ac_cv_c_bigendian=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     fi
     if test $ac_cv_c_bigendian = unknown; then
       # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
@@ -11646,7 +12340,7 @@ rm -f core conftest.err conftest.$ac_obj
 #include <limits.h>
 
 int
-main ()
+main (void)
 {
 #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
 	      bogus endian macros
@@ -11656,14 +12350,15 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   # It does; now see whether it defined to _BIG_ENDIAN or not.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <limits.h>
 
 int
-main ()
+main (void)
 {
 #ifndef _BIG_ENDIAN
 		 not big endian
@@ -11673,31 +12368,33 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_bigendian=yes
-else
+else $as_nop
   ac_cv_c_bigendian=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
     fi
     if test $ac_cv_c_bigendian = unknown; then
       # Compile a test program.
-      if test "$cross_compiling" = yes; then :
+      if test "$cross_compiling" = yes
+then :
   # Try to guess by grepping values from an object file.
 	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-short int ascii_mm[] =
+unsigned short int ascii_mm[] =
 		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-		short int ascii_ii[] =
+		unsigned short int ascii_ii[] =
 		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
 		int use_ascii (int i) {
 		  return ascii_mm[i] + ascii_ii[i];
 		}
-		short int ebcdic_ii[] =
+		unsigned short int ebcdic_ii[] =
 		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-		short int ebcdic_mm[] =
+		unsigned short int ebcdic_mm[] =
 		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
 		int use_ebcdic (int i) {
 		  return ebcdic_mm[i] + ebcdic_ii[i];
@@ -11705,14 +12402,15 @@ short int ascii_mm[] =
 		extern int foo;
 
 int
-main ()
+main (void)
 {
 return use_ascii (foo) == use_ebcdic (foo);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
 	      ac_cv_c_bigendian=yes
 	    fi
@@ -11725,13 +12423,13 @@ if ac_fn_c_try_compile "$LINENO"; then :
 	      fi
 	    fi
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 $ac_includes_default
 int
-main ()
+main (void)
 {
 
 	     /* Are we little or big endian?  From Harbison&Steele.  */
@@ -11747,9 +12445,10 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   ac_cv_c_bigendian=no
-else
+else $as_nop
   ac_cv_c_bigendian=yes
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -11758,17 +12457,17 @@ fi
 
     fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
-$as_echo "$ac_cv_c_bigendian" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+printf "%s\n" "$ac_cv_c_bigendian" >&6; }
  case $ac_cv_c_bigendian in #(
    yes)
-     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+     printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h
 ;; #(
    no)
       ;; #(
    universal)
 
-$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
 
      ;; #(
    *)
@@ -11776,32 +12475,34 @@ fi
  presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
  esac
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+printf %s "checking for inline... " >&6; }
+if test ${ac_cv_c_inline+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifndef __cplusplus
 typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_c_inline=$ac_kw
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   test "$ac_cv_c_inline" != no && break
 done
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+printf "%s\n" "$ac_cv_c_inline" >&6; }
 
 case $ac_cv_c_inline in
   inline | yes) ;;
@@ -11819,11 +12520,11 @@ case $ac_cv_c_inline in
 esac
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rlim_t" >&5
-$as_echo_n "checking for rlim_t... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rlim_t" >&5
+printf %s "checking for rlim_t... " >&6; }
 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (cached) $ac_cv_type_rlim_t" >&5
-$as_echo "(cached) $ac_cv_type_rlim_t" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (cached) $ac_cv_type_rlim_t" >&5
+printf "%s\n" "(cached) $ac_cv_type_rlim_t" >&6; }
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -11839,15 +12540,16 @@ else
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then :
+  $EGREP "(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]" >/dev/null 2>&1
+then :
   ac_cv_type_rlim_t=yes
-else
+else $as_nop
   ac_cv_type_rlim_t=no
 fi
-rm -f conftest*
-
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_rlim_t" >&5
-$as_echo "$ac_cv_type_rlim_t" >&6; }
+rm -rf conftest*
+
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_rlim_t" >&5
+printf "%s\n" "$ac_cv_type_rlim_t" >&6; }
 fi
 if test $ac_cv_type_rlim_t = no; then
   cat >> confdefs.h <<\EOF
@@ -11855,11 +12557,11 @@ if test $ac_cv_type_rlim_t = no; then
 EOF
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stack_t" >&5
-$as_echo_n "checking for stack_t... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stack_t" >&5
+printf %s "checking for stack_t... " >&6; }
 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: (cached) $ac_cv_type_stack_t" >&5
-$as_echo "(cached) $ac_cv_type_stack_t" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (cached) $ac_cv_type_stack_t" >&5
+printf "%s\n" "(cached) $ac_cv_type_stack_t" >&6; }
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -11873,15 +12575,16 @@ else
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "stack_t" >/dev/null 2>&1; then :
+  $EGREP "stack_t" >/dev/null 2>&1
+then :
   ac_cv_type_stack_t=yes
-else
+else $as_nop
   ac_cv_type_stack_t=no
 fi
-rm -f conftest*
-
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_stack_t" >&5
-$as_echo "$ac_cv_type_stack_t" >&6; }
+rm -rf conftest*
+
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_stack_t" >&5
+printf "%s\n" "$ac_cv_type_stack_t" >&6; }
 fi
 if test $ac_cv_type_stack_t = no; then
   cat >> confdefs.h <<\EOF
@@ -11889,8 +12592,8 @@ if test $ac_cv_type_stack_t = no; then
 EOF
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stack_t has an ss_base field" >&5
-$as_echo_n "checking whether stack_t has an ss_base field... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stack_t has an ss_base field" >&5
+printf %s "checking whether stack_t has an ss_base field... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -11903,72 +12606,76 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #include "confdefs.h"
 
 int
-main ()
+main (void)
 {
 stack_t sigstk; sigstk.ss_base = 0;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SS_BASE 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SS_BASE 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 olibs="$LIBS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-tlib argument" >&5
-$as_echo_n "checking --with-tlib argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --with-tlib argument" >&5
+printf %s "checking --with-tlib argument... " >&6; }
 
 # Check whether --with-tlib was given.
-if test "${with_tlib+set}" = set; then :
+if test ${with_tlib+y}
+then :
   withval=$with_tlib;
 fi
 
 if test -n "$with_tlib"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_tlib" >&5
-$as_echo "$with_tlib" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_tlib" >&5
+printf "%s\n" "$with_tlib" >&6; }
   LIBS="$LIBS -l$with_tlib"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linking with $with_tlib library" >&5
-$as_echo_n "checking for linking with $with_tlib library... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: OK" >&5
-$as_echo "OK" >&6; }
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for linking with $with_tlib library" >&5
+printf %s "checking for linking with $with_tlib library... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: OK" >&5
+printf "%s\n" "OK" >&6; }
+else $as_nop
   as_fn_error $? "FAILED" "$LINENO" 5
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
     olibs="$LIBS"
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: empty: automatic terminal library selection" >&5
-$as_echo "empty: automatic terminal library selection" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: empty: automatic terminal library selection" >&5
+printf "%s\n" "empty: automatic terminal library selection" >&6; }
                 case "$vim_cv_uname_output" in
 	OSF1|SCO_SV)	tlibs="tinfo ncurses curses termlib termcap";;
 	*)	tlibs="tinfo ncurses termlib termcap curses";;
   esac
   for libname in $tlibs; do
-    as_ac_Lib=`$as_echo "ac_cv_lib_${libname}''_tgetent" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent in -l${libname}" >&5
-$as_echo_n "checking for tgetent in -l${libname}... " >&6; }
-if eval \${$as_ac_Lib+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    as_ac_Lib=`printf "%s\n" "ac_cv_lib_${libname}""_tgetent" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -l${libname}" >&5
+printf %s "checking for tgetent in -l${libname}... " >&6; }
+if eval test \${$as_ac_Lib+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-l${libname}  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -11977,33 +12684,32 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char tgetent ();
 int
-main ()
+main (void)
 {
 return tgetent ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   eval "$as_ac_Lib=yes"
-else
+else $as_nop
   eval "$as_ac_Lib=no"
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
 eval ac_res=\$$as_ac_Lib
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"
+then :
   cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_LIB${libname}" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_LIB${libname}" | $as_tr_cpp` 1
 _ACEOF
 
   LIBS="-l${libname} $LIBS"
@@ -12011,9 +12717,10 @@ if eval test \"x\$"$as_ac_Lib"\" = x"yes
 fi
 
     if test "x$olibs" != "x$LIBS"; then
-                        if test "$cross_compiling" = yes; then :
+                        if test "$cross_compiling" = yes
+then :
   res="FAIL"
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12026,9 +12733,10 @@ else
 #endif
 int main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   res="OK"
-else
+else $as_nop
   res="FAIL"
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -12038,55 +12746,58 @@ fi
       if test "$res" = "OK"; then
 	break
       fi
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libname library is not usable" >&5
-$as_echo "$libname library is not usable" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libname library is not usable" >&5
+printf "%s\n" "$libname library is not usable" >&6; }
       LIBS="$olibs"
     fi
   done
   if test "x$olibs" = "x$LIBS"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no terminal library found" >&5
-$as_echo "no terminal library found" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no terminal library found" >&5
+printf "%s\n" "no terminal library found" >&6; }
   fi
 fi
 
 if test "x$olibs" = "x$LIBS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgetent()" >&5
-$as_echo_n "checking for tgetent()... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent()" >&5
+printf %s "checking for tgetent()... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 int tgetent(char *, const char *);
 int
-main ()
+main (void)
 {
 char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
   as_fn_error $? "NOT FOUND!
       You need to install a terminal library; for example ncurses.
       On Linux that would be the libncurses-dev package.
       Or specify the name of the library with --with-tlib." "$LINENO" 5
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we talk terminfo" >&5
-$as_echo_n "checking whether we talk terminfo... " >&6; }
-if ${vim_cv_terminfo+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    if test "$cross_compiling" = yes; then :
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we talk terminfo" >&5
+printf %s "checking whether we talk terminfo... " >&6; }
+if test ${vim_cv_terminfo+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    if test "$cross_compiling" = yes
+then :
 
       as_fn_error $? "cross-compiling: please set 'vim_cv_terminfo'" "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12105,11 +12816,12 @@ int main()
 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
       vim_cv_terminfo=no
 
-else
+else $as_nop
 
       vim_cv_terminfo=yes
 
@@ -12120,25 +12832,27 @@ fi
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_terminfo" >&5
-$as_echo "$vim_cv_terminfo" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_terminfo" >&5
+printf "%s\n" "$vim_cv_terminfo" >&6; }
 
 if test "x$vim_cv_terminfo" = "xyes" ; then
-  $as_echo "#define TERMINFO 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what tgetent() returns for an unknown terminal" >&5
-$as_echo_n "checking what tgetent() returns for an unknown terminal... " >&6; }
-if ${vim_cv_tgetent+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    if test "$cross_compiling" = yes; then :
+  printf "%s\n" "#define TERMINFO 1" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking what tgetent() returns for an unknown terminal" >&5
+printf %s "checking what tgetent() returns for an unknown terminal... " >&6; }
+if test ${vim_cv_tgetent+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    if test "$cross_compiling" = yes
+then :
 
       as_fn_error $? "failed to compile test program." "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12154,11 +12868,12 @@ int main()
 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
       vim_cv_tgetent=zero
 
-else
+else $as_nop
 
       vim_cv_tgetent=non-zero
 
@@ -12169,16 +12884,16 @@ fi
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_tgetent" >&5
-$as_echo "$vim_cv_tgetent" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_tgetent" >&5
+printf "%s\n" "$vim_cv_tgetent" >&6; }
 
 if test "x$vim_cv_tgetent" = "xzero" ; then
-  $as_echo "#define TGETENT_ZERO_ERR 0" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termcap.h contains ospeed" >&5
-$as_echo_n "checking whether termcap.h contains ospeed... " >&6; }
+  printf "%s\n" "#define TGETENT_ZERO_ERR 0" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether termcap.h contains ospeed" >&5
+printf %s "checking whether termcap.h contains ospeed... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12187,22 +12902,23 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 ospeed = 20000
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_OSPEED 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ospeed can be extern" >&5
-$as_echo_n "checking whether ospeed can be extern... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_OSPEED 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ospeed can be extern" >&5
+printf %s "checking whether ospeed can be extern... " >&6; }
 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12212,30 +12928,31 @@ else
 extern short ospeed;
 
 int
-main ()
+main (void)
 {
 ospeed = 20000
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define OSPEED_EXTERN 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether termcap.h contains UP, BC and PC" >&5
-$as_echo_n "checking whether termcap.h contains UP, BC and PC... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define OSPEED_EXTERN 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether termcap.h contains UP, BC and PC" >&5
+printf %s "checking whether termcap.h contains UP, BC and PC... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12244,22 +12961,23 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 if (UP == 0 && BC == 0) PC = 1
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_UP_BC_PC 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UP, BC and PC can be extern" >&5
-$as_echo_n "checking whether UP, BC and PC can be extern... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_UP_BC_PC 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UP, BC and PC can be extern" >&5
+printf %s "checking whether UP, BC and PC can be extern... " >&6; }
 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12269,30 +12987,31 @@ else
 extern char *UP, *BC, PC;
 
 int
-main ()
+main (void)
 {
 if (UP == 0 && BC == 0) PC = 1
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define UP_BC_PC_EXTERN 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether tputs() uses outfuntype" >&5
-$as_echo_n "checking whether tputs() uses outfuntype... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define UP_BC_PC_EXTERN 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether tputs() uses outfuntype" >&5
+printf %s "checking whether tputs() uses outfuntype... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12301,25 +13020,26 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 extern int xx(); tputs("test", 1, (outfuntype)xx)
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_OUTFUNTYPE 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether del_curterm() can be used" >&5
-$as_echo_n "checking whether del_curterm() can be used... " >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_OUTFUNTYPE 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether del_curterm() can be used" >&5
+printf %s "checking whether del_curterm() can be used... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12329,26 +13049,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #include <term.h>
 
 int
-main ()
+main (void)
 {
 if (cur_term) del_curterm(cur_term);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_DEL_CURTERM 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/select.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether sys/select.h and sys/time.h may both be included... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_DEL_CURTERM 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sys/select.h and sys/time.h may both be included" >&5
+printf %s "checking whether sys/select.h and sys/time.h may both be included... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12356,39 +13077,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #include <sys/time.h>
 #include <sys/select.h>
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-			$as_echo "#define SYS_SELECT_WITH_SYS_TIME 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5
-$as_echo_n "checking for /dev/ptc... " >&6; }
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+			printf "%s\n" "#define SYS_SELECT_WITH_SYS_TIME 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /dev/ptc" >&5
+printf %s "checking for /dev/ptc... " >&6; }
 if test -r /dev/ptc; then
-  $as_echo "#define HAVE_DEV_PTC 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SVR4 ptys" >&5
-$as_echo_n "checking for SVR4 ptys... " >&6; }
+  printf "%s\n" "#define HAVE_DEV_PTC 1" >>confdefs.h
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SVR4 ptys" >&5
+printf %s "checking for SVR4 ptys... " >&6; }
 if test -c /dev/ptmx ; then
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -12399,7 +13120,7 @@ int unlockpt(int);
 int grantpt(int);
 
 int
-main ()
+main (void)
 {
 
 		ptsname(0);
@@ -12409,23 +13130,24 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SVR4_PTYS 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ptyranges" >&5
-$as_echo_n "checking for ptyranges... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SVR4_PTYS 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ptyranges" >&5
+printf %s "checking for ptyranges... " >&6; }
 if test -d /dev/ptym ; then
   pdir='/dev/ptym'
 else
@@ -12439,34 +13161,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1; then :
+  $EGREP "yes" >/dev/null 2>&1
+then :
   ptys=`echo /dev/ptyp??`
-else
+else $as_nop
   ptys=`echo $pdir/pty??`
 fi
-rm -f conftest*
+rm -rf conftest*
 
 if test "$ptys" != "$pdir/pty??" ; then
   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
-  cat >>confdefs.h <<_ACEOF
-#define PTYRANGE0 "$p0"
-_ACEOF
-
-  cat >>confdefs.h <<_ACEOF
-#define PTYRANGE1 "$p1"
-_ACEOF
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $p0 / $p1" >&5
-$as_echo "$p0 / $p1" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: don't know" >&5
-$as_echo "don't know" >&6; }
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct sigcontext" >&5
-$as_echo_n "checking for struct sigcontext... " >&6; }
+  printf "%s\n" "#define PTYRANGE0 \"$p0\"" >>confdefs.h
+
+  printf "%s\n" "#define PTYRANGE1 \"$p1\"" >>confdefs.h
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $p0 / $p1" >&5
+printf "%s\n" "$p0 / $p1" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: don't know" >&5
+printf "%s\n" "don't know" >&6; }
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct sigcontext" >&5
+printf %s "checking for struct sigcontext... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12478,35 +13197,38 @@ int test_sig()
     return 1;
 }
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-		$as_echo "#define HAVE_SIGCONTEXT 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking getcwd implementation is broken" >&5
-$as_echo_n "checking getcwd implementation is broken... " >&6; }
-if ${vim_cv_getcwd_broken+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    if test "$cross_compiling" = yes; then :
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+		printf "%s\n" "#define HAVE_SIGCONTEXT 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking getcwd implementation is broken" >&5
+printf %s "checking getcwd implementation is broken... " >&6; }
+if test ${vim_cv_getcwd_broken+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    if test "$cross_compiling" = yes
+then :
 
       as_fn_error $? "cross-compiling: please set 'vim_cv_getcwd_broken'" "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -12524,11 +13246,12 @@ int main()
 }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
       vim_cv_getcwd_broken=no
 
-else
+else $as_nop
 
       vim_cv_getcwd_broken=yes
 
@@ -12539,63 +13262,363 @@ fi
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_getcwd_broken" >&5
-$as_echo "$vim_cv_getcwd_broken" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_getcwd_broken" >&5
+printf "%s\n" "$vim_cv_getcwd_broken" >&6; }
 
 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
-  $as_echo "#define BAD_GETCWD 1" >>confdefs.h
-
-  for ac_func in getwd
-do :
+  printf "%s\n" "#define BAD_GETCWD 1" >>confdefs.h
+
   ac_fn_c_check_func "$LINENO" "getwd" "ac_cv_func_getwd"
-if test "x$ac_cv_func_getwd" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_GETWD 1
-_ACEOF
-
-fi
-done
-
-fi
-
-for ac_func in fchdir fchown fchmod fsync getcwd getpseudotty \
-	getpwent getpwnam getpwuid getrlimit gettimeofday localtime_r lstat \
-	memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
-	getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
-	sigprocmask sigvec strcasecmp strcoll strerror strftime stricmp strncasecmp \
-	strnicmp strpbrk strptime strtol tgetent towlower towupper iswupper \
-	tzset usleep utime utimes mblen ftruncate unsetenv posix_openpt \
-	clock_gettime
-do :
-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-for ac_header in sys/select.h sys/socket.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5
-$as_echo_n "checking types of arguments for select... " >&6; }
-if ${ac_cv_func_select_args+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  for ac_arg234 in 'fd_set *' 'int *' 'void *'; do
+if test "x$ac_cv_func_getwd" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETWD 1" >>confdefs.h
+
+fi
+
+fi
+
+ac_fn_c_check_func "$LINENO" "fchdir" "ac_cv_func_fchdir"
+if test "x$ac_cv_func_fchdir" = xyes
+then :
+  printf "%s\n" "#define HAVE_FCHDIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchown" "ac_cv_func_fchown"
+if test "x$ac_cv_func_fchown" = xyes
+then :
+  printf "%s\n" "#define HAVE_FCHOWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fchmod" "ac_cv_func_fchmod"
+if test "x$ac_cv_func_fchmod" = xyes
+then :
+  printf "%s\n" "#define HAVE_FCHMOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "fsync" "ac_cv_func_fsync"
+if test "x$ac_cv_func_fsync" = xyes
+then :
+  printf "%s\n" "#define HAVE_FSYNC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getcwd" "ac_cv_func_getcwd"
+if test "x$ac_cv_func_getcwd" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETCWD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpseudotty" "ac_cv_func_getpseudotty"
+if test "x$ac_cv_func_getpseudotty" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETPSEUDOTTY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwent" "ac_cv_func_getpwent"
+if test "x$ac_cv_func_getpwent" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETPWENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwnam" "ac_cv_func_getpwnam"
+if test "x$ac_cv_func_getpwnam" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETPWNAM 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid"
+if test "x$ac_cv_func_getpwuid" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETPWUID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getrlimit" "ac_cv_func_getrlimit"
+if test "x$ac_cv_func_getrlimit" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETRLIMIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
+if test "x$ac_cv_func_gettimeofday" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETTIMEOFDAY 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r"
+if test "x$ac_cv_func_localtime_r" = xyes
+then :
+  printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "lstat" "ac_cv_func_lstat"
+if test "x$ac_cv_func_lstat" = xyes
+then :
+  printf "%s\n" "#define HAVE_LSTAT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "memset" "ac_cv_func_memset"
+if test "x$ac_cv_func_memset" = xyes
+then :
+  printf "%s\n" "#define HAVE_MEMSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mkdtemp" "ac_cv_func_mkdtemp"
+if test "x$ac_cv_func_mkdtemp" = xyes
+then :
+  printf "%s\n" "#define HAVE_MKDTEMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep"
+if test "x$ac_cv_func_nanosleep" = xyes
+then :
+  printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "opendir" "ac_cv_func_opendir"
+if test "x$ac_cv_func_opendir" = xyes
+then :
+  printf "%s\n" "#define HAVE_OPENDIR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "putenv" "ac_cv_func_putenv"
+if test "x$ac_cv_func_putenv" = xyes
+then :
+  printf "%s\n" "#define HAVE_PUTENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "qsort" "ac_cv_func_qsort"
+if test "x$ac_cv_func_qsort" = xyes
+then :
+  printf "%s\n" "#define HAVE_QSORT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "readlink" "ac_cv_func_readlink"
+if test "x$ac_cv_func_readlink" = xyes
+then :
+  printf "%s\n" "#define HAVE_READLINK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "select" "ac_cv_func_select"
+if test "x$ac_cv_func_select" = xyes
+then :
+  printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setenv" "ac_cv_func_setenv"
+if test "x$ac_cv_func_setenv" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "getpgid" "ac_cv_func_getpgid"
+if test "x$ac_cv_func_getpgid" = xyes
+then :
+  printf "%s\n" "#define HAVE_GETPGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setpgid" "ac_cv_func_setpgid"
+if test "x$ac_cv_func_setpgid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETPGID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setsid" "ac_cv_func_setsid"
+if test "x$ac_cv_func_setsid" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETSID 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigaltstack" "ac_cv_func_sigaltstack"
+if test "x$ac_cv_func_sigaltstack" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGALTSTACK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigstack" "ac_cv_func_sigstack"
+if test "x$ac_cv_func_sigstack" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGSTACK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigset" "ac_cv_func_sigset"
+if test "x$ac_cv_func_sigset" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigsetjmp" "ac_cv_func_sigsetjmp"
+if test "x$ac_cv_func_sigsetjmp" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGSETJMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigaction" "ac_cv_func_sigaction"
+if test "x$ac_cv_func_sigaction" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigprocmask" "ac_cv_func_sigprocmask"
+if test "x$ac_cv_func_sigprocmask" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGPROCMASK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "sigvec" "ac_cv_func_sigvec"
+if test "x$ac_cv_func_sigvec" = xyes
+then :
+  printf "%s\n" "#define HAVE_SIGVEC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
+if test "x$ac_cv_func_strcasecmp" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strcoll" "ac_cv_func_strcoll"
+if test "x$ac_cv_func_strcoll" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRCOLL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strerror" "ac_cv_func_strerror"
+if test "x$ac_cv_func_strerror" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRERROR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime"
+if test "x$ac_cv_func_strftime" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRFTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "stricmp" "ac_cv_func_stricmp"
+if test "x$ac_cv_func_stricmp" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRICMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strncasecmp" "ac_cv_func_strncasecmp"
+if test "x$ac_cv_func_strncasecmp" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRNCASECMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strnicmp" "ac_cv_func_strnicmp"
+if test "x$ac_cv_func_strnicmp" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRNICMP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strpbrk" "ac_cv_func_strpbrk"
+if test "x$ac_cv_func_strpbrk" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRPBRK 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strptime" "ac_cv_func_strptime"
+if test "x$ac_cv_func_strptime" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRPTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "strtol" "ac_cv_func_strtol"
+if test "x$ac_cv_func_strtol" = xyes
+then :
+  printf "%s\n" "#define HAVE_STRTOL 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tgetent" "ac_cv_func_tgetent"
+if test "x$ac_cv_func_tgetent" = xyes
+then :
+  printf "%s\n" "#define HAVE_TGETENT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "towlower" "ac_cv_func_towlower"
+if test "x$ac_cv_func_towlower" = xyes
+then :
+  printf "%s\n" "#define HAVE_TOWLOWER 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "towupper" "ac_cv_func_towupper"
+if test "x$ac_cv_func_towupper" = xyes
+then :
+  printf "%s\n" "#define HAVE_TOWUPPER 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "iswupper" "ac_cv_func_iswupper"
+if test "x$ac_cv_func_iswupper" = xyes
+then :
+  printf "%s\n" "#define HAVE_ISWUPPER 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset"
+if test "x$ac_cv_func_tzset" = xyes
+then :
+  printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "usleep" "ac_cv_func_usleep"
+if test "x$ac_cv_func_usleep" = xyes
+then :
+  printf "%s\n" "#define HAVE_USLEEP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utime" "ac_cv_func_utime"
+if test "x$ac_cv_func_utime" = xyes
+then :
+  printf "%s\n" "#define HAVE_UTIME 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
+if test "x$ac_cv_func_utimes" = xyes
+then :
+  printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "mblen" "ac_cv_func_mblen"
+if test "x$ac_cv_func_mblen" = xyes
+then :
+  printf "%s\n" "#define HAVE_MBLEN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ftruncate" "ac_cv_func_ftruncate"
+if test "x$ac_cv_func_ftruncate" = xyes
+then :
+  printf "%s\n" "#define HAVE_FTRUNCATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv"
+if test "x$ac_cv_func_unsetenv" = xyes
+then :
+  printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "posix_openpt" "ac_cv_func_posix_openpt"
+if test "x$ac_cv_func_posix_openpt" = xyes
+then :
+  printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"
+if test "x$ac_cv_func_clock_gettime" = xyes
+then :
+  printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+
+fi
+
+
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5
+printf %s "checking types of arguments for select... " >&6; }
+if test ${ac_cv_func_select_args+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  ac_cv_func_select_args='int,int *,struct timeval *'
+for ac_arg234 in 'fd_set *' 'int *' 'void *'; do
  for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do
   for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do
    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -12609,7 +13632,7 @@ else
 #endif
 
 int
-main ()
+main (void)
 {
 extern int select ($ac_arg1,
 					    $ac_arg234, $ac_arg234, $ac_arg234,
@@ -12618,52 +13641,46 @@ extern int select ($ac_arg1,
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   done
  done
 done
-# Provide a safe default value.
-: "${ac_cv_func_select_args=int,int *,struct timeval *}"
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5
-$as_echo "$ac_cv_func_select_args" >&6; }
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5
+printf "%s\n" "$ac_cv_func_select_args" >&6; }
 ac_save_IFS=$IFS; IFS=','
 set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'`
 IFS=$ac_save_IFS
 shift
 
-cat >>confdefs.h <<_ACEOF
-#define SELECT_TYPE_ARG1 $1
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define SELECT_TYPE_ARG234 ($2)
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-#define SELECT_TYPE_ARG5 ($3)
-_ACEOF
-
-rm -f conftest*
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
-$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_source+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+printf "%s\n" "#define SELECT_TYPE_ARG1 $1" >>confdefs.h
+
+
+printf "%s\n" "#define SELECT_TYPE_ARG234 ($2)" >>confdefs.h
+
+
+printf "%s\n" "#define SELECT_TYPE_ARG5 ($3)" >>confdefs.h
+
+rm -rf conftest*
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+printf %s "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_source+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h> /* for off_t */
      #include <stdio.h>
 int
-main ()
+main (void)
 {
 int (*fp) (FILE *, off_t, int) = fseeko;
      return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
@@ -12671,10 +13688,11 @@ int (*fp) (FILE *, off_t, int) = fseeko;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_sys_largefile_source=no; break
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -12682,7 +13700,7 @@ rm -f core conftest.err conftest.$ac_obj
 #include <sys/types.h> /* for off_t */
      #include <stdio.h>
 int
-main ()
+main (void)
 {
 int (*fp) (FILE *, off_t, int) = fseeko;
      return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
@@ -12690,23 +13708,22 @@ int (*fp) (FILE *, off_t, int) = fseeko;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_sys_largefile_source=1; break
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   ac_cv_sys_largefile_source=unknown
   break
 done
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
-$as_echo "$ac_cv_sys_largefile_source" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5
+printf "%s\n" "$ac_cv_sys_largefile_source" >&6; }
 case $ac_cv_sys_largefile_source in #(
   no | unknown) ;;
   *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
-_ACEOF
+printf "%s\n" "#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source" >>confdefs.h
 ;;
 esac
 rm -rf conftest*
@@ -12716,23 +13733,25 @@ rm -rf conftest*
 # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
 if test $ac_cv_sys_largefile_source != unknown; then
 
-$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_FSEEKO 1" >>confdefs.h
 
 fi
 
 
 # Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
+if test ${enable_largefile+y}
+then :
   enableval=$enable_largefile;
 fi
 
 if test "$enable_largefile" != no; then
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_cv_sys_largefile_CC=no
      if test "$GCC" != yes; then
        ac_save_CC=$CC
@@ -12746,44 +13765,47 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-	 if ac_fn_c_try_compile "$LINENO"; then :
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+	 if ac_fn_c_try_compile "$LINENO"
+then :
   break
 fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
 	 CC="$CC -n32"
-	 if ac_fn_c_try_compile "$LINENO"; then :
+	 if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_largefile_CC=' -n32'; break
 fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
 	 break
        done
        CC=$ac_save_CC
        rm -f conftest.$ac_ext
     fi
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
   if test "$ac_cv_sys_largefile_CC" != no; then
     CC=$CC$ac_cv_sys_largefile_CC
   fi
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -12792,22 +13814,23 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_file_offset_bits=no; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define _FILE_OFFSET_BITS 64
@@ -12816,43 +13839,43 @@ rm -f core conftest.err conftest.$ac_obj
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_file_offset_bits=64; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   ac_cv_sys_file_offset_bits=unknown
   break
 done
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
 case $ac_cv_sys_file_offset_bits in #(
   no | unknown) ;;
   *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
 ;;
 esac
 rm -rf conftest*
   if test $ac_cv_sys_file_offset_bits = unknown; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   while :; do
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -12861,22 +13884,23 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_large_files=no; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define _LARGE_FILES 1
@@ -12885,71 +13909,69 @@ rm -f core conftest.err conftest.$ac_obj
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_sys_large_files=1; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   ac_cv_sys_large_files=unknown
   break
 done
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
 case $ac_cv_sys_large_files in #(
   no | unknown) ;;
   *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
 ;;
 esac
 rm -rf conftest*
   fi
-
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-canberra argument" >&5
-$as_echo_n "checking --enable-canberra argument... " >&6; }
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-canberra argument" >&5
+printf %s "checking --enable-canberra argument... " >&6; }
 # Check whether --enable-canberra was given.
-if test "${enable_canberra+set}" = set; then :
+if test ${enable_canberra+y}
+then :
   enableval=$enable_canberra;
-else
+else $as_nop
   enable_canberra="maybe"
 fi
 
 
 if test "$enable_canberra" = "maybe"; then
   if test "$features" = "huge"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to yes" >&5
-$as_echo "Defaulting to yes" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to yes" >&5
+printf "%s\n" "Defaulting to yes" >&6; }
     enable_canberra="yes"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to no" >&5
-$as_echo "Defaulting to no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to no" >&5
+printf "%s\n" "Defaulting to no" >&6; }
     enable_canberra="no"
   fi
 else
   if test "$enable_canberra" = "yes" -a "$has_eval" = "no"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: cannot use sound with tiny features" >&5
-$as_echo "cannot use sound with tiny features" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot use sound with tiny features" >&5
+printf "%s\n" "cannot use sound with tiny features" >&6; }
     enable_canberra="no"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_canberra" >&5
-$as_echo "$enable_canberra" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_canberra" >&5
+printf "%s\n" "$enable_canberra" >&6; }
   fi
 fi
 if test "$enable_canberra" = "yes"; then
@@ -12961,8 +13983,8 @@ if test "$enable_canberra" = "yes"; then
     canberra_lib=-lcanberra
     canberra_cflags=-D_REENTRANT
   fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcanberra" >&5
-$as_echo_n "checking for libcanberra... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcanberra" >&5
+printf %s "checking for libcanberra... " >&6; }
   ac_save_CFLAGS="$CFLAGS"
   ac_save_LIBS="$LIBS"
   if `echo "$CFLAGS" | grep -v "$canberra_cflags" 2>/dev/null`; then
@@ -12975,7 +13997,7 @@ if test "$enable_canberra" = "yes"; then
   # include <canberra.h>
 
 int
-main ()
+main (void)
 {
 
      ca_context *hello;
@@ -12984,41 +14006,43 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_CANBERRA 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no; try installing libcanberra-dev" >&5
-$as_echo "no; try installing libcanberra-dev" >&6; }; CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-libsodium argument" >&5
-$as_echo_n "checking --enable-libsodium argument... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_CANBERRA 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no; try installing libcanberra-dev" >&5
+printf "%s\n" "no; try installing libcanberra-dev" >&6; }; CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-libsodium argument" >&5
+printf %s "checking --enable-libsodium argument... " >&6; }
 # Check whether --enable-libsodium was given.
-if test "${enable_libsodium+set}" = set; then :
+if test ${enable_libsodium+y}
+then :
   enableval=$enable_libsodium;
-else
+else $as_nop
   enable_libsodium="maybe"
 fi
 
 
 if test "$enable_libsodium" = "maybe"; then
   if test "$features" = "huge"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to yes" >&5
-$as_echo "Defaulting to yes" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to yes" >&5
+printf "%s\n" "Defaulting to yes" >&6; }
     enable_libsodium="yes"
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: Defaulting to no" >&5
-$as_echo "Defaulting to no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Defaulting to no" >&5
+printf "%s\n" "Defaulting to no" >&6; }
     enable_libsodium="no"
   fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libsodium" >&5
-$as_echo "$enable_libsodium" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_libsodium" >&5
+printf "%s\n" "$enable_libsodium" >&6; }
 fi
 if test "$enable_libsodium" = "yes"; then
   if test "x$PKG_CONFIG" != "xno"; then
@@ -13029,8 +14053,8 @@ if test "$enable_libsodium" = "yes"; the
     libsodium_lib=-lsodium
     libsodium_cflags=
   fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsodium" >&5
-$as_echo_n "checking for libsodium... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libsodium" >&5
+printf %s "checking for libsodium... " >&6; }
   ac_save_CFLAGS="$CFLAGS"
   ac_save_LIBS="$LIBS"
   CFLAGS="$CFLAGS $libsodium_cflags"
@@ -13041,7 +14065,7 @@ if test "$enable_libsodium" = "yes"; the
   # include <sodium.h>
 
 int
-main ()
+main (void)
 {
 
      printf("%d", sodium_init());
@@ -13049,26 +14073,27 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SODIUM 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no; try installing libsodium-dev" >&5
-$as_echo "no; try installing libsodium-dev" >&6; }; CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS"
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for st_blksize" >&5
-$as_echo_n "checking for st_blksize... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SODIUM 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no; try installing libsodium-dev" >&5
+printf "%s\n" "no; try installing libsodium-dev" >&6; }; CFLAGS="$ac_save_CFLAGS"; LIBS="$ac_save_LIBS"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for st_blksize" >&5
+printf %s "checking for st_blksize... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/stat.h>
 int
-main ()
+main (void)
 {
 	struct stat st;
 	int n;
@@ -13079,27 +14104,30 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_ST_BLKSIZE 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for timer_create without -lrt" >&5
-$as_echo_n "checking for timer_create without -lrt... " >&6; }
-if ${vim_cv_timer_create+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-if test "$cross_compiling" = yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create'" >&5
-$as_echo "$as_me: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create'" >&2;}
-
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_ST_BLKSIZE 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for timer_create without -lrt" >&5
+printf %s "checking for timer_create without -lrt... " >&6; }
+if test ${vim_cv_timer_create+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+if test "$cross_compiling" = yes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create'" >&5
+printf "%s\n" "$as_me: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create'" >&2;}
+
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13112,7 +14140,7 @@ else
 static void set_flag(union sigval sv) {}
 
 int
-main ()
+main (void)
 {
 
   struct timespec ts;
@@ -13128,9 +14156,10 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   vim_cv_timer_create=yes
-else
+else $as_nop
   vim_cv_timer_create=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13138,23 +14167,25 @@ rm -f core *.core core.conftest.* gmon.o
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_timer_create" >&5
-$as_echo "$vim_cv_timer_create" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_timer_create" >&5
+printf "%s\n" "$vim_cv_timer_create" >&6; }
 
 if test "x$vim_cv_timer_create" = "xno" ; then
   save_LIBS="$LIBS"
   LIBS="$LIBS -lrt"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for timer_create with -lrt" >&5
-$as_echo_n "checking for timer_create with -lrt... " >&6; }
-if ${vim_cv_timer_create_with_lrt+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    if test "$cross_compiling" = yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create_with_lrt'" >&5
-$as_echo "$as_me: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create_with_lrt'" >&2;}
-
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for timer_create with -lrt" >&5
+printf %s "checking for timer_create with -lrt... " >&6; }
+if test ${vim_cv_timer_create_with_lrt+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    if test "$cross_compiling" = yes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create_with_lrt'" >&5
+printf "%s\n" "$as_me: WARNING: failed to build test program; if cross-compiling please set 'vim_cv_timer_create_with_lrt'" >&2;}
+
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13167,7 +14198,7 @@ else
     static void set_flag(union sigval sv) {}
 
 int
-main ()
+main (void)
 {
 
       struct timespec ts;
@@ -13183,9 +14214,10 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
   vim_cv_timer_create_with_lrt=yes
-else
+else $as_nop
   vim_cv_timer_create_with_lrt=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -13193,34 +14225,36 @@ rm -f core *.core core.conftest.* gmon.o
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_timer_create_with_lrt" >&5
-$as_echo "$vim_cv_timer_create_with_lrt" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_timer_create_with_lrt" >&5
+printf "%s\n" "$vim_cv_timer_create_with_lrt" >&6; }
   LIBS="$save_LIBS"
 else
   vim_cv_timer_create_with_lrt=no
 fi
 
 if test "x$vim_cv_timer_create" = "xyes" ; then
-  $as_echo "#define HAVE_TIMER_CREATE 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_TIMER_CREATE 1" >>confdefs.h
 
 fi
 if test "x$vim_cv_timer_create_with_lrt" = "xyes" ; then
-  $as_echo "#define HAVE_TIMER_CREATE 1" >>confdefs.h
+  printf "%s\n" "#define HAVE_TIMER_CREATE 1" >>confdefs.h
 
   LIBS="$LIBS -lrt"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat() ignores a trailing slash" >&5
-$as_echo_n "checking whether stat() ignores a trailing slash... " >&6; }
-if ${vim_cv_stat_ignores_slash+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stat() ignores a trailing slash" >&5
+printf %s "checking whether stat() ignores a trailing slash... " >&6; }
+if test ${vim_cv_stat_ignores_slash+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    if test "$cross_compiling" = yes
+then :
 
       as_fn_error $? "cross-compiling: please set 'vim_cv_stat_ignores_slash'" "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13234,11 +14268,12 @@ else
 int main() {struct stat st;  exit(stat("configure/", &st) != 0); }
 
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
       vim_cv_stat_ignores_slash=yes
 
-else
+else $as_nop
 
       vim_cv_stat_ignores_slash=no
 
@@ -13249,19 +14284,20 @@ fi
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_stat_ignores_slash" >&5
-$as_echo "$vim_cv_stat_ignores_slash" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_stat_ignores_slash" >&5
+printf "%s\n" "$vim_cv_stat_ignores_slash" >&6; }
 
 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
-  $as_echo "#define STAT_IGNORES_SLASH 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5
-$as_echo_n "checking for nanoseconds field of struct stat... " >&6; }
-if ${ac_cv_struct_st_mtim_nsec+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  printf "%s\n" "#define STAT_IGNORES_SLASH 1" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanoseconds field of struct stat" >&5
+printf %s "checking for nanoseconds field of struct stat... " >&6; }
+if test ${ac_cv_struct_st_mtim_nsec+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_save_CPPFLAGS="$CPPFLAGS"
    ac_cv_struct_st_mtim_nsec=no
    # st_mtim.tv_nsec -- the usual case
@@ -13278,33 +14314,32 @@ else
 #include <sys/types.h>
 #include <sys/stat.h>
 int
-main ()
+main (void)
 {
 struct stat s; s.ST_MTIM_NSEC;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
   ac_cv_struct_st_mtim_nsec=$ac_val; break
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
    done
    CPPFLAGS="$ac_save_CPPFLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5
-$as_echo "$ac_cv_struct_st_mtim_nsec" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_st_mtim_nsec" >&5
+printf "%s\n" "$ac_cv_struct_st_mtim_nsec" >&6; }
 if test $ac_cv_struct_st_mtim_nsec != no; then
 
-cat >>confdefs.h <<_ACEOF
-#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec
-_ACEOF
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv_open()" >&5
-$as_echo_n "checking for iconv_open()... " >&6; }
+printf "%s\n" "#define ST_MTIM_NSEC $ac_cv_struct_st_mtim_nsec" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for iconv_open()" >&5
+printf %s "checking for iconv_open()... " >&6; }
 save_LIBS="$LIBS"
 LIBS="$LIBS -liconv"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13315,18 +14350,19 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 iconv_open("fr", "to");
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes; with -liconv" >&5
-$as_echo "yes; with -liconv" >&6; }; $as_echo "#define HAVE_ICONV 1" >>confdefs.h
-
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes; with -liconv" >&5
+printf "%s\n" "yes; with -liconv" >&6; }; printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h
+
+else $as_nop
   LIBS="$save_LIBS"
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -13336,30 +14372,31 @@ else
 #endif
 
 int
-main ()
+main (void)
 {
 iconv_open("fr", "to");
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_ICONV 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo(CODESET)" >&5
-$as_echo_n "checking for nl_langinfo(CODESET)... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_ICONV 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo(CODESET)" >&5
+printf %s "checking for nl_langinfo(CODESET)... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13368,29 +14405,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 char *cs = nl_langinfo(CODESET);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_NL_LANGINFO_CODESET 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strtod in -lm" >&5
-$as_echo_n "checking for strtod in -lm... " >&6; }
-if ${ac_cv_lib_m_strtod+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_NL_LANGINFO_CODESET 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for strtod in -lm" >&5
+printf %s "checking for strtod in -lm... " >&6; }
+if test ${ac_cv_lib_m_strtod+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lm  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13399,41 +14438,38 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char strtod ();
 int
-main ()
+main (void)
 {
 return strtod ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_m_strtod=yes
-else
+else $as_nop
   ac_cv_lib_m_strtod=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_strtod" >&5
-$as_echo "$ac_cv_lib_m_strtod" >&6; }
-if test "x$ac_cv_lib_m_strtod" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_strtod" >&5
+printf "%s\n" "$ac_cv_lib_m_strtod" >&6; }
+if test "x$ac_cv_lib_m_strtod" = xyes
+then :
+  printf "%s\n" "#define HAVE_LIBM 1" >>confdefs.h
 
   LIBS="-lm $LIBS"
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for isinf()" >&5
-$as_echo_n "checking for isinf()... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for isinf()" >&5
+printf %s "checking for isinf()... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13446,26 +14482,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 int r = isinf(1.11);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_ISINF 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan()" >&5
-$as_echo_n "checking for isnan()... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_ISINF 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for isnan()" >&5
+printf %s "checking for isnan()... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13478,41 +14515,44 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 #endif
 
 int
-main ()
+main (void)
 {
 int r = isnan(1.11);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_ISNAN 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-acl argument" >&5
-$as_echo_n "checking --disable-acl argument... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_ISNAN 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-acl argument" >&5
+printf %s "checking --disable-acl argument... " >&6; }
 # Check whether --enable-acl was given.
-if test "${enable_acl+set}" = set; then :
+if test ${enable_acl+y}
+then :
   enableval=$enable_acl;
-else
+else $as_nop
   enable_acl="yes"
 fi
 
 if test "$enable_acl" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lposix1e" >&5
-$as_echo_n "checking for acl_get_file in -lposix1e... " >&6; }
-if ${ac_cv_lib_posix1e_acl_get_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lposix1e" >&5
+printf %s "checking for acl_get_file in -lposix1e... " >&6; }
+if test ${ac_cv_lib_posix1e_acl_get_file+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lposix1e  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13521,37 +14561,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char acl_get_file ();
 int
-main ()
+main (void)
 {
 return acl_get_file ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_posix1e_acl_get_file=yes
-else
+else $as_nop
   ac_cv_lib_posix1e_acl_get_file=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix1e_acl_get_file" >&5
-$as_echo "$ac_cv_lib_posix1e_acl_get_file" >&6; }
-if test "x$ac_cv_lib_posix1e_acl_get_file" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix1e_acl_get_file" >&5
+printf "%s\n" "$ac_cv_lib_posix1e_acl_get_file" >&6; }
+if test "x$ac_cv_lib_posix1e_acl_get_file" = xyes
+then :
   LIBS="$LIBS -lposix1e"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lacl" >&5
-$as_echo_n "checking for acl_get_file in -lacl... " >&6; }
-if ${ac_cv_lib_acl_acl_get_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for acl_get_file in -lacl" >&5
+printf %s "checking for acl_get_file in -lacl... " >&6; }
+if test ${ac_cv_lib_acl_acl_get_file+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lacl  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13560,36 +14600,36 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char acl_get_file ();
 int
-main ()
+main (void)
 {
 return acl_get_file ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_acl_acl_get_file=yes
-else
+else $as_nop
   ac_cv_lib_acl_acl_get_file=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_acl_acl_get_file" >&5
-$as_echo "$ac_cv_lib_acl_acl_get_file" >&6; }
-if test "x$ac_cv_lib_acl_acl_get_file" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_acl_acl_get_file" >&5
+printf "%s\n" "$ac_cv_lib_acl_acl_get_file" >&6; }
+if test "x$ac_cv_lib_acl_acl_get_file" = xyes
+then :
   LIBS="$LIBS -lacl"
-		  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgetxattr in -lattr" >&5
-$as_echo_n "checking for fgetxattr in -lattr... " >&6; }
-if ${ac_cv_lib_attr_fgetxattr+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+		  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgetxattr in -lattr" >&5
+printf %s "checking for fgetxattr in -lattr... " >&6; }
+if test ${ac_cv_lib_attr_fgetxattr+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lattr  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13598,30 +14638,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char fgetxattr ();
 int
-main ()
+main (void)
 {
 return fgetxattr ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_attr_fgetxattr=yes
-else
+else $as_nop
   ac_cv_lib_attr_fgetxattr=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_fgetxattr" >&5
-$as_echo "$ac_cv_lib_attr_fgetxattr" >&6; }
-if test "x$ac_cv_lib_attr_fgetxattr" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_fgetxattr" >&5
+printf "%s\n" "$ac_cv_lib_attr_fgetxattr" >&6; }
+if test "x$ac_cv_lib_attr_fgetxattr" = xyes
+then :
   LIBS="$LIBS -lattr"
 fi
 
@@ -13630,8 +14669,8 @@ fi
 fi
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for POSIX ACL support" >&5
-$as_echo_n "checking for POSIX ACL support... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for POSIX ACL support" >&5
+printf %s "checking for POSIX ACL support... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13641,7 +14680,7 @@ fi
 #endif
 acl_t acl;
 int
-main ()
+main (void)
 {
 acl = acl_get_file("foo", ACL_TYPE_ACCESS);
 	acl_set_file("foo", ACL_TYPE_ACCESS, acl);
@@ -13650,22 +14689,24 @@ acl = acl_get_file("foo", ACL_TYPE_ACCES
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_POSIX_ACL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5
-$as_echo_n "checking for acl_get in -lsec... " >&6; }
-if ${ac_cv_lib_sec_acl_get+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_POSIX_ACL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for acl_get in -lsec" >&5
+printf %s "checking for acl_get in -lsec... " >&6; }
+if test ${ac_cv_lib_sec_acl_get+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lsec  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -13674,35 +14715,34 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char acl_get ();
 int
-main ()
+main (void)
 {
 return acl_get ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_sec_acl_get=yes
-else
+else $as_nop
   ac_cv_lib_sec_acl_get=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5
-$as_echo "$ac_cv_lib_sec_acl_get" >&6; }
-if test "x$ac_cv_lib_sec_acl_get" = xyes; then :
-  LIBS="$LIBS -lsec"; $as_echo "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5
-$as_echo_n "checking for Solaris ACL support... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sec_acl_get" >&5
+printf "%s\n" "$ac_cv_lib_sec_acl_get" >&6; }
+if test "x$ac_cv_lib_sec_acl_get" = xyes
+then :
+  LIBS="$LIBS -lsec"; printf "%s\n" "#define HAVE_SOLARIS_ZFS_ACL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Solaris ACL support" >&5
+printf %s "checking for Solaris ACL support... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13710,7 +14750,7 @@ else
 # include <sys/acl.h>
 #endif
 int
-main ()
+main (void)
 {
 acl("foo", GETACLCNT, 0, NULL);
 
@@ -13718,21 +14758,22 @@ acl("foo", GETACLCNT, 0, NULL);
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SOLARIS_ACL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5
-$as_echo_n "checking for AIX ACL support... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SOLARIS_ACL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for AIX ACL support" >&5
+printf %s "checking for AIX ACL support... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -13753,7 +14794,7 @@ fi
 int aclsize;
 struct acl *aclent;
 int
-main ()
+main (void)
 {
 aclsize = sizeof(struct acl);
 	aclent = (void *)malloc(aclsize);
@@ -13763,24 +14804,25 @@ aclsize = sizeof(struct acl);
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_AIX_ACL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_AIX_ACL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 fi
 
 if test "x$GTK_CFLAGS" != "x"; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pango_shape_full" >&5
-$as_echo_n "checking for pango_shape_full... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pango_shape_full" >&5
+printf %s "checking for pango_shape_full... " >&6; }
   ac_save_CFLAGS="$CFLAGS"
   ac_save_LIBS="$LIBS"
   CFLAGS="$CFLAGS $GTK_CFLAGS"
@@ -13789,110 +14831,116 @@ if test "x$GTK_CFLAGS" != "x"; then
 /* end confdefs.h.  */
 #include <gtk/gtk.h>
 int
-main ()
+main (void)
 {
  pango_shape_full(NULL, 0, NULL, 0, NULL, NULL);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_PANGO_SHAPE_FULL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_PANGO_SHAPE_FULL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
   CFLAGS="$ac_save_CFLAGS"
   LIBS="$ac_save_LIBS"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-gpm argument" >&5
-$as_echo_n "checking --enable-gpm argument... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --enable-gpm argument" >&5
+printf %s "checking --enable-gpm argument... " >&6; }
 # Check whether --enable-gpm was given.
-if test "${enable_gpm+set}" = set; then :
+if test ${enable_gpm+y}
+then :
   enableval=$enable_gpm;
-else
+else $as_nop
   enable_gpm="yes"
 fi
 
 
 if test "$enable_gpm" = "yes" -o "$enable_gpm" = "dynamic"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gpm" >&5
-$as_echo "$enable_gpm" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gpm" >&5
-$as_echo_n "checking for gpm... " >&6; }
-if ${vi_cv_have_gpm+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_gpm" >&5
+printf "%s\n" "$enable_gpm" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gpm" >&5
+printf %s "checking for gpm... " >&6; }
+if test ${vi_cv_have_gpm+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   olibs="$LIBS" ; LIBS="-lgpm"
 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <gpm.h>
 	    #include <linux/keyboard.h>
 int
-main ()
+main (void)
 {
 Gpm_GetLibVersion(NULL);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   	    	    vi_cv_have_gpm=yes
-else
+else $as_nop
   vi_cv_have_gpm=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 	LIBS="$olibs"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_have_gpm" >&5
-$as_echo "$vi_cv_have_gpm" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_have_gpm" >&5
+printf "%s\n" "$vi_cv_have_gpm" >&6; }
   if test $vi_cv_have_gpm = yes; then
     if test "$enable_gpm" = "yes"; then
       LIBS="$LIBS -lgpm"
     else
-      $as_echo "#define DYNAMIC_GPM 1" >>confdefs.h
-
-    fi
-    $as_echo "#define HAVE_GPM 1" >>confdefs.h
-
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-sysmouse argument" >&5
-$as_echo_n "checking --disable-sysmouse argument... " >&6; }
+      printf "%s\n" "#define DYNAMIC_GPM 1" >>confdefs.h
+
+    fi
+    printf "%s\n" "#define HAVE_GPM 1" >>confdefs.h
+
+  fi
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-sysmouse argument" >&5
+printf %s "checking --disable-sysmouse argument... " >&6; }
 # Check whether --enable-sysmouse was given.
-if test "${enable_sysmouse+set}" = set; then :
+if test ${enable_sysmouse+y}
+then :
   enableval=$enable_sysmouse;
-else
+else $as_nop
   enable_sysmouse="yes"
 fi
 
 
 if test "$enable_sysmouse" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysmouse" >&5
-$as_echo_n "checking for sysmouse... " >&6; }
-if ${vi_cv_have_sysmouse+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+        { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysmouse" >&5
+printf %s "checking for sysmouse... " >&6; }
+if test ${vi_cv_have_sysmouse+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/consio.h>
 	     #include <signal.h>
 	     #include <sys/fbio.h>
 int
-main ()
+main (void)
 {
 struct mouse_info   mouse;
 	     mouse.operation = MOUSE_MODE;
@@ -13903,132 +14951,137 @@ struct mouse_info   mouse;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   vi_cv_have_sysmouse=yes
-else
+else $as_nop
   vi_cv_have_sysmouse=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_have_sysmouse" >&5
-$as_echo "$vi_cv_have_sysmouse" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vi_cv_have_sysmouse" >&5
+printf "%s\n" "$vi_cv_have_sysmouse" >&6; }
   if test $vi_cv_have_sysmouse = yes; then
-    $as_echo "#define HAVE_SYSMOUSE 1" >>confdefs.h
-
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FD_CLOEXEC" >&5
-$as_echo_n "checking for FD_CLOEXEC... " >&6; }
+    printf "%s\n" "#define HAVE_SYSMOUSE 1" >>confdefs.h
+
+  fi
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for FD_CLOEXEC" >&5
+printf %s "checking for FD_CLOEXEC... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if HAVE_FCNTL_H
 # include <fcntl.h>
 #endif
 int
-main ()
+main (void)
 {
 	int flag = FD_CLOEXEC;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_FD_CLOEXEC 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
-$as_echo "not usable" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for rename" >&5
-$as_echo_n "checking for rename... " >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_FD_CLOEXEC 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
+printf "%s\n" "not usable" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rename" >&5
+printf %s "checking for rename... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdio.h>
 int
-main ()
+main (void)
 {
 rename("this", "that")
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_RENAME 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for dirfd" >&5
-$as_echo_n "checking for dirfd... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_RENAME 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dirfd" >&5
+printf %s "checking for dirfd... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <dirent.h>
 int
-main ()
+main (void)
 {
 DIR * dir=opendir("dirname"); dirfd(dir);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_DIRFD 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
-$as_echo "not usable" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock" >&5
-$as_echo_n "checking for flock... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
+printf "%s\n" "not usable" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flock" >&5
+printf %s "checking for flock... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/file.h>
 int
-main ()
+main (void)
 {
 flock(10, LOCK_SH);
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_FLOCK 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
-$as_echo "not usable" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysctl" >&5
-$as_echo_n "checking for sysctl... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_FLOCK 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
+printf "%s\n" "not usable" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysctl" >&5
+printf %s "checking for sysctl... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/sysctl.h>
 int
-main ()
+main (void)
 {
 	int mib[2], r;
 	size_t len;
@@ -14042,24 +15095,25 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SYSCTL 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
-$as_echo "not usable" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysinfo" >&5
-$as_echo_n "checking for sysinfo... " >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SYSCTL 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
+printf "%s\n" "not usable" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysinfo" >&5
+printf %s "checking for sysinfo... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/sysinfo.h>
 int
-main ()
+main (void)
 {
 	struct sysinfo sinfo;
 	int t;
@@ -14071,25 +15125,26 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SYSINFO 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
-$as_echo "not usable" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysinfo.mem_unit" >&5
-$as_echo_n "checking for sysinfo.mem_unit... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SYSINFO 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
+printf "%s\n" "not usable" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysinfo.mem_unit" >&5
+printf %s "checking for sysinfo.mem_unit... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/sysinfo.h>
 int
-main ()
+main (void)
 {
 	struct sysinfo sinfo;
 	sinfo.mem_unit = 1;
@@ -14098,24 +15153,25 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SYSINFO_MEM_UNIT 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysinfo.uptime" >&5
-$as_echo_n "checking for sysinfo.uptime... " >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SYSINFO_MEM_UNIT 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysinfo.uptime" >&5
+printf %s "checking for sysinfo.uptime... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
 #include <sys/sysinfo.h>
 int
-main ()
+main (void)
 {
 	struct sysinfo sinfo;
         long ut;
@@ -14127,23 +15183,24 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SYSINFO_UPTIME 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysconf" >&5
-$as_echo_n "checking for sysconf... " >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SYSINFO_UPTIME 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysconf" >&5
+printf %s "checking for sysconf... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <unistd.h>
 int
-main ()
+main (void)
 {
 	(void)sysconf(_SC_PAGESIZE);
 	(void)sysconf(_SC_PHYS_PAGES);
@@ -14152,23 +15209,24 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SYSCONF 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
-$as_echo "not usable" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _SC_SIGSTKSZ via sysconf()" >&5
-$as_echo_n "checking for _SC_SIGSTKSZ via sysconf()... " >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SYSCONF 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
+printf "%s\n" "not usable" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _SC_SIGSTKSZ via sysconf()" >&5
+printf %s "checking for _SC_SIGSTKSZ via sysconf()... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <unistd.h>
 int
-main ()
+main (void)
 {
 	(void)sysconf(_SC_SIGSTKSZ);
 
@@ -14176,31 +15234,34 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_SYSCONF_SIGSTKSZ 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
-$as_echo "not usable" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+if ac_fn_c_try_compile "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_SYSCONF_SIGSTKSZ 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not usable" >&5
+printf "%s\n" "not usable" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5
+printf %s "checking size of int... " >&6; }
+if test ${ac_cv_sizeof_int+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"
+then :
+
+else $as_nop
   if test "$ac_cv_type_int" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (int)
 See \`config.log' for more details" "$LINENO" 5; }
    else
@@ -14209,31 +15270,31 @@ See \`config.log' for more details" "$LI
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
+printf "%s\n" "$ac_cv_sizeof_int" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
 
 
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+printf %s "checking size of long... " >&6; }
+if test ${ac_cv_sizeof_long+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"
+then :
+
+else $as_nop
   if test "$ac_cv_type_long" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (long)
 See \`config.log' for more details" "$LINENO" 5; }
    else
@@ -14242,31 +15303,31 @@ See \`config.log' for more details" "$LI
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+printf "%s\n" "$ac_cv_sizeof_long" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h
 
 
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
-$as_echo_n "checking size of time_t... " >&6; }
-if ${ac_cv_sizeof_time_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t"        "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
+printf %s "checking size of time_t... " >&6; }
+if test ${ac_cv_sizeof_time_t+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t"        "$ac_includes_default"
+then :
+
+else $as_nop
   if test "$ac_cv_type_time_t" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (time_t)
 See \`config.log' for more details" "$LINENO" 5; }
    else
@@ -14275,31 +15336,31 @@ See \`config.log' for more details" "$LI
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
-$as_echo "$ac_cv_sizeof_time_t" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_TIME_T $ac_cv_sizeof_time_t
-_ACEOF
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
+printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
 
 
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
 # This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
-$as_echo_n "checking size of off_t... " >&6; }
-if ${ac_cv_sizeof_off_t+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t"        "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5
+printf %s "checking size of off_t... " >&6; }
+if test ${ac_cv_sizeof_off_t+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t"        "$ac_includes_default"
+then :
+
+else $as_nop
   if test "$ac_cv_type_off_t" = yes; then
-     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+     { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error 77 "cannot compute sizeof (off_t)
 See \`config.log' for more details" "$LINENO" 5; }
    else
@@ -14308,32 +15369,27 @@ See \`config.log' for more details" "$LI
 fi
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
-$as_echo "$ac_cv_sizeof_off_t" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_OFF_T $ac_cv_sizeof_off_t
-_ACEOF
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define VIM_SIZEOF_INT $ac_cv_sizeof_int
-_ACEOF
-
-cat >>confdefs.h <<_ACEOF
-#define VIM_SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
-$as_echo_n "checking uint32_t is 32 bits... " >&6; }
-if test "$cross_compiling" = yes; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5
-$as_echo "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;}
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5
+printf "%s\n" "$ac_cv_sizeof_off_t" >&6; }
+
+
+
+printf "%s\n" "#define SIZEOF_OFF_T $ac_cv_sizeof_off_t" >>confdefs.h
+
+
+
+printf "%s\n" "#define VIM_SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h
+
+printf "%s\n" "#define VIM_SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking uint32_t is 32 bits" >&5
+printf %s "checking uint32_t is 32 bits... " >&6; }
+if test "$cross_compiling" = yes
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot check uint32_t when cross-compiling." >&5
+printf "%s\n" "$as_me: WARNING: cannot check uint32_t when cross-compiling." >&2;}
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -14350,10 +15406,11 @@ int main() {
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
-else
+if ac_fn_c_try_run "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+printf "%s\n" "ok" >&6; }
+else $as_nop
   as_fn_error $? "WRONG!  uint32_t not defined correctly." "$LINENO" 5
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -14384,26 +15441,29 @@ int main() {
   exit(0); /* libc version works properly.  */
 }'
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether memmove handles overlaps" >&5
-$as_echo_n "checking whether memmove handles overlaps... " >&6; }
-if ${vim_cv_memmove_handles_overlap+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether memmove handles overlaps" >&5
+printf %s "checking whether memmove handles overlaps... " >&6; }
+if test ${vim_cv_memmove_handles_overlap+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+    if test "$cross_compiling" = yes
+then :
 
 	as_fn_error $? "cross-compiling: please set 'vim_cv_memmove_handles_overlap'" "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
 	vim_cv_memmove_handles_overlap=yes
 
-else
+else $as_nop
 
 	vim_cv_memmove_handles_overlap=no
 
@@ -14414,33 +15474,36 @@ fi
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_memmove_handles_overlap" >&5
-$as_echo "$vim_cv_memmove_handles_overlap" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_memmove_handles_overlap" >&5
+printf "%s\n" "$vim_cv_memmove_handles_overlap" >&6; }
 
 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
-  $as_echo "#define USEMEMMOVE 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether bcopy handles overlaps" >&5
-$as_echo_n "checking whether bcopy handles overlaps... " >&6; }
-if ${vim_cv_bcopy_handles_overlap+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-      if test "$cross_compiling" = yes; then :
+  printf "%s\n" "#define USEMEMMOVE 1" >>confdefs.h
+
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether bcopy handles overlaps" >&5
+printf %s "checking whether bcopy handles overlaps... " >&6; }
+if test ${vim_cv_bcopy_handles_overlap+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+      if test "$cross_compiling" = yes
+then :
 
 	as_fn_error $? "cross-compiling: please set 'vim_cv_bcopy_handles_overlap'" "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
 	vim_cv_bcopy_handles_overlap=yes
 
-else
+else $as_nop
 
 	vim_cv_bcopy_handles_overlap=no
 
@@ -14451,33 +15514,36 @@ fi
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_bcopy_handles_overlap" >&5
-$as_echo "$vim_cv_bcopy_handles_overlap" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_bcopy_handles_overlap" >&5
+printf "%s\n" "$vim_cv_bcopy_handles_overlap" >&6; }
 
   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
-    $as_echo "#define USEBCOPY 1" >>confdefs.h
+    printf "%s\n" "#define USEBCOPY 1" >>confdefs.h
 
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether memcpy handles overlaps" >&5
-$as_echo_n "checking whether memcpy handles overlaps... " >&6; }
-if ${vim_cv_memcpy_handles_overlap+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-	if test "$cross_compiling" = yes; then :
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether memcpy handles overlaps" >&5
+printf %s "checking whether memcpy handles overlaps... " >&6; }
+if test ${vim_cv_memcpy_handles_overlap+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
+
+	if test "$cross_compiling" = yes
+then :
 
 	    as_fn_error $? "cross-compiling: please set 'vim_cv_memcpy_handles_overlap'" "$LINENO" 5
 
-else
+else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog
 _ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
 
 	    vim_cv_memcpy_handles_overlap=yes
 
-else
+else $as_nop
 
 	    vim_cv_memcpy_handles_overlap=no
 
@@ -14488,11 +15554,11 @@ fi
 
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vim_cv_memcpy_handles_overlap" >&5
-$as_echo "$vim_cv_memcpy_handles_overlap" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vim_cv_memcpy_handles_overlap" >&5
+printf "%s\n" "$vim_cv_memcpy_handles_overlap" >&6; }
 
     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
-      $as_echo "#define USEMEMCPY 1" >>confdefs.h
+      printf "%s\n" "#define USEMEMCPY 1" >>confdefs.h
 
     fi
   fi
@@ -14505,96 +15571,94 @@ if test "x$with_x" = "xyes"; then
   LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
   CFLAGS="$CFLAGS $X_CFLAGS"
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether X_LOCALE needed" >&5
-$as_echo_n "checking whether X_LOCALE needed... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether X_LOCALE needed" >&5
+printf %s "checking whether X_LOCALE needed... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <X11/Xlocale.h>
 int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+main (void)
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char _Xsetlocale ();
 int
-main ()
+main (void)
 {
 return _Xsetlocale ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	      $as_echo "#define X_LOCALE 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Xutf8SetWMProperties() can be used" >&5
-$as_echo_n "checking whether Xutf8SetWMProperties() can be used... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+	      printf "%s\n" "#define X_LOCALE 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Xutf8SetWMProperties() can be used" >&5
+printf %s "checking whether Xutf8SetWMProperties() can be used... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char Xutf8SetWMProperties ();
 int
-main ()
+main (void)
 {
 return Xutf8SetWMProperties ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	      $as_echo "#define HAVE_XUTF8SETWMPROPERTIES 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+	      printf "%s\n" "#define HAVE_XUTF8SETWMPROPERTIES 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 
   CFLAGS=$cflags_save
   LIBS=$libs_save
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _xpg4_setrunelocale in -lxpg4" >&5
-$as_echo_n "checking for _xpg4_setrunelocale in -lxpg4... " >&6; }
-if ${ac_cv_lib_xpg4__xpg4_setrunelocale+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _xpg4_setrunelocale in -lxpg4" >&5
+printf %s "checking for _xpg4_setrunelocale in -lxpg4... " >&6; }
+if test ${ac_cv_lib_xpg4__xpg4_setrunelocale+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lxpg4  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14603,36 +15667,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
 /* Override any GCC internal prototype to avoid an error.
    Use char because int might match the return type of a GCC
    builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
 char _xpg4_setrunelocale ();
 int
-main ()
+main (void)
 {
 return _xpg4_setrunelocale ();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
   ac_cv_lib_xpg4__xpg4_setrunelocale=yes
-else
+else $as_nop
   ac_cv_lib_xpg4__xpg4_setrunelocale=no
 fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5
-$as_echo "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; }
-if test "x$ac_cv_lib_xpg4__xpg4_setrunelocale" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xpg4__xpg4_setrunelocale" >&5
+printf "%s\n" "$ac_cv_lib_xpg4__xpg4_setrunelocale" >&6; }
+if test "x$ac_cv_lib_xpg4__xpg4_setrunelocale" = xyes
+then :
   LIBS="$LIBS -lxpg4"
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
-$as_echo_n "checking how to create tags... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create tags" >&5
+printf %s "checking how to create tags... " >&6; }
 test -f tags && mv tags tags.save
 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&5 2>&1; then
   TAGPRG="ctags -I INIT+,INIT2+,INIT3+,INIT4+,INIT5+ --fields=+S"
@@ -14651,33 +15714,34 @@ else
   (eval ctags -i+m /dev/null) < /dev/null 1>&5 2>&1 && TAGPRG="ctags -i+m"
 fi
 test -f tags.save && mv tags.save tags
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAGPRG" >&5
-$as_echo "$TAGPRG" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run man with a section nr" >&5
-$as_echo_n "checking how to run man with a section nr... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TAGPRG" >&5
+printf "%s\n" "$TAGPRG" >&6; }
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run man with a section nr" >&5
+printf %s "checking how to run man with a section nr... " >&6; }
 MANDEF="man"
 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&5 && MANDEF="man -s"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANDEF" >&5
-$as_echo "$MANDEF" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANDEF" >&5
+printf "%s\n" "$MANDEF" >&6; }
 if test "$MANDEF" = "man -s"; then
-  $as_echo "#define USEMAN_S 1" >>confdefs.h
-
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-nls argument" >&5
-$as_echo_n "checking --disable-nls argument... " >&6; }
+  printf "%s\n" "#define USEMAN_S 1" >>confdefs.h
+
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking --disable-nls argument" >&5
+printf %s "checking --disable-nls argument... " >&6; }
 # Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
+if test ${enable_nls+y}
+then :
   enableval=$enable_nls;
-else
+else $as_nop
   enable_nls="yes"
 fi
 
 
 if test "$enable_nls" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 
   INSTALL_LANGS=install-languages
 
@@ -14686,11 +15750,12 @@ if test "$enable_nls" = "yes"; then
 
   # Extract the first word of "msgfmt", so it can be a program name with args.
 set dummy msgfmt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MSGFMT+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MSGFMT+y}
+then :
+  printf %s "(cached) " >&6
+else $as_nop
   if test -n "$MSGFMT"; then
   ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
 else
@@ -14698,11 +15763,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
     for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
     ac_cv_prog_MSGFMT="msgfmt"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
@@ -14713,16 +15782,16 @@ fi
 fi
 MSGFMT=$ac_cv_prog_MSGFMT
 if test -n "$MSGFMT"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
-$as_echo "$MSGFMT" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NLS" >&5
-$as_echo_n "checking for NLS... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+printf "%s\n" "$MSGFMT" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for NLS" >&5
+printf %s "checking for NLS... " >&6; }
   if test -f po/Makefile; then
     have_gettext="no"
     if test -n "$MSGFMT"; then
@@ -14732,138 +15801,137 @@ fi
 /* end confdefs.h.  */
 #include <libintl.h>
 int
-main ()
+main (void)
 {
 gettext("Test");
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works" >&5
-$as_echo "gettext() works" >&6; }; have_gettext="yes"; LIBS=$olibs
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gettext() works" >&5
+printf "%s\n" "gettext() works" >&6; }; have_gettext="yes"; LIBS=$olibs
+else $as_nop
   LIBS="-lintl"
 	  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 int
-main ()
+main (void)
 {
 gettext("Test");
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() works with -lintl" >&5
-$as_echo "gettext() works with -lintl" >&6; }; have_gettext="yes";
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gettext() works with -lintl" >&5
+printf "%s\n" "gettext() works with -lintl" >&6; }; have_gettext="yes";
 	      LIBS="$olibs -lintl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: gettext() doesn't work" >&5
-$as_echo "gettext() doesn't work" >&6; };
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: gettext() doesn't work" >&5
+printf "%s\n" "gettext() doesn't work" >&6; };
 	      LIBS=$olibs
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: msgfmt not found - disabled" >&5
-$as_echo "msgfmt not found - disabled" >&6; };
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: msgfmt not found - disabled" >&5
+printf "%s\n" "msgfmt not found - disabled" >&6; };
     fi
     if test $have_gettext = "yes" -a "x$features" != "xtiny"; then
-      $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+      printf "%s\n" "#define HAVE_GETTEXT 1" >>confdefs.h
 
       MAKEMO=yes
 
-            for ac_func in bind_textdomain_codeset
-do :
-  ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
-if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_BIND_TEXTDOMAIN_CODESET 1
-_ACEOF
-
-fi
-done
-
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _nl_msg_cat_cntr" >&5
-$as_echo_n "checking for _nl_msg_cat_cntr... " >&6; }
+            ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset"
+if test "x$ac_cv_func_bind_textdomain_codeset" = xyes
+then :
+  printf "%s\n" "#define HAVE_BIND_TEXTDOMAIN_CODESET 1" >>confdefs.h
+
+fi
+
+            { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _nl_msg_cat_cntr" >&5
+printf %s "checking for _nl_msg_cat_cntr... " >&6; }
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <libintl.h>
 		extern int _nl_msg_cat_cntr;
 int
-main ()
+main (void)
 {
 ++_nl_msg_cat_cntr;
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }; $as_echo "#define HAVE_NL_MSG_CAT_CNTR 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt supports --desktop" >&5
-$as_echo_n "checking if msgfmt supports --desktop... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }; printf "%s\n" "#define HAVE_NL_MSG_CAT_CNTR 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if msgfmt supports --desktop" >&5
+printf %s "checking if msgfmt supports --desktop... " >&6; }
       MSGFMT_DESKTOP=
       if "$MSGFMT" --help | grep -e '--desktop' >/dev/null; then
 	if "$MSGFMT" --version | grep '0.19.[3-7]$' >/dev/null; then
-	  	  	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: broken" >&5
-$as_echo "broken" >&6; }
+	  	  	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: broken" >&5
+printf "%s\n" "broken" >&6; }
 	else
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
 	  MSGFMT_DESKTOP="gvim.desktop vim.desktop"
 	fi
       else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
       fi
 
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no \"po/Makefile\" - disabled" >&5
-$as_echo "no \"po/Makefile\" - disabled" >&6; };
-  fi
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-
-ac_fn_c_check_header_mongrel "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no \"po/Makefile\" - disabled" >&5
+printf "%s\n" "no \"po/Makefile\" - disabled" >&6; };
+  fi
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+
+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default"
+if test "x$ac_cv_header_dlfcn_h" = xyes
+then :
   DLL=dlfcn.h
-else
-  ac_fn_c_check_header_mongrel "$LINENO" "dl.h" "ac_cv_header_dl_h" "$ac_includes_default"
-if test "x$ac_cv_header_dl_h" = xyes; then :
+else $as_nop
+  ac_fn_c_check_header_compile "$LINENO" "dl.h" "ac_cv_header_dl_h" "$ac_includes_default"
+if test "x$ac_cv_header_dl_h" = xyes
+then :
   DLL=dl.h
 fi
 
-
-fi
-
+fi
 
 if test x${DLL} = xdlfcn.h; then
 
-$as_echo "#define HAVE_DLFCN_H 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen()" >&5
-$as_echo_n "checking for dlopen()... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
+printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen()" >&5
+printf %s "checking for dlopen()... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
 {
 
 		extern void* dlopen();
@@ -14873,24 +15941,25 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_DLOPEN 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
-	      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen() in -ldl" >&5
-$as_echo_n "checking for dlopen() in -ldl... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
+
+printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
+	      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen() in -ldl" >&5
+printf %s "checking for dlopen() in -ldl... " >&6; }
 	      olibs=$LIBS
 	      LIBS="$LIBS -ldl"
 	      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
 				extern void* dlopen();
@@ -14900,29 +15969,30 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_DLOPEN 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
+
+printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
 			  LIBS=$olibs
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym()" >&5
-$as_echo_n "checking for dlsym()... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlsym()" >&5
+printf %s "checking for dlsym()... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
 {
 
 		extern void* dlsym();
@@ -14932,24 +16002,25 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_DLSYM 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
-	      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym() in -ldl" >&5
-$as_echo_n "checking for dlsym() in -ldl... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
+
+printf "%s\n" "#define HAVE_DLSYM 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
+	      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlsym() in -ldl" >&5
+printf %s "checking for dlsym() in -ldl... " >&6; }
 	      olibs=$LIBS
 	      LIBS="$LIBS -ldl"
 	      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
 				extern void* dlsym();
@@ -14959,33 +16030,34 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_DLSYM 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
+
+printf "%s\n" "#define HAVE_DLSYM 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
 			  LIBS=$olibs
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
     conftest$ac_exeext conftest.$ac_ext
 elif test x${DLL} = xdl.h; then
 
-$as_echo "#define HAVE_DL_H 1" >>confdefs.h
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load()" >&5
-$as_echo_n "checking for shl_load()... " >&6; }
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
+printf "%s\n" "#define HAVE_DL_H 1" >>confdefs.h
+
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load()" >&5
+printf %s "checking for shl_load()... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main (void)
 {
 
 		extern void* shl_load();
@@ -14995,24 +16067,25 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_SHL_LOAD 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
-	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load() in -ldld" >&5
-$as_echo_n "checking for shl_load() in -ldld... " >&6; }
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
+
+printf "%s\n" "#define HAVE_SHL_LOAD 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load() in -ldld" >&5
+printf %s "checking for shl_load() in -ldld... " >&6; }
 	  olibs=$LIBS
 	  LIBS="$LIBS -ldld"
 	  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
-main ()
+main (void)
 {
 
 			extern void* shl_load();
@@ -15022,34 +16095,30 @@ main ()
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; };
-
-$as_echo "#define HAVE_SHL_LOAD 1" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; };
+if ac_fn_c_try_link "$LINENO"
+then :
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; };
+
+printf "%s\n" "#define HAVE_SHL_LOAD 1" >>confdefs.h
+
+else $as_nop
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; };
 		  LIBS=$olibs
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-fi
-for ac_header in setjmp.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default"
-if test "x$ac_cv_header_setjmp_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_SETJMP_H 1
-_ACEOF
-
-fi
-
-done
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+ac_fn_c_check_header_compile "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$ac_includes_default"
+if test "x$ac_cv_header_setjmp_h" = xyes
+then :
+  printf "%s\n" "#define HAVE_SETJMP_H 1" >>confdefs.h
+
+fi
 
 
 if test "x$MACOS_X" = "xyes" -a -n "$PERL"; then
@@ -15060,23 +16129,23 @@ if test "x$MACOS_X" = "xyes" -a -n "$PER
 fi
 
 if test "$MACOS_X" = "yes"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need macOS frameworks" >&5
-$as_echo_n "checking whether we need macOS frameworks... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need macOS frameworks" >&5
+printf %s "checking whether we need macOS frameworks... " >&6; }
   if test "$MACOS_X_DARWIN" = "yes"; then
     if test "$features" = "tiny"; then
             OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
       OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, we need CoreServices" >&5
-$as_echo "yes, we need CoreServices" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, we need CoreServices" >&5
+printf "%s\n" "yes, we need CoreServices" >&6; }
       LIBS="$LIBS -framework CoreServices"
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, we need AppKit" >&5
-$as_echo "yes, we need AppKit" >&6; }
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, we need AppKit" >&5
+printf "%s\n" "yes, we need AppKit" >&6; }
       LIBS="$LIBS -framework AppKit"
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
   fi
 fi
 
@@ -15086,47 +16155,47 @@ fi
 
 DEPEND_CFLAGS_FILTER=
 if test "$GCC" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC 3 or later" >&5
-$as_echo_n "checking for GCC 3 or later... " >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GCC 3 or later" >&5
+printf %s "checking for GCC 3 or later... " >&6; }
   gccmajor=`echo "$gccversion" | sed -e 's/^\([1-9][0-9]*\)\..*$/\1/g'`
   if test "$gccmajor" -gt "2"; then
     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  fi
-          { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5
-$as_echo_n "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  fi
+          { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need -D_FORTIFY_SOURCE=1" >&5
+printf %s "checking whether we need -D_FORTIFY_SOURCE=1... " >&6; }
   if test "$gccmajor" -gt "3"; then
     CFLAGS=`echo "$CFLAGS" | sed -e 's/-D_FORTIFY_SOURCE=.,//g' -e 's/ *-Wp,-D_FORTIFY_SOURCE=. / /g' -e 's/,-D_FORTIFY_SOURCE=. //g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-Wp,-U_FORTIFY_SOURCE/ /g' -e 's/ *-U_FORTIFY_SOURCE//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
     CPPFLAGS=`echo "$CPPFLAGS" | sed -e 's/-D_FORTIFY_SOURCE=.,//g' -e 's/ *-Wp,-D_FORTIFY_SOURCE=. / /g' -e 's/,-D_FORTIFY_SOURCE=. //g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-Wp,-U_FORTIFY_SOURCE/ /g' -e 's/ *-U_FORTIFY_SOURCE//g'`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  fi
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need to force -D_FILE_OFFSET_BITS=64" >&5
-$as_echo_n "checking whether we need to force -D_FILE_OFFSET_BITS=64... " >&6; }
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+  fi
+fi
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need to force -D_FILE_OFFSET_BITS=64" >&5
+printf %s "checking whether we need to force -D_FILE_OFFSET_BITS=64... " >&6; }
 if echo "$CFLAGS $LUA_CFLAGS $MZSCHEME_CFLAGS $PERL_CFLAGS $PYTHON_CFLAGS $PYTHON3_CFLAGS $TCL_CFLAGS $RUBY_CFLAGS $GTK_CFLAGS" | grep -q D_FILE_OFFSET_BITS 2>/dev/null; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-  $as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+  printf "%s\n" "#define _FILE_OFFSET_BITS 64" >>confdefs.h
+
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/-L /-L/g'`
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5
-$as_echo_n "checking linker --as-needed support... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking linker --as-needed support" >&5
+printf %s "checking linker --as-needed support... " >&6; }
 LINK_AS_NEEDED=
 # Check if linker supports --as-needed and --no-as-needed options
 if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
@@ -15136,11 +16205,11 @@ if $CC -Wl,--help 2>/dev/null | grep as-
   LINK_AS_NEEDED=yes
 fi
 if test "$LINK_AS_NEEDED" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
 fi
 
 
@@ -15178,8 +16247,8 @@ cat >confcache <<\_ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
@@ -15209,15 +16278,15 @@ cat >confcache <<\_ACEOF
      /^ac_cv_env_/b end
      t clear
      :clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
      t end
      s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
      :end' >>confcache
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     if test "x$cache_file" != "x/dev/null"; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
       if test ! -f "$cache_file" || test -h "$cache_file"; then
 	cat confcache >"$cache_file"
       else
@@ -15231,8 +16300,8 @@ if diff "$cache_file" confcache >/dev/nu
       fi
     fi
   else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -15249,7 +16318,7 @@ U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
   as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -15266,8 +16335,8 @@ LTLIBOBJS=$ac_ltlibobjs
 ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
 as_write_fail=0
 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
@@ -15290,14 +16359,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_wri
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
   emulate sh
   NULLCMD=:
   # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
-else
+else $as_nop
   case `(set -o) 2>/dev/null` in #(
   *posix*) :
     set -o posix ;; #(
@@ -15307,46 +16378,46 @@ esac
 fi
 
 
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
 as_nl='
 '
 export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-	expr "X$arg" : "X\\(.*\\)$as_nl";
-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" ""	$as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi
 
 # The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
   PATH_SEPARATOR=:
   (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
     (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -15355,13 +16426,6 @@ if test "${PATH_SEPARATOR+set}" != set; 
 fi
 
 
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""	$as_nl"
-
 # Find who we are.  Look in the path if we contain no directory separator.
 as_myself=
 case $0 in #((
@@ -15370,8 +16434,12 @@ case $0 in #((
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  case $as_dir in #(((
+    '') as_dir=./ ;;
+    */) ;;
+    *) as_dir=$as_dir/ ;;
+  esac
+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break
   done
 IFS=$as_save_IFS
 
@@ -15383,30 +16451,10 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
   exit 1
 fi
 
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
 # as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -15419,13 +16467,14 @@ as_fn_error ()
   as_status=$1; test $as_status -eq 0 && as_status=1
   if test "$4"; then
     as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  printf "%s\n" "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
 
+
 # as_fn_set_status STATUS
 # -----------------------
 # Set $? to STATUS, without forking.
@@ -15452,18 +16501,20 @@ as_fn_unset ()
   { eval $1=; unset $1;}
 }
 as_unset=as_fn_unset
+
 # as_fn_append VAR VALUE
 # ----------------------
 # Append the text in VALUE to the end of the definition contained in VAR. Take
 # advantage of any shell optimizations that allow amortized linear growth over
 # repeated appends, instead of the typical quadratic growth present in naive
 # implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
   eval 'as_fn_append ()
   {
     eval $1+=\$2
   }'
-else
+else $as_nop
   as_fn_append ()
   {
     eval $1=\$$1\$2
@@ -15475,12 +16526,13 @@ fi # as_fn_append
 # Perform arithmetic evaluation on the ARGs, and store the result in the
 # global $as_val. Take advantage of shells that can avoid forks. The arguments
 # must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
   eval 'as_fn_arith ()
   {
     as_val=$(( $* ))
   }'
-else
+else $as_nop
   as_fn_arith ()
   {
     as_val=`expr "$@" || test $? -eq 1`
@@ -15511,7 +16563,7 @@ as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -15533,6 +16585,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTE
 as_cr_digits='0123456789'
 as_cr_alnum=$as_cr_Letters$as_cr_digits
 
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
 ECHO_C= ECHO_N= ECHO_T=
 case `echo -n x` in #(((((
 -n*)
@@ -15546,6 +16602,12 @@ case `echo -n x` in #(((((
   ECHO_N='-n';;
 esac
 
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n.  New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
@@ -15587,7 +16649,7 @@ as_fn_mkdir_p ()
     as_dirs=
     while :; do
       case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
       *) as_qdir=$as_dir;;
       esac
       as_dirs="'$as_qdir' $as_dirs"
@@ -15596,7 +16658,7 @@ as_fn_mkdir_p ()
 	 X"$as_dir" : 'X\(//\)[^/]' \| \
 	 X"$as_dir" : 'X\(//\)$' \| \
 	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -15659,7 +16721,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # values after options handling.
 ac_log="
 This file was extended by $as_me, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
+generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -15717,14 +16779,16 @@ Configuration headers:
 Report bugs to the package provider."
 
 _ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.69,
+configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
@@ -15762,15 +16826,15 @@ do
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    $as_echo "$ac_cs_version"; exit ;;
+    printf "%s\n" "$ac_cs_version"; exit ;;
   --config | --confi | --conf | --con | --co | --c )
-    $as_echo "$ac_cs_config"; exit ;;
+    printf "%s\n" "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     '') as_fn_error $? "missing file argument" ;;
     esac
     as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -15778,7 +16842,7 @@ do
   --header | --heade | --head | --hea )
     $ac_shift
     case $ac_optarg in
-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
@@ -15787,7 +16851,7 @@ do
     as_fn_error $? "ambiguous option: \`$1'
 Try \`$0 --help' for more information.";;
   --help | --hel | -h )
-    $as_echo "$ac_cs_usage"; exit ;;
+    printf "%s\n" "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
@@ -15815,7 +16879,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
 if \$ac_cs_recheck; then
   set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
   shift
-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
   CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
   exec "\$@"
@@ -15829,7 +16893,7 @@ exec 5>>auto/config.log
   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 ## Running $as_me. ##
 _ASBOX
-  $as_echo "$ac_log"
+  printf "%s\n" "$ac_log"
 } >&5
 
 _ACEOF
@@ -15855,8 +16919,8 @@ done
 # We use the long form for the default assignment because of an extremely
 # bizarre bug on SunOS 4.1.3.
 if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+  test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
 fi
 
 # Have a temporary directory for convenience.  Make it in the build tree
@@ -16192,7 +17256,7 @@ do
 	   esac ||
 	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
       as_fn_append ac_file_inputs " '$ac_f'"
     done
 
@@ -16200,17 +17264,17 @@ do
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
     configure_input='Generated from '`
-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	  printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
 	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
     fi
     # Neutralize special characters interpreted by sed in replacement strings.
     case $configure_input in #(
     *\&* | *\|* | *\\* )
-       ac_sed_conf_input=`$as_echo "$configure_input" |
+       ac_sed_conf_input=`printf "%s\n" "$configure_input" |
        sed 's/[\\\\&|]/\\\\&/g'`;; #(
     *) ac_sed_conf_input=$configure_input;;
     esac
@@ -16227,7 +17291,7 @@ do
 	 X"$ac_file" : 'X\(//\)[^/]' \| \
 	 X"$ac_file" : 'X\(//\)$' \| \
 	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -16251,9 +17315,9 @@ do
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -16306,8 +17370,8 @@ ac_sed_dataroot='
 case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
@@ -16349,9 +17413,9 @@ test -z "$ac_datarootdir_hack$ac_dataroo
   { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' \
       "$ac_tmp/out"`; test -z "$ac_out"; } &&
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
 which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$ac_tmp/stdin"
@@ -16367,20 +17431,20 @@ which seems to be undefined.  Please mak
   #
   if test x"$ac_file" != x-; then
     {
-      $as_echo "/* $configure_input  */" \
+      printf "%s\n" "/* $configure_input  */" >&1 \
       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
     } >"$ac_tmp/config.h" \
       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
     else
       rm -f "$ac_file"
       mv "$ac_tmp/config.h" "$ac_file" \
 	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
-    $as_echo "/* $configure_input  */" \
+    printf "%s\n" "/* $configure_input  */" >&1 \
       && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
       || as_fn_error $? "could not create -" "$LINENO" 5
   fi
@@ -16421,8 +17485,9 @@ if test "$no_create" != yes; then
   $ac_cs_success || as_fn_exit 1
 fi
 if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
-fi
-
-
+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
+
+
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -5777,7 +5777,7 @@ bt_normal(buf_T *buf)
 bt_quickfix(buf_T *buf UNUSED)
 {
 #ifdef FEAT_QUICKFIX
-    return buf != NULL && buf->b_p_bt[0] == 'q';
+    return buf != NULL && buf_valid(buf) && buf->b_p_bt[0] == 'q';
 #else
     return FALSE;
 #endif
--- a/src/charset.c
+++ b/src/charset.c
@@ -809,7 +809,7 @@ win_linetabsize_cts(chartabsize_T *cts, 
 	cts->cts_vcol += win_lbr_chartabsize(cts, NULL);
 #ifdef FEAT_PROP_POPUP
     // check for a virtual text at the end of a line or on an empty line
-    if (cts->cts_has_prop_with_text && *cts->cts_ptr == NUL)
+    if (len == MAXCOL && cts->cts_has_prop_with_text && *cts->cts_ptr == NUL)
     {
 	(void)win_lbr_chartabsize(cts, NULL);
 	cts->cts_vcol += cts->cts_cur_text_width;
@@ -1118,14 +1118,8 @@ win_lbr_chartabsize(
     char_u	*s = cts->cts_ptr;
     colnr_T	vcol = cts->cts_vcol;
 #ifdef FEAT_LINEBREAK
-    int		c;
     int		size;
-    colnr_T	col2;
-    colnr_T	col_adj = 0; // vcol + screen size of tab
-    colnr_T	colmax;
     int		mb_added = 0;
-    char_u	*ps;
-    int		tab_corr = (*s == TAB);
     int		n;
     char_u	*sbr;
     int		no_sbr = FALSE;
@@ -1157,12 +1151,17 @@ win_lbr_chartabsize(
     }
 
 #if defined(FEAT_LINEBREAK) || defined(FEAT_PROP_POPUP)
+    int has_lcs_eol = wp->w_p_list && wp->w_lcs_chars.eol != NUL;
+
     /*
      * First get the normal size, without 'linebreak' or text properties
      */
     size = win_chartabsize(wp, s, vcol);
-    if (*s == NUL)
+    if (*s == NUL && !has_lcs_eol)
 	size = 0;  // NUL is not displayed
+# ifdef FEAT_LINEBREAK
+    int is_doublewidth = has_mbyte && size == 2 && MB_BYTE2LEN(*s) > 1;
+# endif
 
 # ifdef FEAT_PROP_POPUP
     if (cts->cts_has_prop_with_text)
@@ -1175,8 +1174,11 @@ win_lbr_chartabsize(
 
 	// The "$" for 'list' mode will go between the EOL and
 	// the text prop, account for that.
-	if (wp->w_p_list && wp->w_lcs_chars.eol != NUL)
+	if (has_lcs_eol)
+	{
 	    ++vcol;
+	    --size;
+	}
 
 	for (i = 0; i < cts->cts_text_prop_count; ++i)
 	{
@@ -1191,8 +1193,7 @@ win_lbr_chartabsize(
 		       || (tp->tp_col == MAXCOL
 			   && ((tp->tp_flags & TP_FLAG_ALIGN_ABOVE)
 				? col == 0
-				: s[0] == NUL
-						  && cts->cts_with_trailing)))
+				: s[0] == NUL && cts->cts_with_trailing)))
 		    && -tp->tp_id - 1 < gap->ga_len)
 	    {
 		char_u *p = ((char_u **)gap->ga_data)[-tp->tp_id - 1];
@@ -1208,17 +1209,18 @@ win_lbr_chartabsize(
 			cells = text_prop_position(wp, tp, vcol,
 			     (vcol + size) % (wp->w_width - col_off) + col_off,
 					      &n_extra, &p, NULL, NULL, FALSE);
-#ifdef FEAT_LINEBREAK
+#  ifdef FEAT_LINEBREAK
 			no_sbr = TRUE;  // don't use 'showbreak' now
-#endif
+#  endif
 		    }
 		    else
 			cells = vim_strsize(p);
 		    cts->cts_cur_text_width += cells;
 		    if (tp->tp_flags & TP_FLAG_ALIGN_ABOVE)
 			cts->cts_first_char += cells;
+		    else
+			size += cells;
 		    cts->cts_start_incl = tp->tp_flags & TP_FLAG_START_INCL;
-		    size += cells;
 		    if (*s == TAB)
 		    {
 			// tab size changes because of the inserted text
@@ -1235,62 +1237,16 @@ win_lbr_chartabsize(
 	    if (tp->tp_col != MAXCOL && tp->tp_col - 1 > col)
 		break;
 	}
-	if (wp->w_p_list && wp->w_lcs_chars.eol != NUL)
+	if (has_lcs_eol)
+	{
 	    --vcol;
+	    ++size;
+	}
     }
 # endif
 
 # ifdef FEAT_LINEBREAK
-    c = *s;
-    if (tab_corr)
-	col_adj = size - 1;
-
-    /*
-     * If 'linebreak' set check at a blank before a non-blank if the line
-     * needs a break here
-     */
-    if (wp->w_p_lbr
-	    && VIM_ISBREAK(c)
-	    && !VIM_ISBREAK((int)s[1])
-	    && wp->w_p_wrap
-	    && wp->w_width != 0)
-    {
-	/*
-	 * Count all characters from first non-blank after a blank up to next
-	 * non-blank after a blank.
-	 */
-	int numberextra = win_col_off(wp);
-	col2 = vcol;
-	colmax = (colnr_T)(wp->w_width - numberextra - col_adj);
-	if (vcol >= colmax)
-	{
-	    colmax += col_adj;
-	    n = colmax +  win_col_off2(wp);
-	    if (n > 0)
-		colmax += (((vcol - colmax) / n) + 1) * n - col_adj;
-	}
-
-	for (;;)
-	{
-	    ps = s;
-	    MB_PTR_ADV(s);
-	    c = *s;
-	    if (!(c != NUL
-		    && (VIM_ISBREAK(c)
-			|| (!VIM_ISBREAK(c)
-			       && (col2 == vcol || !VIM_ISBREAK((int)*ps))))))
-		break;
-
-	    col2 += win_chartabsize(wp, s, col2);
-	    if (col2 >= colmax)		// doesn't fit
-	    {
-		size = colmax - vcol + col_adj;
-		break;
-	    }
-	}
-    }
-    else if (has_mbyte && size == 2 && MB_BYTE2LEN(*s) > 1
-				   && wp->w_p_wrap && in_win_border(wp, vcol))
+    if (is_doublewidth && wp->w_p_wrap && in_win_border(wp, vcol + size - 2))
     {
 	++size;		// Count the ">" in the last column.
 	mb_added = 1;
@@ -1298,20 +1254,22 @@ win_lbr_chartabsize(
 
     /*
      * May have to add something for 'breakindent' and/or 'showbreak'
-     * string at start of line.
-     * Do not use 'showbreak' at the NUL after the text.
+     * string at the start of a screen line.
      */
     int head = mb_added;
-    sbr = (c == NUL || no_sbr) ? empty_option : get_showbreak_value(wp);
-    if ((*sbr != NUL || wp->w_p_bri) && wp->w_p_wrap)
+    sbr = no_sbr ? empty_option : get_showbreak_value(wp);
+    // When "size" is 0, no new screen line is started.
+    if (size > 0 && wp->w_p_wrap && (*sbr != NUL || wp->w_p_bri))
     {
 	int	col_off_prev = win_col_off(wp);
 	int	width2 = wp->w_width - col_off_prev + win_col_off2(wp);
-	vcol += mb_added;
-#ifdef FEAT_PROP_POPUP
-	vcol -= wp->w_virtcol_first_char;
-#endif
 	colnr_T	wcol = vcol + col_off_prev;
+#  ifdef FEAT_PROP_POPUP
+	wcol -= wp->w_virtcol_first_char;
+#  endif
+	colnr_T	max_head_vcol = cts->cts_max_head_vcol;
+	int	added = 0;
+
 	// cells taken by 'showbreak'/'breakindent' before current char
 	int	head_prev = 0;
 	if (wcol >= wp->w_width)
@@ -1325,67 +1283,112 @@ win_lbr_chartabsize(
 	    if (wp->w_p_bri)
 		head_prev += get_breakindent_win(wp, line);
 	    if (wcol < head_prev)
-		wcol = head_prev;
-	    wcol += col_off_prev;
-	}
-
-	if ((vcol > 0 && wcol == col_off_prev + head_prev)
-						  || wcol + size > wp->w_width)
-	{
-	    int added = 0;
-	    colnr_T max_head_vcol = cts->cts_max_head_vcol;
-
-	    if (vcol > 0 && wcol == col_off_prev + head_prev)
 	    {
+		head_prev -= wcol;
+		wcol += head_prev;
 		added += head_prev;
 		if (max_head_vcol <= 0 || vcol < max_head_vcol)
 		    head += head_prev;
 	    }
+	    else
+		head_prev = 0;
+	    wcol += col_off_prev;
+	}
 
+	if (wcol + size > wp->w_width)
+	{
 	    // cells taken by 'showbreak'/'breakindent' halfway current char
 	    int	head_mid = 0;
 	    if (*sbr != NUL)
 		head_mid += vim_strsize(sbr);
 	    if (wp->w_p_bri)
 		head_mid += get_breakindent_win(wp, line);
-	    if (head_mid > 0)
+	    if (head_mid > 0 && wcol + size > wp->w_width)
 	    {
-		if (wcol + size > wp->w_width)
+		// Calculate effective window width.
+		int prev_rem = wp->w_width - wcol;
+		int width = width2 - head_mid;
+
+		if (width <= 0)
+		    width = 1;
+		// Divide "size - prev_rem" by "width", rounding up.
+		int cnt = (size - prev_rem + width - 1) / width;
+		added += cnt * head_mid;
+
+		if (max_head_vcol == 0 || vcol + size + added < max_head_vcol)
+		    head += cnt * head_mid;
+		else if (max_head_vcol > vcol + head_prev + prev_rem)
+		    head += (max_head_vcol - (vcol + head_prev + prev_rem)
+					     + width2 - 1) / width2 * head_mid;
+#  ifdef FEAT_PROP_POPUP
+		else if (max_head_vcol < 0)
 		{
-		    // calculate effective window width
-		    int prev_rem = wp->w_width - wcol;
-		    int width = width2 - head_mid;
+		    int off = 0;
+		    if (*s != NUL
+			     && ((State & MODE_NORMAL) || cts->cts_start_incl))
+			off += cts->cts_cur_text_width;
+		    if (off >= prev_rem)
+			head += (1 + (off - prev_rem) / width) * head_mid;
+		}
+#  endif
+	    }
+	}
 
-		    if (width <= 0)
-			width = 1;
-		    // divide "size - prev_width" by "width", rounding up
-		    int cnt = (size - prev_rem + width - 1) / width;
-		    added += cnt * head_mid;
+	size += added;
+    }
+
+    if (headp != NULL)
+	*headp = head;
 
-		    if (max_head_vcol == 0
-					|| vcol + size + added < max_head_vcol)
-			head += cnt * head_mid;
-		    else if (max_head_vcol > vcol + head_prev + prev_rem)
-			head += (max_head_vcol - (vcol + head_prev + prev_rem)
-					     + width2 - 1) / width2 * head_mid;
-#ifdef FEAT_PROP_POPUP
-		    else if (max_head_vcol < 0)
-		    {
-			int off = 0;
-			if ((State & MODE_NORMAL) || cts->cts_start_incl)
-			    off += cts->cts_cur_text_width;
-			if (off >= prev_rem)
-			    head += (1 + (off - prev_rem) / width) * head_mid;
-		    }
-#endif
-		}
+    /*
+     * If 'linebreak' set check at a blank before a non-blank if the line
+     * needs a break here
+     */
+    if (wp->w_p_lbr
+	    && VIM_ISBREAK((int)s[0])
+	    && !VIM_ISBREAK((int)s[1])
+	    && wp->w_p_wrap
+	    && wp->w_width != 0)
+    {
+	/*
+	 * Count all characters from first non-blank after a blank up to next
+	 * non-blank after a blank.
+	 */
+	int numberextra = win_col_off(wp);
+	colnr_T col_adj = size - 1;
+	colnr_T colmax = (colnr_T)(wp->w_width - numberextra - col_adj);
+	if (vcol >= colmax)
+	{
+	    colmax += col_adj;
+	    n = colmax +  win_col_off2(wp);
+	    if (n > 0)
+		colmax += (((vcol - colmax) / n) + 1) * n - col_adj;
+	}
+
+	colnr_T vcol2 = vcol;
+	for (;;)
+	{
+	    char_u *ps = s;
+	    MB_PTR_ADV(s);
+	    int c = *s;
+	    if (!(c != NUL
+		    && (VIM_ISBREAK(c)
+			|| (!VIM_ISBREAK(c)
+			       && (vcol2 == vcol || !VIM_ISBREAK((int)*ps))))))
+		break;
+
+	    vcol2 += win_chartabsize(wp, s, vcol2);
+	    if (vcol2 >= colmax)		// doesn't fit
+	    {
+		size = colmax - vcol + col_adj;
+		break;
 	    }
-
-	    size += added;
 	}
     }
-    if (headp != NULL)
-	*headp = head;
+
+#  ifdef FEAT_PROP_POPUP
+    size += cts->cts_first_char;
+#  endif
     return size;
 # endif
 #endif
--- a/src/cmdexpand.c
+++ b/src/cmdexpand.c
@@ -4022,7 +4022,7 @@ f_getcompletion(typval_T *argvars, typva
     {
 	xpc.xp_pattern = pat;
 	xpc.xp_pattern_len = (int)STRLEN(xpc.xp_pattern);
-        xpc.xp_line = pat;
+	xpc.xp_line = pat;
 
 	xpc.xp_context = cmdcomplete_str_to_type(type);
 	if (xpc.xp_context == EXPAND_NOTHING)
@@ -4033,26 +4033,26 @@ f_getcompletion(typval_T *argvars, typva
 
 	if (xpc.xp_context == EXPAND_USER_DEFINED)
 	{
-            // Must be "custom,funcname" pattern
-            if (STRNCMP(type, "custom,", 7) != 0)
-            {
-                semsg(_(e_invalid_argument_str), type);
-                return;
-            }
-
-            xpc.xp_arg = type + 7;
+	    // Must be "custom,funcname" pattern
+	    if (STRNCMP(type, "custom,", 7) != 0)
+	    {
+		semsg(_(e_invalid_argument_str), type);
+		return;
+	    }
+
+	    xpc.xp_arg = type + 7;
 	}
 
 	if (xpc.xp_context == EXPAND_USER_LIST)
 	{
-            // Must be "customlist,funcname" pattern
-            if (STRNCMP(type, "customlist,", 11) != 0)
-            {
-                semsg(_(e_invalid_argument_str), type);
-                return;
-            }
-
-            xpc.xp_arg = type + 11;
+	    // Must be "customlist,funcname" pattern
+	    if (STRNCMP(type, "customlist,", 11) != 0)
+	    {
+		semsg(_(e_invalid_argument_str), type);
+		return;
+	    }
+
+	    xpc.xp_arg = type + 11;
 	}
 
 # if defined(FEAT_MENU)
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -1,10 +1,9 @@
 dnl configure.ac: autoconf script for Vim
 
-dnl Process this file with autoconf 2.69 to produce "configure".
-dnl This should also work with other versions of autoconf, but 2.70 and later
-dnl generate lots of hard to fix "obsolete" warnings.
-
-AC_INIT(vim.h)
+dnl Process this file with autoconf 2.71 to produce "configure".
+
+AC_INIT
+AC_CONFIG_SRCDIR([vim.h])
 AC_CONFIG_HEADERS(auto/config.h:config.h.in)
 
 dnl Being able to run configure means the system is Unix (compatible).
@@ -12,11 +11,10 @@ AC_DEFINE(UNIX)
 AC_PROG_MAKE_SET
 
 dnl Checks for programs.
-AC_PROG_CC_C99		dnl required by almost everything
+AC_PROG_CC		dnl required by almost everything
 AC_PROG_CPP		dnl required by header file checks
-AC_PROGRAM_EGREP	dnl required by AC_EGREP_CPP
+AC_PROG_EGREP		dnl required by AC_EGREP_CPP
 AC_PROG_FGREP		dnl finds working grep -F
-AC_ISC_POSIX		dnl required by AC_C_CROSS
 AC_PROG_AWK		dnl required for "make html" in ../doc
 
 dnl Don't strip if we don't have it
@@ -25,9 +23,6 @@ AC_CHECK_PROG(STRIP, strip, strip, :)
 dnl Check for extension of executables
 AC_EXEEXT
 
-dnl Check for standard headers.  We don't use this in Vim but other stuff
-dnl in autoconf needs it, where it uses STDC_HEADERS.
-AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
 
 dnl Check that the C99 features that Vim uses are supported:
@@ -638,7 +633,7 @@ if test "$enable_luainterp" = "yes" -o "
       if test "X$vi_cv_path_luajit" != "X"; then
 	dnl -- find LuaJIT version
 	AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
-	[ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ])
+       [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-*[[a-z0-9]]*\)* .*/\1/'` ])
 	AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
 	[ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
 	vi_cv_path_lua="$vi_cv_path_luajit"
@@ -1218,6 +1213,7 @@ if test "$enable_perlinterp" = "yes" -o 
     if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
       AC_DEFINE(DYNAMIC_PERL)
       PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
+      PERL_LIBS=""
     fi
   fi
 
@@ -1543,6 +1539,18 @@ if test "$enable_python3interp" = "yes" 
        ${vi_cv_path_python3} -c \
        "import sys; print(sys.exec_prefix)"` ])
 
+      dnl -- python3's include path
+      AC_CACHE_CHECK(Python's include path,vi_cv_path_python3_include,
+      [ vi_cv_path_python3_include=`
+       ${vi_cv_path_python3} -c \
+       "import sysconfig; print(sysconfig.get_path(\"include\"))"` ])
+
+      dnl -- python3's platform include path
+      AC_CACHE_CHECK(Python's include path,vi_cv_path_python3_platinclude,
+      [ vi_cv_path_python3_platinclude=`
+       ${vi_cv_path_python3} -c \
+       "import sysconfig; print(sysconfig.get_path(\"platinclude\"))"` ])
+
       dnl -- python3's internal library path
 
       AC_CACHE_VAL(vi_cv_path_python3path,
@@ -1621,10 +1629,10 @@ eof
 	])
 
         PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
-        if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
-          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+        if test "${vi_cv_path_python3_include}" = "${vi_cv_path_python3_platinclude}"; then
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_include}"
         else
-          PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
+          PYTHON3_CFLAGS="-I${vi_cv_path_python3_include} -I${vi_cv_path_python3_platinclude}"
         fi
         if test "X$have_python3_config_dir" = "X1" -a "$enable_python3interp" = "dynamic"; then
           dnl Define PYTHON3_HOME if --with-python-config-dir was used
@@ -3354,7 +3362,8 @@ AC_TYPE_SIZE_T
 AC_TYPE_UID_T
 AC_TYPE_UINT32_T
 
-AC_HEADER_TIME
+AC_CHECK_HEADERS_ONCE([sys/time.h])
+
 AC_CHECK_TYPE(ino_t, long)
 AC_CHECK_TYPE(dev_t, unsigned)
 AC_C_BIGENDIAN(,,,)
@@ -3605,8 +3614,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
 			AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
 	  AC_MSG_RESULT(no))
 
-dnl AC_DECL_SYS_SIGLIST
-
 dnl Checks for pty.c (copied from screen) ==========================
 AC_MSG_CHECKING(for /dev/ptc)
 if test -r /dev/ptc; then
--- a/src/debugger.c
+++ b/src/debugger.c
@@ -528,6 +528,35 @@ static int has_expr_breakpoint = FALSE;
 #ifdef FEAT_PROFILE
 // Profiling uses file and func names similar to breakpoints.
 static garray_T prof_ga = {0, 0, sizeof(struct debuggy), 4, NULL};
+
+// Profiling caches results of regexp lookups for function/script name.
+#define N_PROF_HTAB 2
+static hashtab_T prof_cache[N_PROF_HTAB];
+#define PROF_HTAB_FUNCS 0
+#define PROF_HTAB_FILES 1
+static int prof_cache_initialized;
+typedef struct profentry_S
+{
+    char    pen_flags;	// cache data booleans: profiling, forceit
+    char_u  pen_name[1]; // actually longer
+} profentry_T;
+#define PEN_FLAG_PROFILING 1
+#define PEN_FLAG_FORCEIT 2
+#define PEN_SET_PROFILING(pe) ((pe)->pen_flags |= PEN_FLAG_PROFILING)
+#define PEN_SET_FORCEIT(pe) ((pe)->pen_flags |= PEN_FLAG_FORCEIT)
+#define PEN_IS_PROFILING(pe) (((pe)->pen_flags & PEN_FLAG_PROFILING) != 0)
+#define PEN_IS_FORCEIT(pe) (((pe)->pen_flags & PEN_FLAG_FORCEIT) != 0)
+
+#define PE2HIKEY(pe)	((pe)->pen_name)
+#define HIKEY2PE(p)	((profentry_T *)((p) - (offsetof(profentry_T, pen_name))))
+#define HI2PE(hi)	HIKEY2PE((hi)->hi_key)
+
+static void prof_clear_cache(void);
+#define PROF_CLEAR_CACHE(gap) do {if ((gap) == &prof_ga) prof_clear_cache();} while (0)
+// Can enable to get some info about profile caching
+// #define PROF_CACHE_LOG
+#else
+#define PROF_CLEAR_CACHE(gap) do {} while (0)
 #endif
 #define DBG_FUNC	1
 #define DBG_FILE	2
@@ -708,6 +737,7 @@ ex_breakadd(exarg_T *eap)
 		++debug_tick;
 	    }
 	    ++gap->ga_len;
+	    PROF_CLEAR_CACHE(gap);
 	}
     }
     else
@@ -845,6 +875,7 @@ ex_breakdel(exarg_T *eap)
 	if (!del_all)
 	    break;
     }
+    PROF_CLEAR_CACHE(gap);
 
     // If all breakpoints were removed clear the array.
     if (gap->ga_len == 0)
@@ -899,17 +930,102 @@ dbg_find_breakpoint(
 }
 
 #if defined(FEAT_PROFILE) || defined(PROTO)
+#if defined(PROF_CACHE_LOG)
+static int count_lookups[2];
+#endif
 /*
  * Return TRUE if profiling is on for a function or sourced file.
+ * Cache the results of debuggy_find().
+ * Cache is cleared whenever prof_ga.ga_len is changed.
  */
     int
 has_profiling(
     int		file,	    // TRUE for a file, FALSE for a function
     char_u	*fname,	    // file or function name
-    int		*fp)	    // return: forceit
+    int		*fp,	    // return: forceit
+    hash_T	*hashp)	    // use/return fname hash, may be NULL
 {
-    return (debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
-							      != (linenr_T)0);
+    if (prof_ga.ga_len == 0 || !prof_cache_initialized)
+	return debuggy_find(file, fname, (linenr_T)0, &prof_ga, fp)
+							     != (linenr_T)0;
+
+    hash_T hash;
+    if (hashp != NULL)
+    {
+	hash = *hashp;
+	if (hash == 0)
+	{
+	    hash = hash_hash(fname);
+	    *hashp = hash;
+	}
+    }
+    else
+	hash = hash_hash(fname);
+
+    hashtab_T *ht = &prof_cache[file ? PROF_HTAB_FILES : PROF_HTAB_FUNCS];
+    hashitem_T *hi = hash_lookup(ht, fname, hash);
+    profentry_T *pe;
+    if (HASHITEM_EMPTY(hi))
+    {
+	pe = alloc(offsetof(profentry_T, pen_name) + STRLEN(fname) + 1);
+	if (pe == NULL)
+	    return FALSE;
+	STRCPY(pe->pen_name, fname);
+	pe->pen_flags = 0;
+	// run debuggy_find and capture return and forceit
+	int f;
+	int lnum = debuggy_find(file, fname, (linenr_T)0, &prof_ga, &f);
+	if (lnum)
+	{
+	    PEN_SET_PROFILING(pe);
+	    if (f)
+		PEN_SET_FORCEIT(pe);
+	}
+	hash_add_item(ht, hi, pe->pen_name, hash);
+#if defined(PROF_CACHE_LOG)
+	ch_log(NULL, "has_profiling: %s %s forceit %s, profile %s",
+	       file ? "file" : "func", fname,
+	       PEN_IS_FORCEIT(pe) ? "true" : "false",
+	       PEN_IS_PROFILING(pe) ? "true" : "false");
+#endif
+    }
+    else
+	pe = HI2PE(hi);
+    if (fp)
+	*fp = PEN_IS_FORCEIT(pe);
+#if defined(PROF_CACHE_LOG)
+    count_lookups[file ? PROF_HTAB_FILES : PROF_HTAB_FUNCS]++;
+#endif
+    return PEN_IS_PROFILING(pe);
+}
+
+    static void
+prof_clear_cache()
+{
+    if (!prof_cache_initialized)
+    {
+	hash_init(&prof_cache[PROF_HTAB_FUNCS]);
+	hash_init(&prof_cache[PROF_HTAB_FILES]);
+	prof_cache_initialized = TRUE;
+    }
+
+    hashtab_T *ht;
+    for (ht = &prof_cache[0]; ht < &prof_cache[N_PROF_HTAB]; ht++)
+    {
+	if (ht->ht_used > 0)
+	{
+#if defined(PROF_CACHE_LOG)
+	    int idx = ht == &prof_cache[PROF_HTAB_FUNCS]
+		      ? PROF_HTAB_FUNCS : PROF_HTAB_FILES;
+	    ch_log(NULL, "prof_clear_cache: %s, used: %ld, lookups: %d",
+		   idx == PROF_HTAB_FUNCS ? "function" : "script",
+		   ht->ht_used, count_lookups[idx]);
+	    count_lookups[idx] = 0;
+#endif
+	    hash_clear_all(ht, offsetof(profentry_T, pen_name));
+	    hash_init(ht);
+	}
+    }
 }
 #endif
 
@@ -979,6 +1095,10 @@ debuggy_find(
 		    *fp = bp->dbg_forceit;
 	    }
 	    got_int |= prev_got_int;
+#ifdef FEAT_PROFILE
+	    if (lnum && gap == &prof_ga)
+		break;
+#endif
 	}
 #ifdef FEAT_EVAL
 	else if (bp->dbg_type == DBG_EXPR)
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1650,6 +1650,18 @@ win_line(
     }
 #endif
 
+#if defined(FEAT_LINEBREAK) || defined(FEAT_PROP_POPUP)
+    colnr_T vcol_first_char = 0;
+    if (wp->w_p_lbr && !number_only)
+    {
+	chartabsize_T cts;
+	init_chartabsize_arg(&cts, wp, lnum, 0, line, line);
+	(void)win_lbr_chartabsize(&cts, NULL);
+	vcol_first_char = cts.cts_first_char;
+	clear_chartabsize_arg(&cts);
+    }
+#endif
+
     // 'nowrap' or 'wrap' and a single line that doesn't fit: Advance to the
     // first character to be displayed.
     if (wp->w_p_wrap)
@@ -2100,7 +2112,8 @@ win_line(
 							& TP_FLAG_ALIGN_RIGHT);
 			    int	    below = (tp->tp_flags
 							& TP_FLAG_ALIGN_BELOW);
-			    int	    wrap = (tp->tp_flags & TP_FLAG_WRAP);
+			    int	    wrap = tp->tp_col < MAXCOL
+					      || (tp->tp_flags & TP_FLAG_WRAP);
 			    int	    padding = tp->tp_col == MAXCOL
 						 && tp->tp_len > 1
 							  ? tp->tp_len - 1 : 0;
@@ -2879,7 +2892,11 @@ win_line(
 		    char_u  *p = ptr - (mb_off + 1);
 		    chartabsize_T cts;
 
-		    init_chartabsize_arg(&cts, wp, lnum, wlv.vcol, line, p);
+		    init_chartabsize_arg(&cts, wp, lnum, wlv.vcol
+# ifdef FEAT_PROP_POPUP
+							     - vcol_first_char,
+# endif
+								      line, p);
 # ifdef FEAT_PROP_POPUP
 		    // do not want virtual text counted here
 		    cts.cts_has_prop_with_text = FALSE;
@@ -2887,14 +2904,6 @@ win_line(
 		    wlv.n_extra = win_lbr_chartabsize(&cts, NULL) - 1;
 		    clear_chartabsize_arg(&cts);
 
-		    // We have just drawn the showbreak value, no need to add
-		    // space for it again.
-		    if (wlv.vcol == wlv.vcol_sbr)
-		    {
-			wlv.n_extra -= MB_CHARLEN(get_showbreak_value(wp));
-			if (wlv.n_extra < 0)
-			    wlv.n_extra = 0;
-		    }
 		    if (on_last_col && c != TAB)
 			// Do not continue search/match highlighting over the
 			// line break, but for TABs the highlighting should
@@ -3733,7 +3742,11 @@ win_line(
 		&& (*ptr != NUL
 		    || lcs_eol_one > 0
 		    || (wlv.n_extra > 0 && (wlv.c_extra != NUL
-						     || *wlv.p_extra != NUL))))
+						     || *wlv.p_extra != NUL))
+#ifdef FEAT_PROP_POPUP
+		    || text_prop_next < text_prop_count
+#endif
+		   ))
 	{
 	    c = wp->w_lcs_chars.ext;
 	    wlv.char_attr = hl_combine_attr(wlv.win_attr, HL_ATTR(HLF_AT));
@@ -4014,6 +4027,7 @@ win_line(
 #endif
 #ifdef FEAT_PROP_POPUP
 		    || text_prop_above || text_prop_follows
+		    || text_prop_next < text_prop_count
 #endif
 		    || (wp->w_p_list && wp->w_lcs_chars.eol != NUL
 						&& wlv.p_extra != at_end_str)
--- a/src/edit.c
+++ b/src/edit.c
@@ -3859,6 +3859,7 @@ ins_insert(int replaceState)
     static void
 ins_ctrl_o(void)
 {
+    restart_VIsual_select = 0;
     if (State & VREPLACE_FLAG)
 	restart_edit = 'V';
     else if (State & REPLACE_FLAG)
--- a/src/errors.h
+++ b/src/errors.h
@@ -1570,9 +1570,12 @@ EXTERN char e_too_many_signs_defined[]
 EXTERN char e_unknown_printer_font_str[]
 	INIT(= N_("E613: Unknown printer font: %s"));
 #endif
-// E614 unused
-// E615 unused
-// E616 unused
+EXTERN char e_class_required[]
+	INIT(= N_("E614: Class required"));
+EXTERN char e_object_required[]
+	INIT(= N_("E615: Object required"));
+EXTERN char e_object_required_for_argument_nr[]
+	INIT(= N_("E616: Object required for argument %d"));
 #ifdef FEAT_GUI_GTK
 EXTERN char e_cannot_be_changed_in_gtk_GUI[]
 	INIT(= N_("E617: Cannot be changed in the GTK GUI"));
@@ -1777,7 +1780,8 @@ EXTERN char e_can_only_compare_list_with
 	INIT(= N_("E691: Can only compare List with List"));
 EXTERN char e_invalid_operation_for_list[]
 	INIT(= N_("E692: Invalid operation for List"));
-// E693 unused
+EXTERN char e_list_or_class_required_for_argument_nr[]
+	INIT(= N_("E693: List or Class required for argument %d"));
 EXTERN char e_invalid_operation_for_funcrefs[]
 	INIT(= N_("E694: Invalid operation for Funcrefs"));
 EXTERN char e_cannot_index_a_funcref[]
@@ -3480,6 +3484,23 @@ EXTERN char e_warning_pointer_block_corr
 	INIT(= N_("E1364: Warning: Pointer block corrupted"));
 EXTERN char e_cannot_use_a_return_type_with_new[]
 	INIT(= N_("E1365: Cannot use a return type with the \"new\" function"));
+EXTERN char e_cannot_access_private_method_str[]
+	INIT(= N_("E1366: Cannot access private method: %s"));
+EXTERN char e_member_str_of_interface_str_has_different_access[]
+	INIT(= N_("E1367: Access level of member \"%s\" of interface \"%s\" is different"));
+
+EXTERN char e_static_cannot_be_followed_by_this[]
+	INIT(= N_("E1368: Static cannot be followed by \"this\" in a member name"));
+EXTERN char e_duplicate_member_str[]
+	INIT(= N_("E1369: Duplicate member: %s"));
+EXTERN char e_cannot_define_new_function_as_static[]
+	INIT(= N_("E1370: Cannot define a \"new\" function as static"));
+EXTERN char e_abstract_must_be_followed_by_def_or_static[]
+	INIT(= N_("E1371: Abstract must be followed by \"def\" or \"static\""));
+EXTERN char e_abstract_method_in_concrete_class[]
+	INIT(= N_("E1372: Abstract method \"%s\" cannot be defined in a concrete class"));
+EXTERN char e_abstract_method_str_not_found[]
+	INIT(= N_("E1373: Abstract method \"%s\" is not implemented"));
 EXTERN char e_cannot_mix_positional_and_non_positional_str[]
 	INIT(= N_("E1400: Cannot mix positional and non-positional arguments: %s"));
 EXTERN char e_fmt_arg_nr_unused_str[]
@@ -3496,5 +3517,8 @@ EXTERN char e_member_str_type_mismatch_e
 	INIT(= N_("E1406: Member \"%s\": type mismatch, expected %s but got %s"));
 EXTERN char e_method_str_type_mismatch_expected_str_but_got_str[]
 	INIT(= N_("E1407: Member \"%s\": type mismatch, expected %s but got %s"));
-
-// E1366 - E1399 unused
+EXTERN char e_aptypes_is_null_nr_str[]
+	INIT(= "E1408: Internal error: ap_types or ap_types[idx] is NULL: %d: %s");
+EXTERN char e_interface_static_direct_access_str[]
+	INIT(= N_("E1409: Cannot directly access interface \"%s\" static member \"%s\""));
+// E1371 - E1399 unused
--- a/src/eval.c
+++ b/src/eval.c
@@ -1025,7 +1025,7 @@ get_lval(
     int		len;
     hashtab_T	*ht = NULL;
     int		quiet = flags & GLV_QUIET;
-    int		writing;
+    int		writing = 0;
     int		vim9script = in_vim9script();
 
     // Clear everything in "lp".
@@ -1180,6 +1180,14 @@ get_lval(
 	    return NULL;
 	lp->ll_tv = &v->di_tv;
     }
+    if (vim9script && writing && lp->ll_tv->v_type == VAR_CLASS
+	    && (lp->ll_tv->vval.v_class->class_flags & CLASS_INTERFACE) != 0)
+    {
+	if (!quiet)
+	    semsg(_(e_interface_static_direct_access_str),
+			    lp->ll_tv->vval.v_class->class_name, lp->ll_name);
+	return NULL;
+    }
 
     if (vim9script && (flags & GLV_NO_DECL) == 0)
     {
@@ -5305,6 +5313,8 @@ garbage_collect(int testing)
     abort = abort || set_ref_in_popups(copyID);
 #endif
 
+    abort = abort || set_ref_in_classes(copyID);
+
     if (!abort)
     {
 	/*
@@ -5353,6 +5363,9 @@ free_unref_items(int copyID)
     // Go through the list of objects and free items without this copyID.
     did_free |= object_free_nonref(copyID);
 
+    // Go through the list of classes and free items without this copyID.
+    did_free |= class_free_nonref(copyID);
+
 #ifdef FEAT_JOB_CHANNEL
     // Go through the list of jobs and free items without the copyID. This
     // must happen before doing channels, because jobs refer to channels, but
@@ -5707,7 +5720,7 @@ set_ref_in_item_channel(
  * Mark the class "cl" with "copyID".
  * Also see set_ref_in_item().
  */
-    static int
+    int
 set_ref_in_item_class(
     class_T		*cl,
     int			copyID,
@@ -5716,15 +5729,19 @@ set_ref_in_item_class(
 {
     int abort = FALSE;
 
-    if (cl == NULL || cl->class_copyID == copyID
-				|| (cl->class_flags & CLASS_INTERFACE) != 0)
+    if (cl == NULL || cl->class_copyID == copyID)
 	return FALSE;
 
     cl->class_copyID = copyID;
-    for (int i = 0; !abort && i < cl->class_class_member_count; ++i)
-	abort = abort || set_ref_in_item(
-		&cl->class_members_tv[i],
-		copyID, ht_stack, list_stack);
+    if (cl->class_members_tv != NULL)
+    {
+	// The "class_members_tv" table is allocated only for regular classes
+	// and not for interfaces.
+	for (int i = 0; !abort && i < cl->class_class_member_count; ++i)
+	    abort = abort || set_ref_in_item(
+		    &cl->class_members_tv[i],
+		    copyID, ht_stack, list_stack);
+    }
 
     for (int i = 0; !abort && i < cl->class_class_function_count; ++i)
 	abort = abort || set_ref_in_func(NULL,
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -277,6 +277,19 @@ arg_number(type_T *type, type_T *decl_ty
 }
 
 /*
+ * Check "type" is an object.
+ */
+    static int
+arg_object(type_T *type, type_T *decl_type UNUSED, argcontext_T *context)
+{
+    if (type->tt_type == VAR_OBJECT
+	    || type_any_or_unknown(type))
+	return OK;
+    arg_type_mismatch(&t_object, type, context->arg_idx + 1);
+    return FAIL;
+}
+
+/*
  * Check "type" is a dict of 'any'.
  */
     static int
@@ -745,6 +758,20 @@ arg_string_or_func(type_T *type, type_T 
 }
 
 /*
+ * Check "type" is a list of 'any' or a class.
+ */
+    static int
+arg_class_or_list(type_T *type, type_T *decl_type UNUSED, argcontext_T *context)
+{
+    if (type->tt_type == VAR_CLASS
+	    || type->tt_type == VAR_LIST
+	    || type_any_or_unknown(type))
+	return OK;
+    arg_type_mismatch(&t_class, type, context->arg_idx + 1);
+    return FAIL;
+}
+
+/*
  * Check "type" is a list of 'any' or a blob or a string.
  */
     static int
@@ -1125,6 +1152,7 @@ static argcheck_T arg1_len[] = {arg_len1
 static argcheck_T arg3_libcall[] = {arg_string, arg_string, arg_string_or_nr};
 static argcheck_T arg14_maparg[] = {arg_string, arg_string, arg_bool, arg_bool};
 static argcheck_T arg2_filter[] = {arg_list_or_dict_or_blob_or_string_mod, arg_filter_func};
+static argcheck_T arg2_instanceof[] = {arg_object, arg_class_or_list};
 static argcheck_T arg2_map[] = {arg_list_or_dict_or_blob_or_string_mod, arg_map_func};
 static argcheck_T arg2_mapnew[] = {arg_list_or_dict_or_blob_or_string, NULL};
 static argcheck_T arg25_matchadd[] = {arg_string, arg_string, arg_number, arg_number, arg_dict_any};
@@ -2124,6 +2152,8 @@ static funcentry_T global_functions[] =
 			ret_string,	    f_inputsecret},
     {"insert",		2, 3, FEARG_1,	    arg23_insert,
 			ret_first_arg,	    f_insert},
+    {"instanceof",	2, 2, FEARG_1,	    arg2_instanceof,
+			ret_bool,	    f_instanceof},
     {"interrupt",	0, 0, 0,	    NULL,
 			ret_void,	    f_interrupt},
     {"invert",		1, 1, FEARG_1,	    arg1_number,
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -2646,12 +2646,18 @@ do_ecmd(
 	goto theend;
     }
 
-    /*
-     * End Visual mode before switching to another buffer, so the text can be
-     * copied into the GUI selection buffer.
-     */
+
+     // End Visual mode before switching to another buffer, so the text can be
+     // copied into the GUI selection buffer.
+     // Careful: may trigger ModeChanged() autocommand
+
+    // Should we block autocommands here?
     reset_VIsual();
 
+    // autocommands freed window :(
+    if (oldwin != NULL && !win_valid(oldwin))
+	oldwin = NULL;
+
 #if defined(FEAT_EVAL)
     if ((command != NULL || newlnum > (linenr_T)0)
 	    && *get_vim_var_str(VV_SWAPCOMMAND) == NUL)
@@ -4513,6 +4519,9 @@ ex_substitute(exarg_T *eap)
 		{
 		    nmatch = curbuf->b_ml.ml_line_count - sub_firstlnum + 1;
 		    skip_match = TRUE;
+		    // safety check
+		    if (nmatch < 0)
+			goto skip;
 		}
 
 		// Need room for:
@@ -4645,6 +4654,9 @@ ex_substitute(exarg_T *eap)
 		mch_memmove(new_end, sub_firstline + copycol, (size_t)copy_len);
 		new_end += copy_len;
 
+		if ((int)new_start_len - copy_len < sublen)
+		    sublen = new_start_len - copy_len - 1;
+
 #ifdef FEAT_EVAL
 		++textlock;
 #endif
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2586,8 +2586,8 @@ do_one_cmd(
 
 #ifdef FEAT_EVAL
     // A command will reset "is_export" when exporting an item.  If it is still
-    // set something went wrong.
-    if (is_export)
+    // set something went wrong or the command was never executed.
+    if (!ea.skip && is_export)
     {
 	if (errormsg == NULL)
 	    errormsg = _(e_export_with_invalid_argument);
@@ -3954,7 +3954,7 @@ find_ex_command(
 #ifdef FEAT_EVAL
     if (eap->cmdidx < CMD_SIZE
 	    && vim9
-	    && !IS_WHITE_OR_NUL(*p) && *p != '\n' && *p != '!' && *p != '|'
+	    && !IS_WHITE_NL_OR_NUL(*p) && *p != '!' && *p != '|'
 	    && (eap->cmdidx < 0 ||
 		(cmdnames[eap->cmdidx].cmd_argt & EX_NONWHITE_OK) == 0))
     {
@@ -4087,7 +4087,7 @@ f_fullcommand(typval_T *argvars, typval_
 		|| check_for_opt_bool_arg(argvars, 1) == FAIL))
 	return;
 
-    name = argvars[0].vval.v_string;
+    name = tv_get_string(&argvars[0]);
     if (name == NULL)
 	return;
 
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -4167,7 +4167,7 @@ get_cmdline_completion(void)
 
     char_u *cmd_compl = cmdcomplete_type_to_str(p->xpc->xp_context);
     if (cmd_compl == NULL)
-        return NULL;
+	return NULL;
 
     if (p->xpc->xp_context == EXPAND_USER_LIST || p->xpc->xp_context == EXPAND_USER_DEFINED)
     {
--- a/src/globals.h
+++ b/src/globals.h
@@ -534,7 +534,13 @@ EXTERN int	garbage_collect_at_exit INIT(
 #define t_super			(static_types[80])
 #define t_const_super		(static_types[81])
 
-EXTERN type_T static_types[82]
+#define t_object		(static_types[82])
+#define t_const_object		(static_types[83])
+
+#define t_class			(static_types[84])
+#define t_const_class		(static_types[85])
+
+EXTERN type_T static_types[86]
 #ifdef DO_INIT
 = {
     // 0: t_unknown
@@ -700,6 +706,14 @@ EXTERN type_T static_types[82]
     // 80: t_super (VAR_CLASS with tt_member set to &t_bool
     {VAR_CLASS, 0, 0, TTFLAG_STATIC, &t_bool, NULL, NULL},
     {VAR_CLASS, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, &t_bool, NULL, NULL},
+
+    // 82: t_object
+    {VAR_OBJECT, 0, 0, TTFLAG_STATIC, NULL, NULL, NULL},
+    {VAR_OBJECT, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL, NULL},
+
+    // 84: t_class
+    {VAR_CLASS, 0, 0, TTFLAG_STATIC, NULL, NULL, NULL},
+    {VAR_CLASS, 0, 0, TTFLAG_STATIC|TTFLAG_CONST, NULL, NULL, NULL},
 }
 #endif
 ;
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -4845,7 +4845,11 @@ is_cjk_font(PangoFontDescription *font_d
 	{
 	    uc = (cjk_langs[i][0] == 'k') ? 0xAC00 : 0x4E00;
 	    is_cjk = (pango_coverage_get(coverage, uc) == PANGO_COVERAGE_EXACT);
+#if PANGO_VERSION_CHECK(1, 52, 0)
+	    g_object_unref(coverage);
+#else
 	    pango_coverage_unref(coverage);
+#endif
 	}
     }
 
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -37,13 +37,6 @@
 
 #include "vim.h"
 
-/* Work around for perl-5.18.
- * Don't include "perl\lib\CORE\inline.h" for now,
- * include it after Perl_sv_free2 is defined. */
-#ifdef DYNAMIC_PERL
-# define PERL_NO_INLINE_FUNCTIONS
-#endif
-
 #ifdef _MSC_VER
 // Work around for using MSVC and ActivePerl 5.18.
 # define __inline__ __inline
@@ -197,7 +190,9 @@ typedef int perl_key;
 # define perl_run dll_perl_run
 # define perl_destruct dll_perl_destruct
 # define perl_free dll_perl_free
-# define Perl_get_context dll_Perl_get_context
+# if defined(WIN32) || ((PERL_REVISION == 5) && (PERL_VERSION < 38))
+#  define Perl_get_context dll_Perl_get_context
+# endif
 # define Perl_croak dll_Perl_croak
 # ifdef PERL5101_OR_LATER
 #  define Perl_croak_xs_usage dll_Perl_croak_xs_usage
@@ -320,6 +315,9 @@ typedef int perl_key;
 #   define PL_thr_key *dll_PL_thr_key
 #  endif
 # endif
+# ifdef PERL_USE_THREAD_LOCAL
+#  define PL_current_context *dll_PL_current_context
+# endif
 # define Perl_hv_iternext_flags dll_Perl_hv_iternext_flags
 # define Perl_hv_iterinit dll_Perl_hv_iterinit
 # define Perl_hv_iterkey dll_Perl_hv_iterkey
@@ -346,7 +344,9 @@ static void (*perl_destruct)(PerlInterpr
 static void (*perl_free)(PerlInterpreter*);
 static int (*perl_run)(PerlInterpreter*);
 static int (*perl_parse)(PerlInterpreter*, XSINIT_t, int, char**, char**);
+# if defined(WIN32) || ((PERL_REVISION == 5) && (PERL_VERSION < 38))
 static void* (*Perl_get_context)(void);
+# endif
 static void (*Perl_croak)(pTHX_ const char*, ...) __attribute__noreturn__;
 # ifdef PERL5101_OR_LATER
 /* Perl-5.18 has a different Perl_croak_xs_usage signature. */
@@ -487,6 +487,9 @@ static GV** (*Perl_Ierrgv_ptr)(register 
 static SV* (*Perl_Isv_yes_ptr)(register PerlInterpreter*);
 static perl_key* (*Perl_Gthr_key_ptr)_((pTHX));
 # endif
+# ifdef PERL_USE_THREAD_LOCAL
+static void** dll_PL_current_context;
+# endif
 static void (*boot_DynaLoader)_((pTHX_ CV*));
 static HE * (*Perl_hv_iternext_flags)(pTHX_ HV *, I32);
 static I32 (*Perl_hv_iterinit)(pTHX_ HV *);
@@ -516,7 +519,9 @@ static struct {
     {"perl_free", (PERL_PROC*)&perl_free},
     {"perl_run", (PERL_PROC*)&perl_run},
     {"perl_parse", (PERL_PROC*)&perl_parse},
+# if defined(WIN32) || ((PERL_REVISION == 5) && (PERL_VERSION < 38))
     {"Perl_get_context", (PERL_PROC*)&Perl_get_context},
+# endif
     {"Perl_croak", (PERL_PROC*)&Perl_croak},
 # ifdef PERL5101_OR_LATER
     {"Perl_croak_xs_usage", (PERL_PROC*)&Perl_croak_xs_usage},
@@ -634,6 +639,9 @@ static struct {
 #  ifdef USE_ITHREADS
     {"PL_thr_key", (PERL_PROC*)&dll_PL_thr_key},
 #  endif
+# ifdef PERL_USE_THREAD_LOCAL
+    {"PL_current_context", (PERL_PROC*)&dll_PL_current_context},
+# endif
 # else
     {"Perl_Idefgv_ptr", (PERL_PROC*)&Perl_Idefgv_ptr},
     {"Perl_Ierrgv_ptr", (PERL_PROC*)&Perl_Ierrgv_ptr},
@@ -658,227 +666,11 @@ static struct {
     {"", NULL},
 };
 
-/* Work around for perl-5.18.
- * For now, only the definitions of S_SvREFCNT_dec are needed in
- * "perl\lib\CORE\inline.h". */
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
-static void
-S_SvREFCNT_dec(pTHX_ SV *sv)
-{
-    if (LIKELY(sv != NULL)) {
-	U32 rc = SvREFCNT(sv);
-	if (LIKELY(rc > 1))
-	    SvREFCNT(sv) = rc - 1;
-	else
-	    Perl_sv_free2(aTHX_ sv, rc);
-    }
-}
-# endif
-
-/* perl-5.32 needs Perl_SvREFCNT_dec */
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 32)
-#  define Perl_SvREFCNT_dec S_SvREFCNT_dec
-# endif
-
-/* perl-5.26 also needs S_TOPMARK and S_POPMARK. */
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 26)
-PERL_STATIC_INLINE I32
-S_TOPMARK(pTHX)
-{
-    DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
-				 "MARK top  %p %" IVdf "\n",
-				  PL_markstack_ptr,
-				  (IV)*PL_markstack_ptr)));
-    return *PL_markstack_ptr;
-}
-
-PERL_STATIC_INLINE I32
-S_POPMARK(pTHX)
-{
-    DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log,
-				 "MARK pop  %p %" IVdf "\n",
-				  (PL_markstack_ptr-1),
-				  (IV)*(PL_markstack_ptr-1))));
-    assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow");
-    return *PL_markstack_ptr--;
-}
-# endif
-
-/* perl-5.32 needs Perl_POPMARK */
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 32)
-#  define Perl_POPMARK S_POPMARK
-# endif
-
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 32)
-PERL_STATIC_INLINE U8
-Perl_gimme_V(pTHX)
-{
-    I32 cxix;
-    U8  gimme = (PL_op->op_flags & OPf_WANT);
-
-    if (gimme)
-        return gimme;
-    cxix = PL_curstackinfo->si_cxsubix;
-    if (cxix < 0)
-	return
-#  if (PERL_REVISION == 5) && (PERL_VERSION >= 34)
-	    PL_curstackinfo->si_type == PERLSI_SORT ? G_SCALAR:
-#  endif
-	    G_VOID;
-    assert(cxstack[cxix].blk_gimme & G_WANT);
-    return (cxstack[cxix].blk_gimme & G_WANT);
-}
-# endif
-
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 38)
-#  define PERL_ARGS_ASSERT_SVPVXTRUE             \
-        assert(sv)
-PERL_STATIC_INLINE bool
-Perl_SvPVXtrue(pTHX_ SV *sv)
-{
-    PERL_ARGS_ASSERT_SVPVXTRUE;
-
-    if (! (XPV *) SvANY(sv)) {
-        return false;
-    }
-
-    if ( ((XPV *) SvANY(sv))->xpv_cur > 1) { /* length > 1 */
-        return true;
-    }
-
-    if (( (XPV *) SvANY(sv))->xpv_cur == 0) {
-        return false;
-    }
-
-    return *sv->sv_u.svu_pv != '0';
-}
-
-#  define PERL_ARGS_ASSERT_SVGETMAGIC            \
-        assert(sv)
-PERL_STATIC_INLINE void
-Perl_SvGETMAGIC(pTHX_ SV *sv)
-{
-    PERL_ARGS_ASSERT_SVGETMAGIC;
-
-    if (UNLIKELY(SvGMAGICAL(sv))) {
-        mg_get(sv);
-    }
-}
-
-PERL_STATIC_INLINE char *
-Perl_SvPV_helper(pTHX_
-                 SV * const sv,
-                 STRLEN * const lp,
-                 const U32 flags,
-                 const PL_SvPVtype type,
-                 char * (*non_trivial)(pTHX_ SV *, STRLEN * const, const U32),
-                 const bool or_null,
-                 const U32 return_flags
-                )
-{
-    /* 'type' should be known at compile time, so this is reduced to a single
-     * conditional at runtime */
-    if (   (type == SvPVbyte_type_      && SvPOK_byte_nog(sv))
-        || (type == SvPVforce_type_     && SvPOK_pure_nogthink(sv))
-        || (type == SvPVutf8_type_      && SvPOK_utf8_nog(sv))
-        || (type == SvPVnormal_type_    && SvPOK_nog(sv))
-        || (type == SvPVutf8_pure_type_ && SvPOK_utf8_pure_nogthink(sv))
-        || (type == SvPVbyte_pure_type_ && SvPOK_byte_pure_nogthink(sv))
-   ) {
-        if (lp) {
-            *lp = SvCUR(sv);
-        }
-
-        /* Similarly 'return_flags is known at compile time, so this becomes
-         * branchless */
-        if (return_flags & SV_MUTABLE_RETURN) {
-            return SvPVX_mutable(sv);
-        }
-        else if(return_flags & SV_CONST_RETURN) {
-            return (char *) SvPVX_const(sv);
-        }
-        else {
-            return SvPVX(sv);
-        }
-    }
-
-    if (or_null) {  /* This is also known at compile time */
-        if (flags & SV_GMAGIC) {    /* As is this */
-            SvGETMAGIC(sv);
-        }
-
-        if (! SvOK(sv)) {
-            if (lp) {   /* As is this */
-                *lp = 0;
-            }
-
-            return NULL;
-        }
-    }
-
-    /* Can't trivially handle this, call the function */
-    return non_trivial(aTHX_ sv, lp, (flags|return_flags));
-}
-
-#  define PERL_ARGS_ASSERT_SVNV                  \
-        assert(sv)
-PERL_STATIC_INLINE NV
-Perl_SvNV(pTHX_ SV *sv) {
-    PERL_ARGS_ASSERT_SVNV;
-
-    if (SvNOK_nog(sv))
-        return SvNVX(sv);
-    return sv_2nv(sv);
-}
-
-#  define PERL_ARGS_ASSERT_SVIV                  \
-        assert(sv)
-PERL_STATIC_INLINE IV
-Perl_SvIV(pTHX_ SV *sv) {
-    PERL_ARGS_ASSERT_SVIV;
-
-    if (SvIOK_nog(sv))
-        return SvIVX(sv);
-    return sv_2iv(sv);
-}
-# endif
-
-/* perl-5.34 needs Perl_SvTRUE_common; used in SvTRUE_nomg_NN */
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 34)
-PERL_STATIC_INLINE bool
-Perl_SvTRUE_common(pTHX_ SV * sv, const bool sv_2bool_is_fallback)
-{
-    if (UNLIKELY(SvIMMORTAL_INTERP(sv)))
-	return SvIMMORTAL_TRUE(sv);
-
-    if (! SvOK(sv))
-	return FALSE;
-
-    if (SvPOK(sv))
-	return SvPVXtrue(sv);
-
-    if (SvIOK(sv))
-	return SvIVX(sv) != 0; /* casts to bool */
-
-    if (SvROK(sv) && !(SvOBJECT(SvRV(sv)) && HvAMAGIC(SvSTASH(SvRV(sv)))))
-	return TRUE;
-
-    if (sv_2bool_is_fallback)
-	return sv_2bool_nomg(sv);
-
-    return isGV_with_GP(sv);
-}
-# endif
-
-/* perl-5.32 needs Perl_SvTRUE */
-# if (PERL_REVISION == 5) && (PERL_VERSION >= 32)
-PERL_STATIC_INLINE bool
-Perl_SvTRUE(pTHX_ SV *sv) {
-    if (!LIKELY(sv))
-	return FALSE;
-    SvGETMAGIC(sv);
-    return SvTRUE_nomg_NN(sv);
-}
+# if (PERL_REVISION == 5) && (PERL_VERSION <= 30)
+// In 5.30, GIMME_V requires linking to Perl_block_gimme() instead of being
+// completely inline. Just use the deprecated GIMME for simplicity.
+#  undef GIMME_V
+#  define GIMME_V GIMME
 # endif
 
 /*
@@ -1681,6 +1473,60 @@ vim_IOLayer_init(void)
 }
 #endif /* PERLIO_LAYERS && !USE_SFIO */
 
+#ifdef DYNAMIC_PERL
+
+// Certain functionality that we use like SvREFCNT_dec are inlined for
+// performance reasons. They reference Perl APIs like Perl_sv_free2(), which
+// would cause linking errors in dynamic builds as we don't link against Perl
+// during build time. Manually fix it here by redirecting these functions
+// towards the dynamically loaded version.
+
+# if (PERL_REVISION == 5) && (PERL_VERSION >= 18)
+#  undef Perl_sv_free2
+void Perl_sv_free2(pTHX_ SV* sv, const U32 refcnt)
+{
+    (*dll_Perl_sv_free2)(aTHX_ sv, refcnt);
+}
+# else
+#  undef Perl_sv_free2
+void Perl_sv_free2(pTHX_ SV* sv)
+{
+    (*dll_Perl_sv_free2)(aTHX_ sv);
+}
+# endif
+
+# if (PERL_REVISION == 5) && (PERL_VERSION >= 14)
+#  undef Perl_sv_2bool_flags
+bool Perl_sv_2bool_flags(pTHX_ SV* sv, I32 flags)
+{
+    return (*dll_Perl_sv_2bool_flags)(aTHX_ sv, flags);
+}
+# endif
+
+# if (PERL_REVISION == 5) && (PERL_VERSION >= 28)
+#  undef Perl_mg_get
+int Perl_mg_get(pTHX_ SV* sv)
+{
+    return (*dll_Perl_mg_get)(aTHX_ sv);
+}
+# endif
+
+# undef Perl_sv_2nv_flags
+NV Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags)
+{
+    return (*dll_Perl_sv_2nv_flags)(aTHX_ sv, flags);
+}
+
+# ifdef PERL589_OR_LATER
+#  undef Perl_sv_2iv_flags
+IV Perl_sv_2iv_flags(pTHX_ SV* sv, I32 flags)
+{
+    return (*dll_Perl_sv_2iv_flags)(aTHX_ sv, flags);
+}
+# endif
+
+#endif // DYNAMIC_PERL
+
 XS(boot_VIM);
 
     static void
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -109,7 +109,7 @@ PyObject* Vim_PyObject_New(PyTypeObject 
 {
     PyObject *obj = (PyObject *)PyObject_Malloc(objsize);
     if (obj == NULL)
-        return PyErr_NoMemory();
+	return PyErr_NoMemory();
     return PyObject_Init(obj, type);
 }
 # undef PyObject_NEW
@@ -270,7 +270,7 @@ int Vim_PyRun_SimpleString(const char *s
     // This function emulates CPython's implementation.
     PyObject* m = PyImport_AddModule("__main__");
     if (m == NULL)
-        return -1;
+	return -1;
     PyObject* d = PyModule_GetDict(m);
     PyObject* output = Vim_PyRun_String(str, Py_file_input, d, d);
     if (output == NULL)
--- a/src/insexpand.c
+++ b/src/insexpand.c
@@ -3850,7 +3850,7 @@ ins_compl_get_exp(pos_T *ini)
 	else
 	{
 	    // Mark a buffer scanned when it has been scanned completely
-	    if (type == 0 || type == CTRL_X_PATH_PATTERNS)
+	    if (buf_valid(st.ins_buf) && (type == 0 || type == CTRL_X_PATH_PATTERNS))
 		st.ins_buf->b_scanned = TRUE;
 
 	    compl_started = FALSE;
--- a/src/json.c
+++ b/src/json.c
@@ -105,8 +105,7 @@ json_encode_lsp_msg(typval_T *val)
     ga_init2(&lspga, 1, 4000);
     // Header according to LSP specification.
     vim_snprintf((char *)IObuff, IOSIZE,
-	    "Content-Length: %u\r\n"
-	    "Content-Type: application/vscode-jsonrpc; charset=utf-8\r\n\r\n",
+	    "Content-Length: %u\r\n\r\n",
 	    ga.ga_len - 1);
     ga_concat(&lspga, IObuff);
     ga_concat_len(&lspga, ga.ga_data, ga.ga_len);
--- a/src/list.c
+++ b/src/list.c
@@ -1592,7 +1592,7 @@ eval_list(char_u **arg, typval_T *rettv,
 	had_comma = **arg == ',';
 	if (had_comma)
 	{
-	    if (vim9script && !IS_WHITE_OR_NUL((*arg)[1]) && (*arg)[1] != ']')
+	    if (vim9script && !IS_WHITE_NL_OR_NUL((*arg)[1]) && (*arg)[1] != ']')
 	    {
 		semsg(_(e_white_space_required_after_str_str), ",", *arg);
 		goto failret;
--- a/src/macros.h
+++ b/src/macros.h
@@ -43,6 +43,7 @@
  */
 #define VIM_ISWHITE(x)		((x) == ' ' || (x) == '\t')
 #define IS_WHITE_OR_NUL(x)	((x) == ' ' || (x) == '\t' || (x) == NUL)
+#define IS_WHITE_NL_OR_NUL(x)	((x) == ' ' || (x) == '\t' || (x) == '\n' || (x) == NUL)
 
 /*
  * LINEEMPTY() - return TRUE if the line is empty
--- a/src/main.c
+++ b/src/main.c
@@ -1646,7 +1646,7 @@ getout(int exitval)
 	    next_tp = tp->tp_next;
 	    FOR_ALL_WINDOWS_IN_TAB(tp, wp)
 	    {
-		if (wp->w_buffer == NULL)
+		if (wp->w_buffer == NULL || !buf_valid(wp->w_buffer))
 		    // Autocmd must have close the buffer already, skip.
 		    continue;
 		buf = wp->w_buffer;
--- a/src/message.c
+++ b/src/message.c
@@ -1842,7 +1842,11 @@ str2special(
     }
 
     c = *str;
-    if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL)
+    if ((c == K_SPECIAL
+#ifdef FEAT_GUI
+		|| c == CSI
+#endif
+	) && str[1] != NUL && str[2] != NUL)
     {
 	if (str[1] == KS_MODIFIER)
 	{
@@ -1850,7 +1854,11 @@ str2special(
 	    str += 3;
 	    c = *str;
 	}
-	if (c == K_SPECIAL && str[1] != NUL && str[2] != NUL)
+	if ((c == K_SPECIAL
+#ifdef FEAT_GUI
+		    || c == CSI
+#endif
+	    ) && str[1] != NUL && str[2] != NUL)
 	{
 	    c = TO_SPECIAL(str[1], str[2]);
 	    str += 2;
--- a/src/message_test.c
+++ b/src/message_test.c
@@ -40,6 +40,7 @@ char *fmt_012p = "%012p";
 char *fmt_5S   = "%5S";
 char *fmt_06b  = "%06b";
 char *fmt_06pb = "%1$0.*2$b";
+char *fmt_06pb2 = "%2$0*1$b";
 char *fmt_212s = "%2$s %1$s %2$s";
 char *fmt_21s  = "%2$s %1$s";
 
@@ -442,6 +443,11 @@ test_vim_snprintf_positional(void)
 	assert(bsize == 0 || STRNCMP(buf, "deadbeef", bsize_int) == 0);
 	assert(bsize == 0 || buf[MIN(n, bsize_int)] == '\0');
 
+	n = vim_snprintf(buf, bsize, fmt_06pb2, 6, (uvarnumber_T)12);
+	assert(n == 6);
+	assert(bsize == 0 || STRNCMP(buf, "001100", bsize_int) == 0);
+	assert(bsize == 0 || buf[MIN(n, bsize_int)] == '\0');
+
 	n = vim_snprintf(buf, bsize, fmt_06pb, (uvarnumber_T)12, 6);
 	assert(n == 6);
 	assert(bsize == 0 || STRNCMP(buf, "001100", bsize_int) == 0);
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -664,7 +664,11 @@ get_mode(char_u *buf)
     }
 #ifdef FEAT_TERMINAL
     else if (term_use_loop())
+    {
+	if (State & MODE_CMDLINE)
+	    buf[i++] = 'c';
 	buf[i++] = 't';
+    }
 #endif
     else if (VIsual_active)
     {
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -150,7 +150,7 @@ coladvance2(
 
 	    if ((addspaces || finetune) && !VIsual_active)
 	    {
-		curwin->w_curswant = linetabsize_str(line) + one_more;
+		curwin->w_curswant = linetabsize(curwin, pos->lnum) + one_more;
 		if (curwin->w_curswant > 0)
 		    --curwin->w_curswant;
 	    }
@@ -166,7 +166,7 @@ coladvance2(
 		&& wcol >= (colnr_T)width
 		&& width > 0)
 	{
-	    csize = linetabsize_str(line);
+	    csize = linetabsize(curwin, pos->lnum);
 	    if (csize > 0)
 		csize--;
 
--- a/src/move.c
+++ b/src/move.c
@@ -1205,16 +1205,6 @@ curs_columns(
 	    n = (curwin->w_wcol - curwin->w_width) / width2 + 1;
 	    curwin->w_wcol -= n * width2;
 	    curwin->w_wrow += n;
-
-#ifdef FEAT_LINEBREAK
-	    // When cursor wraps to first char of next line in Insert
-	    // mode, the 'showbreak' string isn't shown, backup to first
-	    // column
-	    char_u *sbr = get_showbreak_value(curwin);
-	    if (*sbr && *ml_get_cursor() == NUL
-				    && curwin->w_wcol == vim_strsize(sbr))
-		curwin->w_wcol = 0;
-#endif
 	}
     }
 
--- a/src/normal.c
+++ b/src/normal.c
@@ -570,7 +570,9 @@ normal_cmd_get_more_chars(
 	    // but when replaying a recording the next key is already in the
 	    // typeahead buffer, so record a <Nop> before that to prevent the
 	    // vpeekc() above from applying wrong mappings when replaying.
+	    ++no_u_sync;
 	    gotchars_nop();
+	    --no_u_sync;
 	}
     }
     --no_mapping;
@@ -2304,7 +2306,7 @@ find_decl(
     static int
 nv_screengo(oparg_T *oap, int dir, long dist)
 {
-    int		linelen = linetabsize_str(ml_get_curline());
+    int		linelen = linetabsize(curwin, curwin->w_cursor.lnum);
     int		retval = OK;
     int		atend = FALSE;
     int		n;
@@ -2374,7 +2376,7 @@ nv_screengo(oparg_T *oap, int dir, long 
 		}
 		cursor_up_inner(curwin, 1);
 
-		linelen = linetabsize_str(ml_get_curline());
+		linelen = linetabsize(curwin, curwin->w_cursor.lnum);
 		if (linelen > width1)
 		    curwin->w_curswant += (((linelen - width1 - 1) / width2)
 								+ 1) * width2;
@@ -2411,7 +2413,7 @@ nv_screengo(oparg_T *oap, int dir, long 
 		// clipped to column 0.
 		if (curwin->w_curswant >= width1)
 		    curwin->w_curswant -= width2;
-		linelen = linetabsize_str(ml_get_curline());
+		linelen = linetabsize(curwin, curwin->w_cursor.lnum);
 	    }
 	}
       }
@@ -6052,7 +6054,7 @@ nv_g_cmd(cmdarg_T *cap)
 	{
 	    oap->motion_type = MCHAR;
 	    oap->inclusive = FALSE;
-	    i = linetabsize_str(ml_get_curline());
+	    i = linetabsize(curwin, curwin->w_cursor.lnum);
 	    if (cap->count0 > 0 && cap->count0 <= 100)
 		coladvance((colnr_T)(i * cap->count0 / 100));
 	    else
--- a/src/ops.c
+++ b/src/ops.c
@@ -2919,7 +2919,7 @@ do_addsub(
 	    for (bit = bits; bit > 0; bit--)
 		if ((n >> (bit - 1)) & 0x1) break;
 
-	    for (i = 0; bit > 0; bit--)
+	    for (i = 0; bit > 0 && i < (NUMBUFLEN - 1); bit--)
 		buf2[i++] = ((n >> (bit - 1)) & 0x1) ? '1' : '0';
 
 	    buf2[i] = '\0';
--- a/src/option.c
+++ b/src/option.c
@@ -2982,7 +2982,8 @@ insecure_flag(int opt_idx, int opt_flags
 /*
  * Redraw the window title and/or tab page text later.
  */
-void redraw_titles(void)
+    void
+redraw_titles(void)
 {
     need_maketitle = TRUE;
     redraw_tabline = TRUE;
@@ -7374,6 +7375,14 @@ set_context_in_set_cmd(
 
     xp->xp_pattern = p + 1;
 
+#ifdef FEAT_SYN_HL
+    if (options[opt_idx].var == (char_u *)&p_syn)
+    {
+	xp->xp_context = EXPAND_OWNSYNTAX;
+	return;
+    }
+#endif
+
     if (flags & P_EXPAND)
     {
 	p = options[opt_idx].var;
--- a/src/po/en_GB.po
+++ b/src/po/en_GB.po
@@ -3,17 +3,21 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-# FIRST AUTHOR Mike Williams <mrw@eandem.co.uk>, 2003.
+# FIRST AUTHOR Mike Williams <mrmrdubya@gmail.com>, 2003.
 #
 # Style Guide:
 # o English spelling!
 # o Colour, not color
+# o -iour, not -ior
 # o -ise, not -ize.
 # o No contractions.
 # o Cannot, not can not.
+# o White space, not whitespace
 # o Backward (no s) when used as an adjective.
-# o Consistent capitalisation for first word after Ennn:
-# o Consistent capitalisation of NetBeans and JSON
+# o Command line for noun, command-line for adjective
+# o Improve consistency of messages ...
+# o - capitalisation for first English word after Ennn:
+# o - capitalisation of: NetBeans, JSON, Python, Lisp, Cscope
 # o TBC ...
 #
 # As with all guides, they should be followed unless there is a reason why they
@@ -21,12 +25,12 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim 8.2 (UK English)\n"
+"Project-Id-Version: Vim 9.0 (UK English)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-11 17:36+1000\n"
+"POT-Creation-Date: 2023-08-28 09:49+0100\n"
 "PO-Revision-Date: 2022-05-12 10:05+1000\n"
 "Last-Translator: Doug Kearns <dougkearns@gmail.com>\n"
-"Language-Team: Mike Williams <mrw@eandem.co.uk>\n"
+"Language-Team: Mike Williams <mrmrdubya@gmail.com>\n"
 "Language: en_GB\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
@@ -56,12 +60,22 @@ msgstr "Cannot find temp file for conver
 msgid "can't read output of 'charconvert'"
 msgstr "cannot read output of 'charconvert'"
 
-msgid "cscope connection %s closed"
-msgstr "Cscope connection %s closed"
+#, c-format
+msgid "Added cscope database %s"
+msgstr "Added Cscope database %s"
+
+msgid "All cscope databases reset"
+msgstr "All Cscope databases reset"
+
+msgid "no cscope connections\n"
+msgstr "no Cscope connections\n"
 
 msgid "couldn't open buffer"
 msgstr "could not open buffer"
 
+msgid " Command-line completion (^V^N^P)"
+msgstr " Command line completion (^V^N^P)"
+
 msgid "netbeans is not supported with this GUI\n"
 msgstr "NetBeans is not supported with this GUI\n"
 
@@ -95,7 +109,7 @@ msgid "+reverse\t\tDon't use reverse vid
 msgstr "+reverse\t\tDo not use reverse video (also: +rv)"
 
 msgid "Messages maintainer: The Vim Project"
-msgstr "Messages maintainer: Mike Williams <mrw@eandem.co.uk>"
+msgstr "Messages maintainer: Mike Williams <mrmrdubya@gmail.com>"
 
 msgid "VIM: Can't open window!\n"
 msgstr "VIM: Cannot open window!\n"
@@ -140,11 +154,11 @@ msgstr "E166: Cannot open linked file fo
 msgid "E185: Cannot find color scheme '%s'"
 msgstr "E185: Cannot find colour scheme '%s'"
 
-msgid "E205: Patchmode: Can't save original file"
-msgstr "E205: Patchmode: Cannot save original file"
+msgid "E205: Patchmode: can't save original file"
+msgstr "E205: Patchmode: cannot save original file"
 
-msgid "E206: Patchmode: Can't touch empty original file"
-msgstr "E206: Patchmode: Cannot touch empty original file"
+msgid "E206: Patchmode: can't touch empty original file"
+msgstr "E206: Patchmode: cannot touch empty original file"
 
 msgid "E207: Can't delete backup file"
 msgstr "E207: Cannot delete backup file"
@@ -158,6 +172,9 @@ msgstr "E214: Cannot find temp file for 
 msgid "E217: Can't execute autocommands for ALL events"
 msgstr "E217: Cannot execute autocommands for ALL events"
 
+msgid "E242: Can't split a window while closing another"
+msgstr "E242: Cannot split a window while closing another"
+
 #, c-format
 msgid "E254: Cannot allocate color %s"
 msgstr "E254: Cannot allocate colour %s"
@@ -165,24 +182,20 @@ msgstr "E254: Cannot allocate colour %s"
 msgid "E255: Couldn't read in sign data"
 msgstr "E255: Could not read in sign data"
 
+#, c-format
+msgid "E259: No matches found for cscope query %s of %s"
+msgstr "E259: No matches found for Cscope query %s of %s"
+
+#, c-format
+msgid "E262: Error reading cscope connection %d"
+msgstr "E262: Error reading Cscope connection %d"
+
 msgid "E288: Input method doesn't support any style"
 msgstr "E288: Input method does not support any style"
 
 msgid "E289: Input method doesn't support my preedit type"
 msgstr "E289: Input method does not support my preedit type"
 
-msgid "E298: Didn't get block nr 0?"
-msgstr "E298: Did not get block nr 0?"
-
-msgid "E298: Didn't get block nr 1?"
-msgstr "E298: Did not get block nr 1?"
-
-msgid "E298: Didn't get block nr 2?"
-msgstr "E298: Did not get block nr 2?"
-
-msgid "E304: ml_upd_block0(): Didn't get block 0??"
-msgstr "E304: ml_upd_block0(): Did not get block 0??"
-
 msgid "E324: Can't open PostScript output file"
 msgstr "E324: Cannot open PostScript output file"
 
@@ -204,6 +217,9 @@ msgstr "E389: Could not find pattern"
 msgid "E394: Didn't find region item for %s"
 msgstr "E394: Did not find region item for %s"
 
+msgid "E418: I'm a teapot"
+msgstr "E418: I am a teapot"
+
 msgid "E419: FG color unknown"
 msgstr "E419: FG colour unknown"
 
@@ -272,19 +288,19 @@ msgstr "E508: Cannot read file for backu
 msgid "E510: Can't make backup file (add ! to write anyway)"
 msgstr "E510: Cannot make backup file (add ! to write anyway)"
 
-msgid ""
-"E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
-"override)"
-msgstr ""
-"E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
-"override)"
-
 msgid "E532: Highlighting color name too long in defineAnnoType"
 msgstr "E532: Highlighting colour name too long in defineAnnoType"
 
 msgid "E533: Can't select wide font"
 msgstr "E533: Cannot select wide font"
 
+#, c-format
+msgid "E564: %s is not a directory or a valid cscope database"
+msgstr "E564: %s is not a directory or a valid Cscope database"
+
+msgid "E568: Duplicate cscope database not added"
+msgstr "E568: Duplicate Cscope database not added"
+
 msgid "E597: Can't select fontset"
 msgstr "E597: Cannot select fontset"
 
@@ -293,6 +309,13 @@ msgid "E624: Can't open file \"%s\""
 msgstr "E624: Cannot open file \"%s\""
 
 #, c-format
+msgid "E625: Cannot open cscope database: %s"
+msgstr "E625: Cannot open Cscope database: %s"
+
+msgid "E626: Cannot get cscope database information"
+msgstr "E626: Cannot get Cscope database information"
+
+#, c-format
 msgid "E738: Can't list variables for %s"
 msgstr "E738: Cannot list variables for %s"
 
@@ -315,17 +338,13 @@ msgstr "E871: (NFA regexp) Cannot have a
 msgid "E880: Can't handle SystemExit of python exception in vim"
 msgstr "E880: Cannot handle SystemExit of Python exception in vim"
 
-msgid ""
-"E883: Search pattern and expression register may not contain two or more "
-"lines"
-msgstr ""
-"E883: Search pattern and expression register may not contain two or more "
-"lines"
-
 #, c-format
 msgid "E886: Can't rename viminfo file to %s!"
 msgstr "E886: Cannot rename viminfo file to %s!"
 
+msgid "E952: Autocommand caused recursive behavior"
+msgstr "E952: Autocommand caused recursive behaviour"
+
 msgid "E954: 24-bit colors are not supported on this environment"
 msgstr "E954: 24-bit colours are not supported on this environment"
 
@@ -333,6 +352,9 @@ msgstr "E954: 24-bit colours are not sup
 msgid "E1010: Type not recognized: %s"
 msgstr "E1010: Type not recognised: %s"
 
+msgid "E1022: Type or initialization required"
+msgstr "E1022: Type or initialisation required"
+
 #, c-format
 msgid "E1146: Command not recognized: %s"
 msgstr "E1146: Command not recognised: %s"
@@ -341,13 +363,42 @@ msgstr "E1146: Command not recognised: %
 msgid "E1161: Cannot json encode a %s"
 msgstr "E1161: Cannot JSON encode a %s"
 
+msgid "E1188: Cannot open a terminal from the command line window"
+msgstr "E1188: Cannot open a terminal from the command-line window"
+
 #, c-format
 msgid "E1244: Bad color string: %s"
 msgstr "E1244: Bad colour string: %s"
 
+#, c-format
+msgid "E1329: Cannot get object member type from initializer: %s"
+msgstr "E1329: Cannot get object member type from initialiser: %s"
+
+msgid "E1344: Cannot initialize a member in an interface"
+msgstr "E1344: Cannot initialise a member in an interface"
+
+msgid "E1361: Cannot use color \"none\", did you mean \"NONE\"?"
+msgstr "E1361: Cannot use colour \"none\", did you mean \"NONE\"?"
+
 msgid "can't delete OutputObject attributes"
 msgstr "cannot delete OutputObject attributes"
 
+msgid "give messages when adding a cscope database"
+msgstr "give messages when adding a Cscope database"
+
+msgid "file names in a cscope file are relative to that file"
+msgstr "file names in a Cscope file are relative to that file"
+
+msgid ""
+"include \"lastline\" to show the last line even if it doesn't fit\n"
+"include \"uhex\" to show unprintable characters as a hex number"
+msgstr ""
+"include \"lastline\" to show the last line even if it does not fit\n"
+"include \"uhex\" to show unprintable characters as a hex number"
+
+msgid "number of lines used for the command-line"
+msgstr "number of lines used for the command line"
+
 msgid "don't redraw while executing macros"
 msgstr "do not redraw while executing macros"
 
@@ -360,6 +411,9 @@ msgstr "use GUI colours for the terminal
 msgid "don't unload a buffer when no longer shown in a window"
 msgstr "do not unload a buffer when no longer shown in a window"
 
+msgid "determines scroll behavior for split windows"
+msgstr "determines scroll behaviour for split windows"
+
 msgid "recognize keys that start with <Esc> in Insert mode"
 msgstr "recognise keys that start with <Esc> in Insert mode"
 
@@ -372,5 +426,36 @@ msgstr "add 's' flag in 'shortmess' (do 
 msgid "pattern to recognize a numbered list"
 msgstr "pattern to recognise a numbered list"
 
+msgid ""
+"\"alpha\", \"octal\", \"hex\", \"bin\" and/or \"unsigned\"; number formats\n"
+"recognized for CTRL-A and CTRL-X commands"
+msgstr ""
+"\"alpha\", \"octal\", \"hex\", \"bin\" and/or \"unsigned\"; number formats\n"
+"recognised for CTRL-A and CTRL-X commands"
+
+msgid "copy whitespace for indenting from previous line"
+msgstr "copy white space for indenting from previous line"
+
+msgid "preserve kind of whitespace when changing indent"
+msgstr "preserve kind of white space when changing indent"
+
+msgid "enable lisp mode"
+msgstr "enable Lisp mode"
+
+msgid "words that change how lisp indenting works"
+msgstr "words that change how Lisp indenting works"
+
 msgid "recognize mappings in mapped keys"
 msgstr "recognise mappings in mapped keys"
+
+msgid "key that triggers command-line expansion"
+msgstr "key that triggers command line expansion"
+
+msgid "command-line completion shows a list of matches"
+msgstr "command line completion shows a list of matches"
+
+msgid "when to edit the command-line right-to-left"
+msgstr "when to edit the command line right-to-left"
+
+msgid "what happens with a buffer when it's no longer in a window"
+msgstr "what happens with a buffer when it is no longer in a window"
--- a/src/po/ga.po
+++ b/src/po/ga.po
@@ -6,8 +6,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim 7.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-29 15:33-0600\n"
-"PO-Revision-Date: 2022-05-19 15:41-0500\n"
+"POT-Creation-Date: 2023-08-23 21:51+0000\n"
+"PO-Revision-Date: 2023-08-24 15:41-0500\n"
 "Last-Translator: Kevin Patrick Scannell <kscanne@gmail.com>\n"
 "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
 "Language: ga\n"
@@ -164,6 +164,26 @@ msgstr "Bun"
 msgid "Top"
 msgstr "Barr"
 
+#, c-format
+msgid "%d%%"
+msgstr "%d%%"
+
+#, c-format
+msgid " (%d of %d)"
+msgstr " (%d as %d)"
+
+#, c-format
+msgid " ((%d) of %d)"
+msgstr " ((%d) as %d)"
+
+#, c-format
+msgid " (file %d of %d)"
+msgstr " (comhad %d as %d)"
+
+#, c-format
+msgid " (file (%d) of %d)"
+msgstr " (comhad (%d) as %d)"
+
 msgid "[Prompt]"
 msgstr "[Leid]"
 
@@ -261,7 +281,8 @@ msgid "Warning: Using a weak encryption 
 msgstr "Rabhadh: Criptiúchán lag; féach :help 'cm'"
 
 msgid "Note: Encryption of swapfile not supported, disabling swap file"
-msgstr "Nóta: Ní féidir an comhad babhtála a chriptiú; comhad babhtála á dhíchumasú"
+msgstr ""
+"Nóta: Ní féidir an comhad babhtála a chriptiú; comhad babhtála á dhíchumasú"
 
 msgid "Enter encryption key: "
 msgstr "Cuir isteach eochair chriptiúcháin: "
@@ -275,6 +296,30 @@ msgstr "Ní ionann an dá eochair!"
 msgid "[crypted]"
 msgstr "[criptithe]"
 
+#, c-format
+msgid "xchacha20v2: using custom opslimit \"%llu\" for Key derivation."
+msgstr "xchacha20v2: ag baint úsáide as opslimit saincheaptha \"%llu\" agus an eochair á díorthú."
+
+#, c-format
+msgid "xchacha20v2: using default opslimit \"%llu\" for Key derivation."
+msgstr "xchacha20v2: ag baint úsáide as an opslimit réamhshocraithe \"%llu\" agus an eochair á díorthú."
+
+#, c-format
+msgid "xchacha20v2: using custom memlimit \"%lu\" for Key derivation."
+msgstr "xchacha20v2: ag baint úsáide as memlimit saincheaptha \"%lu\" agus an eochair á díorthú."
+
+#, c-format
+msgid "xchacha20v2: using default memlimit \"%lu\" for Key derivation."
+msgstr "xchacha20v2: ag baint úsáide as an memlimit réamhshocraithe \"%lu\" agus an eochair á díorthú."
+
+#, c-format
+msgid "xchacha20v2: using custom algorithm \"%d\" for Key derivation."
+msgstr "xchacha20v2: ag baint úsáide as algartam saincheaptha \"%d\" agus an eochair á díorthú."
+
+#, c-format
+msgid "xchacha20v2: using default algorithm \"%d\" for Key derivation."
+msgstr "xchacha20v2: ag baint úsáide as an algartam réamhshocraithe \"%d\" agus an eochair á díorthú."
+
 msgid "Entering Debug mode.  Type \"cont\" to continue."
 msgstr "Mód dífhabhtaithe á thosú.  Clóscríobh \"cont\" le dul ar aghaidh."
 
@@ -321,7 +366,8 @@ msgstr "argóint extend()"
 
 #, c-format
 msgid "Not enough memory to use internal diff for buffer \"%s\""
-msgstr "Níl go leor cuimhne ar fáil chun diff inmheánach a dhéanamh ar mhaolán \"%s\""
+msgstr ""
+"Níl go leor cuimhne ar fáil chun diff inmheánach a dhéanamh ar mhaolán \"%s\""
 
 msgid "Patch file"
 msgstr "Comhad paiste"
@@ -559,7 +605,8 @@ msgid "Save changes to \"%s\"?"
 msgstr "Sábháil athruithe ar \"%s\"?"
 
 msgid "Warning: Entered other buffer unexpectedly (check autocommands)"
-msgstr "Rabhadh: Chuathas i maolán eile gan súil leis (seiceáil na huathorduithe)"
+msgstr ""
+"Rabhadh: Chuathas i maolán eile gan súil leis (seiceáil na huathorduithe)"
 
 #, c-format
 msgid "W20: Required python version 2.x not supported, ignoring file: %s"
@@ -585,11 +632,6 @@ msgstr "Críoch na feidhme"
 msgid "Backwards range given, OK to swap"
 msgstr "Raon droim ar ais, babhtáil"
 
-msgid ""
-"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
-msgstr ""
-"INMHEÁNACH: Ní féidir EX_DFLALL a úsáid i gcomhar le ADDR_NONE, ADDR_UNSIGNED nó ADDR_QUICKFIX"
-
 #, c-format
 msgid "%d more file to edit.  Quit anyway?"
 msgid_plural "%d more files to edit.  Quit anyway?"
@@ -820,10 +862,12 @@ msgstr "Rabhadh"
 
 msgid ""
 "&OK\n"
-"&Load File"
+"&Load File\n"
+"Load File &and Options"
 msgstr ""
 "&OK\n"
-"&Luchtaigh Comhad"
+"&Lódáil Comhad\n"
+"Lódáil Comhad &agus Roghanna"
 
 msgid "<empty>"
 msgstr "<folamh>"
@@ -864,25 +908,6 @@ msgstr[4] "+-%s%3ld líne: "
 msgid "No match at cursor, finding next"
 msgstr "Níl a leithéid ag an gcúrsóir, ag cuardach ar an chéad cheann eile"
 
-msgid "<cannot open> "
-msgstr "<ní féidir a oscailt> "
-
-msgid "Pathname:"
-msgstr "Cosán:"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Cancel"
-msgstr "Cealaigh"
-
-msgid "Scrollbar Widget: Could not get geometry of thumb pixmap."
-msgstr ""
-"Giuirléid Scrollbharra: Ní féidir céimseata an mhapa picteilíní a fháil."
-
-msgid "Vim dialog"
-msgstr "Dialóg Vim"
-
 msgid "_Save"
 msgstr "_Sábháil"
 
@@ -904,12 +929,18 @@ msgstr ""
 "&Níl\n"
 "&Cealaigh"
 
+msgid "OK"
+msgstr "OK"
+
 msgid "Yes"
 msgstr "Tá"
 
 msgid "No"
 msgstr "Níl"
 
+msgid "Cancel"
+msgstr "Cealaigh"
+
 msgid "Input _Methods"
 msgstr "_Modhanna Ionchuir"
 
@@ -992,6 +1023,9 @@ msgstr "&OK"
 msgid "Selection"
 msgstr "Roghnú"
 
+msgid "Vim dialog"
+msgstr "Dialóg Vim"
+
 msgid "Find &Next"
 msgstr "An Chéad Chea&nn Eile"
 
@@ -1199,7 +1233,7 @@ msgid " # pid    database name          
 msgstr " # pid    ainm bunachair                       cosán tosaigh\n"
 
 msgid "Lua library cannot be loaded."
-msgstr "Ní féidir an leabharlann Lua a luchtú."
+msgstr "Ní féidir an leabharlann Lua a lódáil."
 
 msgid "cannot save undo information"
 msgstr "ní féidir eolas cealaithe a shábháil"
@@ -1361,9 +1395,6 @@ msgstr " Moladh litrithe (s^N^P)"
 msgid " Keyword Local completion (^N^P)"
 msgstr " Comhlánú logánta lorgfhocal (^N^P)"
 
-msgid "Hit end of paragraph"
-msgstr "Sroicheadh críoch an pharagraif"
-
 msgid "'dictionary' option is empty"
 msgstr "tá an rogha 'dictionary' folamh"
 
@@ -1396,6 +1427,12 @@ msgstr " Méadú"
 msgid "-- Searching..."
 msgstr "-- Ag Cuardach..."
 
+msgid "Hit end of paragraph"
+msgstr "Sroicheadh críoch an pharagraif"
+
+msgid "Pattern not found"
+msgstr "Patrún gan aimsiú"
+
 msgid "Back at original"
 msgstr "Ar ais ag an mbunáit"
 
@@ -1655,6 +1692,9 @@ msgstr ""
 "--not-a-term\t\tNá bac le rabhadh faoi ionchur/aschur gan a bheith ón "
 "teirminéal"
 
+msgid "--gui-dialog-file {fname}  For testing: write dialog text"
+msgstr "--gui-dialog-file {fname}  Le haghaidh tástála: scríobh téacs na dialóige"
+
 msgid "--ttyfail\t\tExit if input or output is not a terminal"
 msgstr "--ttyfail\t\tScoir mura bhfuil ionchur nó aschur ina theirminéal"
 
@@ -1665,7 +1705,7 @@ msgid "-U <gvimrc>\t\tUse <gvimrc> inste
 msgstr "-U <gvimrc>\t\tBain úsáid as <gvimrc> in ionad aon .gvimrc"
 
 msgid "--noplugin\t\tDon't load plugin scripts"
-msgstr "--noplugin\t\tNá luchtaigh breiseáin"
+msgstr "--noplugin\t\tNá lódáil breiseáin"
 
 msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
 msgstr "-p[N]\t\tOscail N cluaisín (réamhshocrú: ceann do gach comhad)"
@@ -1683,21 +1723,20 @@ msgid "+<lnum>\t\tStart at line <lnum>"
 msgstr "+<lnum>\t\tTosaigh ar líne <lnum>"
 
 msgid "--cmd <command>\tExecute <command> before loading any vimrc file"
-msgstr "--cmd <ordú>\tRith <ordú> sula luchtaítear aon chomhad vimrc"
+msgstr "--cmd <ordú>\tRith <ordú> sula lódáiltear aon chomhad vimrc"
 
 msgid "-c <command>\t\tExecute <command> after loading the first file"
-msgstr "-c <ordú>\t\tRith <ordú> i ndiaidh an chéad chomhad a luchtú"
+msgstr "-c <ordú>\t\tRith <ordú> i ndiaidh an chéad chomhad a lódáil"
 
 msgid "-S <session>\t\tSource file <session> after loading the first file"
 msgstr ""
-"-S <seisiún>\t\tLéigh comhad <seisiún> i ndiaidh an chéad chomhad a léamh"
+"-S <seisiún>\t\tLéigh comhad <seisiún> i ndiaidh an chéad chomhad a lódáil"
 
 msgid "-s <scriptin>\tRead Normal mode commands from file <scriptin>"
 msgstr "-s <script>\tLéigh orduithe gnáthmhóid ó chomhad <script>"
 
 msgid "-w <scriptout>\tAppend all typed commands to file <scriptout>"
-msgstr ""
-"-w <script>\tIarcheangail gach ordú clóscríofa le comhad <script>"
+msgstr "-w <script>\tIarcheangail gach ordú clóscríofa le comhad <script>"
 
 msgid "-W <scriptout>\tWrite all typed commands to file <scriptout>"
 msgstr "-W <aschur>\tScríobh gach ordú clóscríofa i gcomhad <aschur>"
@@ -1758,11 +1797,15 @@ msgstr ""
 "--startuptime <comhad>\tScríobh faisnéis maidir le tréimhse tosaithe i "
 "<comhad>"
 
+msgid "--log <file>\t\tStart logging to <file> early"
+msgstr "--log <comhad>\t\tTosaigh ag logáil sa chomhad <comhad> go luath"
+
 msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
 msgstr "-i <viminfo>\t\tÚsáid <viminfo> in ionad .viminfo"
 
 msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo"
-msgstr "--clean\t\t'nocompatible', réamhshocruithe Vim, gan breiseáin, gan viminfo"
+msgstr ""
+"--clean\t\t'nocompatible', réamhshocruithe Vim, gan breiseáin, gan viminfo"
 
 msgid "-h  or  --help\tPrint Help (this message) and exit"
 msgstr "-h  nó  --help\tTaispeáin an chabhair seo agus scoir"
@@ -1777,20 +1820,6 @@ msgstr ""
 "\n"
 "Argóintí a aithníonn gvim (leagan Motif):\n"
 
-msgid ""
-"\n"
-"Arguments recognised by gvim (neXtaw version):\n"
-msgstr ""
-"\n"
-"Argóintí a aithníonn gvim (leagan neXtaw):\n"
-
-msgid ""
-"\n"
-"Arguments recognised by gvim (Athena version):\n"
-msgstr ""
-"\n"
-"Argóintí a aithníonn gvim (leagan Athena):\n"
-
 msgid "-display <display>\tRun Vim on <display>"
 msgstr "-display <scáileán>\tRith Vim ar <scáileán>"
 
@@ -1801,7 +1830,8 @@ msgid "-background <color>\tUse <color> 
 msgstr "-background <dath>\tBain úsáid as <dath> don chúlra (-bg freisin)"
 
 msgid "-foreground <color>\tUse <color> for normal text (also: -fg)"
-msgstr "-foreground <dath>\tÚsáid <dath> le haghaidh gnáth-théacs (-fg freisin)"
+msgstr ""
+"-foreground <dath>\tÚsáid <dath> le haghaidh gnáth-théacs (-fg freisin)"
 
 msgid "-font <font>\t\tUse <font> for normal text (also: -fn)"
 msgstr "-font <cló>\t\tÚsáid <cló> le haghaidh gnáth-théacs (-fn freisin)"
@@ -1814,7 +1844,8 @@ msgstr "-italicfont <cló>\tÚsáid <cló> le haghaidh téacs iodálaigh"
 
 msgid "-geometry <geom>\tUse <geom> for initial geometry (also: -geom)"
 msgstr ""
-"-geometry <geoim>\tÚsáid <geoim> le haghaidh na céimseatan tosaigh (-geom freisin)"
+"-geometry <geoim>\tÚsáid <geoim> le haghaidh na céimseatan tosaigh (-geom "
+"freisin)"
 
 msgid "-borderwidth <width>\tUse a border width of <width> (also: -bw)"
 msgstr "-borderwidth <leithead>\tSocraigh <leithead> na himlíne (-bw freisin)"
@@ -1824,11 +1855,6 @@ msgstr ""
 "-scrollbarwidth <leithead> Socraigh leithead na scrollbharraí le bheith "
 "<leithead> (-sw freisin)"
 
-msgid "-menuheight <height>\tUse a menu bar height of <height> (also: -mh)"
-msgstr ""
-"-menuheight <airde>\tSocraigh airde an bharra roghchláir le bheith <airde> "
-"(-mh freisin)"
-
 msgid "-reverse\t\tUse reverse video (also: -rv)"
 msgstr "-reverse\t\tÚsáid fís aisiompaithe (-rv freisin)"
 
@@ -1863,6 +1889,32 @@ msgstr "-P <máthairchlár>\tOscail Vim laistigh den mháthairchlár"
 msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
 msgstr "--windowid <HWND>\tOscail Vim laistigh de ghiuirléid win32 eile"
 
+msgid "Seen modifyOtherKeys: true\n"
+msgstr "modifyOtherKeys feicthe: fíor\n"
+
+msgid "Unknown"
+msgstr "Anaithnid"
+
+msgid "Off"
+msgstr "As"
+
+msgid "On"
+msgstr "Ann"
+
+msgid "Disabled"
+msgstr "Díchumasaithe"
+
+msgid "Cleared"
+msgstr "Glanta"
+
+#, c-format
+msgid "modifyOtherKeys detected: %s\n"
+msgstr "modifyOtherKeys braite: %s\n"
+
+#, c-format
+msgid "Kitty keyboard protocol: %s\n"
+msgstr "Prótacal méarchláir Kitty: %s\n"
+
 msgid "No abbreviation found"
 msgstr "Níor aimsíodh aon ghiorrúchán"
 
@@ -1991,6 +2043,9 @@ msgstr "??? is féidir go ndearnadh praiseach de línte ó anseo go ???END"
 msgid "??? from here until ???END lines may have been inserted/deleted"
 msgstr "??? is féidir go bhfuil línte ionsáite/scriosta ó anseo go ???END"
 
+msgid "??? lines may be missing"
+msgstr "??? seans go bhfuil línte ar iarraidh"
+
 msgid "???END"
 msgstr "???DEIREADH"
 
@@ -2012,8 +2067,8 @@ msgstr "agus déan comparáid leis an mbunchomhad chun athruithe a lorg)"
 
 msgid "Recovery completed. Buffer contents equals file contents."
 msgstr ""
-"Athshlánú curtha i gcrích. Is ionann an t-ábhar sa mhaolán agus an t-ábhar sa "
-"chomhad."
+"Athshlánú curtha i gcrích. Is ionann an t-ábhar sa mhaolán agus an t-ábhar "
+"sa chomhad."
 
 msgid ""
 "\n"
@@ -2266,9 +2321,6 @@ msgstr "Idirbhriseadh: "
 msgid "Press ENTER or type command to continue"
 msgstr "Brúigh ENTER nó cuir ordú isteach le dul ar aghaidh"
 
-msgid "Unknown"
-msgstr "Anaithnid"
-
 #, c-format
 msgid "%s line %ld"
 msgstr "%s líne %ld"
@@ -2343,12 +2395,10 @@ msgstr "Rabhadh: ní féidir leis an teirminéal aibhsiú a dhéanamh"
 
 msgid "Type  :qa!  and press <Enter> to abandon all changes and exit Vim"
 msgstr ""
-"Clóscríobh  :qa!  agus brúigh <Enter> le scor ó Vim gan athruithe a "
-"shábháil"
+"Clóscríobh  :qa!  agus brúigh <Enter> le scor ó Vim gan athruithe a shábháil"
 
 msgid "Type  :qa  and press <Enter> to exit Vim"
-msgstr ""
-"Clóscríobh  :qa  agus brúigh <Enter> le scor ó Vim"
+msgstr "Clóscríobh  :qa  agus brúigh <Enter> le scor ó Vim"
 
 # ouch - English -ed ?
 #, c-format
@@ -2456,10 +2506,6 @@ msgstr ""
 "\n"
 "--- Roghanna ---"
 
-#, c-format
-msgid "For option %s"
-msgstr "Le haghaidh rogha %s"
-
 msgid "cannot open "
 msgstr "ní féidir a oscailt: "
 
@@ -2606,6 +2652,10 @@ msgid "XSMP lost ICE connection"
 msgstr "Chaill XSMP an ceangal ICE"
 
 #, c-format
+msgid "Could not load gpm library: %s"
+msgstr "Níorbh fhéidir leabharlann gpm a lódáil: %s"
+
+#, c-format
 msgid "dlerror = \"%s\""
 msgstr "dlerror = \"%s\""
 
@@ -2774,6 +2824,10 @@ msgid "recording"
 msgstr "á thaifeadadh"
 
 #, c-format
+msgid "Searching for \"%s\" under \"%s\" in \"%s\""
+msgstr "Ag déanamh cuardach ar \"%s\" faoi \"%s\" i \"%s\""
+
+#, c-format
 msgid "Searching for \"%s\" in \"%s\""
 msgstr "Ag déanamh cuardach ar \"%s\" i \"%s\""
 
@@ -3090,7 +3144,8 @@ msgstr "%d focal dúblach i %s"
 
 #, c-format
 msgid "Ignored %d word(s) with non-ASCII characters in %s"
-msgstr "Rinneadh neamhshuim ar %d focal a bhfuil carachtair neamh-ASCII iontu i %s"
+msgstr ""
+"Rinneadh neamhshuim ar %d focal a bhfuil carachtair neamh-ASCII iontu i %s"
 
 #, c-format
 msgid "Reading word file %s..."
@@ -3201,36 +3256,6 @@ msgstr "Níl aon mhír chomhréire sainmhínithe le haghaidh an mhaoláin seo"
 msgid "'redrawtime' exceeded, syntax highlighting disabled"
 msgstr "'redrawtime' sáraithe, díchumasaíodh aibhsiú comhréire"
 
-msgid "syntax conceal on"
-msgstr "syntax conceal on"
-
-msgid "syntax conceal off"
-msgstr "syntax conceal off"
-
-msgid "syntax case ignore"
-msgstr "syntax case ignore"
-
-msgid "syntax case match"
-msgstr "syntax case match"
-
-msgid "syntax foldlevel start"
-msgstr "syntax foldlevel start"
-
-msgid "syntax foldlevel minimum"
-msgstr "syntax foldlevel minimum"
-
-msgid "syntax spell toplevel"
-msgstr "syntax spell toplevel"
-
-msgid "syntax spell notoplevel"
-msgstr "syntax spell notoplevel"
-
-msgid "syntax spell default"
-msgstr "syntax spell default"
-
-msgid "syntax iskeyword "
-msgstr "syntax iskeyword "
-
 msgid "syntax iskeyword not set"
 msgstr "syntax iskeyword gan socrú"
 
@@ -3317,16 +3342,16 @@ msgstr ""
 "\n"
 "  # Go clib        Ó    líne  i  gcomhad/téacs"
 
-#, c-format
-msgid "Searching tags file %s"
-msgstr "Comhad clibeanna %s á chuardach"
+msgid "Ignoring long line in tags file"
+msgstr "Ag déanamh neamhaird de líne fhada sa chomhad clibeanna"
 
 #, c-format
 msgid "Before byte %ld"
 msgstr "Roimh bheart %ld"
 
-msgid "Ignoring long line in tags file"
-msgstr "Ag déanamh neamhaird de líne fhada sa chomhad clibeanna"
+#, c-format
+msgid "Searching tags file %s"
+msgstr "Comhad clibeanna %s á chuardach"
 
 #, c-format
 msgid "Duplicate field name: %s"
@@ -3493,6 +3518,10 @@ msgid "%s returning %s"
 msgstr "%s ag aischur %s"
 
 #, c-format
+msgid "Function %s does not need compiling"
+msgstr "Ní gá feidhm %s a thiomsú"
+
+#, c-format
 msgid "%s (%s, compiled %s)"
 msgstr "%s (%s, tiomsaithe %s)"
 
@@ -3599,13 +3628,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"Big version "
-msgstr ""
-"\n"
-"Leagan mór "
-
-msgid ""
-"\n"
 "Normal version "
 msgstr ""
 "\n"
@@ -3613,13 +3635,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"Small version "
-msgstr ""
-"\n"
-"Leagan beag "
-
-msgid ""
-"\n"
 "Tiny version "
 msgstr ""
 "\n"
@@ -3640,12 +3655,6 @@ msgstr "le GUI GTK2."
 msgid "with X11-Motif GUI."
 msgstr "le GUI X11-Motif."
 
-msgid "with X11-neXtaw GUI."
-msgstr "le GUI X11-neXtaw."
-
-msgid "with X11-Athena GUI."
-msgstr "le GUI X11-Athena."
-
 msgid "with Haiku GUI."
 msgstr "le GUI Haiku."
 
@@ -3949,11 +3958,12 @@ msgstr "Níl ach aon fhuinneog amháin ann cheana"
 
 #, c-format
 msgid "E370: Could not load library %s"
-msgstr "E370: Níorbh fhéidir leabharlann %s a oscailt"
+msgstr "E370: Níorbh fhéidir leabharlann %s a lódáil"
 
 msgid "Sorry, this command is disabled: the Perl library could not be loaded."
 msgstr ""
-"Ár leithscéal, níl an t-ordú seo le fáil: níorbh fhéidir an leabharlann Perl a luchtú."
+"Ár leithscéal, níl an t-ordú seo le fáil: níorbh fhéidir an leabharlann Perl "
+"a lódáil."
 
 msgid "Edit with Vim using &tabpages"
 msgstr "Cuir in eagar le Vim i g&cluaisíní"
@@ -3977,8 +3987,7 @@ msgid "Edits the selected file(s) with V
 msgstr "Cuir an comhad nó na comhaid roghnaithe in eagar le Vim"
 
 msgid "Error creating process: Check if gvim is in your path!"
-msgstr ""
-"Earráid agus próiseas á chruthú: Deimhnigh go bhfuil gvim i do chosán!"
+msgstr "Earráid agus próiseas á chruthú: Deimhnigh go bhfuil gvim i do chosán!"
 
 msgid "gvimext.dll error"
 msgstr "earráid gvimext.dll"
@@ -3989,9 +3998,9 @@ msgstr "Idirbhriste"
 msgid "E10: \\ should be followed by /, ? or &"
 msgstr "E10: Ba chóir /, ? nó & a chur i ndiaidh \\"
 
-msgid "E11: Invalid in command-line window; <CR> executes, CTRL-C quits"
-msgstr ""
-"E11: Neamhbhailí i bhfuinneog líne na n-orduithe; <CR> = rith, CTRL-C = scor"
+msgid "E11: Invalid in command-line window; :q<CR> closes the window"
+msgstr ""
+"E11: Neamhbhailí i bhfuinneog líne na n-orduithe; :q<CR> chun an fhuinneog a dhúnadh"
 
 msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search"
 msgstr ""
@@ -4082,9 +4091,6 @@ msgstr "E37: Gan scríobh ón athrú is déanaí"
 msgid "E37: No write since last change (add ! to override)"
 msgstr "E37: Tá athruithe ann gan sábháil (cuir ! leis an ordú chun sárú)"
 
-msgid "E38: Null argument"
-msgstr "E38: Argóint nialasach"
-
 msgid "E39: Number expected"
 msgstr "E39: Ag súil le huimhir"
 
@@ -4098,12 +4104,6 @@ msgstr "E41: Níl aon chuimhne le fáil!"
 msgid "E42: No Errors"
 msgstr "E42: Níl Aon Earráid Ann"
 
-msgid "E43: Damaged match string"
-msgstr "E43: Teaghrán cuardaigh truaillithe"
-
-msgid "E44: Corrupted regexp program"
-msgstr "E44: Clár na slonn ionadaíochta truaillithe"
-
 msgid "E45: 'readonly' option is set (add ! to override)"
 msgstr "E45: Tá an rogha 'readonly' socraithe (cuir ! leis an ordú chun sárú)"
 
@@ -4247,8 +4247,8 @@ msgstr "E88: Ní féidir a dhul roimh an chéad mhaolán"
 #, c-format
 msgid "E89: No write since last change for buffer %d (add ! to override)"
 msgstr ""
-"E89: Athraíodh maolán %d ach nach bhfuil sé sábháilte ó shin (cuir ! leis "
-"an ordú chun sárú)"
+"E89: Athraíodh maolán %d ach nach bhfuil sé sábháilte ó shin (cuir ! leis an "
+"ordú chun sárú)"
 
 msgid "E90: Cannot unload last buffer"
 msgstr "E90: Ní féidir an maolán deireanach a dhíluchtú"
@@ -4357,7 +4357,7 @@ msgstr "E119: Níl go leor feidhmeanna d'fheidhm: %s"
 
 #, c-format
 msgid "E120: Using <SID> not in a script context: %s"
-msgstr "E120: <SID> á úsáid ach gan a bheith i gcomhthéacs scripte: %s"
+msgstr "E120: <SID> á úsáid taobh amuigh de chomhthéacs scripte: %s"
 
 #, c-format
 msgid "E121: Undefined variable: %s"
@@ -4369,7 +4369,8 @@ msgstr "E121: Athróg gan sainmhíniú: %c:%s"
 
 #, c-format
 msgid "E122: Function %s already exists, add ! to replace it"
-msgstr "E122: Tá feidhm %s ann cheana, cuir ! leis an ordú chun é a fhorscríobh"
+msgstr ""
+"E122: Tá feidhm %s ann cheana, cuir ! leis an ordú chun é a fhorscríobh"
 
 #, c-format
 msgid "E123: Undefined function: %s"
@@ -4429,7 +4430,7 @@ msgid "E138: Can't write viminfo file %s
 msgstr "E138: Ní féidir comhad viminfo %s a scríobh!"
 
 msgid "E139: File is loaded in another buffer"
-msgstr "E139: Tá an comhad luchtaithe i maolán eile"
+msgstr "E139: Tá an comhad lódáilte i maolán eile"
 
 msgid "E140: Use ! to write partial buffer"
 msgstr "E140: Bain úsáid as ! chun maolán neamhiomlán a scríobh"
@@ -4551,11 +4552,12 @@ msgstr "E172: Marcóir ar iarraidh"
 
 #, c-format
 msgid "E173: %d more file to edit"
-msgstr "E173: %d chomhad eile le cur in eagar"
-
-#, c-format
-msgid "E173: %d more files to edit"
-msgstr "E173: %d comhad le cur in eagar"
+msgid_plural "E173: %d more files to edit"
+msgstr[0] "E173: %d chomhad amháin eile le cur in eagar"
+msgstr[1] "E173: %d chomhad eile le cur in eagar"
+msgstr[2] "E173: %d chomhad eile le cur in eagar"
+msgstr[3] "E173: %d gcomhad eile le cur in eagar"
+msgstr[4] "E173: %d comhad eile le cur in eagar"
 
 #, c-format
 msgid "E174: Command already exists: add ! to replace it: %s"
@@ -4724,9 +4726,6 @@ msgstr "E220: } ar iarraidh."
 msgid "E221: Marker cannot start with lower case letter"
 msgstr "E221: Ní cheadaítear litir chás íochtair ag tús marcóra"
 
-msgid "E222: Add to internal buffer that was already read from"
-msgstr "E222: Cuir le maolán inmheánach a léadh uaidh cheana"
-
 msgid "E223: Recursive mapping"
 msgstr "E223: Mapáil athchúrsach"
 
@@ -4746,9 +4745,6 @@ msgstr "E226: Tá giorrúchán ann cheana le haghaidh %s"
 msgid "E227: Mapping already exists for %s"
 msgstr "E227: Tá mapáil ann cheana le haghaidh %s"
 
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap: Mód neamhcheadaithe"
-
 msgid "E229: Cannot start the GUI"
 msgstr "E229: Ní féidir an GUI a chur ag obair"
 
@@ -4759,10 +4755,6 @@ msgstr "E230: Ní féidir léamh ó \"%s\""
 msgid "E231: 'guifontwide' invalid"
 msgstr "E231: 'guifontwide' neamhbhailí"
 
-msgid "E232: Cannot create BalloonEval with both message and callback"
-msgstr ""
-"E232: Ní féidir BalloonEval a chruthú le teachtaireacht agus aisghlaoch araon"
-
 msgid "E233: Cannot open display"
 msgstr "E233: Ní féidir an scáileán a oscailt"
 
@@ -4873,8 +4865,8 @@ msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
 "loaded."
 msgstr ""
-"E263: Ár leithscéal, níl an t-ordú seo le fáil, níorbh fhéidir an leabharlann "
-"Python a luchtú."
+"E263: Ár leithscéal, níl an t-ordú seo le fáil, níorbh fhéidir an "
+"leabharlann Python a lódáil."
 
 msgid "E264: Python: Error initialising I/O objects"
 msgstr "E264: Python: Earráid agus réada I/A á dtúsú"
@@ -4885,8 +4877,8 @@ msgstr "E265: caithfidh $_ a bheith den chineál Teaghráin"
 msgid ""
 "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
 msgstr ""
-"E266: Ár leithscéal, níl an t-ordú seo le fáil, níorbh fhéidir an leabharlann "
-"Ruby a luchtú."
+"E266: Ár leithscéal, níl an t-ordú seo le fáil, níorbh fhéidir an "
+"leabharlann Ruby a lódáil."
 
 msgid "E267: Unexpected return"
 msgstr "E267: \"return\" gan choinne"
@@ -4926,13 +4918,6 @@ msgstr "E277: Ní féidir freagra ón fhreastalaí a léamh"
 msgid "E279: Sorry, ++shell is not supported on this system"
 msgstr "E279: Ár leithscéal, ní thacaíonn an córas seo le ++shell"
 
-msgid ""
-"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
-"org"
-msgstr ""
-"E280: EARRÁID MHARFACH TCL: liosta truaillithe tagartha!? Seol tuairisc "
-"fhabht chuig <vim-dev@vim.org> le do thoil"
-
 #, c-format
 msgid "E282: Cannot read from \"%s\""
 msgstr "E282: Ní féidir léamh ó \"%s\""
@@ -4962,13 +4947,6 @@ msgstr "E289: Ní thacaíonn an modh ionchuir mo chineál réamheagair"
 msgid "E290: List or number required"
 msgstr "E290: Tá gá le liosta nó uimhir"
 
-#, c-format
-msgid "E292: Invalid count for del_bytes(): %ld"
-msgstr "E292: Líon neamhbhailí le haghaidh del_bytes(): %ld"
-
-msgid "E293: Block was not locked"
-msgstr "E293: Ní raibh an bloc faoi ghlas"
-
 msgid "E294: Seek error in swap file read"
 msgstr "E294: Earráid chuardaigh agus comhad babhtála á léamh"
 
@@ -4981,15 +4959,6 @@ msgstr "E296: Earráid chuardaigh agus comhad babhtála á scríobh"
 msgid "E297: Write error in swap file"
 msgstr "E297: Earráid sa scríobh i gcomhad babhtála"
 
-msgid "E298: Didn't get block nr 0?"
-msgstr "E298: Ní bhfuarthas bloc 0?"
-
-msgid "E298: Didn't get block nr 1?"
-msgstr "E298: Ní bhfuarthas bloc a haon?"
-
-msgid "E298: Didn't get block nr 2?"
-msgstr "E298: Ní bhfuarthas bloc a dó?"
-
 msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
 msgstr "E299: Ní cheadaítear luacháil Perl i mbosca gainimh gan an modúl Safe"
 
@@ -5008,9 +4977,6 @@ msgstr ""
 "E303: Ní féidir comhad babhtála le haghaidh \"%s\" a oscailt, ní féidir "
 "athshlánú"
 
-msgid "E304: ml_upd_block0(): Didn't get block 0??"
-msgstr "E304: ml_upd_block0(): Ní bhfuarthas bloc 0??"
-
 #, c-format
 msgid "E305: No swap file found for %s"
 msgstr "E305: Níor aimsíodh comhad babhtála le haghaidh %s"
@@ -5049,48 +5015,13 @@ msgstr "E313: Ní féidir é a chaomhnú, níl aon chomhad babhtála ann"
 msgid "E314: Preserve failed"
 msgstr "E314: Theip ar chaomhnú"
 
-#, c-format
-msgid "E315: ml_get: Invalid lnum: %ld"
-msgstr "E315: ml_get: lnum neamhbhailí: %ld"
-
-#, c-format
-msgid "E316: ml_get: Cannot find line %ld in buffer %d %s"
-msgstr "E316: ml_get: Ní féidir líne %ld i maolán %d %s a aimsiú"
-
-msgid "E317: Pointer block id wrong"
-msgstr "E317: Aitheantas mícheart ar an mbloc pointeora"
-
-msgid "E317: Pointer block id wrong 2"
-msgstr "E317: Aitheantas mícheart ar an mbloc pointeora 2"
-
-msgid "E317: Pointer block id wrong 3"
-msgstr "E317: Aitheantas mícheart ar an mbloc pointeora 3"
-
-msgid "E317: Pointer block id wrong 4"
-msgstr "E317: Aitheantas mícheart ar an mbloc pointeora 4"
-
-msgid "E318: Updated too many blocks?"
-msgstr "E318: An iomarca bloic nuashonraithe?"
-
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Ár leithscéal, níl an t-ordú ar fáil sa leagan seo"
 
 #, c-format
-msgid "E320: Cannot find line %ld"
-msgstr "E320: Líne %ld gan aimsiú"
-
-#, c-format
 msgid "E321: Could not reload \"%s\""
 msgstr "E321: Ní féidir \"%s\" a athluchtú"
 
-#, c-format
-msgid "E322: Line number out of range: %ld past the end"
-msgstr "E322: Líne-uimhir as raon: %ld thar dheireadh"
-
-#, c-format
-msgid "E323: Line count wrong in block %ld"
-msgstr "E323: Líon mícheart na línte i mbloc %ld"
-
 msgid "E324: Can't open PostScript output file"
 msgstr "E324: Ní féidir aschomhad PostScript a oscailt"
 
@@ -5144,8 +5075,8 @@ msgstr "E338: Níl brabhsálaí comhaid ar fáil sa mhód consóil"
 msgid "E339: Pattern too long"
 msgstr "E339: Slonn rófhada"
 
-msgid "E341: Internal error: lalloc(0, )"
-msgstr "E341: Earráid inmheánach: lalloc(0, )"
+msgid "E340: Internal error; if you can reproduce please report a bug"
+msgstr "E340: Earráid inmheánach: más féidir leat an fhadhb a chruthú arís, cuir tuairisc chugainn, le do thoil"
 
 #, c-format
 msgid "E342: Out of memory!  (allocating %lu bytes)"
@@ -5202,9 +5133,6 @@ msgstr "E354: Ainm neamhbhailí tabhaill: '%s'"
 msgid "E355: Unknown option: %s"
 msgstr "E355: Rogha anaithnid: %s"
 
-msgid "E356: get_varp ERROR"
-msgstr "E356: EARRÁID get_varp"
-
 #, c-format
 msgid "E357: 'langmap': Matching character missing for %s"
 msgstr "E357: 'langmap': Carachtar comhoiriúnach ar iarraidh le haghaidh %s"
@@ -5249,7 +5177,7 @@ msgstr "E369: Mír neamhbhailí i %s%%[]"
 
 #, c-format
 msgid "E370: Could not load library %s: %s"
-msgstr "E370: Níorbh fhéidir an leabharlann %s a oscailt: %s"
+msgstr "E370: Níorbh fhéidir an leabharlann %s a lódáil: %s"
 
 msgid "E371: Command not found"
 msgstr "E371: Ní bhfuarthas an t-ordú"
@@ -5423,6 +5351,9 @@ msgstr "E417: Argóint ar iarraidh: %s"
 msgid "E418: Illegal value: %s"
 msgstr "E418: Luach neamhcheadaithe: %s"
 
+msgid "E418: I'm a teapot"
+msgstr "E418: Is taephota mé"
+
 msgid "E419: FG color unknown"
 msgstr "E419: Dath anaithnid an chúlra"
 
@@ -5489,15 +5420,6 @@ msgstr "E436: Níl aon iontráil \"%s\" sa termcap"
 msgid "E437: Terminal capability \"cm\" required"
 msgstr "E437: Tá gá leis an gcumas teirminéil \"cm\""
 
-msgid "E438: u_undo: Line numbers wrong"
-msgstr "E438: u_undo: Líne-uimhreacha míchearta"
-
-msgid "E439: Undo list corrupt"
-msgstr "E439: Tá an liosta cealaithe truaillithe"
-
-msgid "E440: Undo line missing"
-msgstr "E440: Líne chealaithe ar iarraidh"
-
 msgid "E441: There is no preview window"
 msgstr "E441: Níl aon fhuinneog réamhamhairc ann"
 
@@ -5522,7 +5444,7 @@ msgstr "E447: Níl aon fháil ar chomhad \"%s\" sa chosán"
 
 #, c-format
 msgid "E448: Could not load library function %s"
-msgstr "E448: Ní féidir feidhm %s leabharlainne a luchtú"
+msgstr "E448: Ní féidir feidhm %s leabharlainne a lódáil"
 
 msgid "E449: Invalid expression received"
 msgstr "E449: Fuarthas slonn neamhbhailí"
@@ -5613,9 +5535,6 @@ msgstr "E471: Tá gá le hargóint"
 msgid "E472: Command failed"
 msgstr "E472: Theip ar ordú"
 
-msgid "E473: Internal error in regexp"
-msgstr "E473: Earráid inmheánach i slonn ionadaíochta"
-
 msgid "E474: Invalid argument"
 msgstr "E474: Argóint neamhbhailí"
 
@@ -5638,6 +5557,10 @@ msgstr "E476: Ordú neamhbhailí"
 msgid "E476: Invalid command: %s"
 msgstr "E476: Ordú neamhbhailí: %s"
 
+#, c-format
+msgid "E476: Invalid command: %s, expected %s"
+msgstr "E476: Ordú neamhbhailí: %s, bhíothas ag súil le %s"
+
 msgid "E477: No ! allowed"
 msgstr "E477: Ní cheadaítear !"
 
@@ -5679,6 +5602,10 @@ msgstr "E486: Patrún gan aimsiú: %s"
 msgid "E487: Argument must be positive"
 msgstr "E487: Argóint dheimhneach de dhíth"
 
+#, c-format
+msgid "E487: Argument must be positive: %s"
+msgstr "E487: Argóint dheimhneach de dhíth: %s"
+
 msgid "E488: Trailing characters"
 msgstr "E488: Carachtair chun deiridh"
 
@@ -5738,6 +5665,9 @@ msgstr "ní comhad ná gléas inscríofa á"
 msgid "E503: \"%s\" is not a file or writable device"
 msgstr "E503: ní comhad ná gléas inscríofa é \"%s\""
 
+msgid "E503: Coffee is currently not available"
+msgstr "E503: Níl caife ar fáil faoi láthair"
+
 msgid "is read-only (cannot override: \"W\" in 'cpoptions')"
 msgstr "is inléite amháin é (ní féidir é seo a shárú: tá \"W\" i 'cpoptions')"
 
@@ -5754,11 +5684,13 @@ msgstr ""
 
 msgid "E507: Close error for backup file (add ! to write anyway)"
 msgstr ""
-"E507: Earráid agus comhad cúltaca á dhúnadh (cuir ! leis le scríobh mar sin féin)"
+"E507: Earráid agus comhad cúltaca á dhúnadh (cuir ! leis le scríobh mar sin "
+"féin)"
 
 msgid "E508: Can't read file for backup (add ! to write anyway)"
 msgstr ""
-"E508: Ní féidir an comhad cúltaca a léamh (cuir ! leis le scríobh mar sin féin)"
+"E508: Ní féidir an comhad cúltaca a léamh (cuir ! leis le scríobh mar sin "
+"féin)"
 
 msgid "E509: Cannot create backup file (add ! to override)"
 msgstr ""
@@ -5766,7 +5698,8 @@ msgstr ""
 
 msgid "E510: Can't make backup file (add ! to write anyway)"
 msgstr ""
-"E510: Ní féidir comhad cúltaca a chruthú (cuir ! leis le scríobh mar sin féin)"
+"E510: Ní féidir comhad cúltaca a chruthú (cuir ! leis le scríobh mar sin "
+"féin)"
 
 msgid "E511: NetBeans already connected"
 msgstr "E511: Tá NetBeans ceangailte cheana"
@@ -5781,10 +5714,10 @@ msgstr ""
 
 #, c-format
 msgid ""
-"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+"E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
 "override)"
 msgstr ""
-"E513: earráid le linn scríofa, theip ar thiontú ar líne %ld (úsáid 'fenc' "
+"E513: Earráid le linn scríofa, theip ar thiontú ar líne %ld (úsáid 'fenc' "
 "folamh le sárú)"
 
 msgid "E514: Write error (file system full?)"
@@ -5869,6 +5802,10 @@ msgstr ""
 "folamh"
 
 #, c-format
+msgid "E538: Pattern found in every line: %s"
+msgstr "E538: Aimsíodh an patrún i ngach uile líne: %s"
+
+#, c-format
 msgid "E539: Illegal character <%s>"
 msgstr "E539: Carachtar neamhcheadaithe <%s>"
 
@@ -5960,14 +5897,11 @@ msgstr "E567: Níl aon cheangal cscope ann"
 msgid "E568: Duplicate cscope database not added"
 msgstr "E568: Níor cuireadh bunachar sonraí dúblach cscope leis"
 
-msgid "E570: Fatal error in cs_manage_matches"
-msgstr "E570: Earráid mharfach i cs_manage_matches"
-
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
 msgstr ""
-"E571: Ár leithscéal, níl an t-ordú seo le fáil: níorbh fhéidir an leabharlann "
-"Tcl a luchtú."
+"E571: Ár leithscéal, níl an t-ordú seo le fáil: níorbh fhéidir an "
+"leabharlann Tcl a lódáil."
 
 #, c-format
 msgid "E572: Exit code %d"
@@ -5990,9 +5924,6 @@ msgstr "`>' ar iarraidh"
 msgid "Illegal register name"
 msgstr "Ainm neamhcheadaithe tabhaill"
 
-msgid "E578: Not allowed to change text here"
-msgstr "E578: Níl cead agat téacs a athrú anseo"
-
 msgid "E579: :if nesting too deep"
 msgstr "E579: :if neadaithe ródhomhain"
 
@@ -6109,15 +6040,15 @@ msgstr "E612: Sainmhíníodh an iomarca comharthaí"
 msgid "E613: Unknown printer font: %s"
 msgstr "E613: Clófhoireann anaithnid printéara: %s"
 
-msgid "E614: vim_SelFile: can't return to current directory"
-msgstr "E614: vim_SelFile: ní féidir dul ar ais go dtí an chomhadlann reatha"
-
-msgid "E615: vim_SelFile: can't get current directory"
-msgstr "E615: vim_SelFile: níl an chomhadlann reatha ar fáil"
-
-#, c-format
-msgid "E616: vim_SelFile: can't get font %s"
-msgstr "E616: vim_SelFile: níl aon fháil ar an chlófhoireann %s"
+msgid "E614: Class required"
+msgstr "E614: Aicme ag teastáil"
+
+msgid "E615: Object required"
+msgstr "E615: Réad ag teastáil"
+
+#, c-format
+msgid "E616: Object required for argument %d"
+msgstr "E616: Réad ag teastáil in argóint %d"
 
 msgid "E617: Cannot be changed in the GTK GUI"
 msgstr "E617: Ní féidir é a athrú sa GUI GTK"
@@ -6156,6 +6087,14 @@ msgid "E626: Cannot get cscope database 
 msgstr "E626: Ní féidir eolas a fháil faoin bhunachar sonraí cscope"
 
 #, c-format
+msgid "E627: Missing colon: %s"
+msgstr "E627: Idirstad ar iarraidh: %s"
+
+#, c-format
+msgid "E628: Missing ! or / in: %s"
+msgstr "E628: ! nó / ar iarraidh in: %s"
+
+#, c-format
 msgid "E630: %s(): Write while not connected"
 msgstr "E630: %s(): Scríobh gan ceangal a bheith ann"
 
@@ -6163,12 +6102,76 @@ msgstr "E630: %s(): Scríobh gan ceangal a bheith ann"
 msgid "E631: %s(): Write failed"
 msgstr "E631: %s(): Theip ar scríobh"
 
+msgid "E632: Invalid buffer identifier in getLength"
+msgstr "E632: Aitheantóir maoláin neamhbhailí in getLength"
+
+msgid "E633: Invalid buffer identifier in getText"
+msgstr "E633: Aitheantóir maoláin neamhbhailí in getText"
+
+msgid "E634: Invalid buffer identifier in remove"
+msgstr "E634: Aitheantóir maoláin neamhbhailí in remove"
+
+msgid "E635: Invalid buffer identifier in insert"
+msgstr "E635: Aitheantóir maoláin neamhbhailí in insert"
+
+msgid "E636: Invalid buffer identifier in create"
+msgstr "E636: Aitheantóir maoláin neamhbhailí in create"
+
+msgid "E637: Invalid buffer identifier in startDocumentListen"
+msgstr "E637: Aitheantóir maoláin neamhbhailí in startDocumentListen"
+
+msgid "E638: Invalid buffer identifier in stopDocumentListen"
+msgstr "E638: Aitheantóir maoláin neamhbhailí in stopDocumentListen"
+
+msgid "E639: Invalid buffer identifier in setTitle"
+msgstr "E639: Aitheantóir maoláin neamhbhailí in setTitle"
+
+msgid "E640: Invalid buffer identifier in initDone"
+msgstr "E640: Aitheantóir maoláin neamhbhailí in initDone"
+
+msgid "E641: Invalid buffer identifier in setBufferNumber"
+msgstr "E641: Aitheantóir maoláin neamhbhailí in setBufferNumber"
+
+#, c-format
+msgid "E642: File %s not found in setBufferNumber"
+msgstr "E642: Comhad %s gan aimsiú in setBufferNumber"
+
+msgid "E643: Invalid buffer identifier in setFullName"
+msgstr "E643: Aitheantóir maoláin neamhbhailí in setFullName"
+
+msgid "E644: Invalid buffer identifier in editFile"
+msgstr "E644: Aitheantóir maoláin neamhbhailí in editFile"
+
+msgid "E645: Invalid buffer identifier in setVisible"
+msgstr "E645: Aitheantóir maoláin neamhbhailí in setVisible"
+
+msgid "E646: Invalid buffer identifier in setModified"
+msgstr "E646: Aitheantóir maoláin neamhbhailí in setModified"
+
+msgid "E647: Invalid buffer identifier in setDot"
+msgstr "E647: Aitheantóir maoláin neamhbhailí in setDot"
+
+msgid "E648: Invalid buffer identifier in close"
+msgstr "E648: Aitheantóir maoláin neamhbhailí in close"
+
+msgid "E649: Invalid buffer identifier in close"
+msgstr "E649: Aitheantóir maoláin neamhbhailí in close"
+
+msgid "E650: Invalid buffer identifier in defineAnnoType"
+msgstr "E650: Aitheantóir maoláin neamhbhailí in defineAnnoType"
+
+msgid "E651: Invalid buffer identifier in addAnno"
+msgstr "E651: Aitheantóir maoláin neamhbhailí in addAnno"
+
+msgid "E652: Invalid buffer identifier in getAnno"
+msgstr "E652: Aitheantóir maoláin neamhbhailí in getAnno"
+
 #, c-format
 msgid "E654: Missing delimiter after search pattern: %s"
 msgstr "E654: Deighilteoir ar iarraidh tar éis patrúin cuardaigh: %s"
 
 msgid "E655: Too many symbolic links (cycle?)"
-msgstr "E655: An iomarca naisc shiombalacha (ciogal?)"
+msgstr "E655: An iomarca nascanna siombalacha (ciogal?)"
 
 msgid "NetBeans disallows writes of unmodified buffers"
 msgstr "Ní cheadaíonn NetBeans maoláin gan athrú a bheith scríofa"
@@ -6209,7 +6212,8 @@ msgstr "E667: Theip ar fsync"
 
 #, c-format
 msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
-msgstr "E668: Mód mícheart rochtana ar an chomhad eolas ceangail NetBeans: \"%s\""
+msgstr ""
+"E668: Mód mícheart rochtana ar an chomhad eolas ceangail NetBeans: \"%s\""
 
 msgid "E669: Unprintable character in group name"
 msgstr "E669: Carachtar neamhghrafach in ainm grúpa"
@@ -6235,8 +6239,9 @@ msgstr ""
 msgid "E675: No default font specified for multi-byte printing."
 msgstr "E675: Níor réamhshocraíodh cló le haghaidh priontála ilbheart."
 
-msgid "E676: No matching autocommands for acwrite buffer"
-msgstr "E676: Níl aon uathordú comhoiriúnaithe le haghaidh maoláin acwrite"
+#, c-format
+msgid "E676: No matching autocommands for buftype=%s buffer"
+msgstr "E676: Níl aon uathordú comhoiriúnaithe le haghaidh maoláin buftype=%s"
 
 msgid "E677: Error writing temp file"
 msgstr "E677: Earráid agus comhad sealadach á scríobh"
@@ -6246,14 +6251,14 @@ msgid "E678: Invalid character after %s%
 msgstr "E678: Carachtar neamhbhailí i ndiaidh %s%%[dxouU]"
 
 msgid "E679: Recursive loop loading syncolor.vim"
-msgstr "E679: Lúb athchúrsach agus syncolor.vim á luchtú"
+msgstr "E679: Lúb athchúrsach agus syncolor.vim á lódáil"
 
 #, c-format
 msgid "E680: <buffer=%d>: invalid buffer number"
 msgstr "E680: <maolán=%d>: uimhir neamhbhailí mhaoláin"
 
 msgid "E681: Buffer is not loaded"
-msgstr "E681: Níl an maolán luchtaithe"
+msgstr "E681: Níl an maolán lódáilte"
 
 msgid "E682: Invalid search pattern or delimiter"
 msgstr "E682: Patrún nó teormharcóir neamhbhailí cuardaigh"
@@ -6291,6 +6296,10 @@ msgstr "E691: Is féidir Liosta a chur i gcomparáid le Liosta eile amháin"
 msgid "E692: Invalid operation for List"
 msgstr "E692: Oibríocht neamhbhailí ar Liostaí"
 
+#, c-format
+msgid "E693: List or Class required for argument %d"
+msgstr "E693: Liosta nó Aicme ag teastáil le hargóint %d"
+
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: Oibríocht neamhbhailí ar Funcref"
 
@@ -6333,6 +6342,10 @@ msgid "E705: Variable name conflicts wit
 msgstr "E705: Tagann ainm athróige salach ar fheidhm atá ann cheana: %s"
 
 #, c-format
+msgid "E706: Argument of %s must be a List, String or Dictionary"
+msgstr "E706: Ní mór don argóint %s a bheith ina Liosta, Teaghrán, nó Foclóir"
+
+#, c-format
 msgid "E707: Function name conflicts with variable: %s"
 msgstr "E707: Tagann ainm na feidhme salach ar athróg: %s"
 
@@ -6477,8 +6490,8 @@ msgstr ""
 
 msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
-"E747: Ní féidir an chomhadlann a athrú, athraíodh an maolán (cuir ! leis "
-"an ordú chun sárú)"
+"E747: Ní féidir an chomhadlann a athrú, athraíodh an maolán (cuir ! leis an "
+"ordú chun sárú)"
 
 msgid "E748: No previously used register"
 msgstr "E748: Níl aon tabhall úsáidte roimhe seo"
@@ -6706,7 +6719,7 @@ msgid "E812: Autocommands changed buffer
 msgstr "E812: Bhí maolán nó ainm maoláin athraithe ag orduithe uathoibríocha"
 
 msgid "E813: Cannot close autocmd or popup window"
-msgstr "E813: Ní féidir fuinneog autocmd nó preabfhuinneog a dhúnadh"
+msgstr "E813: Ní féidir fuinneog uathordaithe nó preabfhuinneog a dhúnadh"
 
 msgid "E814: Cannot close window, only autocmd window would remain"
 msgstr ""
@@ -6717,7 +6730,7 @@ msgid ""
 "loaded."
 msgstr ""
 "E815: Ár leithscéal, bhí an t-ordú seo díchumasaithe, níorbh fhéidir "
-"leabharlanna MzScheme a luchtú."
+"leabharlanna MzScheme a lódáil."
 
 msgid "E816: Cannot read patch output"
 msgstr "E816: Ní féidir aschur ó 'patch' a léamh"
@@ -6773,9 +6786,6 @@ msgstr "E829: Earráid le linn scríofa i gcomhad staire: %s"
 msgid "E830: Undo number %ld not found"
 msgstr "E830: Mír staire %ld gan aimsiú"
 
-msgid "E831: bf_key_init() called with empty password"
-msgstr "E831: Cuireadh glaoch ar bf_key_init() le focal faire folamh"
-
 #, c-format
 msgid "E832: Non-encrypted file has encrypted undo file: %s"
 msgstr "E832: Comhad neamhchriptithe le comhad staire criptithe: %s"
@@ -6857,7 +6867,8 @@ msgid ""
 "E856: \"assert_fails()\" second argument must be a string or a list with one "
 "or two strings"
 msgstr ""
-"E856: Ní mór don dara argóint ar \"assert_fails()\" a bheith ina teaghrán, nó ina liosta ina bhfuil teaghrán amháin nó dhá theaghrán"
+"E856: Ní mór don dara argóint ar \"assert_fails()\" a bheith ina teaghrán, "
+"nó ina liosta ina bhfuil teaghrán amháin nó dhá theaghrán"
 
 #, c-format
 msgid "E857: Dictionary key \"%s\" required"
@@ -6869,8 +6880,8 @@ msgstr "E858: Ní bhfuarthas réad bailí python ar ais ó Eval"
 msgid "E859: Failed to convert returned python object to a Vim value"
 msgstr "E859: Níorbh fhéidir luach vim a dhéanamh as an réad python"
 
-msgid "E860: Need 'id' and 'type' with 'both'"
-msgstr "E860: Tá 'id' agus 'type' ag teastáil le 'both'"
+msgid "E860: Need 'id' and 'type' or 'types' with 'both'"
+msgstr "E860: Tá 'id' agus 'type' nó 'types' ag teastáil le 'both'"
 
 msgid "E861: Cannot open a second popup with a terminal"
 msgstr "E861: Ní féidir an dara preabfhuinneog a oscailt le teirminéal"
@@ -6936,10 +6947,6 @@ msgstr ""
 msgid "E876: (NFA regexp) Not enough space to store the whole NFA"
 msgstr "E876: (slonn NFA) Níl go leor spáis ann don NFA iomlán"
 
-#, c-format
-msgid "E877: (NFA regexp) Invalid character class: %d"
-msgstr "E877: (slonn NFA) Aicme carachtar neamhbhailí: %d"
-
 msgid "E878: (NFA regexp) Could not allocate memory for branch traversal!"
 msgstr ""
 "E878: (slonn NFA) Níorbh fhéidir cuimhne a leithdháileadh leis an gcraobh a "
@@ -6958,10 +6965,10 @@ msgid "E882: Uniq compare function faile
 msgstr "E882: Theip ar fheidhm chomparáide Uniq"
 
 msgid ""
-"E883: search pattern and expression register may not contain two or more "
+"E883: Search pattern and expression register may not contain two or more "
 "lines"
 msgstr ""
-"E883: ní cheadaítear níos mó ná líne amháin i bpatrún cuardaigh ná sa "
+"E883: Ní cheadaítear níos mó ná líne amháin i bpatrún cuardaigh ná sa "
 "slonntabhall"
 
 #, c-format
@@ -6981,7 +6988,7 @@ msgid ""
 "loaded."
 msgstr ""
 "E887: Ár leithscéal, níl an t-ordú seo le fáil, níorbh fhéidir an modúl "
-"Python a luchtú."
+"Python a lódáil."
 
 #, c-format
 msgid "E888: (NFA regexp) cannot repeat %s"
@@ -7011,7 +7018,7 @@ msgid ""
 "could not be loaded."
 msgstr ""
 "E895: Ár leithscéal, tá an t-ordú seo díchumasaithe; níorbh fhéidir modúl "
-"racket/base MzScheme a luchtú."
+"racket/base MzScheme a lódáil."
 
 #, c-format
 msgid "E896: Argument of %s must be a List, Dictionary or Blob"
@@ -7094,7 +7101,7 @@ msgstr "E917: Ní féidir aisghlaoch a úsáid le %s()"
 
 #, c-format
 msgid "E918: Buffer must be loaded: %s"
-msgstr "E918: Ní mór an maolán a luchtú: %s"
+msgstr "E918: Ní mór an maolán a lódáil: %s"
 
 #, c-format
 msgid "E919: Directory not found in '%s': \"%s\""
@@ -7106,9 +7113,6 @@ msgstr "E920: Caithfear _name a shocrú chun comhad _io a úsáid"
 msgid "E921: Invalid callback argument"
 msgstr "E921: Argóint neamhbhailí ar aisghlaoch"
 
-msgid "E922: Expected a dict"
-msgstr "E922: Bhíothas ag súil le foclóir"
-
 msgid "E923: Second argument of function() must be a list or a dict"
 msgstr ""
 "E923: Caithfidh an dara hargóint de function() a bheith ina liosta nó ina "
@@ -7179,9 +7183,6 @@ msgstr "E941: Tosaíodh freastalaí cheana"
 msgid "E942: +clientserver feature not available"
 msgstr "E942: níl an ghné +clientserver ar fáil"
 
-msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
-msgstr "E943: Caithfear tábla na n-orduithe a nuashonrú; rith 'make cmdidxs'"
-
 msgid "E944: Reverse range in character class"
 msgstr "E944: Raon aisiompaithe in aicme carachtar"
 
@@ -7189,7 +7190,9 @@ msgid "E945: Range too large in characte
 msgstr "E945: Raon rómhór in aicme carachtar"
 
 msgid "E946: Cannot make a terminal with running job modifiable"
-msgstr "E946: Ní féidir teirminéal inathraithe a dhéanamh de theirminéal a bhfuil jab ar siúl ann"
+msgstr ""
+"E946: Ní féidir teirminéal inathraithe a dhéanamh de theirminéal a bhfuil "
+"jab ar siúl ann"
 
 #, c-format
 msgid "E947: Job still running in buffer \"%s\""
@@ -7262,9 +7265,6 @@ msgstr "E965: Ainm ar chineál airí ar iarraidh"
 msgid "E966: Invalid line number: %ld"
 msgstr "E966: Líne-uimhir neamhbhailí: %ld"
 
-msgid "E967: Text property info corrupted"
-msgstr "E967: Eolas faoin airí téacs truaillithe"
-
 msgid "E968: Need at least one of 'id' or 'type'"
 msgstr "E968: Tá gá le 'id' nó 'type' ar a laghad"
 
@@ -7284,7 +7284,8 @@ msgid "E972: Blob value does not have th
 msgstr "E972: Níl an líon ceart beart sa luach bloba"
 
 msgid "E973: Blob literal should have an even number of hex characters"
-msgstr "E973: Ba cheart go mbeadh ré-uimhir carachtar heics i luach litriúil bloba"
+msgstr ""
+"E973: Ba cheart go mbeadh ré-uimhir carachtar heics i luach litriúil bloba"
 
 msgid "E974: Using a Blob as a Number"
 msgstr "E974: Bloba á úsáid mar Uimhir"
@@ -7344,7 +7345,8 @@ msgid "E991: Cannot use =<< here"
 msgstr "E991: Ní féidir =<< a úsáid anseo"
 
 msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
-msgstr "E992: Ní cheadaítear é seo i módlíne nuair nach bhfuil 'modelineexpr' ar siúl"
+msgstr ""
+"E992: Ní cheadaítear é seo i módlíne nuair nach bhfuil 'modelineexpr' ar siúl"
 
 #, c-format
 msgid "E993: Window %d is not a popup window"
@@ -7408,11 +7410,13 @@ msgstr "E1006: Úsáideadh %s mar argóint"
 msgid "E1007: Mandatory argument after optional argument"
 msgstr "E1007: Argóint riachtanach tar éis argóint roghnach"
 
-msgid "E1008: Missing <type>"
-msgstr "E1008: <type> ar iarraidh"
-
-msgid "E1009: Missing > after type"
-msgstr "E1009: > ar iarraidh i ndiaidh cineáil"
+#, c-format
+msgid "E1008: Missing <type> after %s"
+msgstr "E1008: <type> ar iarraidh i ndiaidh %s"
+
+#, c-format
+msgid "E1009: Missing > after type: %s"
+msgstr "E1009: > ar iarraidh i ndiaidh cineáil: %s"
 
 #, c-format
 msgid "E1010: Type not recognized: %s"
@@ -7428,15 +7432,20 @@ msgstr "E1012: Neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas %s"
 
 #, c-format
 msgid "E1012: Type mismatch; expected %s but got %s in %s"
-msgstr "E1012: Neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas %s i %s"
+msgstr ""
+"E1012: Neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas %s i %s"
 
 #, c-format
 msgid "E1013: Argument %d: type mismatch, expected %s but got %s"
-msgstr "E1013: Argóint %d: neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas %s"
+msgstr ""
+"E1013: Argóint %d: neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas "
+"%s"
 
 #, c-format
 msgid "E1013: Argument %d: type mismatch, expected %s but got %s in %s"
-msgstr "E1013: Argóint %d: neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas %s i %s"
+msgstr ""
+"E1013: Argóint %d: neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas "
+"%s i %s"
 
 #, c-format
 msgid "E1014: Invalid key: %s"
@@ -7460,7 +7469,7 @@ msgstr "E1017: Fógraíodh an athróg cheana: %s"
 
 #, c-format
 msgid "E1018: Cannot assign to a constant: %s"
-msgstr "E1018: Ní féidir luach tairiseach a shannadh: %s"
+msgstr "E1018: Ní féidir luach tairisigh a shannadh: %s"
 
 msgid "E1019: Can only concatenate to string"
 msgstr "E1019: Ní féidir ach teaghráin a chomhchaitéiniú"
@@ -7537,8 +7546,8 @@ msgid "E1040: Cannot use :scriptversion 
 msgstr "E1040: Ní féidir :scriptversion a úsáid tar éis :vim9script"
 
 #, c-format
-msgid "E1041: Redefining script item %s"
-msgstr "E1041: Sainmhíniú nua ar mhír scripte %s"
+msgid "E1041: Redefining script item: \"%s\""
+msgstr "E1041: Sainmhíniú nua ar mhír scripte \"%s\""
 
 msgid "E1042: Export can only be used in vim9script"
 msgstr "E1042: Is féidir Export a úsáid in vim9script amháin"
@@ -7615,6 +7624,10 @@ msgid "E1064: Yank register changed whil
 msgstr "E1064: Athraíodh an tabhall sractha agus é in úsáid"
 
 #, c-format
+msgid "E1065: Command cannot be shortened: %s"
+msgstr "E1065: Ní féidir an t-ordú seo a ghiorrú: %s"
+
+#, c-format
 msgid "E1066: Cannot declare a register: %s"
 msgstr "E1066: Ní féidir tabhall a fhógairt: %s"
 
@@ -7649,17 +7662,26 @@ msgstr "E1074: Ní cheadaítear spás bán tar éis poinc"
 msgid "E1075: Namespace not supported: %s"
 msgstr "E1075: Ní thacaítear le hainmspás: %s"
 
-msgid "E1076: This Vim is not compiled with float support"
-msgstr "E1076: Níor tiomsaíodh an leagan seo de Vim le tacaíocht ar uimhreacha snámhphointe"
-
 #, c-format
 msgid "E1077: Missing argument type for %s"
 msgstr "E1077: Cineál argóinte ar iarraidh le haghaidh %s"
 
+msgid "E1078: Invalid command \"nested\", did you mean \"++nested\"?"
+msgstr "E1078: Ordú \"nested\" neamhbhailí; an é \"++nested\" a bhí i gceist agat?"
+
+msgid "E1079: Cannot declare a variable on the command line"
+msgstr "E1079: Ní féidir athróg a fhógairt ar líne na n-orduithe"
+
+msgid "E1080: Invalid assignment"
+msgstr "E1080: Sannachán neamhbhailí"
+
 #, c-format
 msgid "E1081: Cannot unlet %s"
 msgstr "E1081: Ní féidir luach %s a athshocrú"
 
+msgid "E1082: Command modifier without command"
+msgstr "E1082: Mionathraitheoir ordaithe gan ordú"
+
 msgid "E1083: Missing backtick"
 msgstr "E1083: Cúltic ar iarraidh"
 
@@ -7671,12 +7693,12 @@ msgstr "E1084: Ní féidir feidhm Vim9script %s a scriosadh"
 msgid "E1085: Not a callable type: %s"
 msgstr "E1085: Ní cineál inghlaoite é: %s"
 
-msgid "E1086: Function reference invalid"
-msgstr "E1086: Tagairt neamhbhailí d'fheidhm"
-
 msgid "E1087: Cannot use an index when declaring a variable"
 msgstr "E1087: Ní féidir innéacs a úsáid agus athróg á fógairt"
 
+msgid "E1088: Script cannot import itself"
+msgstr "E1088: Ní féidir le script í féin a iompórtáil"
+
 #, c-format
 msgid "E1089: Unknown variable: %s"
 msgstr "E1089: Athróg anaithnid: %s"
@@ -7689,6 +7711,9 @@ msgstr "E1090: Ní féidir argóint %s a shannadh"
 msgid "E1091: Function is not compiled: %s"
 msgstr "E1091: Níl an fheidhm tiomsaithe: %s"
 
+msgid "E1092: Cannot nest :redir"
+msgstr "E1092: Ní féidir :redir a neadú"
+
 #, c-format
 msgid "E1093: Expected %d items but got %d"
 msgstr "E1093: Bhíothas ag súil le %d rud, ach fuarthas %d ceann"
@@ -7696,8 +7721,9 @@ msgstr "E1093: Bhíothas ag súil le %d rud, ach fuarthas %d ceann"
 msgid "E1094: Import can only be used in a script"
 msgstr "E1094: Is féidir Import a úsáid i scripteanna amháin"
 
-msgid "E1095: Unreachable code after :return"
-msgstr "E1095: Cód doshroichte tar éis :return"
+#, c-format
+msgid "E1095: Unreachable code after :%s"
+msgstr "E1095: Cód doshroichte tar éis :%s"
 
 msgid "E1096: Returning a value in a function without a return type"
 msgstr "E1096: Luach á aischur ó fheidhm gan cineál aischurtha"
@@ -7714,11 +7740,12 @@ msgstr "E1099: Earráid anaithnid agus %s á rith"
 
 #, c-format
 msgid "E1100: Command not supported in Vim9 script (missing :var?): %s"
-msgstr "E1100: Ní thacaítear leis an ordú seo i script Vim( (:var ar iarraidh?): %s"
+msgstr ""
+"E1100: Ní thacaítear leis an ordú seo i script Vim( (:var ar iarraidh?): %s"
 
 #, c-format
 msgid "E1101: Cannot declare a script variable in a function: %s"
-msgstr "E1101: Ní féidir athróg script a fhógairt i bhfeidhm: %s"
+msgstr "E1101: Ní féidir athróg scripte a fhógairt i bhfeidhm: %s"
 
 #, c-format
 msgid "E1102: Lambda function not found: %s"
@@ -7734,21 +7761,19 @@ msgstr "E1104: > ar iarraidh"
 msgid "E1105: Cannot convert %s to string"
 msgstr "E1105: Ní féidir teaghrán a dhéanamh as %s"
 
+#, c-format
 msgid "E1106: One argument too many"
-msgstr "E1106: Argóint amháin de bharraíocht"
-
-#, c-format
-msgid "E1106: %d arguments too many"
-msgstr "E1106: %d argóint de bharraíocht"
+msgid_plural "E1106: %d arguments too many"
+msgstr[0] "E1106: Argóint amháin de bharraíocht"
+msgstr[1] "E1106: %d argóint de bharraíocht"
+msgstr[2] "E1106: %d argóint de bharraíocht"
+msgstr[3] "E1106: %d n-argóint de bharraíocht"
+msgstr[4] "E1106: %d argóint de bharraíocht"
 
 msgid "E1107: String, List, Dict or Blob required"
 msgstr "E1107: Teaghrán, Liosta, Foclóir, nó Bloba ag teastáil"
 
 #, c-format
-msgid "E1108: Item not found: %s"
-msgstr "E1108: Mír gan aimsiú: %s"
-
-#, c-format
 msgid "E1109: List item %d is not a List"
 msgstr "E1109: Ní Liosta í mír %d sa liosta"
 
@@ -7772,10 +7797,14 @@ msgid "E1114: Only values of 0x80 and hi
 msgstr "E1114: Ní thacaítear ach le luachanna 0x80 agus níos airde"
 
 msgid "E1115: \"assert_fails()\" fourth argument must be a number"
-msgstr "E1115: Ní mór don cheathrú hargóint ar \"assert_fails()\" a bheith ina huimhir"
+msgstr ""
+"E1115: Ní mór don cheathrú hargóint ar \"assert_fails()\" a bheith ina "
+"huimhir"
 
 msgid "E1116: \"assert_fails()\" fifth argument must be a string"
-msgstr "E1116: Ní mór don chúigiú hargóint ar \"assert_fails()\" a bheith ina teaghrán"
+msgstr ""
+"E1116: Ní mór don chúigiú hargóint ar \"assert_fails()\" a bheith ina "
+"teaghrán"
 
 msgid "E1117: Cannot use ! with nested :def"
 msgstr "E1117: Ní féidir ! a úsáid le :def neadaithe"
@@ -7841,10 +7870,6 @@ msgstr "E1135: Teaghrán á úsáid mar luach Boole: \"%s\""
 msgid "E1136: <Cmd> mapping must end with <CR> before second <Cmd>"
 msgstr "E1136: Ní mór deireadh a chur le mapáil <Cmd> le <CR> roimh <Cmd> eile"
 
-#, c-format
-msgid "E1137: <Cmd> mapping must not include %s key"
-msgstr "E1137: Ní cheadaítear eochair %s i mapáil <Cmd>"
-
 msgid "E1138: Using a Bool as a Number"
 msgstr "E1138: Luach Boole á úsáid mar Uimhir"
 
@@ -7858,7 +7883,9 @@ msgid "E1141: Indexable type required"
 msgstr "E1141: Cineál in-innéacsaithe ag teastáil"
 
 msgid "E1142: Calling test_garbagecollect_now() while v:testing is not set"
-msgstr "E1142: Cuireadh glaoch ar test_garbagecollect_now() ach níl v:testing socraithe"
+msgstr ""
+"E1142: Cuireadh glaoch ar test_garbagecollect_now() ach níl v:testing "
+"socraithe"
 
 #, c-format
 msgid "E1143: Empty expression: \"%s\""
@@ -7885,7 +7912,8 @@ msgstr "E1148: Ní féidir %s a innéacsú"
 
 #, c-format
 msgid "E1149: Script variable is invalid after reload in function %s"
-msgstr "E1149: Tá an athróg scripte neamhbhailí tar éis athluchtaithe i bhfeidhm %s"
+msgstr ""
+"E1149: Tá an athróg scripte neamhbhailí tar éis athluchtaithe i bhfeidhm %s"
 
 msgid "E1150: Script variable type changed"
 msgstr "E1150: Athraíodh cineál na hathróige scripte"
@@ -7904,7 +7932,8 @@ msgid "E1154: Divide by zero"
 msgstr "E1154: Roinnt ar náid"
 
 msgid "E1155: Cannot define autocommands for ALL events"
-msgstr "E1155: Ní féidir uathorduithe a shainmhíniú i gcomhair GACH UILE theagmhas"
+msgstr ""
+"E1155: Ní féidir uathorduithe a shainmhíniú i gcomhair GACH UILE theagmhas"
 
 msgid "E1156: Cannot change the argument list recursively"
 msgstr "E1156: Ní féidir an liosta argóintí a athrú go hathchúrsach"
@@ -7931,11 +7960,15 @@ msgstr "E1162: Ní cheadaítear ach carachtar amháin in ainm an tabhaill: %s"
 
 #, c-format
 msgid "E1163: Variable %d: type mismatch, expected %s but got %s"
-msgstr "E1163: Athróg %d: neamhréir cineálacha, bhíothas ag súil le %s ach fuarthas %s"
+msgstr ""
+"E1163: Athróg %d: neamhréir cineálacha, bhíothas ag súil le %s ach fuarthas "
+"%s"
 
 #, c-format
 msgid "E1163: Variable %d: type mismatch, expected %s but got %s in %s"
-msgstr "E1163: Athróg %d: neamhréir cineálacha, bhíothas ag súil le %s ach fuarthas %s i %s"
+msgstr ""
+"E1163: Athróg %d: neamhréir cineálacha, bhíothas ag súil le %s ach fuarthas "
+"%s i %s"
 
 msgid "E1164: vim9cmd must be followed by a command"
 msgstr "E1164: Ní mór ordú a thabhairt tar éis vim9cmd"
@@ -7994,7 +8027,9 @@ msgstr "E1178: Ní féidir athróg logánta a ghlasáil nó a dhíghlasáil"
 msgid ""
 "E1179: Failed to extract PWD from %s, check your shell's config related to "
 "OSC 7"
-msgstr "E1179: Níorbh fhéidir PWD a fháil ó %s; féach ar chumraíocht do bhlaoisce ó thaobh OSC 7"
+msgstr ""
+"E1179: Níorbh fhéidir PWD a fháil ó %s; féach ar chumraíocht do bhlaoisce ó "
+"thaobh OSC 7"
 
 #, c-format
 msgid "E1180: Variable arguments type must be a list: %s"
@@ -8003,8 +8038,9 @@ msgstr "E1180: Ní mór don argóint athraitheach a bheith ina liosta: %s"
 msgid "E1181: Cannot use an underscore here"
 msgstr "E1181: Ní féidir fostríoc a úsáid anseo"
 
-msgid "E1182: Blob required"
-msgstr "E1182: Bloba ag teastáil"
+#, c-format
+msgid "E1182: Cannot define a dict function in Vim9 script: %s"
+msgstr "E1182: Ní féidir feidhm dict a shainmhíniú i script Vim9: %s"
 
 #, c-format
 msgid "E1183: Cannot use a range with an assignment operator: %s"
@@ -8013,9 +8049,6 @@ msgstr "E1183: Ní féidir raon a úsáid le hoibreoir sannacháin: %s"
 msgid "E1184: Blob not set"
 msgstr "E1184: Bloba gan socrú"
 
-msgid "E1185: Cannot nest :redir"
-msgstr "E1185: Ní féidir :redir a neadú"
-
 msgid "E1185: Missing :redir END"
 msgstr "E1185: :redir END ar iarraidh"
 
@@ -8033,12 +8066,14 @@ msgstr "E1188: Ní féidir teirminéal a oscailt ó fhuinneog líne na n-orduithe"
 msgid "E1189: Cannot use :legacy with this command: %s"
 msgstr "E1189: Ní féidir :legacy a úsáid leis an ordú seo: %s"
 
+#, c-format
 msgid "E1190: One argument too few"
-msgstr "E1190: Tá argóint amháin eile ag teastáil"
-
-#, c-format
-msgid "E1190: %d arguments too few"
-msgstr "E1190: Tá %d argóint eile ag teastáil"
+msgid_plural "E1190: %d arguments too few"
+msgstr[0] "E1190: Tá argóint amháin eile ag teastáil"
+msgstr[1] "E1190: Tá %d argóint eile ag teastáil"
+msgstr[2] "E1190: Tá %d argóint eile ag teastáil"
+msgstr[3] "E1190: Tá %d n-argóint eile ag teastáil"
+msgstr[4] "E1190: Tá %d argóint eile ag teastáil"
 
 #, c-format
 msgid "E1191: Call to function that failed to compile: %s"
@@ -8048,7 +8083,9 @@ msgid "E1192: Empty function name"
 msgstr "E1192: Ainm folamh ar an bhfeidhm"
 
 msgid "E1193: cryptmethod xchacha20 not built into this Vim"
-msgstr "E1193: Ní raibh an modh criptiúchán xchacha20 tógtha isteach sa leagan seo de Vim"
+msgstr ""
+"E1193: Ní raibh an modh criptiúchán xchacha20 tógtha isteach sa leagan seo "
+"de Vim"
 
 msgid "E1194: Cannot encrypt header, not enough space"
 msgstr "E1194: Ní féidir an ceanntásc a chriptiú; níl go leor spáis ann"
@@ -8060,7 +8097,8 @@ msgid "E1196: Cannot decrypt header, not
 msgstr "E1196: Ní féidir an ceanntásc a dhíchriptiú; níl go leor spáis ann"
 
 msgid "E1197: Cannot allocate_buffer for encryption"
-msgstr "E1197: Níorbh fhéidir allocate_buffer a dhéanamh le haghaidh criptiúcháin"
+msgstr ""
+"E1197: Níorbh fhéidir allocate_buffer a dhéanamh le haghaidh criptiúcháin"
 
 msgid "E1198: Decryption failed: Header incomplete!"
 msgstr "E1198: Theip ar dhíchriptiú: Ceanntásc neamhiomlán!"
@@ -8130,7 +8168,9 @@ msgstr "E1215: Ní cheadaítear ach carachtar amháin sa déghraf: %s"
 
 msgid ""
 "E1216: digraph_setlist() argument must be a list of lists with two items"
-msgstr "E1216: Ní mór don argóint ar digraph_setlist() a bheith ina liosta liostaí agus dhá mhír i ngach ceann acu"
+msgstr ""
+"E1216: Ní mór don argóint ar digraph_setlist() a bheith ina liosta liostaí "
+"agus dhá mhír i ngach ceann acu"
 
 #, c-format
 msgid "E1217: Channel or Job required for argument %d"
@@ -8182,7 +8222,9 @@ msgstr "E1228: Liosta, Foclóir, nó Bloba ag teastáil le hargóint %d"
 
 #, c-format
 msgid "E1229: Expected dictionary for using key \"%s\", but got %s"
-msgstr "E1229: Bhíothas ag súil le foclóir chun eochair \"%s\" a úsáid, ach fuarthas %s"
+msgstr ""
+"E1229: Bhíothas ag súil le foclóir chun eochair \"%s\" a úsáid, ach fuarthas "
+"%s"
 
 msgid "E1230: Encryption: sodium_mlock() failed"
 msgstr "E1230: Criptiú: theip ar sodium_mlock()"
@@ -8192,7 +8234,8 @@ msgid "E1231: Cannot use a bar to separa
 msgstr "E1231: Ní féidir barra a úsáid idir orduithe anseo: %s"
 
 msgid "E1232: Argument of exists_compiled() must be a literal string"
-msgstr "E1232: Ní mór don argóint ar exists_compiled() a bheith ina teaghrán litriúil"
+msgstr ""
+"E1232: Ní mór don argóint ar exists_compiled() a bheith ina teaghrán litriúil"
 
 msgid "E1233: exists_compiled() can only be used in a :def function"
 msgstr "E1233: Ní féidir exists_compiled() a úsáid lasmuigh d'fheidhm :def"
@@ -8200,9 +8243,6 @@ msgstr "E1233: Ní féidir exists_compiled() a úsáid lasmuigh d'fheidhm :def"
 msgid "E1234: legacy must be followed by a command"
 msgstr "E1234: Ní mór ordú a thabhairt tar éis 'legacy'"
 
-msgid "E1235: Function reference is not set"
-msgstr "E1235: Tagairt d'fheidhm gan socrú"
-
 #, c-format
 msgid "E1236: Cannot use %s itself, it is imported"
 msgstr "E1236: Ní féidir %s féin a úsáid; tá sé iompórtáilte"
@@ -8255,20 +8295,19 @@ msgstr "E1249: Ainm rófhada ar an ngrúpa aibhsithe"
 
 #, c-format
 msgid "E1250: Argument of %s must be a List, String, Dictionary or Blob"
-msgstr "E1250: Ní mór don argóint de %s a bheith ina Liosta, Teaghrán, Foclóir, nó Bloba"
+msgstr ""
+"E1250: Ní mór don argóint de %s a bheith ina Liosta, Teaghrán, Foclóir, nó "
+"Bloba"
 
 #, c-format
 msgid "E1251: List, Dictionary, Blob or String required for argument %d"
-msgstr "E1251: Ní mór d'argóint %d a bheith ina Liosta, Foclóir, Bloba, nó Teaghrán"
+msgstr ""
+"E1251: Ní mór d'argóint %d a bheith ina Liosta, Foclóir, Bloba, nó Teaghrán"
 
 #, c-format
 msgid "E1252: String, List or Blob required for argument %d"
 msgstr "E1252: Ní mór d'argóint %d a bheith ina Teaghrán, Liosta, nó Bloba"
 
-#, c-format
-msgid "E1253: String expected for argument %d"
-msgstr "E1253: Ní mór d'argóint %d a bheith ina Teaghrán"
-
 msgid "E1254: Cannot use script variable in for loop"
 msgstr "E1254: Ní féidir athróg scripte a úsáid i lúb 'for'"
 
@@ -8302,20 +8341,446 @@ msgstr "E1261: Ní féidir .vim a iompórtáil gan \"as\" a úsáid"
 msgid "E1262: Cannot import the same script twice: %s"
 msgstr "E1262: Ní féidir an script chéanna a iompórtáil faoi dhó: %s"
 
-#, c-format
-msgid "E1263: Using autoload name in a non-autoload script: %s"
-msgstr "E1263: Ainm uathluchtaithe i script nach bhfuil uathluchtaithe: %s"
+msgid "E1263: Cannot use name with # in Vim9 script, use export instead"
+msgstr "E1263: Ní féidir ainm le # a úsáid i script Vim9; úsáid easpórtáil ina áit"
 
 #, c-format
 msgid "E1264: Autoload import cannot use absolute or relative path: %s"
-msgstr "E1264: Ní féidir uathluchtú a iompórtáil ó dhearbhchosán nó ó chosán coibhneasta: %s"
+msgstr ""
+"E1264: Ní féidir uathluchtú a iompórtáil ó dhearbhchosán nó ó chosán "
+"coibhneasta: %s"
 
 msgid "E1265: Cannot use a partial here"
 msgstr "E1265: Ní féidir páirt a úsáid anseo"
 
+msgid ""
+"E1266: Critical error in python3 initialization, check your python3 "
+"installation"
+msgstr ""
+"E1266: Earráid chriticiúil agus python3 á thosú; seiceáil python3 ar do ríomhaire"
+
+#, c-format
+msgid "E1267: Function name must start with a capital: %s"
+msgstr ""
+"E1267: Caithfidh ceannlitir a bheith ar dtús ainm feidhme: %s"
+
+#, c-format
+msgid "E1268: Cannot use s: in Vim9 script: %s"
+msgstr "E1268: Ní féidir s: a úsáid i script Vim9: %s"
+
+#, c-format
+msgid "E1269: Cannot create a Vim9 script variable in a function: %s"
+msgstr "E1269: Ní féidir athróg scripte Vim9 a chruthú i bhfeidhm: %s"
+
+msgid "E1270: Cannot use :s\\/sub/ in Vim9 script"
+msgstr "E1270: Ní féidir :s\\/sub/ a úsáid i script Vim9"
+
+#, c-format
+msgid "E1271: Compiling closure without context: %s"
+msgstr "E1271: Clabhsúr á thiomsú gan chomhthéacs: %s"
+
+#, c-format
+msgid "E1272: Using type not in a script context: %s"
+msgstr "E1272: Cineál á úsáid taobh amuigh de chomhthéacs scripte: %s"
+
+#, c-format
+msgid "E1273: (NFA regexp) missing value in '\\%%%c'"
+msgstr "E1273: (slonn NFA) luach ar iarraidh in '\\%%%c'"
+
+msgid "E1274: No script file name to substitute for \"<script>\""
+msgstr "E1274: Níl aon ainm comhaid ann le cur in ionad \"<script>\""
+
+msgid "E1275: String or function required for ->(expr)"
+msgstr "E1275: Teaghrán nó feidhm ag teastáil le haghaidh ->(slonn)"
+
+#, c-format
+msgid "E1276: Illegal map mode string: '%s'"
+msgstr "E1276: Teaghrán neamhcheadaithe sa mhód mapála: '%s'"
+
+msgid "E1277: Channel and job feature is not available"
+msgstr "E1277: Níl an ghné chainéil agus jab ar fáil"
+
+# kind of rhymes
+#, c-format
+msgid "E1278: Stray '}' without a matching '{': %s"
+msgstr "E1278: '}' sa bhreis gan '{' a théann leis: %s"
+
+#, c-format
+msgid "E1279: Missing '}': %s"
+msgstr "E1279: '}' ar iarraidh: %s"
+
+msgid "E1280: Illegal character in word"
+msgstr "E1280: Carachtar neamhcheadaithe i bhfocal"
+
+#, c-format
+msgid "E1281: Atom '\\%%#=%c' must be at the start of the pattern"
+msgstr "E1281: Ní mór adamh '\\%%#=%c' a chur ag tús an phatrúin"
+
+msgid "E1282: Bitshift operands must be numbers"
+msgstr "E1282: Ní cheadaítear ach uimhreacha mar oibreanna don aistriú giotáin"
+
+msgid "E1283: Bitshift amount must be a positive number"
+msgstr "E1283: Ní cheadaítear ach uimhir dheimhneach mar aistriú giotáin"
+
+#, c-format
+msgid "E1284: Argument 1, list item %d: Dictionary required"
+msgstr "E1284: Argóint 1, ball %d den liosta: Foclóir ag teastáil"
+
+#, c-format
+msgid "E1285: Could not clear timeout: %s"
+msgstr "E1285: Níorbh fhéidir seal fanachta a ghlanadh: %s"
+
+#, c-format
+msgid "E1286: Could not set timeout: %s"
+msgstr "E1286: Níorbh fhéidir seal fanachta a shocrú: %s"
+
+#, c-format
+msgid "E1287: Could not set handler for timeout: %s"
+msgstr "E1287: Níorbh fhéidir láimhseálaí don seal fanachta a shocrú: %s"
+
+#, c-format
+msgid "E1288: Could not reset handler for timeout: %s"
+msgstr "E1288: Níorbh fhéidir láimhseálaí don seal fanachta a athshocrú: %s"
+
+#, c-format
+msgid "E1289: Could not check for pending SIGALRM: %s"
+msgstr "E1289: Níorbh fhéidir SIGALRM ar feitheamh a sheiceáil: %s"
+
+msgid "E1290: substitute nesting too deep"
+msgstr "E1290: neadú ródhomhain in ionadú"
+
+#, c-format
+msgid "E1291: Invalid argument: %ld"
+msgstr "E1291: Argóint neamhbhailí: %ld"
+
+msgid "E1292: Command-line window is already open"
+msgstr "E1292: Tá fuinneog líne na n-orduithe oscailte cheana"
+
+msgid "E1293: Cannot use a negative id after adding a textprop with text"
+msgstr "E1293: Ní féidir ID diúltach a úsáid tar éis airíonna a chur le téacs"
+
+msgid "E1294: Can only use text_align when column is zero"
+msgstr "E1294: Ní féidir text_align a úsáid mura bhfuil an colún cothrom le náid"
+
+msgid "E1295: Cannot specify both 'type' and 'types'"
+msgstr "E1295: Ní féidir 'type' agus 'types' araon a shonrú"
+
+msgid "E1296: Can only use left padding when column is zero"
+msgstr "E1296: Ní féidir stuáil ar chlé a úsáid mura bhfuil an colún cothrom le náid"
+
+#, c-format
+msgid "E1297: Non-NULL Dictionary required for argument %d"
+msgstr "E1297: Argóint %d: Foclóir neamhnialasach ag teastáil"
+
+#, c-format
+msgid "E1298: Non-NULL List required for argument %d"
+msgstr "E1298: Argóint %d: Liosta neamhnialasach ag teastáil"
+
+msgid "E1299: Window unexpectedly closed while searching for tags"
+msgstr "E1299: Dúnadh an fhuinneog gan súil leis agus clibeanna á gcuardach"
+
+msgid "E1300: Cannot use a partial with dictionary for :defer"
+msgstr "E1300: Ní féidir páirt a úsáid le foclóir le haghaidh :defer"
+
+#, c-format
+msgid "E1301: String, Number, List or Blob required for argument %d"
+msgstr "E1301: Argóint %d: Teaghrán, Uimhir, Liosta, nó Bloba ag teastáil"
+
+msgid "E1302: Script variable was deleted"
+msgstr "E1302: Scriosadh an athróg scripte"
+
+#, c-format
+msgid "E1303: Custom list completion function does not return a List but a %s"
+msgstr "E1303: Aischuireann an fheidhm shaincheaptha %s in ionad Liosta"
+
+#, c-format
+msgid "E1304: Cannot use type with this variable: %s"
+msgstr "E1304: Ní féidir cineál a úsáid leis an athróg seo: %s"
+
+msgid ""
+"E1305: Cannot use \"length\", \"end_col\" and \"end_lnum\" with \"text\""
+msgstr ""
+"E1305: Ní féidir \"length\", \"end_col\" agus \"end_lnum\" a úsáid le \"text\""
+
+msgid "E1306: Loop nesting too deep"
+msgstr "E1306: Neadú ródhomhain i lúb"
+
+#, c-format
+msgid "E1307: Argument %d: Trying to modify a const %s"
+msgstr "E1307: Argóint %d: Ag iarraidh luach tairisigh %s a athrú"
+
+msgid "E1308: Cannot resize a window in another tab page"
+msgstr "E1308: Ní féidir méid na fuinneoige a athrú i gcluaisín eile"
+
+msgid "E1309: Cannot change mappings while listing"
+msgstr "E1309: Ní féidir an mhapáil a athrú le linn liostaithe"
+
+msgid "E1310: Cannot change menus while listing"
+msgstr "E1310: Ní féidir an roghchlár a athrú le linn liostaithe"
+
+msgid "E1311: Cannot change user commands while listing"
+msgstr "E1311: Ní féidir an t-ordú úsáideora a athrú le linn liostaithe"
+
+msgid "E1312: Not allowed to change the window layout in this autocmd"
+msgstr "E1312: Níl cead agat leagan amach na fuinneoige a athrú san uathordú seo"
+
+#, c-format
+msgid "E1313: Not allowed to add or remove entries (%s)"
+msgstr "E1313: Níl cead agat iontrálacha a chur leis nó a bhaint (%s)"
+
+#, c-format
+msgid "E1314: Class name must start with an uppercase letter: %s"
+msgstr "E1314: Caithfidh ceannlitir a bheith ag tús ainm na haicme: %s"
+
+#, c-format
+msgid "E1315: White space required after name: %s"
+msgstr "E1315: Spás bán ag teastáil tar éis ainm: %s"
+
+msgid "E1316: Class can only be defined in Vim9 script"
+msgstr "E1316: Is féidir aicme a shainmhíniú i script Vim9 amháin"
+
+#, c-format
+msgid "E1317: Invalid object member declaration: %s"
+msgstr "E1317: Fógairt neamhbhailí ar bhall réada: %s"
+
+#, c-format
+msgid "E1318: Not a valid command in a class: %s"
+msgstr "E1318: Ní ordú bailí in aicme é seo: %s"
+
+msgid "E1319: Using a class as a Number"
+msgstr "E1319: Aicme á húsáid mar Uimhir"
+
+msgid "E1320: Using an object as a Number"
+msgstr "E1320: Réad á úsáid mar Uimhir"
+
+msgid "E1321: Using a class as a Float"
+msgstr "E1321: Aicme á húsáid mar Shnámhphointe"
+
+msgid "E1322: Using an object as a Float"
+msgstr "E1322: Réad á úsáid mar Shnámhphointe"
+
+msgid "E1323: Using a class as a String"
+msgstr "E1323: Aicme á húsáid mar Theaghrán"
+
+msgid "E1324: Using an object as a String"
+msgstr "E1324: Réad á úsáid mar Theaghrán"
+
+#, c-format
+msgid "E1325: Method not found on class \"%s\": %s"
+msgstr "E1325: Modh gan aimsiú san aicme \"%s\": %s"
+
+#, c-format
+msgid "E1326: Member not found on object \"%s\": %s"
+msgstr "E1326: Ball gan aimsiú sa réad \"%s\": %s"
+
+#, c-format
+msgid "E1327: Object required, found %s"
+msgstr "E1327: Réad ag teastáil ach fuarthas %s"
+
+#, c-format
+msgid "E1328: Constructor default value must be v:none: %s"
+msgstr "E1328: Ní mór v:none: a shonrú mar luach réamhshocraithe i gcruthaitheoir: %s"
+
+#, c-format
+msgid "E1329: Cannot get object member type from initializer: %s"
+msgstr "E1329: Ní féídir cineál an bhaill a fháil ó thúsaitheoir: %s"
+
+#, c-format
+msgid "E1330: Invalid type for object member: %s"
+msgstr "E1330: Cineál neamhbhailí ar bhall réada: %s"
+
+msgid "E1331: Public must be followed by \"this\" or \"static\""
+msgstr "E1331: \"this\" nó \"static\" ag teastáil tar éis \"public\""
+
+#, c-format
+msgid "E1332: Public member name cannot start with underscore: %s"
+msgstr "E1332: Ní féidir fostríoc a úsáid ag tús ainm baill phoiblí: %s"
+
+#, c-format
+msgid "E1333: Cannot access private member: %s"
+msgstr "E1333: Ní féidir ball príobháideach a rochtain: %s"
+
+#, c-format
+msgid "E1334: Object member not found: %s"
+msgstr "E1334: Ball réada gan aimsiú: %s"
+
+#, c-format
+msgid "E1335: Member is not writable: %s"
+msgstr "E1335: Ní féidir scríobh ar an mball: %s"
+
+#, c-format
+msgid "E1337: Class member not found: %s"
+msgstr "E1337: Ball aicme gan aimsiú: %s"
+
+#, c-format
+msgid "E1338: Member not found on class \"%s\": %s"
+msgstr "E1338: Ball gan aimsiú in aicme \"%s\": %s"
+
+msgid ""
+"E1339: Cannot add a textprop with text after using a textprop with a "
+"negative id"
+msgstr "E1339: Ní féidir airíonna a chur le téacs tar éis airíonna a úsáid le ID diúltach"
+
+#, c-format
+msgid "E1340: Argument already declared in the class: %s"
+msgstr "E1340: Fógraíodh an argóint san aicme cheana: %s"
+
+#, c-format
+msgid "E1341: Variable already declared in the class: %s"
+msgstr "E1341: Fógraíodh an athróg san aicme cheana: %s"
+
+msgid "E1342: Interface can only be defined in Vim9 script"
+msgstr "E1342: Is féidir comhéadan a shainmhíniú i script Vim9 amháin"
+
+#, c-format
+msgid "E1343: Interface name must start with an uppercase letter: %s"
+msgstr "E1343: Caithfidh ceannlitir a bheith ag tús ainm an chomhéadain: %s"
+
+msgid "E1344: Cannot initialize a member in an interface"
+msgstr "E1344: Ní féidir ball a thúsú i gcomhéadan"
+
+#, c-format
+msgid "E1345: Not a valid command in an interface: %s"
+msgstr "E1345: Ní ordú bailí i gcomhéadan é seo: %s"
+
+#, c-format
+msgid "E1346: Interface name not found: %s"
+msgstr "E1346: Ainm an chomhéadain gan aimsiú: %s"
+
+#, c-format
+msgid "E1347: Not a valid interface: %s"
+msgstr "E1347: Ní comhéadan bailí é seo: %s"
+
+#, c-format
+msgid "E1348: Member \"%s\" of interface \"%s\" not implemented"
+msgstr "E1348: Ball \"%s\" i gcomhéadan \"%s\" gan feidhmiú"
+
+#, c-format
+msgid "E1349: Function \"%s\" of interface \"%s\" not implemented"
+msgstr "E1349: Feidhm \"%s\" i gcomhéadan \"%s\" gan feidhmiú"
+
+msgid "E1350: Duplicate \"implements\""
+msgstr "E1350: \"implements\" dúbailte"
+
+#, c-format
+msgid "E1351: Duplicate interface after \"implements\": %s"
+msgstr "E1351: Comhéadan dúbailte i ndiaidh \"implements\": %s"
+
+msgid "E1352: Duplicate \"extends\""
+msgstr "E1352: \"extends\" dúbailte"
+
+#, c-format
+msgid "E1353: Class name not found: %s"
+msgstr "E1353: Ainm na haicme gan aimsiú: %s"
+
+#, c-format
+msgid "E1354: Cannot extend %s"
+msgstr "E1354: Ní féidir %s a leathnú"
+
+#, c-format
+msgid "E1355: Duplicate function: %s"
+msgstr "E1355: Feidhm dhúbailte: %s"
+
+msgid "E1356: \"super\" must be followed by a dot"
+msgstr "E1356: Ní mór ponc a chur i ndiaidh \"super\""
+
+msgid "E1357: Using \"super\" not in a class function"
+msgstr "E1357: \"super\" taobh amuigh d'fheidhm aicme"
+
+msgid "E1358: Using \"super\" not in a child class"
+msgstr "E1358: \"super\" taobh amuigh de mhacaicme"
+
+msgid "E1359: Cannot define a \"new\" function in an abstract class"
+msgstr "E1359: Ní féidir feidhm \"new\" a shainmhíniú in aicme theibí"
+
+msgid "E1360: Using a null object"
+msgstr "E1360: Ag baint úsáide as réad nialasach"
+
+msgid "E1361: Cannot use color \"none\", did you mean \"NONE\"?"
+msgstr "E1361: Ní féidir dath \"none\" a úsáid; an é \"NONE\" a bhí uait?"
+
+msgid "E1362: Cannot use a non-null object"
+msgstr "E1362: Ní féidir réad neamhnialasach a úsáid"
+
+msgid "E1363: Incomplete type"
+msgstr "E1363: Cineál neamhiomlán"
+
+msgid "E1364: Warning: Pointer block corrupted"
+msgstr "E1364: Rabhadh: Bloc pointeoirí truaillithe"
+
+msgid "E1365: Cannot use a return type with the \"new\" function"
+msgstr "E1365: Ní féidir luach a aischur ó fheidhm \"new\""
+
+#, c-format
+msgid "E1400: Cannot mix positional and non-positional arguments: %s"
+msgstr "E1400: Ní féidir argóintí suíomhacha agus neamhshuíomhacha a úsáid le chéile: %s"
+
+#, c-format
+msgid "E1401: format argument %d unused in $-style format: %s"
+msgstr "E1401: argóint formáide %d gan úsáid i bhformáid $-stíle: %s"
+
+#, c-format
+msgid ""
+"E1402: Positional argument %d used as field width reused as different type: "
+"%s/%s"
+msgstr "E1402: Úsáideadh argóint shuíomhach %d mar leithead réimse, ansin mar chineál difriúil: %s/%s"
+
+#, c-format
+msgid "E1403: Positional argument %d out of bounds: %s"
+msgstr "E1403: Argóint shuíomhach %d thar teorainn: %s"
+
+#, c-format
+msgid "E1404: Positional argument %d type used inconsistently: %s/%s"
+msgstr "E1404: Úsáideadh cineál argóint shuíomhach %d ar bhealaí difriúla: %s/%s"
+
+#, c-format
+msgid "E1405: Invalid format specifier: %s"
+msgstr "E1405: Sonraitheoir formáide neamhbhailí: %s"
+
+#, c-format
+msgid "E1406: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1406: Ball \"%s\": neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas %s"
+
+#, c-format
+msgid "E1407: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1407: Ball \"%s\": neamhréir cineálacha; bhíothas ag súil le %s ach fuarthas %s"
+
 msgid "--No lines in buffer--"
 msgstr "--Tá an maolán folamh--"
 
+msgid "int"
+msgstr "int"
+
+msgid "long int"
+msgstr "long int"
+
+msgid "long long int"
+msgstr "long long int"
+
+msgid "unsigned int"
+msgstr "unsigned int"
+
+msgid "unsigned long int"
+msgstr "unsigned long int"
+
+msgid "unsigned long long int"
+msgstr "unsigned long long int"
+
+msgid "pointer"
+msgstr "pointeoir"
+
+msgid "percent"
+msgstr "céatadán"
+
+msgid "char"
+msgstr "char"
+
+msgid "string"
+msgstr "teaghrán"
+
+msgid "float"
+msgstr "snámhphointe"
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "Buaileadh an BARR le linn an chuardaigh, ag leanúint ag an mBUN"
 
@@ -8636,9 +9101,6 @@ msgstr "Cuir comhaid téacs in eagar"
 msgid "Text;editor;"
 msgstr "Téacs;eagarthóir;"
 
-msgid "gvim"
-msgstr "gvim"
-
 msgid "Vim"
 msgstr "Vim"
 
@@ -8655,8 +9117,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ "\" Each \"set\" line shows the current value of an option (on the left)."
 #~ msgstr ""
 
-#~ msgid "\" Hit <Enter> on a \"set\" line to execute it."
-#~ msgstr ""
+msgid "\" Hit <Enter> on a \"set\" line to execute it."
+msgstr "\" Brúigh <Enter> ar líne \"set\" chun é a chur i bhfeidhm."
 
 #~ msgid "\"            A boolean option will be toggled."
 #~ msgstr ""
@@ -8823,6 +9285,9 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "number of lines to scroll for CTRL-U and CTRL-D"
 #~ msgstr ""
 
+#~ msgid "scroll by screen line"
+#~ msgstr ""
+
 #~ msgid "number of screen lines to show around the cursor"
 #~ msgstr ""
 
@@ -9018,6 +9483,9 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "a new window is put below the current one"
 #~ msgstr ""
 
+#~ msgid "determines scroll behavior for split windows"
+#~ msgstr ""
+
 #~ msgid "a new window is put right of the current one"
 #~ msgstr ""
 
@@ -9045,8 +9513,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "name of the winpty dynamic library"
 #~ msgstr ""
 
-#~ msgid "multiple tab pages"
-#~ msgstr ""
+msgid "multiple tab pages"
+msgstr "níos mó ná cluaisín amháin"
 
 #~ msgid "0, 1 or 2; when to use a tab pages line"
 #~ msgstr ""
@@ -9063,20 +9531,20 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "custom tab page tooltip for the GUI"
 #~ msgstr ""
 
-#~ msgid "terminal"
-#~ msgstr ""
-
-#~ msgid "name of the used terminal"
-#~ msgstr ""
-
-#~ msgid "alias for 'term'"
-#~ msgstr ""
+msgid "terminal"
+msgstr "teirminéal"
+
+msgid "name of the used terminal"
+msgstr "ainm an teirminéil atá in úsáid"
+
+msgid "alias for 'term'"
+msgstr "leasainm ar 'term'"
 
 #~ msgid "check built-in termcaps first"
 #~ msgstr ""
 
-#~ msgid "terminal connection is fast"
-#~ msgstr ""
+msgid "terminal connection is fast"
+msgstr "tá an ceangal teirminéil sciobtha"
 
 #~ msgid "request terminal key codes when an xterm is detected"
 #~ msgstr ""
@@ -9084,6 +9552,9 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "terminal that requires extra redrawing"
 #~ msgstr ""
 
+#~ msgid "what keyboard protocol to use for which terminal"
+#~ msgstr ""
+
 #~ msgid "recognize keys that start with <Esc> in Insert mode"
 #~ msgstr ""
 
@@ -9096,8 +9567,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "specifies what the cursor looks like in different modes"
 #~ msgstr ""
 
-#~ msgid "show info in the window title"
-#~ msgstr ""
+msgid "show info in the window title"
+msgstr "taispeáin eolas i dteideal na fuinneoige"
 
 #~ msgid "percentage of 'columns' used for the window title"
 #~ msgstr ""
@@ -9132,6 +9603,9 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "hide the mouse pointer while typing"
 #~ msgstr ""
 
+#~ msgid "report mouse movement events"
+#~ msgstr ""
+
 #~ msgid ""
 #~ "\"extend\", \"popup\" or \"popup_setpos\"; what the right\n"
 #~ "mouse button is used for"
@@ -9211,8 +9685,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "expression to show in balloon eval"
 #~ msgstr ""
 
-#~ msgid "printing"
-#~ msgstr ""
+msgid "printing"
+msgstr "priontáil"
 
 #~ msgid "list of items that control the format of :hardcopy output"
 #~ msgstr ""
@@ -9238,8 +9712,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "list of font names to be used for CJK output from :hardcopy"
 #~ msgstr ""
 
-#~ msgid "messages and info"
-#~ msgstr ""
+msgid "messages and info"
+msgstr "teachtaireachtaí agus eolas"
 
 #~ msgid "add 's' flag in 'shortmess' (don't show search message)"
 #~ msgstr ""
@@ -9247,7 +9721,10 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "list of flags to make messages shorter"
 #~ msgstr ""
 
-#~ msgid "show (partial) command keys in the status line"
+#~ msgid "show (partial) command keys in location given by 'showcmdloc'"
+#~ msgstr ""
+
+#~ msgid "location where to show the (partial) command keys for 'showcmd'"
 #~ msgstr ""
 
 #~ msgid "display the current mode in the status line"
@@ -9286,8 +9763,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "list of preferred languages for finding help"
 #~ msgstr ""
 
-#~ msgid "selecting text"
-#~ msgstr ""
+msgid "selecting text"
+msgstr "téacs a roghnú"
 
 #~ msgid "\"old\", \"inclusive\" or \"exclusive\"; how selecting text behaves"
 #~ msgstr ""
@@ -9305,8 +9782,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "\"startsel\" and/or \"stopsel\"; what special keys can do"
 #~ msgstr ""
 
-#~ msgid "editing text"
-#~ msgstr ""
+msgid "editing text"
+msgstr "téacs a chur in eagar"
 
 #~ msgid "maximum number of changes that can be undone"
 #~ msgstr ""
@@ -9454,6 +9931,9 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "list of words that cause more C-indent"
 #~ msgstr ""
 
+#~ msgid "list of scope declaration names used by cino-g"
+#~ msgstr ""
+
 #~ msgid "expression used to obtain the indent of a line"
 #~ msgstr ""
 
@@ -9472,6 +9952,9 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "words that change how lisp indenting works"
 #~ msgstr ""
 
+#~ msgid "options for Lisp indenting"
+#~ msgstr ""
+
 #~ msgid "folding"
 #~ msgstr ""
 
@@ -9573,6 +10056,9 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "last line in the file has an end-of-line"
 #~ msgstr ""
 
+#~ msgid "last line in the file followed by CTRL-Z"
+#~ msgstr ""
+
 #~ msgid "fixes missing end-of-line at end of text file"
 #~ msgstr ""
 
@@ -9636,8 +10122,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "encryption method for file writing: zip, blowfish or blowfish2"
 #~ msgstr ""
 
-#~ msgid "the swap file"
-#~ msgstr ""
+msgid "the swap file"
+msgstr "an comhad babhtála"
 
 #~ msgid "list of directories for the swap file"
 #~ msgstr ""
@@ -9660,10 +10146,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "maximum amount of memory in Kbyte used for all buffers"
 #~ msgstr ""
 
-# this gets plugged into the %s in the previous string,
-# hence the colon
-#~ msgid "command line editing"
-#~ msgstr ""
+msgid "command line editing"
+msgstr "eagarthóireacht ar líne na n-orduithe"
 
 #~ msgid "how many command lines are remembered"
 #~ msgstr ""
@@ -9906,8 +10390,8 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 #~ msgid "list of autocommand events which are to be ignored"
 #~ msgstr ""
 
-#~ msgid "load plugin scripts when starting up"
-#~ msgstr ""
+msgid "load plugin scripts when starting up"
+msgstr "lódáil scripteanna breiseáin ag am tosaithe"
 
 #~ msgid "enable reading .vimrc/.exrc/.gvimrc in the current directory"
 #~ msgstr ""
@@ -9992,3 +10476,6 @@ msgstr "(uilíoch nó sa mhaolán amháin)"
 
 #~ msgid "name of the MzScheme GC dynamic library"
 #~ msgstr ""
+
+msgid "You discovered the command-line window! You can close it with \":q\"."
+msgstr "D'aimsigh tú fuinneog líne na n-orduithe! Is féidir í a dhúnadh le \":q\"."
--- a/src/po/it.po
+++ b/src/po/it.po
@@ -14,8 +14,8 @@
 msgid ""
 msgstr ""
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-08-17 15:42+0200\n"
-"PO-Revision-Date: 2023-08-17 16:32+0100\n"
+"POT-Creation-Date: 2023-09-01 10:41+0200\n"
+"PO-Revision-Date: 2023-09-01 15:00+0100\n"
 "Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
 "Language-Team: Italian\n"
 "Language: it\n"
@@ -441,7 +441,7 @@ msgid ""
 "&Cancel"
 msgstr ""
 "&OK\n"
-"&Non eseguire"
+"&Annulla"
 
 msgid "called inputrestore() more often than inputsave()"
 msgstr "inputrestore() chiamata più volte di inputsave()"
@@ -844,7 +844,7 @@ msgid "No"
 msgstr "No"
 
 msgid "Cancel"
-msgstr "Non eseguire"
+msgstr "Annulla"
 
 msgid "Input _Methods"
 msgstr "_Metodi di inserimento"
@@ -856,10 +856,10 @@ msgid "VIM - Search..."
 msgstr "VIM - Cerca..."
 
 msgid "Find what:"
-msgstr "Trova cosa:"
+msgstr "Trovare:"
 
 msgid "Replace with:"
-msgstr "Sostituisci con:"
+msgstr "Sostituire con:"
 
 #. whole word only button
 msgid "Match whole word only"
@@ -910,7 +910,7 @@ msgid "&Filter"
 msgstr "&Filtro"
 
 msgid "&Cancel"
-msgstr "&C Non eseguire"
+msgstr "&C Annulla"
 
 msgid "Directories"
 msgstr "Directory"
@@ -2153,9 +2153,9 @@ msgid ""
 msgstr ""
 "&O Apri sola-lettura\n"
 "&E Apri comunque\n"
-"&Recupera\n"
+"&R Recupera\n"
 "&Q Esci\n"
-"&Annulla"
+"&A Annulla"
 
 msgid ""
 "&Open Read-Only\n"
@@ -2167,10 +2167,10 @@ msgid ""
 msgstr ""
 "&O Apri sola-lettura\n"
 "&E Apri comunque\n"
-"&Recupera\n"
+"&R Recupera\n"
 "&D Cancellalo\n"
 "&Q Esci\n"
-"&Annulla"
+"&A Annulla"
 
 #. list the matching menu mappings
 msgid ""
@@ -2643,6 +2643,9 @@ msgstr " SELEZIONA BLOCCO"
 msgid "recording"
 msgstr "registrazione"
 
+msgid "Searching for \"%s\" under \"%s\" in \"%s\""
+msgstr "Cerco \"%s\" sotto \"%s\" in \"%s\""
+
 msgid "Searching for \"%s\" in \"%s\""
 msgstr "Cerco \"%s\" in \"%s\""
 
@@ -5520,6 +5523,15 @@ msgstr "E612: Troppi 'sign' definiti"
 msgid "E613: Unknown printer font: %s"
 msgstr "E613: Carattere di stampa sconosciuto: %s"
 
+msgid "E614: Class required"
+msgstr "E614: Classe richiesta"
+
+msgid "E615: Object required"
+msgstr "E615: Oggetto richiesto"
+
+msgid "E616: Object required for argument %d"
+msgstr "E616: Oggetto richiesto per argomento %d"
+
 msgid "E617: Cannot be changed in the GTK GUI"
 msgstr "E617: Non può essere cambiato nella GUI GTK"
 
@@ -5740,6 +5752,9 @@ msgstr "E691: Posso confrontare una List
 msgid "E692: Invalid operation for List"
 msgstr "E692: Operazione non valida per Liste"
 
+msgid "E693: List or Class required for argument %d"
+msgstr "E693: Lista o Classe richiesta per argomento %d"
+
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: Operazione non valida per Funcref"
 
@@ -5777,6 +5792,10 @@ msgstr ""
 msgid "E705: Variable name conflicts with existing function: %s"
 msgstr "E705: Nome di variabile in conflitto con una funzione esistente: %s"
 
+msgid "E706: Argument of %s must be a List, String or Dictionary"
+msgstr ""
+"E706: L'argumento di %s dev'essere una Lista, una Stringa o un Dizionario"
+
 msgid "E707: Function name conflicts with variable: %s"
 msgstr "E707: Nome funzione in conflitto con la variabile: %s"
 
@@ -7861,9 +7880,13 @@ msgstr "E1363: Tipo incompleto"
 msgid "E1364: Warning: Pointer block corrupted"
 msgstr "E1364: Attenzione: Blocco puntatore non valido"
 
+msgid "E1365: Cannot use a return type with the \"new\" function"
+msgstr ""
+"E1365: Impossibile usare questo tipo di ritorno con la funzione \"new\""
+
 msgid "E1400: Cannot mix positional and non-positional arguments: %s"
-msgstr "E1400: Non si possono mischiare argomenti posizionali e non "
-"posizionali: %s"
+msgstr ""
+"E1400: Non si possono mischiare argomenti posizionali e non posizionali: %s"
 
 msgid "E1401: format argument %d unused in $-style format: %s"
 msgstr "E1401: argomento di formato %d non usato nel formato $-style: %s"
@@ -7872,19 +7895,27 @@ msgid ""
 "E1402: Positional argument %d used as field width reused as different type: "
 "%s/%s"
 msgstr ""
-"E1402: Argomento posizionale %d, usato come larghezza campo, riusato con "
-"un tipo differente: %s/%s"
+"E1402: Argomento posizionale %d, usato come larghezza campo, riusato con un "
+"tipo differente: %s/%s"
 
 msgid "E1403: Positional argument %d out of bounds: %s"
 msgstr "E1403: Argomento posizionale %d fuori misura: %s"
 
 msgid "E1404: Positional argument %d type used inconsistently: %s/%s"
-msgstr "E1404: Argomento posizionale di tipo %d usato in modo "
-"inconsistente: %s/%s"
+msgstr ""
+"E1404: Argomento posizionale di tipo %d usato in modo inconsistente: %s/%s"
 
 msgid "E1405: Invalid format specifier: %s"
 msgstr "E1405: Specificatore di formato non valido: %s"
 
+msgid "E1406: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr ""
+"E1406: Elemento \"%s\": tipo non corrispondente, atteso %s ma ottenuto %s"
+
+msgid "E1407: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr ""
+"E1407: Elemento \"%s\": tipo non corrispondente, atteso %s ma ottenuto %s"
+
 #. type of cmdline window or 0
 #. result of cmdline window or 0
 msgid "--No lines in buffer--"
@@ -8272,26 +8303,27 @@ msgid "\" Hit <Space> on a \"set\" line 
 msgstr "\" Batti <Spazio> su una riga di \"set\" per aggiornarla."
 
 msgid "important"
-msgstr "importante"
+msgstr "importanti"
 
 msgid "behave very Vi compatible (not advisable)"
-msgstr "funziona in modo molto compatibile con Vi (non consigliabile)"
+msgstr "comportamento molto compatibile con Vi (non consigliato)"
 
 msgid "list of flags to specify Vi compatibility"
 msgstr "lista di flag per specificare il grado di compatibilità con Vi"
 
 msgid "use Insert mode as the default mode"
-msgstr "usa modo Insert come modo predefinito"
+msgstr "usare modo Insert come modo predefinito"
 
 msgid "paste mode, insert typed text literally"
-msgstr "mode Paste, inserisce letteralmente testo battuto"
+msgstr "modo Paste, inserire letteralmente testo battuto"
 
 msgid "key sequence to toggle paste mode"
 msgstr "sequenza di tasti per attivare/disattivare modo Paste"
 
 msgid "list of directories used for runtime files and plugins"
 msgstr ""
-"lista di directory dove cercare i file da utilizzare in esecuzione e i plugin"
+"lista di directory dove cercare i file da utilizzare in\n"
+"esecuzione e i plugin"
 
 msgid "list of directories used for plugin packages"
 msgstr "lista di directory dove cercare i pacchetti di plugin"
@@ -8304,8 +8336,8 @@ msgstr "movimenti, ricerche e modelli di
 
 msgid "list of flags specifying which commands wrap to another line"
 msgstr ""
-"lista di flag che specificano quali comandi possono agire anche su più di "
-"una riga"
+"lista di flag che specificano quali comandi possono agire anche\n"
+"su più di una riga"
 
 msgid ""
 "many jump commands move the cursor to the first non-blank\n"
@@ -8330,33 +8362,37 @@ msgid "list of directory names used for 
 msgstr "lista di nomi di directory usate per :cd"
 
 msgid "change to directory of file in buffer"
-msgstr "cambia alla directory del file nel buffer corrente"
+msgstr "passare alla directory del file nel buffer corrente"
 
 msgid "change to pwd of shell in terminal buffer"
-msgstr "cambia alla directory dello shell nel buffer di terminale"
+msgstr "passare alla directory dello shell nel buffer di terminale"
 
 msgid "search commands wrap around the end of the buffer"
 msgstr ""
-"i comandi di ricerca ricominciano dall'inizio del file una volta raggiunta "
-"la fine del buffer"
+"i comandi di ricerca ricominciano dall'inizio del file una volta\n"
+"raggiunta la fine del buffer"
 
 msgid "show match for partly typed search command"
-msgstr "mostra corrispondenze per comandi di ricerca solo parzialmente immessi"
+msgstr ""
+"mostrare corrispondenze per comandi di ricerca solo\n"
+"parzialmente immessi"
 
 msgid "change the way backslashes are used in search patterns"
 msgstr ""
-"modifica il modo in cui le barre inverse vengono usate nelle espressioni "
-"regolari di ricerca"
+"modificare il modo in cui le barre inverse vengono usate nelle\n"
+"espressioni regolari di ricerca"
 
 msgid "select the default regexp engine used"
-msgstr "scegli l'algoritmo di ricerca predefinito da usare nelle ricerche"
+msgstr ""
+"scegliere l'algoritmo di ricerca predefinito da usare\n"
+"nelle ricerche"
 
 msgid "ignore case when using a search pattern"
-msgstr "ignora maiuscolo/minuscolo nelle espressioni di ricerca"
+msgstr "ignorare maiuscolo/minuscolo nelle espressioni di ricerca"
 
 msgid "override 'ignorecase' when pattern has upper case characters"
 msgstr ""
-"ignora l'opzione 'ignorecase' quando l'espressione di ricerca contiene "
+"ignora l'opzione 'ignorecase' quando l'espressione di ricerca contiene\n"
 "caratteri maiuscoli"
 
 msgid "what method to use for changing case of letters"
@@ -8373,8 +8409,8 @@ msgstr "modello per una riga che include
 
 msgid "expression used to transform an include line to a file name"
 msgstr ""
-"espressione da usare per trasformare un'istruzione di \"include\" in un nome "
-"di file"
+"espressione da usare per trasformare un'istruzione di\n"
+"\"include\" in un nome di file"
 
 msgid "tags"
 msgstr "tag"
@@ -8392,23 +8428,25 @@ msgid ""
 "how to handle case when searching in tags files:\n"
 "\"followic\" to follow 'ignorecase', \"ignore\" or \"match\""
 msgstr ""
-"come gestire maiuscolo/minuscolo nella ricerca nei file di tag:\n"
-"\"followic\" per usare il valore di 'ignorecase', \"ignore\" o \"match\""
+"come gestire maiuscolo/minuscolo nella ricerca nei file di\n"
+"tag: \"followic\" per usare il valore di 'ignorecase',\n"
+"\"ignore\" o \"match\""
 
 msgid "file names in a tags file are relative to the tags file"
 msgstr ""
-"i nomi di file in un file di tag sono espressi a partire dalla posizione del "
-"file di tag"
+"i nomi di file in un file di tag sono espressi a partire dalla\n"
+"posizione del file di tag"
 
 msgid "a :tag command will use the tagstack"
 msgstr "un comando :tag userà la pila dei tag (tagstack)"
 
 msgid "when completing tags in Insert mode show more info"
 msgstr ""
-"quando si completa un tag in modo Insert, mostra ulteriori informazioni"
+"quando si completa un tag in modo Insert, mostrare ulteriori\n"
+"informazioni"
 
 msgid "a function to be used to perform tag searches"
-msgstr "una funziona da usare per effettuare le ricerche di tag"
+msgstr "funzione da usare per effettuare le ricerche di tag"
 
 msgid "command for executing cscope"
 msgstr "comando per eseguire cscope"
@@ -8420,21 +8458,21 @@ msgid "0 or 1; the order in which \":cst
 msgstr "0 o 1; ordine in cui \":cstag\" effettua una ricerca"
 
 msgid "give messages when adding a cscope database"
-msgstr "metti messaggi quando si aggiunge un database cscope"
+msgstr "avvisare quando si aggiunge un database cscope"
 
 msgid "how many components of the path to show"
 msgstr "quanti componenti del percorso del nome di un file mostrare"
 
 msgid "when to open a quickfix window for cscope"
-msgstr "Quando aprire una finestra quickfix per cscope"
+msgstr "quando aprire una finestra quickfix per cscope"
 
 msgid "file names in a cscope file are relative to that file"
 msgstr ""
-"i nomi di file in un file cscope sono espressi a partire dalla posizione del "
-"file stesso"
+"i nomi di file in un file cscope sono espressi a partire dalla posizione\n"
+"del file stesso"
 
 msgid "displaying text"
-msgstr "visualizza del testo"
+msgstr "visualizzare del testo"
 
 msgid "number of lines to scroll for CTRL-U and CTRL-D"
 msgstr "numero di righe da scorrere con i comandi CTRL-U e CTRL-D"
@@ -8444,53 +8482,55 @@ msgstr "scorrimento per riga schermo"
 
 msgid "number of screen lines to show around the cursor"
 msgstr ""
-"numero di righe dello schermo da mostrare attorno alla riga che contiene il "
-"cursore"
+"numero di righe dello schermo da mostrare attorno alla riga che contiene\n"
+"il cursore"
 
 msgid "long lines wrap"
-msgstr "righe lunghe vanno a capo"
+msgstr "mandare a capo righe lunghe"
 
 msgid "wrap long lines at a character in 'breakat'"
 msgstr ""
-"spezza righe lunghe quando si incontra uno dei caratteri specificati in "
-"'breakat'"
+"andare a capo nelle righe lunghe quando si incontra uno dei caratteri\n"
+"specificati in 'breakat'"
 
 msgid "preserve indentation in wrapped text"
 msgstr ""
-"mantieni l'indentatura nel testo che occupa più di una riga dello schermo"
+"mantenere indentatura nel testo che occupa più di una riga dello schermo"
 
 msgid "adjust breakindent behaviour"
-msgstr "specifica comportamento dell'opzione 'breakindent'"
+msgstr "specificare comportamento dell'opzione 'breakindent'"
 
 msgid "which characters might cause a line break"
 msgstr "quali caratteri potrebbero causare un'interruzione di riga"
 
 msgid "string to put before wrapped screen lines"
 msgstr ""
-"stringa da visualizzare prima delle righe di continuazione sullo schermo di "
-"ogni riga lunga"
+"stringa da visualizzare sullo schermo prima delle righe di\n"
+"continuazione di ogni riga lunga"
 
 msgid "minimal number of columns to scroll horizontally"
 msgstr "numero minimo di colonne da far scorrere in orizzontale"
 
 msgid "minimal number of columns to keep left and right of the cursor"
 msgstr ""
-"numero minimo di colonne da mantenere a destra e a sinistra del cursore"
+"numero minimo di colonne da mantenere a destra e a sinistra\n"
+"del cursore"
 
 msgid ""
 "include \"lastline\" to show the last line even if it doesn't fit\n"
 "include \"uhex\" to show unprintable characters as a hex number"
 msgstr ""
 "includere \"lastline\" per mostrare ultima riga anche se non completa\n"
-"includere \"uhex\" per mostrare caratteri non visibile come numeri "
-"esadecimali"
+"includere \"uhex\" per mostrare come numeri esadecimali i caratteri\n"
+"non visibili"
 
 msgid "characters to use for the status line, folds and filler lines"
 msgstr ""
-"caratteri da usare per riga di status, piegature e righe di riempimento"
+"caratteri da usare per riga di status, piegature e righe\n"
+"di riempimento"
 
 msgid "number of lines used for the command-line"
-msgstr "numero di righe da usare per la riga-di-comando"
+msgstr "numero di righe disponibili per la riga-di-comando"
 
 msgid "width of the display"
 msgstr "larghezza della videata"
@@ -8505,7 +8545,7 @@ msgid "don't redraw while executing macr
 msgstr "non aggiornare lo schermo mentre si stanno eseguendo delle macro"
 
 msgid "timeout for 'hlsearch' and :match highlighting in msec"
-msgstr "timeout per evidenziare 'hlsearch' e :match in millisecondi"
+msgstr "ritardo in millisecondi prima di evidenziare 'hlsearch' e :match"
 
 msgid ""
 "delay in msec for each char written to the display\n"
@@ -8515,34 +8555,36 @@ msgstr ""
 "(per debugging)"
 
 msgid "show <Tab> as ^I and end-of-line as $"
-msgstr "mostra <Tab> come ^I e fine-riga come $"
+msgstr "mostrare <Tab> come ^I e fine-riga come $"
 
 msgid "list of strings used for list mode"
 msgstr "lista di stringhe da usare per il modo List"
 
 msgid "show the line number for each line"
-msgstr "mostra numero di riga per ogni riga"
+msgstr "mostrare numero di riga per ogni riga"
 
 msgid "show the relative line number for each line"
-msgstr "mostra numero di riga relativo per ogni riga"
+msgstr "mostrare numero di riga relativo per ogni riga"
 
 msgid "number of columns to use for the line number"
 msgstr "numero di colonne da usare per visualizzare numero di riga"
 
 msgid "controls whether concealable text is hidden"
-msgstr "controlla se il testo nascondibile è nascosto"
+msgstr "controllare se il testo nascondibile è nascosto"
 
 msgid "modes in which text in the cursor line can be concealed"
-msgstr "modi nei quali la riga del cursore può essere nascosta"
+msgstr ""
+"modi nei quali il testo nella riga del cursore può\n"
+"essere nascosto"
 
 msgid "syntax, highlighting and spelling"
 msgstr "sintassi, evidenziazione e correzione ortografica"
 
 msgid "\"dark\" or \"light\"; the background color brightness"
-msgstr "\"dark\" o \"light\"; scuro/chiaro, colore di sfondo"
+msgstr "\"dark\" o \"light\"; se il colore di sfondo è scuro o chiaro"
 
 msgid "type of file; triggers the FileType event when set"
-msgstr "tipo di file; fa scattare evento FileType quando è impostato"
+msgstr "tipo di file; se impostato, fa scattare evento FileType"
 
 msgid "name of syntax highlighting used"
 msgstr "nome dell'evidenziazione sintattica usata"
@@ -8554,61 +8596,64 @@ msgid "which highlighting to use for var
 msgstr "evidenziazione da usare per varie occasioni"
 
 msgid "highlight all matches for the last used search pattern"
-msgstr "evidenzia tutte le occorrenze dell'ultima ricerca effettuata"
+msgstr "evidenziare tutte le occorrenze dell'ultima ricerca effettuata"
 
 msgid "highlight group to use for the window"
 msgstr "gruppo evidenziazione da usare per la finestra"
 
 msgid "use GUI colors for the terminal"
-msgstr "usa colori della GUI per il terminale"
+msgstr "usare colori della GUI per il terminale"
 
 msgid "highlight the screen column of the cursor"
-msgstr "evidenzia la colonna del cursore sullo schermo"
+msgstr "evidenziare la colonna del cursore sullo schermo"
 
 msgid "highlight the screen line of the cursor"
-msgstr "evidenzia la riga del cursore sullo schermo"
+msgstr "evidenziare la riga del cursore sullo schermo"
 
 msgid "specifies which area 'cursorline' highlights"
-msgstr "specifica quali aree 'cursorline' evidenzia"
+msgstr "specificare quali area 'cursorline' evidenzia"
 
 msgid "columns to highlight"
 msgstr "colonne da evidenziare"
 
 msgid "highlight spelling mistakes"
-msgstr "evidenzia errori ortografici"
+msgstr "evidenziare errori ortografici"
 
 msgid "list of accepted languages"
-msgstr "lista dei linguaggi accettati"
+msgstr "lista delle lingue utilizzate"
 
 msgid "file that \"zg\" adds good words to"
-msgstr "file a cui \"zg\" aggiunge le parole \"buone\" indicate"
+msgstr ""
+"file a cui \"zg\" aggiunge le parole riconosciute\n"
+"come \"buone\""
 
 msgid "pattern to locate the end of a sentence"
 msgstr "espressione per individuare la fine di una frase"
 
 msgid "flags to change how spell checking works"
-msgstr "flag per cambiare come funziona la correzione ortografica"
+msgstr "flag per cambiare il funzionamento della correzione ortografica"
 
 msgid "methods used to suggest corrections"
 msgstr "metodi usati per suggerire correzioni"
 
 msgid "amount of memory used by :mkspell before compressing"
 msgstr ""
-"quantità di memoria usata da :mkspell prima di comprimere il file risultante"
+"quantità di memoria usata da :mkspell prima di comprimere\n"
+"il file risultante"
 
 msgid "multiple windows"
-msgstr "finestre multiple"
+msgstr "più di una finestra"
 
 msgid "0, 1 or 2; when to use a status line for the last window"
-msgstr "0, 1 o 2; quando usare la riga di status per l'ultima finestra"
+msgstr "0, 1 o 2; quando usare una riga di status per l'ultima finestra"
 
 msgid "alternate format to be used for a status line"
 msgstr "formato alternativo da usare per una riga di status"
 
 msgid "make all windows the same size when adding/removing windows"
 msgstr ""
-"rendere tutte le finestre di dimensioni uguali quando si aggiungono o "
-"rimuovono finestre"
+"rendere tutte le finestre di dimensioni uguali quando si aggiungono\n"
+"o rimuovono finestre"
 
 msgid "in which direction 'equalalways' works: \"ver\", \"hor\" or \"both\""
 msgstr "direzione in cui 'equalalways' funziona: \"ver\", \"hor\" o \"both\""
@@ -8617,60 +8662,63 @@ msgid "minimal number of lines used for 
 msgstr "numero minimo di righe usato per la finestra corrente"
 
 msgid "minimal number of lines used for any window"
-msgstr "numero minimo di righe usato per ognuna delle finestre"
+msgstr "numero minimo di righe usato per ogni finestra"
 
 msgid "keep the height of the window"
-msgstr "mantieni l'altezza della finestra"
+msgstr "mantenere l'altezza della finestra"
 
 msgid "keep the width of the window"
 msgstr "mantenere la larghezza della finestra"
 
 msgid "minimal number of columns used for the current window"
-msgstr "numero minimo di colonne usate per la finestra corrente"
+msgstr "numero minimo di colonne da usare per la finestra corrente"
 
 msgid "minimal number of columns used for any window"
-msgstr "numero minimo di colonne usate per qualsiasi finestra"
+msgstr "numero minimo di colonne da usare per tutte le finestre"
 
 msgid "initial height of the help window"
 msgstr "altezza iniziale della finestra di help"
 
 msgid "use a popup window for preview"
-msgstr "usa una finestra dinamica per le anteprime"
+msgstr "usare una finestra dinamica per le anteprime"
 
 msgid "default height for the preview window"
-msgstr "altezza predefinita per la finestra precedente"
+msgstr "altezza predefinita per la finestra di anteprima"
 
 msgid "identifies the preview window"
-msgstr "identifica la finestra di anteprima"
+msgstr "identificare la finestra di anteprima"
 
 msgid "don't unload a buffer when no longer shown in a window"
-msgstr "non scaricare un buffer quando non appare più in alcuna finestra"
+msgstr ""
+"non scaricare un buffer quando non appare più in alcuna\n"
+"finestra"
 
 msgid ""
 "\"useopen\" and/or \"split\"; which window to use when jumping\n"
 "to a buffer"
 msgstr ""
-"\"useopen\" e/o \"split\"; che finestra usare quando si salta a un buffer"
+"\"useopen\" e/o \"split\"; che finestra usare quando si salta a un\n"
+"buffer"
 
 msgid "a new window is put below the current one"
-msgstr "una nuova finestra va sotto quella corrente"
+msgstr "mettere una nuova finestra sotto quella corrente"
 
 msgid "determines scroll behavior for split windows"
-msgstr "determina comportamento scorrimento per finestre con divisioni"
+msgstr "determinare comportamento scorrimento per finestre con divisioni"
 
 msgid "a new window is put right of the current one"
-msgstr "una nuova finestra va a destra di quella corrente"
+msgstr "mettere una nuova finestra a destra di quella corrente"
 
 msgid "this window scrolls together with other bound windows"
 msgstr "questa finestra scorre insieme alle altre a essa collegate"
 
 msgid "\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'"
-msgstr "\"ver\", \"hor\" e/o \"jump\"; lista delle opzioni per 'scrollbind'"
+msgstr "\"ver\", \"hor\" e/o \"jump\"; lista opzioni per 'scrollbind'"
 
 msgid "this window's cursor moves together with other bound windows"
 msgstr ""
-"il cursore di questa finestra di sposta insieme a quelli delle finestre "
-"collegate"
+"il cursore di questa finestra di sposta insieme a quelli\n"
+"delle finestre collegate"
 
 msgid "size of a terminal window"
 msgstr "dimensione di una finestra-terminale"
@@ -8680,8 +8728,8 @@ msgstr "tasto che precede comandi Vim in
 
 msgid "max number of lines to keep for scrollback in a terminal window"
 msgstr ""
-"numero massimo di linee da ricordare per scorrere indietro in una finestra-"
-"terminale"
+"numero massimo di linee da mantenere scorrendo indietro\n"
+"in una finestra-terminale"
 
 msgid "type of pty to use for a terminal window"
 msgstr "typo di pty da usare per una finestra-terminale"
@@ -8693,19 +8741,21 @@ msgid "multiple tab pages"
 msgstr "più di una pagina di linguette"
 
 msgid "0, 1 or 2; when to use a tab pages line"
-msgstr "0, 1 o 2; quando usare riga che descrive pagine di linguette"
+msgstr "0, 1 o 2; utilizzo della riga che descrive pagine di linguette"
 
 msgid "maximum number of tab pages to open for -p and \"tab all\""
-msgstr "massimo numero di pagine di linguette da aprire per -p e \"tab all\""
+msgstr ""
+"massimo numero di pagine di linguette da aprire\n"
+"per -p e \"tab all\""
 
 msgid "custom tab pages line"
-msgstr "riga personalizzata per le pagine di linguette"
+msgstr "personalizzazione riga che descrive le pagine di linguette"
 
 msgid "custom tab page label for the GUI"
-msgstr "etichetta personalizzata per le pagine di linguette nella GUI"
+msgstr "personalizzazione etichetta per le pagine di linguette nella GUI"
 
 msgid "custom tab page tooltip for the GUI"
-msgstr "suggerimento personalizzato per le pagine di linguette nella GUI"
+msgstr "personalizzazione suggerimento per le pagine di linguette nella GUI"
 
 msgid "terminal"
 msgstr "terminale"
@@ -8717,72 +8767,76 @@ msgid "alias for 'term'"
 msgstr "alias per 'term'"
 
 msgid "check built-in termcaps first"
-msgstr "controlla prima le opzioni di terminale predefinite"
+msgstr "controllare prima le opzioni di terminale predefinite"
 
 msgid "terminal connection is fast"
 msgstr "la connessione del terminale è veloce"
 
 msgid "request terminal key codes when an xterm is detected"
-msgstr "richiesta codici tasti terminale quando scoperto xterm"
+msgstr ""
+"richiesta codici tasti terminale quando il terminale\n"
+"è un xterm"
 
 msgid "terminal that requires extra redrawing"
 msgstr "terminale che richiede ulteriore ridisegno"
 
 msgid "what keyboard protocol to use for which terminal"
-msgstr "che protocollo di tastiera usare per quale terminale"
+msgstr "protocollo di tastiera da usare per un dato terminale"
 
 msgid "recognize keys that start with <Esc> in Insert mode"
-msgstr "riconosci tasti funzione che iniziano con <Esc> in modo Insert"
+msgstr "riconoscere sequenze di tasti che iniziano con <Esc> in modo Insert"
 
 msgid "minimal number of lines to scroll at a time"
 msgstr "numero minimo di righe da scorrere ogni volta"
 
 msgid "maximum number of lines to use scrolling instead of redrawing"
 msgstr ""
-"numero massimo di righe in cui usare lo scorrimento invece di ridisegnare lo "
-"schermo"
+"numero massimo di righe in cui usare lo scorrimento invece che\n"
+"ridisegnare lo schermo"
 
 msgid "specifies what the cursor looks like in different modes"
-msgstr "specifica l'aspetto del cursore nei vari modi"
+msgstr "specificare l'aspetto del cursore nei vari modi"
 
 msgid "show info in the window title"
-msgstr "mostra informazioni nel titolo della finestra"
+msgstr "mostrare informazioni nel titolo della finestra"
 
 msgid "percentage of 'columns' used for the window title"
-msgstr "percentuale di 'columns' usate per il titolo della finestra"
+msgstr "percentuale di 'columns' da usare per il titolo della finestra"
 
 msgid "when not empty, string to be used for the window title"
-msgstr "se non nulla, stringa da usare come titolo della finestra"
+msgstr "se specificata, stringa da usare come titolo della finestra"
 
 msgid "string to restore the title to when exiting Vim"
-msgstr "stringa di ripristino del titolo quando di esce da Vim"
+msgstr "stringa per ripristinare il titolo quando di esce da Vim"
 
 msgid "set the text of the icon for this window"
-msgstr "imposta testo dell'icona per questa finestra"
+msgstr "impostare testo dell'icona per questa finestra"
 
 msgid "when not empty, text for the icon of this window"
-msgstr "se non nulla, testo per l'icona di questa finestra"
+msgstr "se specificata, testo per l'icona di questa finestra"
 
 msgid "restore the screen contents when exiting Vim"
-msgstr "ripristina i contenuti dello schermo all'uscita da Vim"
+msgstr "ripristinare i contenuti dello schermo all'uscita da Vim"
 
 msgid "using the mouse"
-msgstr "usando il mouse"
+msgstr "usare il mouse"
 
 msgid "list of flags for using the mouse"
 msgstr "lista dei flag per usare il mouse"
 
 msgid "the window with the mouse pointer becomes the current one"
-msgstr "rende corrente la finestra che contiene il puntatore del mouse"
+msgstr "rendere corrente la finestra che contiene il puntatore del mouse"
 
 msgid "the window with the mouse pointer scrolls with the mouse wheel"
-msgstr "la finestra col puntatore del mouse scorre con la rotella del mouse"
+msgstr ""
+"la finestra che contiene il puntatore del mouse scorre con\n"
+"la rotella del mouse"
 
 msgid "hide the mouse pointer while typing"
-msgstr "nasconde il puntatore del mouse mentre si immette testo"
+msgstr "nascondere il puntatore del mouse mentre si immette testo"
 
 msgid "report mouse movement events"
-msgstr "riferisci eventi di movimento del mouse"
+msgstr "riferire eventi di movimento del mouse"
 
 msgid ""
 "\"extend\", \"popup\" or \"popup_setpos\"; what the right\n"
@@ -8808,20 +8862,24 @@ msgstr "lista di nomi di carattere da us
 
 msgid "pair of fonts to be used, for multibyte editing"
 msgstr ""
-"coppia di caratteri da usare, per editare file con caratteri multi-byte"
+"coppia di caratteri da usare, per editare file con caratteri\n"
+"multi-byte"
 
 msgid "list of font names to be used for double-wide characters"
-msgstr "lista di nomi di carattere da usare per caratteri a doppia larghezza"
+msgstr ""
+"lista di nomi di carattere da usare per caratteri\n"
+"a doppia larghezza"
 
 msgid "use smooth, antialiased fonts"
 msgstr "usare font più leggibili, anti-alias"
 
 msgid "list of flags that specify how the GUI works"
-msgstr "lista di flag che specificano come funziona le GUI"
+msgstr "lista di flag per specificare come funziona la GUI"
 
 msgid "\"icons\", \"text\" and/or \"tooltips\"; how to show the toolbar"
 msgstr ""
-"\"icons\", \"text\" e/o \"tooltips\"; come mostrare la barra degli strumenti"
+"\"icons\", \"text\" e/o \"tooltips\"; come mostrare la barra degli\n"
+"strumenti"
 
 msgid "size of toolbar icons"
 msgstr "dimensione icone sulla barra degli strumenti"
@@ -8831,7 +8889,8 @@ msgstr "spazio (in pixel) da lasciare so
 
 msgid "list of ASCII characters that can be combined into complex shapes"
 msgstr ""
-"lista caratteri ASCII che possono combinarsi per generare forme complesse"
+"lista caratteri ASCII che possono combinarsi per generare forme\n"
+"complesse"
 
 msgid "options for text rendering"
 msgstr "opzioni per la renderizzazione del testo"
@@ -8843,8 +8902,8 @@ msgid ""
 "\"last\", \"buffer\" or \"current\": which directory used for the file "
 "browser"
 msgstr ""
-"\"last\", \"buffer\" o \"current\": quale directory usare per esplorare i "
-"file"
+"\"last\", \"buffer\" o \"current\": quale directory usare per\n"
+"esplorare i file"
 
 msgid "language to be used for the menus"
 msgstr "lingua da usare per i menù"
@@ -8862,19 +8921,21 @@ msgid "delay in milliseconds before a ba
 msgstr "ritardo in millisecondi prima di visualizzare una didascalia"
 
 msgid "use balloon evaluation in the GUI"
-msgstr "valuta le didascalie nella GUI"
+msgstr "valutare didascalie nella GUI"
 
 msgid "use balloon evaluation in the terminal"
-msgstr "valuta le didascalie nella finestra-terminale"
+msgstr "valutare didascalie nella finestra-terminale"
 
 msgid "expression to show in balloon eval"
 msgstr "espressione da mostrare nella valutazione di una didascalia"
 
 msgid "printing"
-msgstr "in stampa"
+msgstr "stampare"
 
 msgid "list of items that control the format of :hardcopy output"
-msgstr "lista degli elementi che controllano il formato output di :hardcopy"
+msgstr ""
+"lista degli elementi che controllano il formato output\n"
+"del comando :hardcopy"
 
 msgid "name of the printer to be used for :hardcopy"
 msgstr "nome della stampante da usare per :hardcopy"
@@ -8886,10 +8947,10 @@ msgid "name of the font to be used for :
 msgstr "nome del carattere da usare per :hardcopy"
 
 msgid "format of the header used for :hardcopy"
-msgstr "formato dell'intestazione usata per :hardcopy"
+msgstr "formato dell'intestazione da usare per :hardcopy"
 
 msgid "encoding used to print the PostScript file for :hardcopy"
-msgstr "codifica usata per stampare il file PostScript da :hardcopy"
+msgstr "codifica da usare per stampare il file PostScript da :hardcopy"
 
 msgid "the CJK character set to be used for CJK output from :hardcopy"
 msgstr "il carattere CJK da usare per output CJK da :hardcopy"
@@ -8901,23 +8962,26 @@ msgid "messages and info"
 msgstr "messaggi e informazioni"
 
 msgid "add 's' flag in 'shortmess' (don't show search message)"
-msgstr "aggiungi 's' flag in 'shortmess' (non mostrare messaggi di ricerca)"
+msgstr ""
+"aggiungere flag 's' in 'shortmess' (non mostrare messaggi di\n"
+"ricerca)"
 
 msgid "list of flags to make messages shorter"
 msgstr "lista di flag su come abbreviare messaggi"
 
 msgid "show (partial) command keys in location given by 'showcmdloc'"
-msgstr "mostra (una parte dei) tasti di comando nella riga di status"
+msgstr "mostrare (una parte dei) tasti di comando nella riga di status"
 
 msgid "location where to show the (partial) command keys for 'showcmd'"
 msgstr ""
-"posizione in cui mostrare (una parte dei) tasti di comando per 'showcmd'"
+"posizione in cui mostrare (una parte dei) tasti di comando\n"
+"per 'showcmd'"
 
 msgid "display the current mode in the status line"
-msgstr "visualizza modo corrente nella riga di status"
+msgstr "visualizzare modo corrente nella riga di status"
 
 msgid "show cursor position below each window"
-msgstr "mostra la posizione del cursore sotto ogni finestra"
+msgstr "mostrare la posizione del cursore sotto ogni finestra"
 
 msgid "alternate format to be used for the ruler"
 msgstr "formato alternativo da usare per il righello"
@@ -8926,31 +8990,33 @@ msgid "threshold for reporting number of
 msgstr "soglia sopra la quale riferire il numero di righe modificate"
 
 msgid "the higher the more messages are given"
-msgstr "quanto più alto, tanto più dettagliati sono i messaggi"
+msgstr "più alto il valore, più numerosi i messaggi diagnostici"
 
 msgid "file to write messages in"
 msgstr "file su cui scrivere i messaggi"
 
 msgid "pause listings when the screen is full"
-msgstr "fare sosta nella visualizzazione elenchi quando lo schermo è pieno"
+msgstr ""
+"fare sosta nella visualizzazione elenchi quando lo schermo\n"
+"è pieno"
 
 msgid "start a dialog when a command fails"
 msgstr "iniziare un dialogo quando un comando non è riuscito"
 
 msgid "ring the bell for error messages"
-msgstr "suonare il campanello con i messaggi di errore"
+msgstr "suonare il campanello per i messaggi di errore"
 
 msgid "use a visual bell instead of beeping"
 msgstr "usare un campanello visivo invece che sonoro"
 
 msgid "do not ring the bell for these reasons"
-msgstr "non suonare il campanelli in questi casi"
+msgstr "non suonare il campanello in questi casi"
 
 msgid "list of preferred languages for finding help"
 msgstr "lista dei linguaggi preferiti per ottenere aiuto"
 
 msgid "selecting text"
-msgstr "selezione di testo"
+msgstr "selezionare testo"
 
 msgid "\"old\", \"inclusive\" or \"exclusive\"; how selecting text behaves"
 msgstr "\"old\", \"inclusive\" o \"exclusive\"; modi per scegliere testo"
@@ -8967,30 +9033,35 @@ msgid ""
 "\"autoselect\" to always put selected text on the clipboard"
 msgstr ""
 "\"unnamed\" per usare registro * come registro senza nome\n"
-"\"autoselect\" per mettere sempre il testo selezionato nella clipboard"
+"\"autoselect\" per mettere sempre il testo selezionato nella\n"
+"clipboard"
 
 msgid "\"startsel\" and/or \"stopsel\"; what special keys can do"
 msgstr "\"startsel\" e/o \"stopsel\"; cosa fare usando tasti speciali"
 
 msgid "editing text"
-msgstr "in edito su testo"
+msgstr "editare un testo"
 
 msgid "maximum number of changes that can be undone"
-msgstr "massimo numero di modifiche che possono essere annullate"
+msgstr "numero massimo di modifiche che possono essere annullate"
 
 msgid "automatically save and restore undo history"
-msgstr "salvare e ripristinare automaticamente storia degli annullamenti"
+msgstr ""
+"salvare e ripristinare automaticamente la storia degli\n"
+"annullamenti"
 
 msgid "list of directories for undo files"
-msgstr "lista di directory per i file di annullamento"
+msgstr "lista di directory dove tenere i file di annullamento"
 
 msgid "maximum number lines to save for undo on a buffer reload"
 msgstr ""
-"massimo numero di righe da salvare per annullamento se si ricarica il buffer"
+"massimo numero di righe da salvare per annullamento se si\n"
+"ricarica il buffer"
 
 msgid "changes have been made and not written to a file"
 msgstr ""
-"sono state fatte modifiche che non sono ancora state salvate su un file"
+"ci sono modifiche che non sono ancora state salvate\n"
+"su un file"
 
 msgid "buffer is not to be written"
 msgstr "buffer da non salvare su disco"
@@ -8999,19 +9070,23 @@ msgid "changes to the text are possible"
 msgstr "è possibile modificare il testo"
 
 msgid "line length above which to break a line"
-msgstr "lunghezza di riga sopra la quale spezzare la riga stessa"
+msgstr "lunghezza di riga sopra la quale andare a capo"
 
 msgid "margin from the right in which to break a line"
-msgstr "margine da destra sopra il quale spezzare la riga stessa"
+msgstr "margine da destra sopra il quale andare a capo"
 
 msgid "specifies what <BS>, CTRL-W, etc. can do in Insert mode"
-msgstr "specificare cose <BS>, CTRL-W, etc. possono fare in modo Insert"
+msgstr ""
+"specificare cosa <BS>, CTRL-W, etc. possono fare\n"
+"in modo Insert"
 
 msgid "definition of what comment lines look like"
-msgstr "definizione di come sono individuate le righe di commento"
+msgstr "definizioni per individuare le righe di commento"
 
 msgid "list of flags that tell how automatic formatting works"
-msgstr "lista di flag con specifiche riguardo alla formattazione automatica"
+msgstr ""
+"lista di flag con specifiche riguardo alla\n"
+"formattazione automatica"
 
 msgid "pattern to recognize a numbered list"
 msgstr "espressione che permette di riconoscere una lista numerata"
@@ -9021,14 +9096,15 @@ msgstr "espressione usata da \"gq\" per 
 
 msgid "specifies how Insert mode completion works for CTRL-N and CTRL-P"
 msgstr ""
-"specificare come funziona il completamente in modo Insert per CTRL-N e CTRL-P"
+"specificare come funziona il completamente in modo Insert\n"
+"per CTRL-N e CTRL-P"
 
 msgid "whether to use a popup menu for Insert mode completion"
 msgstr "se usare un menù dinamico per il completamento in modo Insert"
 
 msgid "options for the Insert mode completion info popup"
 msgstr ""
-"opzioni per il pannello dinamico con le informazioni di completamento in "
+"opzioni per il menù dinamico con le informazioni di completamento in\n"
 "modo Insert"
 
 msgid "maximum height of the popup menu"
@@ -9038,42 +9114,52 @@ msgid "minimum width of the popup menu"
 msgstr "larghezza minima del menù dinamico"
 
 msgid "user defined function for Insert mode completion"
-msgstr "funzione definita dall'utente per il completamento in modo Insert"
+msgstr ""
+"funzione definita dall'utente per il completamento\n"
+"in modo Insert"
 
 msgid "function for filetype-specific Insert mode completion"
 msgstr ""
-"funzione per il completamento in modo Insert a seconda del tipo di file"
+"funzione per il completamento in modo Insert a seconda del\n"
+"tipo di file"
 
 msgid "list of dictionary files for keyword completion"
-msgstr "lista di file dizionario per il completamento di parole chiave"
+msgstr ""
+"lista di file dizionario per il completamento di\n"
+"parole chiave"
 
 msgid "list of thesaurus files for keyword completion"
-msgstr "lista di file di sinonimi per il completamento di parole chiave"
+msgstr ""
+"lista di file di sinonimi per il completamento di\n"
+"parole chiave"
 
 msgid "function used for thesaurus completion"
-msgstr "funzione usata per completamento thesaurus"
+msgstr "funzione usata per completamento sinonimi"
 
 msgid "adjust case of a keyword completion match"
 msgstr ""
-"tener conto di maiuscolo/minuscolo nelle corrispondenze di completamento"
+"aggiustare maiuscolo/minuscolo nelle corrispondenze di\n"
+"completamento"
 
 msgid "enable entering digraphs with c1 <BS> c2"
-msgstr "abilitare immissione lettere non in tastiera con c1 <BS> c2"
+msgstr ""
+"abilitare immissione lettere non in tastiera con\n"
+"c1 <BS> c2"
 
 msgid "the \"~\" command behaves like an operator"
 msgstr "il comando \"~\" si comporta come un operatore"
 
 msgid "function called for the \"g@\" operator"
-msgstr "funzione chiamata per l'operatore \"g@\""
+msgstr "funzione da chiamare per l'operatore \"g@\""
 
 msgid "when inserting a bracket, briefly jump to its match"
 msgstr ""
-"se si inserisce parentesi, saltare per un momento alla parentesi "
-"corrispondente"
+"se si inserisce una parentesi, saltare per un momento\n"
+"alla parentesi corrispondente"
 
 msgid "tenth of a second to show a match for 'showmatch'"
 msgstr ""
-"decimi di secondo per evidenziare corrispondenza col comando 'showmatch'"
+"decimi di secondo per evidenziare corrispondenze col comando 'showmatch'"
 
 msgid "list of pairs that match for the \"%\" command"
 msgstr "lista di coppie corrispondenti per il comando \"%\""
@@ -9092,19 +9178,25 @@ msgid "tabs and indenting"
 msgstr "tabulazioni e indentatura"
 
 msgid "number of spaces a <Tab> in the text stands for"
-msgstr "numero di spazi in un testo quando si inserisce <Tab>"
+msgstr "numero di spazi in un testo corrispondenti a <Tab>"
 
 msgid "number of spaces used for each step of (auto)indent"
 msgstr "numero di spazi usati per ogni rientro di (auto)indent"
 
 msgid "list of number of spaces a tab counts for"
-msgstr "lista del numero di spazi a cui ogni tab corrisponde"
+msgstr ""
+"lista del numero di spazi a cui ogni successivo\n"
+"tab corrisponde"
 
 msgid "list of number of spaces a soft tabsstop counts for"
-msgstr "lista del numero di spazi a cui ogni softtabstop corrisponde"
+msgstr ""
+"lista del numero di spazi a cui ogni successivo\n"
+"softtabstop corrisponde"
 
 msgid "a <Tab> in an indent inserts 'shiftwidth' spaces"
-msgstr "un <Tab> in un'indentatura inserisce 'shiftwidth' spazi"
+msgstr ""
+"<Tab> in un'indentatura deve inserire 'shiftwidth'\n"
+"spazi"
 
 msgid "if non-zero, number of spaces to insert for a <Tab>"
 msgstr "se diverso da zero, numero di spazi da inserire per un <Tab>"
@@ -9128,22 +9220,26 @@ msgid "options for C-indenting"
 msgstr "opzioni per indentatura C"
 
 msgid "keys that trigger C-indenting in Insert mode"
-msgstr "tasti che iniziano indentatura C in modo Insert"
+msgstr "tasti per iniziare indentatura C in modo Insert"
 
 msgid "list of words that cause more C-indent"
-msgstr "lista di parole che innescano ulteriore indentatura C"
+msgstr "lista di parole per innescare ulteriore indentatura C"
 
 msgid "list of scope declaration names used by cino-g"
 msgstr "lista di dichiarazioni di ambito usate da cino-g"
 
 msgid "expression used to obtain the indent of a line"
-msgstr "espressione usata per ottenere indentatura di una riga"
+msgstr "espressione da usare per ottenere indentatura di una riga"
 
 msgid "keys that trigger indenting with 'indentexpr' in Insert mode"
-msgstr "tasti che iniziano indentatura con 'indentexpr' in modo Insert"
+msgstr ""
+"tasti per iniziare indentatura con 'indentexpr'\n"
+"in modo Insert"
 
 msgid "copy whitespace for indenting from previous line"
-msgstr "copiare la parte di spazi bianchi di indentatura dalla riga precedente"
+msgstr ""
+"copiare la parte di spazi bianchi di indentatura dalla\n"
+"riga precedente"
 
 msgid "preserve kind of whitespace when changing indent"
 msgstr "conservare tipo di spazi bianchi quando si cambia indentatura"
@@ -9152,43 +9248,46 @@ msgid "enable lisp mode"
 msgstr "abilita Modo Lisp"
 
 msgid "words that change how lisp indenting works"
-msgstr "parole che modificano funzionamento indentatura Lisp"
+msgstr "parole per modificare funzionamento indentatura Lisp"
 
 msgid "options for Lisp indenting"
 msgstr "opzioni per indentatura Lisp"
 
 msgid "folding"
-msgstr "piegatura"
+msgstr "piegature"
 
 msgid "unset to display all folds open"
-msgstr "rimuovere per vedere aperte tutte le piegature"
+msgstr "disabilitare per riaprire tutte le piegature"
 
 msgid "folds with a level higher than this number will be closed"
-msgstr "piegature a livello più alto di questo numero resteranno chiuse"
+msgstr "livello oltre il quale le piegature restano chiuse"
 
 msgid "value for 'foldlevel' when starting to edit a file"
-msgstr "valore di 'foldlevel' all'inizio della modifica di un file"
+msgstr "valore di 'foldlevel' all'inizio dell'edit di un file"
 
 msgid "width of the column used to indicate folds"
-msgstr "larghezza della colonna usare per indicare piegature"
+msgstr "larghezza della colonna da usare per indicare piegature"
 
 msgid "expression used to display the text of a closed fold"
-msgstr "espressione usata per visualizzare testo di una piegatura chiusa"
+msgstr ""
+"espressione usata per visualizzare testo di una piegatura\n"
+"chiusa"
 
 msgid "set to \"all\" to close a fold when the cursor leaves it"
 msgstr ""
-"impostare a \"all\" per chiudere una piegatura quando il cursore la lascia"
+"impostare a \"all\" per chiudere una piegatura quando il cursore\n"
+"la lascia"
 
 msgid "specifies for which commands a fold will be opened"
 msgstr "specificare per quali comandi una piegatura verrà aperta"
 
 msgid "minimum number of screen lines for a fold to be closed"
 msgstr ""
-"numero minimo di righe sullo schermo per visualizzare come chiusa una "
-"piegatura"
+"numero minimo di righe sullo schermo per visualizzare come chiusa\n"
+"una piegatura"
 
 msgid "template for comments; used to put the marker in"
-msgstr "modello per i commenti; usata per metterci delle marcature"
+msgstr "modello per i commenti; usata per marcature nelle piegature"
 
 msgid ""
 "folding type: \"manual\", \"indent\", \"expr\", \"marker\",\n"
@@ -9198,17 +9297,18 @@ msgstr ""
 "\"syntax\" o \"diff\""
 
 msgid "expression used when 'foldmethod' is \"expr\""
-msgstr "espressione usata quando 'foldmethod' è \"expr\""
+msgstr "espressione da usare quando 'foldmethod' è \"expr\""
 
 msgid "used to ignore lines when 'foldmethod' is \"indent\""
 msgstr "usare per ignorare righe quando 'foldmethod' è \"indent\""
 
 msgid "markers used when 'foldmethod' is \"marker\""
-msgstr "marcature usate quando 'foldmethod' è \"marker\""
+msgstr "marcature da usare quando 'foldmethod' è \"marker\""
 
 msgid "maximum fold depth for when 'foldmethod' is \"indent\" or \"syntax\""
 msgstr ""
-"massima profondità piegature quando 'foldmethod' è \"indent\" o \"syntax\""
+"massima profondità piegature quando 'foldmethod' è\n"
+"\"indent\" o \"syntax\""
 
 msgid "diff mode"
 msgstr "modo Diff"
@@ -9220,10 +9320,10 @@ msgid "options for using diff mode"
 msgstr "opzioni per usare modo Diff"
 
 msgid "expression used to obtain a diff file"
-msgstr "espressioni usate per ottenere un file diff"
+msgstr "espressioni da usare per ottenere un file diff"
 
 msgid "expression used to patch a file"
-msgstr "espressione usata per applicare patch a un file"
+msgstr "espressione da usare per applicare patch a un file"
 
 msgid "mapping"
 msgstr "mappatura"
@@ -9235,10 +9335,12 @@ msgid "recognize mappings in mapped keys
 msgstr "riconoscere le mappature nei tasti mappati"
 
 msgid "allow timing out halfway into a mapping"
-msgstr "consenti timeout durante una mappatura"
+msgstr "consentire timeout durante una mappatura"
 
 msgid "allow timing out halfway into a key code"
-msgstr "consenti timeout durante una mappatura con uso di tasti mappati"
+msgstr ""
+"consentire timeout durante una mappatura con uso di tasti\n"
+"mappati"
 
 msgid "time in msec for 'timeout'"
 msgstr "tempo in millisecondi prima di andare in 'timeout'"
@@ -9247,19 +9349,23 @@ msgid "time in msec for 'ttimeout'"
 msgstr "tempo in millisecondi prima di andare in 'ttimeout'"
 
 msgid "reading and writing files"
-msgstr "lettura e scrittura file"
+msgstr "leggere e scrivere file"
 
 msgid "enable using settings from modelines when reading a file"
-msgstr "consenti uso di impostazioni da modeline durante la lettura di un file"
+msgstr ""
+"consentire uso di impostazioni da modeline durante la\n"
+"lettura di un file"
 
 msgid "allow setting expression options from a modeline"
-msgstr "consenti impostazione di opzioni tramite espressioni da modeline"
+msgstr ""
+"consentire impostazione di opzioni tramite espressioni\n"
+"da modeline"
 
 msgid "number of lines to check for modelines"
-msgstr "numero di righe da controllare alla ricerca di modeline"
+msgstr "numero di righe da controllare per modeline"
 
 msgid "binary file editing"
-msgstr "modifica di file binario"
+msgstr "modificare un file binario"
 
 msgid "last line in the file has an end-of-line"
 msgstr "l'ultima riga del file ha una fine-riga"
@@ -9271,7 +9377,7 @@ msgid "fixes missing end-of-line at end 
 msgstr "rimediare alla mancanza di una fine-riga a fine file"
 
 msgid "prepend a Byte Order Mark to the file"
-msgstr "aggiungi all'inizio del file un Byte Order Mark"
+msgstr "aggiungere a inizio file un Byte Order Mark"
 
 msgid "end-of-line format: \"dos\", \"unix\" or \"mac\""
 msgstr "formato fine-riga: \"dos\", \"unix\" o \"mac\""
@@ -9286,7 +9392,7 @@ msgid "obsolete, use 'fileformats'"
 msgstr "obsoleto, usare 'fileformats'"
 
 msgid "writing files is allowed"
-msgstr "la riscrittura dei file è consentita"
+msgstr "riscrivere file è consentito"
 
 msgid "write a backup file before overwriting a file"
 msgstr "scrivere un file di backup, prima di riscrivere un file"
@@ -9298,7 +9404,7 @@ msgid "patterns that specify for which f
 msgstr "modelli che specificano per quali file non fare un backup"
 
 msgid "whether to make the backup as a copy or rename the existing file"
-msgstr "se fare, come backup, una copia del file, oppure se rinominarlo"
+msgstr "se fare, come backup, una copia del file, invece che rinominarlo"
 
 msgid "list of directories to put backup files in"
 msgstr "lista di directory in cui scrivere i file di backup"
@@ -9307,29 +9413,38 @@ msgid "file name extension for the backu
 msgstr "estensione nome file da usare per i file di backup"
 
 msgid "automatically write a file when leaving a modified buffer"
-msgstr "scrivere automaticamente un file, all'uscita da un buffer modificato"
+msgstr ""
+"riscrivere automaticamente un file, all'uscita da un buffer\n"
+"modificato"
 
 msgid "as 'autowrite', but works with more commands"
-msgstr "come 'autowrite', ma funzione con un numero maggiore di comandi"
+msgstr "come 'autowrite', ma vale per un numero maggiore di comandi"
 
 msgid "always write without asking for confirmation"
 msgstr "scrivi sempre, senza mai chiedere conferma"
 
 msgid "automatically read a file when it was modified outside of Vim"
-msgstr "leggi automaticamente un file quando è stato modificato non da Vim"
+msgstr ""
+"leggere automaticamente un file quando è stato modificato\n"
+"fuori da Vim"
 
 msgid "keep oldest version of a file; specifies file name extension"
 msgstr ""
-"conserva la versione più vecchia di un file; specifica l'estensione da usare"
+"conservare la versione più vecchia di un file; specificare\n"
+"l'estensione da usare"
 
 msgid "forcibly sync the file to disk after writing it"
-msgstr "forza una scrittura fisica su disco del file, dopo averlo riscritto"
+msgstr ""
+"forzare una scrittura fisica su disco del file, dopo averlo\n"
+"riscritto"
 
 msgid "use 8.3 file names"
 msgstr "usare nomi di file nel formato 8.3"
 
 msgid "encryption method for file writing: zip, blowfish or blowfish2"
-msgstr "metodo di cifratura con cui scrivere file: zip, blowfish o blowfish2"
+msgstr ""
+"metodo di cifratura con cui riscrivere file: zip, blowfish\n"
+"o blowfish2"
 
 msgid "the swap file"
 msgstr "il file di swap"
@@ -9338,64 +9453,74 @@ msgid "list of directories for the swap 
 msgstr "lista di directory dove mettere il file di swap"
 
 msgid "use a swap file for this buffer"
-msgstr "usare un file di swap per questo buffer"
+msgstr "usare soltanto il file di swap per questo buffer"
 
 msgid "\"sync\", \"fsync\" or empty; how to flush a swap file to disk"
 msgstr ""
-"\"sync\", \"fsync\" o nullo; come forzare la scrittura su disco di un file "
-"di swap"
+"\"sync\", \"fsync\" o nullo; come forzare la scrittura su disco\n"
+"di un file di swap"
 
 msgid "number of characters typed to cause a swap file update"
-msgstr "numero di caratteri immessi per forzare aggiornamento del file di swap"
+msgstr ""
+"numero di caratteri immessi per forzare aggiornamento del\n"
+"file di swap"
 
 msgid "time in msec after which the swap file will be updated"
 msgstr ""
-"tempo in millisecondi trascorso il quale il file di swap verrà aggiornato"
+"tempo in millisecondi trascorso il quale il file di swap\n"
+"verrà aggiornato"
 
 msgid "maximum amount of memory in Kbyte used for one buffer"
 msgstr "massima quantità di memoria in Kbyte da usare per un buffer"
 
 msgid "maximum amount of memory in Kbyte used for all buffers"
-msgstr "massima quantità di memoria in Kbyte da usare per tutti i buffer"
+msgstr ""
+"massima quantità di memoria in Kbyte da usare per tutti\n"
+"i buffer"
 
 msgid "command line editing"
 msgstr "edit della riga-di-comando"
 
 msgid "how many command lines are remembered"
-msgstr "quante righe di comando sono ricordate"
+msgstr "quante righe di comando ricordare"
 
 msgid "key that triggers command-line expansion"
 msgstr "tasto che innesca l'espansione della riga-di-comando"
 
 msgid "like 'wildchar' but can also be used in a mapping"
-msgstr "come 'wildchar', ma può anche essere usato in una mappatura"
+msgstr "come 'wildchar', ma utilizzabile anche in una mappatura"
 
 msgid "specifies how command line completion works"
-msgstr "specifica come funziona il completamento della riga-di-comando"
+msgstr "specificare funzionamento del completamento della riga-di-comando"
 
 msgid "empty or \"tagfile\" to list file name of matching tags"
-msgstr "empty o \"tagfile\" per listare nome file dei tag corrispondenti"
+msgstr "nullo o \"tagfile\" per listare nome file dei tag corrispondenti"
 
 msgid "list of file name extensions that have a lower priority"
-msgstr "lista delle estensioni di nomi file con priorità più bassa"
+msgstr "lista estensioni di nomi file con priorità più bassa"
 
 msgid "list of file name extensions added when searching for a file"
 msgstr ""
-"lista delle estensioni aggiunte ai nomi di file quando si effettua la "
-"ricerca di un file"
+"lista delle estensioni da aggiungere ai nomi di file quando si\n"
+"effettua la ricerca di un file"
 
 msgid "list of patterns to ignore files for file name completion"
-msgstr "lista di modelli da ignorare nel completamento dei nomi di file"
+msgstr ""
+"lista di modelli da ignorare nel completamento dei nomi\n"
+"di file"
 
 msgid "ignore case when using file names"
 msgstr "ignorare maiuscolo/minuscolo usando nomi di file"
 
 msgid "ignore case when completing file names"
-msgstr "ignorare maiuscolo/minuscolo nel completamento dei nomi di file"
+msgstr ""
+"ignorare maiuscolo/minuscolo nel completamento dei nomi\n"
+"di file"
 
 msgid "command-line completion shows a list of matches"
 msgstr ""
-"il completamente della riga-di-comando mostra una lista di corrispondenze"
+"il completamente della riga-di-comando mostra\n"
+"una lista di corrispondenze"
 
 msgid "key used to open the command-line window"
 msgstr "tasto usato per aprire la finestra delle righe-di-comando"
@@ -9410,40 +9535,47 @@ msgid "name of the shell program used fo
 msgstr "nome della shell da usare per i programmi esterni"
 
 msgid "when to use the shell or directly execute a command"
-msgstr "quando usare la shell, oppure eseguire direttamente un comando"
+msgstr ""
+"quando usare la shell, invece che eseguire direttamente\n"
+"un comando"
 
 msgid "character(s) to enclose a shell command in"
 msgstr "caratteri fra cui inserire un comando della shell"
 
 msgid "like 'shellquote' but include the redirection"
-msgstr "come 'shellquote' ma comprende la ridirezione"
+msgstr "come 'shellquote' ma è ammessa anche la ridirezione"
 
 msgid "characters to escape when 'shellxquote' is ("
 msgstr "caratteri da proteggere quando 'shellxquote' è ("
 
 msgid "argument for 'shell' to execute a command"
-msgstr "argomento da passare alla 'shell' per poter eseguire un comando"
+msgstr ""
+"argomento da passare alla 'shell' per poter\n"
+"eseguire un comando"
 
 msgid "used to redirect command output to a file"
-msgstr "usato per ridirigere l'output di un comando a un file"
+msgstr ""
+"stringa da usare per ridirigere l'output di un comando\n"
+"a un file"
 
 msgid "use a temp file for shell commands instead of using a pipe"
 msgstr ""
-"usare un file temporaneo per i comandi della shell, invece che usare una pipe"
+"usare un file temporaneo per i comandi della shell, invece che|nusare una "
+"pipe"
 
 msgid "program used for \"=\" command"
-msgstr "programma usato per il comando \"=\""
+msgstr "programma da usare per il comando \"=\""
 
 msgid "program used to format lines with \"gq\" command"
-msgstr "programma usato per formattare le righe col comando \"gq\""
+msgstr "programma da usare per formattare righe col comando \"gq\""
 
 msgid "program used for the \"K\" command"
-msgstr "programma usato per il comando \"K\""
+msgstr "programma da usare per il comando \"K\""
 
 msgid "warn when using a shell command and a buffer has changes"
 msgstr ""
-"avvisare quando si sta usando un comando della shell e un buffer ha avuto "
-"delle modifiche"
+"avvisare quando, usando un comando della shell, un buffer è\n"
+"stato modificato"
 
 msgid "running make and jumping to errors (quickfix)"
 msgstr "eseguire make e saltare agli errori (quickfix)"
@@ -9452,58 +9584,64 @@ msgid "name of the file that contains er
 msgstr "nome del file che contiene i messaggi di errore"
 
 msgid "list of formats for error messages"
-msgstr "lista di formati dei messaggi di errore"
+msgstr "lista dei formati dei messaggi di errore"
 
 msgid "program used for the \":make\" command"
 msgstr "programma usato per invocare \":make\""
 
 msgid "string used to put the output of \":make\" in the error file"
-msgstr "stringa usata per porre l'output di \":make\" nel file degli errori"
+msgstr ""
+"stringa usata per porre l'output di \":make\" nel file\n"
+"degli errori"
 
 msgid "name of the errorfile for the 'makeprg' command"
 msgstr "nome del file degli errori per il comando 'makeprg'"
 
 msgid "program used for the \":grep\" command"
-msgstr "programma usato per il comando \":grep\""
+msgstr "programma da usare per il comando \":grep\""
 
 msgid "list of formats for output of 'grepprg'"
-msgstr "lista di formati per l'output di 'grepprg'"
+msgstr "lista dei formati per l'output di 'grepprg'"
 
 msgid "encoding of the \":make\" and \":grep\" output"
 msgstr "codifica dell'output dei programmi \":make\" e \":grep\""
 
 msgid "function to display text in the quickfix window"
-msgstr "funzione che visualizza del testo nella finestra quickfix"
+msgstr ""
+"funzione che visualizza del testo\n"
+"nella finestra quickfix"
 
 msgid "system specific"
-msgstr "proprio del sistema"
+msgstr "caratteristiche del sistema"
 
 msgid "use forward slashes in file names; for Unix-like shells"
 msgstr "usare barre nei nomi di file; per shell di tipo Unix"
 
 msgid "specifies slash/backslash used for completion"
-msgstr "specificare se va usato barra o barra inversa nel completamento"
+msgstr ""
+"specificare se va usato barra o barra inversa nel\n"
+"completamento"
 
 msgid "language specific"
-msgstr "proprio del linguaggio"
+msgstr "caratteristiche del linguaggio"
 
 msgid "specifies the characters in a file name"
-msgstr "specifica i caratteri contenuti in un nome di file"
+msgstr "lista dei caratteri contenuti in un nome di file"
 
 msgid "specifies the characters in an identifier"
-msgstr "specifica i caratteri contenuti in un identificativo"
+msgstr "lista dei caratteri contenuti in un identificativo"
 
 msgid "specifies the characters in a keyword"
-msgstr "specifica i caratteri contenuti in una parola"
+msgstr "lista dei caratteri contenuti in una parola"
 
 msgid "specifies printable characters"
-msgstr "specifica i caratteri stampabili"
+msgstr "lista dei caratteri stampabili"
 
 msgid "specifies escape characters in a string"
-msgstr "specifica i caratteri di protezione in un stringa"
+msgstr "lista dei caratteri di protezione in un stringa"
 
 msgid "display the buffer right-to-left"
-msgstr "visualizza il buffer da destra a sinistra"
+msgstr "visualizzare il buffer da destra a sinistra"
 
 msgid "when to edit the command-line right-to-left"
 msgstr "quando editare la riga-di-comando da destra a sinistra"
@@ -9513,11 +9651,11 @@ msgstr "inserire i caratteri all'indietr
 
 msgid "allow CTRL-_ in Insert and Command-line mode to toggle 'revins'"
 msgstr ""
-"consentire CTRL-_ nei modi Insert e Command-line per innescare/disinnescare "
-"'revins'"
+"consentire CTRL-_ nei modi Insert e Command-line per\n"
+"innescare/disinnescare 'revins'"
 
 msgid "the ASCII code for the first letter of the Hebrew alphabet"
-msgstr "il codice ASCII per la prima lettera dell'alfabeto ebraico"
+msgstr "codice ASCII per la prima lettera dell'alfabeto ebraico"
 
 msgid "use Hebrew keyboard mapping"
 msgstr "usare mappatura tastiera ebraica"
@@ -9526,35 +9664,39 @@ msgid "use phonetic Hebrew keyboard mapp
 msgstr "usare mappatura tastiera fonetica ebraica"
 
 msgid "prepare for editing Arabic text"
-msgstr "preparare per editare test in arabo"
+msgstr "preparare per editare testo in arabo"
 
 msgid "perform shaping of Arabic characters"
-msgstr "assumere la forma dei caratteri arabi"
+msgstr "consentire formazione dei caratteri arabi"
 
 msgid "terminal will perform bidi handling"
-msgstr "il terminale effettua gestione bidirezionalità del testo"
+msgstr ""
+"lasciare fare al terminale gestione bidirezionalità\n"
+"del testo"
 
 msgid "name of a keyboard mapping"
 msgstr "nome di una mappatura di tastiera"
 
 msgid "list of characters that are translated in Normal mode"
-msgstr "lista dei caratteri che vengono tradotti in modo Normal"
+msgstr "lista dei caratteri da rimappare in modo Normal"
 
 msgid "apply 'langmap' to mapped characters"
 msgstr "applicare 'langmap' ai caratteri mappati"
 
 msgid "when set never use IM; overrules following IM options"
 msgstr ""
-"se impostata, non usare mai IM [Input Method]; prevale sulle seguenti "
-"opzioni IM"
+"se impostata, non usare mai IM [Input Method]; prevale sulle\n"
+"seguenti opzioni IM"
 
 msgid "in Insert mode: 1: use :lmap; 2: use IM; 0: neither"
-msgstr "in modo Insert: 1: usare :lmap; 2: usare IM; 0: nessuno dei due"
+msgstr ""
+"in modo Insert: 1: usare :lmap; 2: usare IM;\n"
+"0: nessuno dei due"
 
 msgid "input method style, 0: on-the-spot, 1: over-the-spot"
 msgstr ""
-"stile del metodo di input, 0: on-the-spot [in questo punto], 1: over-the-"
-"spot [sopra questo punto]"
+"stile del metodo di input, 0: on-the-spot [in questo punto],\n"
+"1: over-the-spot [sopra questo punto]"
 
 msgid "entering a search pattern: 1: use :lmap; 2: use IM; 0: neither"
 msgstr ""
@@ -9562,10 +9704,12 @@ msgstr ""
 "nessuno dei due"
 
 msgid "when set always use IM when starting to edit a command line"
-msgstr "se impostato, usare sempre IM iniziando a editare una riga-di-comando"
+msgstr ""
+"se impostato, usare sempre IM iniziando a editare una\n"
+"riga-di-comando"
 
 msgid "function to obtain IME status"
-msgstr "funzione per sapere se l'IME è disponibile oppure no"
+msgstr "funzione per sapere se IME è disponibile oppure no"
 
 msgid "function to enable/disable IME"
 msgstr "funzione per abilitare/disabilitare IME"
@@ -9584,19 +9728,21 @@ msgid "character encoding for the curren
 msgstr "codifica caratteri per il file corrente"
 
 msgid "automatically detected character encodings"
-msgstr "codifica caratteri determinata automaticamente"
+msgstr "determinare automaticamente codifica caratteri"
 
 msgid "character encoding used by the terminal"
 msgstr "codifica caratteri usata dal terminale"
 
 msgid "expression used for character encoding conversion"
-msgstr "espressione usata per convertire codifica caratteri"
+msgstr "espressione da usare per convertire codifica caratteri"
 
 msgid "delete combining (composing) characters on their own"
-msgstr "cancella caratteri combinati (composti) un byte alla volta"
+msgstr "cancellare caratteri combinati (composti) un byte alla volta"
 
 msgid "maximum number of combining (composing) characters displayed"
-msgstr "numero massimo di caratteri combinati (composti) visualizzati"
+msgstr ""
+"numero massimo di caratteri combinati (composti)\n"
+"visualizzati"
 
 msgid "key that activates the X input method"
 msgstr "tasto che attiva il metodo di input X"
@@ -9608,7 +9754,7 @@ msgid "emoji characters are full width"
 msgstr "i caratteri emoji sono a larghezza piena"
 
 msgid "various"
-msgstr "vari"
+msgstr "varie"
 
 msgid ""
 "when to use virtual editing: \"block\", \"insert\", \"all\"\n"
@@ -9624,47 +9770,56 @@ msgid "load plugin scripts when starting
 msgstr "caricare script plugin alla partenza di Vim"
 
 msgid "enable reading .vimrc/.exrc/.gvimrc in the current directory"
-msgstr "consenti lettura di .vimrc/.exrc/.gvimrc dalla directory corrente"
+msgstr ""
+"consentire lettura di .vimrc/.exrc/.gvimrc dalla directory\n"
+"corrente"
 
 msgid "safer working with script files in the current directory"
 msgstr ""
-"è più sicuro lavorare con file di script contenuti nella directory corrente"
+"è più sicuro lavorare con file di script contenuti\n"
+"nella directory corrente"
 
 msgid "use the 'g' flag for \":substitute\""
 msgstr "usare il flag 'g' flag con \":substitute\""
 
 msgid "'g' and 'c' flags of \":substitute\" toggle"
-msgstr "attiva/disattiva flag 'g' e 'c' di \":substitute\""
+msgstr "attivare/disattivare flag 'g' e 'c' di \":substitute\""
 
 msgid "allow reading/writing devices"
-msgstr "consenti lettura/scrittura di dispositivi"
+msgstr "consentire lettura/scrittura di dispositivi"
 
 msgid "maximum depth of function calls"
-msgstr "profondità massima delle chiamate a funzione"
+msgstr "profondità massima delle chiamate di funzione"
 
 msgid "list of words that specifies what to put in a session file"
-msgstr "lista di parole che specifica cosa mettere in un file di sessione"
+msgstr ""
+"lista di parole per specificare cosa mettere in un\n"
+"file di sessione"
 
 msgid "list of words that specifies what to save for :mkview"
-msgstr "lista di parole che specifica cosa salvare con :mkview"
+msgstr "lista di parole per specificare cosa salvare con :mkview"
 
 msgid "directory where to store files with :mkview"
 msgstr "directory in cui memorizzare file ottenuti con :mkview"
 
 msgid "list that specifies what to write in the viminfo file"
-msgstr "lista che specifica cosa scrivere nel file viminfo"
+msgstr "lista per specificare cosa scrivere nel file viminfo"
 
 msgid "file name used for the viminfo file"
-msgstr "nome del file da usare per contenere le informazioni viminfo"
+msgstr ""
+"nome del file da usare per contenere le informazioni\n"
+"viminfo"
 
 msgid "what happens with a buffer when it's no longer in a window"
-msgstr "che fare quando un buffer non è più visibile in alcuna finestra"
+msgstr ""
+"che fare quando un buffer non è più visibile in alcuna\n"
+"finestra"
 
 msgid "empty, \"nofile\", \"nowrite\", \"quickfix\", etc.: type of buffer"
 msgstr "vuoto, \"nofile\", \"nowrite\", \"quickfix\", etc.: tipi di buffer"
 
 msgid "whether the buffer shows up in the buffer list"
-msgstr "se il buffer è incluso nella lista dei buffer"
+msgstr "se il buffer va incluso nella lista dei buffer"
 
 msgid "set to \"msg\" to see all error messages"
 msgstr "impostare a \"msg\" per vedere tutti i messaggi di errore"
@@ -9710,5 +9865,4 @@ msgstr "nome della libreria dinamica MzS
 
 msgid "You discovered the command-line window! You can close it with \":q\"."
 msgstr ""
-"Questa è la finestra della riga-di-comando! si può chiudere con \":q\"."
-
+"Questa è la finestra della riga-di-comando! Si può chiudere con \":q\"."
--- a/src/po/sr.po
+++ b/src/po/sr.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim(Serbian)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-08-16 22:13+0400\n"
-"PO-Revision-Date: 2023-08-16 22:49+0400\n"
+"POT-Creation-Date: 2023-09-04 10:49+0400\n"
+"PO-Revision-Date: 2023-09-04 13:00+0400\n"
 "Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
 "Language-Team: Serbian\n"
 "Language: sr\n"
@@ -2764,6 +2764,10 @@ msgid "recording"
 msgstr "Ñнимање"
 
 #, c-format
+msgid "Searching for \"%s\" under \"%s\" in \"%s\""
+msgstr "Тражи Ñе „%s†под „%s†у „%sâ€"
+
+#, c-format
 msgid "Searching for \"%s\" in \"%s\""
 msgstr "Тражи Ñе „%s†у „%sâ€"
 
@@ -4967,7 +4971,9 @@ msgid "E339: Pattern too long"
 msgstr "E339: Шаблон је предугачак"
 
 msgid "E340: Internal error; if you can reproduce please report a bug"
-msgstr "E340: Интерна грешка; ако можете поново да је изазовете молимо Ð²Ð°Ñ Ð´Ð° пријавите баг"
+msgstr ""
+"E340: Интерна грешка; ако можете поново да је изазовете молимо Ð²Ð°Ñ Ð´Ð° "
+"пријавите баг"
 
 #, c-format
 msgid "E342: Out of memory!  (allocating %lu bytes)"
@@ -5920,6 +5926,16 @@ msgstr "E612: ДефиниÑано је превише знакова"
 msgid "E613: Unknown printer font: %s"
 msgstr "E613: Ðепознат фонт штампача: %s"
 
+msgid "E614: Class required"
+msgstr "E614: Потребна је клаÑа"
+
+msgid "E615: Object required"
+msgstr "E615: Потребан је објекат"
+
+#, c-format
+msgid "E616: Object required for argument %d"
+msgstr "E616: За аргумент %d је потребан објекат"
+
 msgid "E617: Cannot be changed in the GTK GUI"
 msgstr "E617: Ðе може да Ñе промени у GTK ГКИ"
 
@@ -6163,6 +6179,10 @@ msgstr "E691: ЛиÑта може да Ñе пореди Ñамо Ñа ЛиÑта"
 msgid "E692: Invalid operation for List"
 msgstr "E692: ÐеиÑправна операција за ЛиÑту"
 
+#, c-format
+msgid "E693: List or Class required for argument %d"
+msgstr "E693: За аргумент %d Ñе захтева ЛиÑта или КлаÑа"
+
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: ÐеиÑправна операција за Funcrefs"
 
@@ -6205,6 +6225,10 @@ msgid "E705: Variable name conflicts wit
 msgstr "E705: Име променљиве је у конфликту Ñа поÑтојећом функцијом: %s"
 
 #, c-format
+msgid "E706: Argument of %s must be a List, String or Dictionary"
+msgstr "E706: Ðргумент за %s мора бити ЛиÑта, Стринг или Речник"
+
+#, c-format
 msgid "E707: Function name conflicts with variable: %s"
 msgstr "E707: Име функције је у конфликту Ñа променљивом: %s"
 
@@ -8548,6 +8572,27 @@ msgstr "E1363: Тип није комплетан"
 msgid "E1364: Warning: Pointer block corrupted"
 msgstr "E1364: Упозорење: Блок показивача је покварен"
 
+msgid "E1365: Cannot use a return type with the \"new\" function"
+msgstr "E1365: Повратни тип не може да Ñе кориÑти Ñа функцијом „newâ€"
+
+#, c-format
+msgid "E1366: Cannot access private method: %s"
+msgstr "E1366: Ðе може да Ñе приÑтупи приватној методи: %s"
+
+#, c-format
+msgid "E1367: Access level of member \"%s\" of interface \"%s\" is different"
+msgstr "E1367: Ðиво приÑтупа члана „%s†интерфејÑа „%s†Ñе разликује"
+
+msgid "E1368: Static cannot be followed by \"this\" in a member name"
+msgstr "E1368: У имену члана након static не може да Ñледи „thisâ€"
+
+#, c-format
+msgid "E1369: Duplicate member: %s"
+msgstr "E1369: Дуплирани члан: %s"
+
+msgid "E1370: Cannot define a \"new\" function as static"
+msgstr "E1370: Функција „new†не може да Ñе дефинише као static"
+
 #, c-format
 msgid "E1400: Cannot mix positional and non-positional arguments: %s"
 msgstr "E1400: Ðе могу да Ñе мешају позициони и непозициони аргументи: %s"
@@ -8576,6 +8621,14 @@ msgstr "E1404: Позициони аргумент %d тип Ñе не употребљава конзиÑтентно: %s/%s"
 msgid "E1405: Invalid format specifier: %s"
 msgstr "E1405: ÐеиÑправни Ñпецификатор формата: %s"
 
+#, c-format
+msgid "E1406: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1406: Члан „%sâ€: неодговарајући тип, очекује Ñе %s али је наведено %s"
+
+#, c-format
+msgid "E1407: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1407: Члан „%sâ€: неодговарајући тип, очекује Ñе %s али је наведено %s"
+
 msgid "--No lines in buffer--"
 msgstr "--У баферу нема линија--"
 
--- a/src/po/tr.po
+++ b/src/po/tr.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Vim Turkish Localization Project\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-04-29 20:31+0300\n"
-"PO-Revision-Date: 2023-04-29 21:00+0300\n"
+"POT-Creation-Date: 2023-08-23 15:34+0300\n"
+"PO-Revision-Date: 2023-08-23 17:00+0300\n"
 "Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
 "Language-Team: Turkish <https://github.com/bitigchi/vim>\n"
 "Language: tr\n"
@@ -60,11 +60,11 @@ msgstr "EÅŸleÅŸen otokomut yok: %s"
 
 #, c-format
 msgid "%s Autocommands for \"%s\""
-msgstr "\"%s\" için %s otokomutlar"
+msgstr "\"%2$s\" için %1$s otokomutları"
 
 #, c-format
 msgid "Executing %s"
-msgstr "%s çalıştırılıyor"
+msgstr "%s yürütülüyor"
 
 #, c-format
 msgid "autocommand %s"
@@ -157,6 +157,22 @@ msgstr "BaÅŸ"
 msgid "%d%%"
 msgstr "%%%d"
 
+#, c-format
+msgid " (%d of %d)"
+msgstr " (%d/%d)"
+
+#, c-format
+msgid " ((%d) of %d)"
+msgstr " ((%d)/%d)"
+
+#, c-format
+msgid " (file %d of %d)"
+msgstr " (dosya %d/%d)"
+
+#, c-format
+msgid " (file (%d) of %d)"
+msgstr " (dosya (%d)/%d)"
+
 msgid "[Prompt]"
 msgstr "[Ä°stem]"
 
@@ -226,7 +242,7 @@ msgid ": Send failed.\n"
 msgstr ": Gönderme başarısız oldu.\n"
 
 msgid ": Send failed. Trying to execute locally\n"
-msgstr ": Gönderme başarısız oldu. Yerel ortamda çalıştırma deneniyor\n"
+msgstr ": Gönderme başarısız oldu. Yerel ortamda yürütme deneniyor\n"
 
 #, c-format
 msgid "%d of %d edited"
@@ -273,18 +289,19 @@ msgstr "[ÅŸifreli]"
 
 #, c-format
 msgid "xchacha20v2: using custom opslimit \"%llu\" for Key derivation."
-msgstr "xchacha20v2: Anahtar türetimi için özel işlem sınırı \"%llu\" "
-"kullanılıyor"
+msgstr ""
+"xchacha20v2: Anahtar türetimi için özel işlem sınırı \"%llu\" kullanılıyor"
 
 #, c-format
 msgid "xchacha20v2: using default opslimit \"%llu\" for Key derivation."
-msgstr "xchacha20v2: Anahtar türetimi için öntanımlı işlem sınırı \"%llu\" "
+msgstr ""
+"xchacha20v2: Anahtar türetimi için öntanımlı işlem sınırı \"%llu\" "
 "kullanılıyor"
 
 #, c-format
 msgid "xchacha20v2: using custom memlimit \"%lu\" for Key derivation."
-msgstr "xchacha20v2: Anahtar türetimi için özel bellek sınırı \"%lu\" "
-"kullanılıyor"
+msgstr ""
+"xchacha20v2: Anahtar türetimi için özel bellek sınırı \"%lu\" kullanılıyor"
 
 #, c-format
 msgid "xchacha20v2: using default memlimit \"%lu\" for Key derivation."
@@ -297,8 +314,8 @@ msgstr "xchacha20v2: Anahtar türetimi için özel algoritma \"%d\" kullanılıyor"
 
 #, c-format
 msgid "xchacha20v2: using default algorithm \"%d\" for Key derivation."
-msgstr "xchacha20v2: Anahtar türetimi için öntanımlı algoritma \"%d\" "
-"kullanılıyor"
+msgstr ""
+"xchacha20v2: Anahtar türetimi için öntanımlı algoritma \"%d\" kullanılıyor"
 
 msgid "Entering Debug mode.  Type \"cont\" to continue."
 msgstr "Hata ayıklama kipine giriliyor. Sürdürmek için \"cont\" yazın."
@@ -532,26 +549,26 @@ msgstr "(Yarıda kesildi) "
 #, c-format
 msgid "%ld match on %ld line"
 msgid_plural "%ld matches on %ld line"
-msgstr[0] "%ld eşleşme, %ld satırda"
-msgstr[1] "%ld eşleşme, %ld satırda"
+msgstr[0] "%2$ld satırda %1$ld eşleşme"
+msgstr[1] "%2$ld satırda %1$ld eşleşme"
 
 #, c-format
 msgid "%ld substitution on %ld line"
 msgid_plural "%ld substitutions on %ld line"
-msgstr[0] "%ld değiştirme, %ld satırda"
-msgstr[1] "%ld değiştirme, %ld satırda"
+msgstr[0] "%2$ld satırda %1$ld değişiklik"
+msgstr[1] "%2$ld satırda %1$ld değişiklik"
 
 #, c-format
 msgid "%ld match on %ld lines"
 msgid_plural "%ld matches on %ld lines"
-msgstr[0] "%ld eşleşme, %ld satırda"
-msgstr[1] "%ld eşleşme, %ld satırda"
+msgstr[0] "%2$ld satırda %1$ld eşleşme"
+msgstr[1] "%2$ld satırda %1$ld eşleşme"
 
 #, c-format
 msgid "%ld substitution on %ld lines"
 msgid_plural "%ld substitutions on %ld lines"
-msgstr[0] "%ld değiştirme, %ld satırda"
-msgstr[1] "%ld değiştirme, %ld satırda"
+msgstr[0] "%2$ld satırda %1$ld değişiklik"
+msgstr[1] "%2$ld satırda %1$ld değişiklik"
 
 #, c-format
 msgid "Pattern found in every line: %s"
@@ -595,12 +612,6 @@ msgstr "Ä°ÅŸlevin sonu"
 msgid "Backwards range given, OK to swap"
 msgstr "Geriye dönük erim verildi, takas edilebilir"
 
-msgid ""
-"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
-msgstr ""
-"DAHÄ°LÄ°: EX_DFLALL; ADDR_NONE, ADDR_UNSIGNED veya ADDR_QUICKFIX ile birlikte "
-"kullanılamaz"
-
 #, c-format
 msgid "%d more file to edit.  Quit anyway?"
 msgid_plural "%d more files to edit.  Quit anyway?"
@@ -1427,7 +1438,7 @@ msgstr "reverse() argümanı"
 
 #, c-format
 msgid "Current %slanguage: \"%s\""
-msgstr "Åžu anki %sdil: \"%s\""
+msgstr "Geçerli %sdil: \"%s\""
 
 msgid "Unknown option argument"
 msgstr "Bilinmeyen seçenek argümanı"
@@ -2306,7 +2317,7 @@ msgstr "Bip!"
 
 #, c-format
 msgid "Calling shell to execute: \"%s\""
-msgstr "Çalıştırmak için çağrılan kabuk: \"%s\""
+msgstr "Kabuk, yürütme için çağrılıyor: \"%s\""
 
 msgid "Warning: terminal cannot highlight"
 msgstr "Uyarı: Uçbirim vurgulama yapamıyor"
@@ -2407,10 +2418,6 @@ msgstr ""
 "\n"
 "--- Seçenekler ---"
 
-#, c-format
-msgid "For option %s"
-msgstr "%s seçeneği için"
-
 msgid "cannot open "
 msgstr "Açılamıyor: "
 
@@ -2441,13 +2448,13 @@ msgid "mch_get_shellsize: not a console?
 msgstr "mch_get_shellsize: Bir konsol deÄŸil??\n"
 
 msgid "Cannot execute "
-msgstr "Çalıştırılamıyor: "
+msgstr "Yürütülemiyor: "
 
 msgid "shell "
 msgstr "kabuk "
 
 msgid " returned\n"
-msgstr " döndürüldü\n"
+msgstr " döndürdü\n"
 
 msgid "ANCHOR_BUF_SIZE too small."
 msgstr "ANCHOR_BUF_SIZE pek küçük."
@@ -2514,7 +2521,7 @@ msgid ""
 "Cannot execute shell sh\n"
 msgstr ""
 "\n"
-"sh kabuğu çalıştırılamıyor\n"
+"sh kabuğu yürütülemiyor\n"
 
 msgid ""
 "\n"
@@ -2542,7 +2549,7 @@ msgid ""
 "Cannot execute shell "
 msgstr ""
 "\n"
-"Kabuk çalıştırılamıyor "
+"Kabuk yürütülemiyor "
 
 msgid ""
 "\n"
@@ -2719,8 +2726,12 @@ msgid "recording"
 msgstr "kaydediliyor"
 
 #, c-format
+msgid "Searching for \"%s\" under \"%s\" in \"%s\""
+msgstr "\"%3$s\" içinde \"%2$s\" altında \"%1$s\" aranıyor"
+
+#, c-format
 msgid "Searching for \"%s\" in \"%s\""
-msgstr "\"%s\", \"%s\" içinde aranıyor"
+msgstr "\"%2$s\" içinde \"%1$s\" aranıyor"
 
 #, c-format
 msgid "Searching for \"%s\""
@@ -3029,7 +3040,7 @@ msgstr "%s içinde %d. satırdaki ilk yinelenen sözcük: %s"
 
 #, c-format
 msgid "%d duplicate word(s) in %s"
-msgstr "%d yinelenen sözcük, %s içinde"
+msgstr "%2$s içinde %1$d yinelenen sözcük"
 
 #, c-format
 msgid "Ignored %d word(s) with non-ASCII characters in %s"
@@ -3114,7 +3125,7 @@ msgstr "Yapıldı!"
 
 #, c-format
 msgid "Word '%.*s' removed from %s"
-msgstr "'%.*s' sözcüğü %s içinden çıkartıldı"
+msgstr "'%.*s' sözcüğü %s içinden çıkarıldı"
 
 msgid "Seek error in spellfile"
 msgstr "Yazım dosyasında arama hatası"
@@ -3954,9 +3965,6 @@ msgid "E37: No write since last change (
 msgstr ""
 "E37: Son değişiklikten sonra yazılmadı (geçersiz kılmak için ! ekleyin)"
 
-msgid "E38: Null argument"
-msgstr "E38: Anlamsız argüman"
-
 msgid "E39: Number expected"
 msgstr "E39: Sayı bekleniyordu"
 
@@ -3970,12 +3978,6 @@ msgstr "E41: Bellek yetersiz!"
 msgid "E42: No Errors"
 msgstr "E42: Hata yok"
 
-msgid "E43: Damaged match string"
-msgstr "E43: Hasarlı eşleşme dizisi"
-
-msgid "E44: Corrupted regexp program"
-msgstr "E44: Bozulmuş regexp programı"
-
 msgid "E45: 'readonly' option is set (add ! to override)"
 msgstr "E45: 'readonly' seçeneği ayarlanmış (geçersiz kılmak için ! ekleyin)"
 
@@ -4417,11 +4419,9 @@ msgstr "E172: Ä°mleyici eksik"
 
 #, c-format
 msgid "E173: %d more file to edit"
-msgstr "E173: Düzenlenecek %d dosya daha var"
-
-#, c-format
-msgid "E173: %d more files to edit"
-msgstr "E173: Düzenlenecek %d dosya daha var"
+msgid_plural "E173: %d more files to edit"
+msgstr[0] "E173: Düzenlenecek %d dosya daha var"
+msgstr[1] "E173: Düzenlenecek %d dosya daha var"
 
 #, c-format
 msgid "E174: Command already exists: add ! to replace it: %s"
@@ -4574,7 +4574,7 @@ msgid "E216: No such group or event: %s"
 msgstr "E216: Böyle bir grup veya olay yok: %s"
 
 msgid "E217: Can't execute autocommands for ALL events"
-msgstr "E217: Otokomutlar TÜM olaylar için çalıştırılamıyor"
+msgstr "E217: Otokomutlar TÜM olaylar için yürütülemiyor"
 
 msgid "E218: Autocommand nesting too deep"
 msgstr "E218: Pek çok iç içe geçmiş otokomut"
@@ -4588,9 +4588,6 @@ msgstr "E220: } eksik."
 msgid "E221: Marker cannot start with lower case letter"
 msgstr "E221: İmleyici küçük harfle başlayamaz"
 
-msgid "E222: Add to internal buffer that was already read from"
-msgstr "E222: Halihazırda kendisinden okunmuş içsel arabelleğe ekle"
-
 msgid "E223: Recursive mapping"
 msgstr "E223: Özyineli eşlemleme"
 
@@ -4610,9 +4607,6 @@ msgstr "E226: %s için kısaltma hâlihazırda var"
 msgid "E227: Mapping already exists for %s"
 msgstr "E227: %s için eşlemleme hâlihazırda var"
 
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap: Ä°zin verilmeyen kip"
-
 msgid "E229: Cannot start the GUI"
 msgstr "E229: Grafik arabirimi başlatılamıyor"
 
@@ -4623,9 +4617,6 @@ msgstr "E230: \"%s\" okunamıyor"
 msgid "E231: 'guifontwide' invalid"
 msgstr "E231: 'guifontwide' geçersiz"
 
-msgid "E232: Cannot create BalloonEval with both message and callback"
-msgstr "E232: Hem ileti hem de geri çağırma ile BallonEval oluşturulamıyor"
-
 msgid "E233: Cannot open display"
 msgstr "E233: Ekran açılamıyor"
 
@@ -4785,13 +4776,6 @@ msgstr "E277: Bir sunucu yanıtı okunamadı"
 msgid "E279: Sorry, ++shell is not supported on this system"
 msgstr "E279: Üzgünüm, ++shell bu sistemde desteklenmiyor"
 
-msgid ""
-"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
-"org"
-msgstr ""
-"E280: ONULMAZ TCL HATASI: Başvuru listesi hasar görmüş! Lütfen bunu vim-"
-"dev@vim.org adresine raporlayın"
-
 #, c-format
 msgid "E282: Cannot read from \"%s\""
 msgstr "E282: Şuradan okunamıyor: \"%s\""
@@ -4821,13 +4805,6 @@ msgstr "E289: Giriş yöntemi benim ön düzenleme türümü desteklemiyor"
 msgid "E290: List or number required"
 msgstr "E290: Liste veya numara gerekiyor"
 
-#, c-format
-msgid "E292: Invalid count for del_bytes(): %ld"
-msgstr "E292: del_bytes() için geçersiz sayım: %ld"
-
-msgid "E293: Block was not locked"
-msgstr "E293: Blok kilitlenmemiÅŸti"
-
 msgid "E294: Seek error in swap file read"
 msgstr "E294: Takas dosyası okumasında arama hatası"
 
@@ -4840,15 +4817,6 @@ msgstr "E296: Takas dosyası yazmasında arama hatası"
 msgid "E297: Write error in swap file"
 msgstr "E297: Takas dosyasında yazma hatası"
 
-msgid "E298: Didn't get block nr 0?"
-msgstr "E298: 0 numaralı blok alınmadı mı?"
-
-msgid "E298: Didn't get block nr 1?"
-msgstr "E298: 1 numaralı blok alınmadı mı?"
-
-msgid "E298: Didn't get block nr 2?"
-msgstr "E298: 2 numaralı blok alınmadı mı?"
-
 msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
 msgstr ""
 "E299: Güvenli modül olmadan kum havuzu içinde Perl değerlendirmesine izin "
@@ -4867,9 +4835,6 @@ msgstr "E302: Takas dosyası adı değiştirilemedi"
 msgid "E303: Unable to open swap file for \"%s\", recovery impossible"
 msgstr "E303: \"%s\" için takas dosyası açılamadı, artık kurtarma yapılamaz"
 
-msgid "E304: ml_upd_block0(): Didn't get block 0??"
-msgstr "E304: ml_upd_block(): 0 numaralı blok alınmadı mı?"
-
 #, c-format
 msgid "E305: No swap file found for %s"
 msgstr "E305: %s için takas dosyası bulunamadı"
@@ -4907,48 +4872,13 @@ msgstr "E313: Korunamıyor, bir takas dosyası yok"
 msgid "E314: Preserve failed"
 msgstr "E314: Koruma başarısız oldu"
 
-#, c-format
-msgid "E315: ml_get: Invalid lnum: %ld"
-msgstr "E315: ml_get: geçersiz satır numarası: %ld"
-
-#, c-format
-msgid "E316: ml_get: Cannot find line %ld in buffer %d %s"
-msgstr "E316: ml_get: %ld. satır %d %s arabelleğinde bulunamıyor"
-
-msgid "E317: Pointer block id wrong"
-msgstr "E317: Gösterge blok kimliği yanlış"
-
-msgid "E317: Pointer block id wrong 2"
-msgstr "E317: Blok 2 gösterge kimliği yanlış"
-
-msgid "E317: Pointer block id wrong 3"
-msgstr "E317: Blok 3 gösterge kimliği yanlış"
-
-msgid "E317: Pointer block id wrong 4"
-msgstr "E317: Blok 4 gösterge kimliği yanlış"
-
-msgid "E318: Updated too many blocks?"
-msgstr "E318: Pek çok blok mu güncellendi?"
-
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Üzgünüm, komut bu sürümde mevcut değil"
 
 #, c-format
-msgid "E320: Cannot find line %ld"
-msgstr "E320: %ld. satır bulunamıyor"
-
-#, c-format
 msgid "E321: Could not reload \"%s\""
 msgstr "E321: \"%s\" yeniden yüklenemedi"
 
-#, c-format
-msgid "E322: Line number out of range: %ld past the end"
-msgstr "E322: Satır numarası erimin dışında: %ld en sonuncuyu geçmiş"
-
-#, c-format
-msgid "E323: Line count wrong in block %ld"
-msgstr "E323: %ld. blokta satır sayısı yanlış"
-
 msgid "E324: Can't open PostScript output file"
 msgstr "E324: PostScript çıktı dosyası açılamıyor"
 
@@ -5000,8 +4930,9 @@ msgstr "E338: Üzgünüm, konsol kipinde dosya tarayıcı yoktur"
 msgid "E339: Pattern too long"
 msgstr "E339: Dizgi pek uzun"
 
-msgid "E341: Internal error: lalloc(0, )"
-msgstr "E341: İç hata: lalloc(0, )"
+msgid "E340: Internal error; if you can reproduce please report a bug"
+msgstr ""
+"E340: İçsel hata; bunu yeniden oluşturabiliyorsanız lütfen bir hata bildirin"
 
 #, c-format
 msgid "E342: Out of memory!  (allocating %lu bytes)"
@@ -5038,17 +4969,17 @@ msgid "E349: No identifier under cursor"
 msgstr "E349: İmleç altında bir tanımlayıcı yok"
 
 msgid "E350: Cannot create fold with current 'foldmethod'"
-msgstr "E350: Şu anki 'foldmethod' ile kıvırma oluşturulamıyor"
+msgstr "E350: Geçerli 'foldmethod' ile kıvırma oluşturulamıyor"
 
 msgid "E351: Cannot delete fold with current 'foldmethod'"
-msgstr "E351: Şu anki 'foldmethod' ile kıvırma silinemiyor"
+msgstr "E351: Geçerli 'foldmethod' ile kıvırma silinemiyor"
 
 msgid "E352: Cannot erase folds with current 'foldmethod'"
-msgstr "E352: Şu anki 'foldmethod' ile kıvırmalar silinemiyor"
+msgstr "E352: Geçerli 'foldmethod' ile kıvırmalar silinemiyor"
 
 #, c-format
 msgid "E353: Nothing in register %s"
-msgstr "E353: Yazmaç %s boş"
+msgstr "E353: %s yazmacında bir şey yok"
 
 #, c-format
 msgid "E354: Invalid register name: '%s'"
@@ -5058,9 +4989,6 @@ msgstr "E354: Geçersiz yazmaç adı: '%s'"
 msgid "E355: Unknown option: %s"
 msgstr "E355: Bilinmeyen seçenek: %s"
 
-msgid "E356: get_varp ERROR"
-msgstr "E356: get_varp HATASI"
-
 #, c-format
 msgid "E357: 'langmap': Matching character missing for %s"
 msgstr "E357: 'langmap': %s için eşleşen karakter eksik"
@@ -5073,13 +5001,13 @@ msgid "E359: Screen mode setting not sup
 msgstr "E359: Ekran kipi ayarı desteklenmiyor"
 
 msgid "E360: Cannot execute shell with -f option"
-msgstr "E360: Kabuk -f seçeneği ile çalıştırılamıyor"
+msgstr "E360: Kabuk -f seçeneği ile yürütülemiyor"
 
 msgid "E362: Using a boolean value as a Float"
 msgstr "E362: Bir Boole, kayan noktalı değer olarak kullanılıyor"
 
 msgid "E363: Pattern uses more memory than 'maxmempattern'"
-msgstr "E363: Dizgi 'maxmempattern' ögesinden daha fazla bellek kullanıyor"
+msgstr "E363: Dizgi, 'maxmempattern'dan daha çok bellek kullanıyor"
 
 #, c-format
 msgid "E364: Library call failed for \"%s()\""
@@ -5278,6 +5206,9 @@ msgstr "E417: Argüman eksik: %s"
 msgid "E418: Illegal value: %s"
 msgstr "E418: Ä°zin verilmeyen deÄŸer: %s"
 
+msgid "E418: I'm a teapot"
+msgstr "E418: Ben bir çaydanlığım"
+
 msgid "E419: FG color unknown"
 msgstr "E419: Bilinmeyen metin rengi"
 
@@ -5344,15 +5275,6 @@ msgstr "E436: termcap içinde \"%s\" girdisi yok"
 msgid "E437: Terminal capability \"cm\" required"
 msgstr "E437: \"cm\" uçbirim yeteneği gerekiyor"
 
-msgid "E438: u_undo: Line numbers wrong"
-msgstr "E438: u_undo: Satır numaraları yanlış"
-
-msgid "E439: Undo list corrupt"
-msgstr "E439: Geri al listesi hasarlı"
-
-msgid "E440: Undo line missing"
-msgstr "E440: Geri al satırı eksik"
-
 msgid "E441: There is no preview window"
 msgstr "E441: Önizleme penceresi yok"
 
@@ -5465,9 +5387,6 @@ msgstr "E471: DeÄŸiÅŸken gerekiyor"
 msgid "E472: Command failed"
 msgstr "E472: Komut başarısız oldu"
 
-msgid "E473: Internal error in regexp"
-msgstr "E473: regexp içinde içsel hata"
-
 msgid "E474: Invalid argument"
 msgstr "E474: Geçersiz argüman"
 
@@ -5595,6 +5514,9 @@ msgstr "bir dosya veya yazılabilir aygıt değil"
 msgid "E503: \"%s\" is not a file or writable device"
 msgstr "E503: \"%s\", bir dosya veya yazılabilir aygıt değil"
 
+msgid "E503: Coffee is currently not available"
+msgstr "E503: Coffee şu anda kullanılamıyor"
+
 msgid "is read-only (cannot override: \"W\" in 'cpoptions')"
 msgstr "saltokunur (geçersiz kılınamıyor: 'cpoptions' içinde \"W\")"
 
@@ -5815,9 +5737,6 @@ msgstr "E567: cscope bağlantıları yok"
 msgid "E568: Duplicate cscope database not added"
 msgstr "E568: Yinelenen cscope veritabanı eklenmemiş"
 
-msgid "E570: Fatal error in cs_manage_matches"
-msgstr "E570: cs_manage_matches içinde onulmaz hata"
-
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
 msgstr "E571: Üzgünüm, bu komut etkin değil: Tcl kitaplığı yüklenemedi."
@@ -5996,6 +5915,14 @@ msgid "E626: Cannot get cscope database 
 msgstr "E626: cscope veritabanı bilgisi alınamıyor"
 
 #, c-format
+msgid "E627: Missing colon: %s"
+msgstr "E627: Ä°ki nokta eksik: %s"
+
+#, c-format
+msgid "E628: Missing ! or / in: %s"
+msgstr "E628: Åžurada ! veya / eksik: %s"
+
+#, c-format
 msgid "E630: %s(): Write while not connected"
 msgstr "E630: %s(): Bağlantı yokken yazım"
 
@@ -6003,6 +5930,70 @@ msgstr "E630: %s(): Bağlantı yokken yazım"
 msgid "E631: %s(): Write failed"
 msgstr "E631: %s(): Yazma başarısız"
 
+msgid "E632: Invalid buffer identifier in getLength"
+msgstr "E632: getLength'te geçersiz arabellek tanımlayıcısı"
+
+msgid "E633: Invalid buffer identifier in getText"
+msgstr "E633: getText'te geçersiz arabellek tanımlayıcısı"
+
+msgid "E634: Invalid buffer identifier in remove"
+msgstr "E634: remove'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E635: Invalid buffer identifier in insert"
+msgstr "E635: insert'te geçersiz arabellek tanımlayıcısı"
+
+msgid "E636: Invalid buffer identifier in create"
+msgstr "E636: create'de geçersiz arabellek tanımlayıcısı"
+
+msgid "E637: Invalid buffer identifier in startDocumentListen"
+msgstr "E637: startDocumentListen'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E638: Invalid buffer identifier in stopDocumentListen"
+msgstr "E638: stopDocumentListen'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E639: Invalid buffer identifier in setTitle"
+msgstr "E639: setTitle'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E640: Invalid buffer identifier in initDone"
+msgstr "E640: initDone'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E641: Invalid buffer identifier in setBufferNumber"
+msgstr "E641: setBufferNumber'da geçersiz arabellek tanımlayıcısı"
+
+#, c-format
+msgid "E642: File %s not found in setBufferNumber"
+msgstr "E642: setBufferNumber'da %s dosyası bulunamadı"
+
+msgid "E643: Invalid buffer identifier in setFullName"
+msgstr "E643: setFullName'de geçersiz arabellek tanımlayıcısı"
+
+msgid "E644: Invalid buffer identifier in editFile"
+msgstr "E644: editFile'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E645: Invalid buffer identifier in setVisible"
+msgstr "E645: setVisible'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E646: Invalid buffer identifier in setModified"
+msgstr "E646: setModified'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E647: Invalid buffer identifier in setDot"
+msgstr "E647: setDot'ta geçersiz arabellek tanımlayıcısı"
+
+msgid "E648: Invalid buffer identifier in close"
+msgstr "E648: close'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E649: Invalid buffer identifier in close"
+msgstr "E649: close'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E650: Invalid buffer identifier in defineAnnoType"
+msgstr "E650: defineAnnoType'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E651: Invalid buffer identifier in addAnno"
+msgstr "E651: addAnno'da geçersiz arabellek tanımlayıcısı"
+
+msgid "E652: Invalid buffer identifier in getAnno"
+msgstr "E652: getAnno'da geçersiz arabellek tanımlayıcısı"
+
 #, c-format
 msgid "E654: Missing delimiter after search pattern: %s"
 msgstr "E654: Arama dizgisi sonrası eksik sınırlandırıcı: %s"
@@ -6174,6 +6165,10 @@ msgid "E705: Variable name conflicts wit
 msgstr "E705: Değişken adı mevcut işlevle çakışıyor: %s"
 
 #, c-format
+msgid "E706: Argument of %s must be a List, String or Dictionary"
+msgstr "E706: %s ögesinin argümanı bir liste, dizi veya sözlük olmalıdır"
+
+#, c-format
 msgid "E707: Function name conflicts with variable: %s"
 msgstr "E707: İşlev adı şu değişken ile çakışıyor: %s"
 
@@ -6611,9 +6606,6 @@ msgstr "E829: Geri al dosyasında yazma hatası: %s"
 msgid "E830: Undo number %ld not found"
 msgstr "E830: %ld numaralı geri alma bulunamadı"
 
-msgid "E831: bf_key_init() called with empty password"
-msgstr "E831: bf_key_init() boş bir şifre ile çağrıldı"
-
 #, c-format
 msgid "E832: Non-encrypted file has encrypted undo file: %s"
 msgstr "E832: Şifrelenmemiş dosyanın şifrelenmiş bir geri al dosyası var: %s"
@@ -6630,10 +6622,10 @@ msgid "E835: Conflicts with value of 'fi
 msgstr "E835: 'fillchars' değeriyle çakışmalar var"
 
 msgid "E836: This Vim cannot execute :python after using :py3"
-msgstr "E836: Bu Vim :py3 komutundan sonra :python komutunu çalıştıramaz"
+msgstr "E836: Bu Vim :py3 komutundan sonra :python komutunu yürütemez"
 
 msgid "E837: This Vim cannot execute :py3 after using :python"
-msgstr "E837: Bu Vim :python komutundan sonra :py3 komutunu çalıştıramaz"
+msgstr "E837: Bu Vim :python komutundan sonra :py3 komutunu yürütemez"
 
 msgid "E838: NetBeans is not supported with this GUI"
 msgstr "E838: NetBeans bu grafik arabirimde desteklenmiyor"
@@ -6759,7 +6751,7 @@ msgid "E873: (NFA regexp) proper termina
 msgstr "E873: (BSO düzenli ifadesi) Düzgün sonlandırma hatası"
 
 msgid "E874: (NFA regexp) Could not pop the stack!"
-msgstr "E874: (BSO düzenli ifadesi) Yığın çıkartılamadı!"
+msgstr "E874: (BSO düzenli ifadesi) Yığın çıkarılamadı!"
 
 msgid ""
 "E875: (NFA regexp) (While converting from postfix to NFA), too many states "
@@ -6771,10 +6763,6 @@ msgstr ""
 msgid "E876: (NFA regexp) Not enough space to store the whole NFA"
 msgstr "E876: (BSO düzenli ifadesi) Tüm BSO'yu depolamak için yeterli alan yok"
 
-#, c-format
-msgid "E877: (NFA regexp) Invalid character class: %d"
-msgstr "E877: (BSO düzenli ifadesi) Geçersiz karakter sınıfı: %d"
-
 msgid "E878: (NFA regexp) Could not allocate memory for branch traversal!"
 msgstr "E878: (BSO düzenli ifadesi) Dal gezinmesi için bellek ayrılamadı!"
 
@@ -7005,10 +6993,6 @@ msgstr "E941: Sunucu hâlihazırda çalışıyor"
 msgid "E942: +clientserver feature not available"
 msgstr "E942: +clientserver özelliği mevcut değil"
 
-msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
-msgstr ""
-"E943: Komut tablosunun güncellenmesi gerekiyor, 'make cmdidxs' çalıştırın"
-
 msgid "E944: Reverse range in character class"
 msgstr "E944: Karakter sınıfında geriye dönük erim"
 
@@ -7089,9 +7073,6 @@ msgstr "E965: Özellik tür adı eksik"
 msgid "E966: Invalid line number: %ld"
 msgstr "E966: Geçersiz satır numarası: %ld"
 
-msgid "E967: Text property info corrupted"
-msgstr "E967: Metin özellik bilgisi hasarlı"
-
 msgid "E968: Need at least one of 'id' or 'type'"
 msgstr "E968: En azından bir 'id' veya 'type' gerekli"
 
@@ -7162,7 +7143,7 @@ msgid "E987: Invalid return value from t
 msgstr "E987: Etiket işlevinden geçersiz dönüş değeri"
 
 msgid "E988: GUI cannot be used. Cannot execute gvim.exe."
-msgstr "E988: Grafik arabirim kullanılamaz. gvim.exe çalıştırılamadı."
+msgstr "E988: Grafik arabirim kullanılamaz. gvim.exe yürütülemiyor."
 
 msgid "E989: Non-default argument follows default argument"
 msgstr "E989: Öntanımlı olmayan argüman öntanımlı argümandan sonra"
@@ -7547,8 +7528,9 @@ msgstr "E1093: %d öge bekleniyordu; ancak %d alındı"
 msgid "E1094: Import can only be used in a script"
 msgstr "E1094: İçe aktarım yalnızca bir betikte kullanılabilir"
 
-msgid "E1095: Unreachable code after :return"
-msgstr "E1095: :return sonrası ulaşılamayan kod"
+#, c-format
+msgid "E1095: Unreachable code after :%s"
+msgstr "E1095: :%s sonrası ulaşılamayan kod"
 
 msgid "E1096: Returning a value in a function without a return type"
 msgstr "E1096: Dönüş türü olmayan bir işlevde bir değer döndürülüyor"
@@ -7585,12 +7567,11 @@ msgstr "E1104: > eksik"
 msgid "E1105: Cannot convert %s to string"
 msgstr "E1105: %s, bir diziye dönüştürülemiyor"
 
+#, c-format
 msgid "E1106: One argument too many"
-msgstr "E1106: Bir argüman fazladan"
-
-#, c-format
-msgid "E1106: %d arguments too many"
-msgstr "E1106: %d argüman fazladan"
+msgid_plural "E1106: %d arguments too many"
+msgstr[0] "E1106: Bir argüman fazladan"
+msgstr[1] "E1106: %d argüman fazladan"
 
 msgid "E1107: String, List, Dict or Blob required"
 msgstr "E1107: Dizi, Liste, Sözlük veya İkili Nesne gerekiyor"
@@ -7688,10 +7669,6 @@ msgstr "E1135: Bir dizi, bir Boole olarak kullanılıyor: \"%s\""
 msgid "E1136: <Cmd> mapping must end with <CR> before second <Cmd>"
 msgstr "E1136: <Cmd> eşlemlemesi ikinci <Cmd>'den önce <CR> ile bitmelidir"
 
-#, c-format
-msgid "E1137: <Cmd> mapping must not include %s key"
-msgstr "E1137: <Cmd> eşlemlemesi %s anahtarını içermemelidir"
-
 msgid "E1138: Using a Bool as a Number"
 msgstr "E1138: Bir Boole, bir sayı olarak kullanılıyor"
 
@@ -7884,12 +7861,11 @@ msgstr "E1188: Komut satırı penceresinden bir uçbirim açılamıyor"
 msgid "E1189: Cannot use :legacy with this command: %s"
 msgstr "E1189: :legacy, bu komut ile kullanılamıyor: %s"
 
+#, c-format
 msgid "E1190: One argument too few"
-msgstr "E1190: Bir argüman daha gerekiyor"
-
-#, c-format
-msgid "E1190: %d arguments too few"
-msgstr "E1190: %d argüman daha gerekiyor"
+msgid_plural "E1190: %d arguments too few"
+msgstr[0] "E1190: Bir argüman daha gerekiyor"
+msgstr[1] "E1190: %d argüman daha gerekiyor"
 
 #, c-format
 msgid "E1191: Call to function that failed to compile: %s"
@@ -8417,9 +8393,6 @@ msgstr "E1334: Nesne üyesi bulunamadı: %s"
 msgid "E1335: Member is not writable: %s"
 msgstr "E1335: Üye yazılabilir değil: %s"
 
-msgid "E1336: Internal error: shortmess too long"
-msgstr "E1336: İçsel hata: Kısalık pek uzun"
-
 #, c-format
 msgid "E1337: Class member not found: %s"
 msgstr "E1337: Sınıf üyesi bulunamadı: %s"
@@ -8432,7 +8405,8 @@ msgid ""
 "E1339: Cannot add a textprop with text after using a textprop with a "
 "negative id"
 msgstr ""
-"E1339: Negatif kimlikli bir textprop kullandıktan sonra metin içeren bir textprop eklenemiyor"
+"E1339: Negatif kimlikli bir textprop kullandıktan sonra metin içeren bir "
+"textprop eklenemiyor"
 
 #, c-format
 msgid "E1340: Argument already declared in the class: %s"
@@ -8466,11 +8440,11 @@ msgstr "E1347: Geçerli bir arayüz değil: %s"
 
 #, c-format
 msgid "E1348: Member \"%s\" of interface \"%s\" not implemented"
-msgstr "E1348: Şu arayüzün \"%s\" üyesi ilklendirilemiyor: \"%s\""
+msgstr "E1348: \"%2$\" arayüzünün \"%1$s\" üyesi ilklendirilemiyor"
 
 #, c-format
 msgid "E1349: Function \"%s\" of interface \"%s\" not implemented"
-msgstr "E1349: Şu arayüzün \"%s\" işlevi gerçeklenmemiş: \"%s\""
+msgstr "E1349: \"%2$\" arayüzünün \"%1$s\" işlevi gerçeklenmemiş"
 
 msgid "E1350: Duplicate \"implements\""
 msgstr "E1350: Yinelenen \"implements\""
@@ -8521,9 +8495,81 @@ msgstr "E1363: Tam olmayan tür"
 msgid "E1364: Warning: Pointer block corrupted"
 msgstr "E1364: Uyarı: İşaretçi bloku hasar görmüş"
 
+msgid "E1365: Cannot use a return type with the \"new\" function"
+msgstr "E1365: \"new\" işleviyle bir dönüş türü kullanılamıyor"
+
+#, c-format
+msgid "E1400: Cannot mix positional and non-positional arguments: %s"
+msgstr "E1400: Konumsal ve konumsal olmayan argümanlar karıştırılamıyor: %s"
+
+#, c-format
+msgid "E1401: format argument %d unused in $-style format: %s"
+msgstr "E1401: Biçim argümanı %d, $-tarzı biçimde kullanılmıyor: %s"
+
+#, c-format
+msgid ""
+"E1402: Positional argument %d used as field width reused as different type: "
+"%s/%s"
+msgstr ""
+"E1402: Konumsal argüman %d, başka türle yeniden kullanılan alan olarak "
+"kullanılıyor: %s/%s"
+
+#, c-format
+msgid "E1403: Positional argument %d out of bounds: %s"
+msgstr "E1403: Konumsal argüman %d, sınırlar dışında: %s"
+
+#, c-format
+msgid "E1404: Positional argument %d type used inconsistently: %s/%s"
+msgstr "E1404: Konumsal argüman %d türü tutarsız olarak kullanıldı: %s/%s"
+
+#, c-format
+msgid "E1405: Invalid format specifier: %s"
+msgstr "E1405: Geçersiz biçim belirteci: %s"
+
+#, c-format
+msgid "E1406: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1406: \"%s\" üyesi türü uyumsuzluğu, %s bekleniyordu; ancak %s alındı"
+
+#, c-format
+msgid "E1407: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1407: \"%s\" üyesi türü uyumsuzluğu, %s bekleniyordu; ancak %s alındı"
+
 msgid "--No lines in buffer--"
 msgstr "--Arabellek içinde satır yok--"
 
+msgid "int"
+msgstr "tamsayı"
+
+msgid "long int"
+msgstr "uzun tamsayı"
+
+msgid "long long int"
+msgstr "uzun uzun tamsayı"
+
+msgid "unsigned int"
+msgstr "imzalanmamış tamsayı"
+
+msgid "unsigned long int"
+msgstr "imzalanmamış uzun tamsayı"
+
+msgid "unsigned long long int"
+msgstr "imzalanmamış uzun uzun tamsayı"
+
+msgid "pointer"
+msgstr "işaretçi"
+
+msgid "percent"
+msgstr "yüzde"
+
+msgid "char"
+msgstr "karakter"
+
+msgid "string"
+msgstr "dizi"
+
+msgid "float"
+msgstr "kayan noktalı değer"
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "Arama dosyanın BAŞINI geçti, dosyanın SONUNDAN sürüyor"
 
@@ -8858,7 +8904,7 @@ msgid ""
 msgstr "\" Her \"set\" satırı bir seçeneğin geçerli değerini gösterir (solda)."
 
 msgid "\" Hit <Enter> on a \"set\" line to execute it."
-msgstr "\" Değiştirmek için bir \"set\" satırında <Enter>'a basın."
+msgstr "\" Yürütmek için bir \"set\" satırında <Enter>'a basın."
 
 msgid "\"            A boolean option will be toggled."
 msgstr "\"   Bir Boole deÄŸeri iÅŸletilecektir."
@@ -9983,7 +10029,7 @@ msgid "name of the shell program used fo
 msgstr "dış komutlar için kullanılan kabuk programının adı"
 
 msgid "when to use the shell or directly execute a command"
-msgstr "ne zaman kabuğu kullanmalı veya doğrudan bir komut çalıştırmalı"
+msgstr "ne zaman kabuğu kullanmalı veya doğrudan bir komut yürütmeli"
 
 msgid "character(s) to enclose a shell command in"
 msgstr "bir kabuk komutunu çevreleyen karakter(ler)"
@@ -9995,7 +10041,7 @@ msgid "characters to escape when 'shellx
 msgstr "'shellxquote' ( iken kaçırılacak karakterler"
 
 msgid "argument for 'shell' to execute a command"
-msgstr "bir komut çalıştırmak için 'shell' için argüman"
+msgstr "bir komut yürütmek için 'shell' için argüman"
 
 msgid "used to redirect command output to a file"
 msgstr "komut çıktısını bir dosyaya yeniden yönlendirmek için kullanılır"
@@ -10278,3 +10324,6 @@ msgstr "MzScheme devingen kitaplığının adı"
 
 msgid "name of the MzScheme GC dynamic library"
 msgstr "MzScheme GC devingen kitaplığının adı"
+
+msgid "You discovered the command-line window! You can close it with \":q\"."
+msgstr "Komut satırı penceresini keşfettiniz! Kapatmak için \":q\" kullanın."
--- a/src/po/uk.cp1251.po
+++ b/src/po/uk.cp1251.po
@@ -12,18 +12,18 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: vim 8.1\n"
+"Project-Id-Version: Vim Ukrainian\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-02 17:40+0300\n"
-"PO-Revision-Date: 2022-05-20 17:12+0300\n"
+"POT-Creation-Date: 2023-08-24 11:51+0300\n"
+"PO-Revision-Date: 2023-08-27 07:48+0300\n"
 "Last-Translator: Àíàòîë³é Ñàõí³ê <sakhnik@gmail.com>\n"
 "Language-Team: Ukrainian\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=cp1251\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3;     plural=n%10==1 && n%100!=11 ? 0 :            n"
-"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3;     plural=n%10==1 && n%100!=11 ? 0 :            "
+"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 
 msgid "ERROR: "
 msgstr "ÏÎÌÈËÊÀ: "
@@ -97,23 +97,23 @@ msgstr "[Ñïèñîê âèïðàâëåíü]"
 #, c-format
 msgid "%d buffer unloaded"
 msgid_plural "%d buffers unloaded"
-msgstr[0] "Âèâàíòàæåíî %d áóôåð"
-msgstr[1] "Âèâàíòàæåíî %d áóôåðè"
-msgstr[2] "Âèâàíòàæåíî %d áóôåð³â"
+msgstr[0] "%d áóôåð âèâàíòàæåíî"
+msgstr[1] "%d áóôåðè âèâàíòàæåíî"
+msgstr[2] "%d áóôåð³â âèâàíòàæåíî"
 
 #, c-format
 msgid "%d buffer deleted"
 msgid_plural "%d buffers deleted"
-msgstr[0] "Çíèùåíî %d áóôåð"
-msgstr[1] "Çíèùåíî %d áóôåðè"
-msgstr[2] "Çíèùåíî %d áóôåð³"
+msgstr[0] "%d áóôåð çíèùåíî"
+msgstr[1] "%d áóôåðè çíèùåíî"
+msgstr[2] "%d áóôåð³â çíèùåíî"
 
 #, c-format
 msgid "%d buffer wiped out"
 msgid_plural "%d buffers wiped out"
-msgstr[0] "Âèòåðòî %d áóôåð"
-msgstr[1] "Âèòåðòî %d áóôåðè"
-msgstr[2] "Âèòåðòî %d áóôåð³â"
+msgstr[0] "%d áóôåð ñòåðòî"
+msgstr[1] "%d áóôåðè ñòåðòî"
+msgstr[2] "%d áóôåð³â ñòåðòî"
 
 msgid "W14: Warning: List of file names overflow"
 msgstr "W14: Îáåðåæíî: Ñïèñîê íàçâ ôàéë³â ïåðåïîâíåíî"
@@ -169,8 +169,28 @@ msgstr "Çíèçó"
 msgid "Top"
 msgstr "Âãîð³"
 
+#, c-format
+msgid "%d%%"
+msgstr "%d%%"
+
+#, c-format
+msgid " (%d of %d)"
+msgstr " (%d ç %d)"
+
+#, c-format
+msgid " ((%d) of %d)"
+msgstr " ((%d) ç %d)"
+
+#, c-format
+msgid " (file %d of %d)"
+msgstr " (ôàéë %d ç %d)"
+
+#, c-format
+msgid " (file (%d) of %d)"
+msgstr " (ôàéë (%d) ç %d)"
+
 msgid "[Prompt]"
-msgstr "[ϳäêàçêà]"
+msgstr "[Çàïèò]"
 
 msgid "[Popup]"
 msgstr "[Ñïëèâàþ÷å]"
@@ -283,6 +303,33 @@ msgstr "Êëþ÷³ íå îäíàêîâ³!"
 msgid "[crypted]"
 msgstr "[çàøèôðîâàíî]"
 
+#, c-format
+msgid "xchacha20v2: using custom opslimit \"%llu\" for Key derivation."
+msgstr "xchacha20v2: çàñòîñîâóºòüñÿ âëàñíèé opslimit «%llu» ó âèâåäåíí³ êëþ÷à."
+
+#, c-format
+msgid "xchacha20v2: using default opslimit \"%llu\" for Key derivation."
+msgstr ""
+"xchacha20v2: çàñòîñîâóºòüñÿ ïî÷àòêîâèé opslimit «%llu» ó âèâåäåíí³ êëþ÷à."
+
+#, c-format
+msgid "xchacha20v2: using custom memlimit \"%lu\" for Key derivation."
+msgstr "xchacha20v2: çàñòîñîâóºòüñÿ âëàñíèé memlimit «%lu» ó âèâåäåíí³ êëþ÷à."
+
+#, c-format
+msgid "xchacha20v2: using default memlimit \"%lu\" for Key derivation."
+msgstr ""
+"xchacha20v2: çàñòîñîâóºòüñÿ ïî÷àòêîâèé memlimit «%lu» ó âèâåäåíí³ êëþ÷à."
+
+#, c-format
+msgid "xchacha20v2: using custom algorithm \"%d\" for Key derivation."
+msgstr "xchacha20v2: çàñòîñîâóºòüñÿ âëàñíèé àëãîðèòì «%d» ó âèâåäåíí³ êëþ÷à."
+
+#, c-format
+msgid "xchacha20v2: using default algorithm \"%d\" for Key derivation."
+msgstr ""
+"xchacha20v2: çàñòîñîâóºòüñÿ ïî÷àòêîâèé àëãîðèòì «%d» ó âèâåäåíí³ êëþ÷à."
+
 msgid "Entering Debug mode.  Type \"cont\" to continue."
 msgstr "Ðåæèì íàëàãîäæåííÿ.  Ùîá ïðîäîâæèòè ââåä³òü «cont»."
 
@@ -336,7 +383,7 @@ msgid "Patch file"
 msgstr "Ëàòêà"
 
 msgid "Custom"
-msgstr "Âëàñíèé"
+msgstr "Âëàñíå"
 
 msgid "Latin supplement"
 msgstr "Äîïîâíåííÿ ëàòèíèö³"
@@ -372,7 +419,7 @@ msgid "Other"
 msgstr "²íøå"
 
 msgid "Roman numbers"
-msgstr "Ðèìñüê³ ÷èñëà"
+msgstr "Ðèìñüê³ öèôðè"
 
 msgid "Arrows"
 msgstr "Ñòð³ëêè"
@@ -387,7 +434,7 @@ msgid "Box drawing"
 msgstr "Ìàëþâàííÿ ïðÿìîêóòíèê³â"
 
 msgid "Block elements"
-msgstr "Åëåìåíòè áëîê³â"
+msgstr "×àñòèíè áëîê³â"
 
 msgid "Geometric shapes"
 msgstr "Ãåîìåòðè÷í³ ô³ãóðè"
@@ -411,7 +458,8 @@ msgid "Bopomofo"
 msgstr "×æó¿íü"
 
 msgid "Not enough memory to set references, garbage collection aborted!"
-msgstr "Íåäîñòàòíüî ïàì’ÿò³, ùîá âñòàíîâèòè ïîñèëàííÿ, çá³ð ñì³òòÿ ñêàñîâàíî!"
+msgstr ""
+"Íåäîñòàòíüî ïàì’ÿò³ äëÿ âñòàíîâëåííÿ ïîñèëàíü, çáèðàííÿ ñì³òòÿ ïðèïèíåíî!"
 
 msgid ""
 "\n"
@@ -495,7 +543,7 @@ msgstr "Çàïèñàòè ÷àñòèíó ôàéëó?"
 
 #, c-format
 msgid "Overwrite existing file \"%s\"?"
-msgstr "Ïåðåïèñàòè ³ñíóþ÷èé ôàéë «%s»?"
+msgstr "Ïåðåïèñàòè íàÿâíèé ôàéë «%s»?"
 
 #, c-format
 msgid "Swap file \"%s\" exists, overwrite anyway?"
@@ -584,12 +632,6 @@ msgstr "ʳíåöü ôóíêö³¿"
 msgid "Backwards range given, OK to swap"
 msgstr "²íòåðâàë çàäàíî íàâèâîð³ò, ùîá ïîì³íÿòè ì³ñöÿìè — ÃÀÐÀÇÄ"
 
-msgid ""
-"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
-msgstr ""
-"ÂÍÓÒвØͪ: Íå ìîæíà âæèòè EX_DFLALL ç ADDR_NONE, ADDR_UNSIGNED ÷è "
-"ADDR_QUICKFIX"
-
 #, c-format
 msgid "%d more file to edit.  Quit anyway?"
 msgid_plural "%d more files to edit.  Quit anyway?"
@@ -598,7 +640,7 @@ msgstr[1] "Ùå º %d íå ðåäàãîâàí³ ôàéëè. Âñå îäíî âèéòè?"
 msgstr[2] "Ùå º %d íå ðåäàãîâàíèõ ôàéë³â. Âñå îäíî âèéòè?"
 
 msgid "unknown"
-msgstr "Íåâ³äîìî"
+msgstr "íåâ³äîìî"
 
 msgid "Greetings, Vim user!"
 msgstr "³òàííÿ, êîðèñòóâà÷ó Vim!"
@@ -683,7 +725,7 @@ msgid "Interrupt"
 msgstr "Ïåðåðâàíî"
 
 msgid "[Command Line]"
-msgstr "[Ðÿäîê êîìàíä]"
+msgstr "[Ðÿäîê Êîìàíä]"
 
 msgid "is a directory"
 msgstr "êàòàëîã"
@@ -718,7 +760,7 @@ msgid "[fifo]"
 msgstr "[êàíàë]"
 
 msgid "[socket]"
-msgstr "[ãí³çäî]"
+msgstr "[ðîçåòêà]"
 
 msgid "[character special]"
 msgstr "[ñïåö. ñèìâîëüíèé]"
@@ -727,7 +769,7 @@ msgid "[CR missing]"
 msgstr "[Áðàêóº CR]"
 
 msgid "[long lines split]"
-msgstr "[Ðîçáèòî äîâã³ ðÿäêè]"
+msgstr "[äîâã³ ðÿäêè ðîçáèòî]"
 
 #, c-format
 msgid "[CONVERSION ERROR in line %ld]"
@@ -848,13 +890,15 @@ msgstr "áåç çá³ã³â"
 msgid "+--%3ld line folded "
 msgid_plural "+--%3ld lines folded "
 msgstr[0] "+--%3ld ðÿäîê çãîðíóòî "
-msgstr[1] "+--%3ld ðÿäê³â çãîðíóòî "
+msgstr[1] "+--%3ld ðÿäêè çãîðíóòî "
+msgstr[2] "+--%3ld ðÿäê³â çãîðíóòî "
 
 #, c-format
 msgid "+-%s%3ld line: "
 msgid_plural "+-%s%3ld lines: "
 msgstr[0] "+-%s%3ld ðÿäîê: "
-msgstr[1] "+-%s%3ld ðÿäê³â: "
+msgstr[1] "+-%s%3ld ðÿäêè: "
+msgstr[2] "+-%s%3ld ðÿäê³â: "
 
 msgid "No match at cursor, finding next"
 msgstr "Íåìຠíàä êóðñîðîì, ïîøóê òðèâàº"
@@ -1165,7 +1209,7 @@ msgstr "Ç'ºäíàííÿ ç cscope %s çàê³í÷åíî"
 
 #, c-format
 msgid "Cscope tag: %s"
-msgstr "Òå´ cscope: %s"
+msgstr "̳òêà cscope: %s"
 
 msgid ""
 "\n"
@@ -1190,7 +1234,7 @@ msgid "Lua library cannot be loaded."
 msgstr "Íå âäàëîñÿ çàâàíòàæèòè á³áë³îòåêó Lua"
 
 msgid "cannot save undo information"
-msgstr "íå âäàëîñÿ çáåðåãòè ³íôîðìàö³þ äëÿ ñêàñóâàííÿ"
+msgstr "Íå âäàëîñÿ çáåðåãòè ³ñòîð³þ çì³í"
 
 msgid "invalid expression"
 msgstr "íåêîðåêòíèé âèðàç"
@@ -1319,7 +1363,7 @@ msgid " File name completion (^F^N^P)"
 msgstr " Äîïîâíåííÿ íàçâè ôàéëó (^F^N^P)"
 
 msgid " Tag completion (^]^N^P)"
-msgstr " Äîïîâíåííÿ ì³òîê (^]^N^P)"
+msgstr " Äîïîâíåííÿ ç ì³òîê (^]^N^P)"
 
 msgid " Path pattern completion (^N^P)"
 msgstr " Äîïîâíåííÿ øëÿõó çà çðàçêîì (^N^P)"
@@ -1348,9 +1392,6 @@ msgstr " Îðôîãðàô³÷íà ï³äêàçêà (s^N^P)"
 msgid " Keyword Local completion (^N^P)"
 msgstr " Äîïîâíåííÿ ì³ñöåâèõ êëþ÷îâèõ ñë³â (^N^P)"
 
-msgid "Hit end of paragraph"
-msgstr "Òðàïèâñÿ ê³íåöü ïàðàãðàôà"
-
 msgid "'dictionary' option is empty"
 msgstr "Îïö³ÿ 'dictionary' ïîðîæíÿ"
 
@@ -1362,7 +1403,7 @@ msgid "Scanning dictionary: %s"
 msgstr "Ñêàíóºòüñÿ ñëîâíèê: %s"
 
 msgid " (insert) Scroll (^E/^Y)"
-msgstr " (âñòàâêà) Ïðîãîðíóòè (^E/^Y)"
+msgstr " (âñòàâèòè) Ïðîãîðíóòè (^E/^Y)"
 
 msgid " (replace) Scroll (^E/^Y)"
 msgstr " (çàì³íà) Ïðîãîðíóòè (^E/^Y)"
@@ -1383,6 +1424,12 @@ msgstr " Äîäàºòüñÿ"
 msgid "-- Searching..."
 msgstr "-- Ïîøóê..."
 
+msgid "Hit end of paragraph"
+msgstr "Òðàïèâñÿ ê³íåöü ïàðàãðàôà"
+
+msgid "Pattern not found"
+msgstr "Çðàçîê íå çíàéäåíî"
+
 msgid "Back at original"
 msgstr "Ïî÷àòêîâèé âàð³àíò"
 
@@ -1648,6 +1695,9 @@ msgstr "-T <òåðì³íàë>\tÂñòàíîâèòè òèï òåðì³íàëó ó <òåðì³íàë>"
 msgid "--not-a-term\t\tSkip warning for input/output not being a terminal"
 msgstr "--not-a-term\t\tÏðîïóñòèòè ïîïåðåäæåííÿ ââîäó/âèâîäó íå â òåðì³íàë"
 
+msgid "--gui-dialog-file {fname}  For testing: write dialog text"
+msgstr "--gui-dialog-file {fname}  Äëÿ òåñòóâàííÿ: çàïèñàòè òåêñò ä³àëîãó"
+
 msgid "--ttyfail\t\tExit if input or output is not a terminal"
 msgstr "--ttyfail\t\tÂèéòè, ÿêùî ââåäåííÿ/âèâåäåííÿ íå â òåðì³íàë"
 
@@ -1667,7 +1717,7 @@ msgid "-o[N]\t\tOpen N windows (default:
 msgstr "-o[N]\t\t³äêðèòè N â³êîí (àáî ïî îäíîìó äëÿ êîæíîãî ôàéëó)"
 
 msgid "-O[N]\t\tLike -o but split vertically"
-msgstr "-O[N]\t\tͳáè -o, àëå ïîä³ëèòè â³êíà âåðòèêàëüíî"
+msgstr "-O[N]\t\tͳáè -o, àëå ðîçùåïèòè â³êíà âåðòèêàëüíî"
 
 msgid "+\t\t\tStart at end of file"
 msgstr "+\t\t\tÐîçïî÷àòè â ê³íö³ ôàéëó"
@@ -1831,14 +1881,40 @@ msgid "-P <parent title>\tOpen Vim insid
 msgstr "-P <çàãîëîâîê áàòüêà>\t³äêðèòè Vim âñåðåäèí³ áàòüê³âñüêîãî â³êíà"
 
 msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
-msgstr "--windowid <HWND>\t³äêðèòè Vim âñåðåäèí³ ³íøîãî åëåìåíòó win32"
+msgstr "--windowid <HWND>\t³äêðèòè Vim âñåðåäèí³ ³íøîãî åëåìåíòà win32"
+
+msgid "Seen modifyOtherKeys: true\n"
+msgstr "Òðàïèëîñÿ modifyOtherKeys: true\n"
+
+msgid "Unknown"
+msgstr "Íåâ³äîìî"
+
+msgid "Off"
+msgstr "Âèìê"
+
+msgid "On"
+msgstr "Óâ³ìê"
+
+msgid "Disabled"
+msgstr "Âèìêíåíî"
+
+msgid "Cleared"
+msgstr "Î÷èùåíî"
+
+#, c-format
+msgid "modifyOtherKeys detected: %s\n"
+msgstr "Ïîì³÷åíî modifyOtherKeys: %s\n"
+
+#, c-format
+msgid "Kitty keyboard protocol: %s\n"
+msgstr "Ïðîòîêîë êëàâ³àòóðè Kitty: %s\n"
 
 # msgstr "E227: "
 msgid "No abbreviation found"
 msgstr "Ñêîðî÷åííÿ íå çíàéäåíî"
 
 msgid "No mapping found"
-msgstr "Çàì³íè íå çíàéäåíî"
+msgstr "Çàì³íè êëàâ³ø íå çíàéäåíî"
 
 msgid "No marks set"
 msgstr "Íå âñòàíîâëåíî æîäíî¿ ïîì³òêè"
@@ -1965,6 +2041,9 @@ msgstr "??? çâ³äñè ³ äî `??? ʲÍÅÖÜ' ðÿäêè, ìîæëèâî, ñïëóòàí³"
 msgid "??? from here until ???END lines may have been inserted/deleted"
 msgstr "??? çâ³äñè ³ äî `??? ʲÍÅÖÜ' ðÿäêè, ìîæëèâî, áóëè äîäàí³/çíèùåí³"
 
+msgid "??? lines may be missing"
+msgstr "??? ðÿäê³â ìîæå áðàêóâàòè"
+
 msgid "???END"
 msgstr "??? ʲÍÅÖÜ"
 
@@ -1992,14 +2071,14 @@ msgid ""
 "You may want to delete the .swp file now."
 msgstr ""
 "\n"
-"Ìîæëèâî, òåïåð âè õî÷åòå çíèùèòè ôàéë îáì³íó .swp."
+"Òåïåð âè ìîæåòå çíèùèòè ôàéë îáì³íó .swp."
 
 msgid ""
 "\n"
 "Note: process STILL RUNNING: "
 msgstr ""
 "\n"
-"Íîòàòêà: ïðîöåñ ÂÑÅ ÙÅ ÏÐÀÖÞª: "
+"Ïðèì³òêà: ïðîöåñ ÙÅ ÂÈÊÎÍÓªÒÜÑß: "
 
 msgid "Using crypt key from swap file for the text file.\n"
 msgstr "Äëÿ òåêñòîâîãî ôàéëó âèêîðèñòîâóºòüñÿ êëþ÷ øèôðó ç ôàéëó îáì³íó.\n"
@@ -2075,7 +2154,7 @@ msgstr ""
 "         ID ïðîöåñó: "
 
 msgid " (STILL RUNNING)"
-msgstr " (ÂÑÅ ÙÅ ÏÐÀÖÞª)"
+msgstr " (ÙÅ ÂÈÊÎÍÓªÒÜÑß)"
 
 msgid ""
 "\n"
@@ -2140,9 +2219,8 @@ msgid ""
 msgstr ""
 "\n"
 "(1) Ìîæëèâî, ³íøà ïðîãðàìà âæå ðåäàãóº öåé ñàìèé ôàéë. ßêùî öå òàê,\n"
-"    áóäüòå îáåðåæí³, ùîá íå çàëèøèëèñÿ äâà ð³çí³ åêçåìïëÿðè\n"
-"    îäíîãî é òîãî ñàìîãî ôàéëó ï³ñëÿ çì³í.  Âèéä³òü ÷è ïðîäîâæóéòå ç "
-"îáåðåæí³ñòþ.\n"
+"    áóäüòå îáåðåæí³, ùîá íå çàëèøèëèñÿ äâà ð³çí³ åêçåìïëÿðè îäíîãî é òîãî\n"
+"    ñàìîãî ôàéëó ï³ñëÿ çì³í.  Âèéä³òü ÷è ïðîäîâæóéòå îáåðåæíî.\n"
 
 msgid "(2) An edit session for this file crashed.\n"
 msgstr "(2) Ñåàíñ ðåäàãóâàííÿ öüîãî ôàéëó çàçíàâ êðàõó.\n"
@@ -2168,7 +2246,7 @@ msgstr ""
 "    ùîá ïîçáóòèñÿ öüîãî ïîâ³äîìëåííÿ.\n"
 
 msgid "Found a swap file that is not useful, deleting it"
-msgstr "Çíàéäåíî ôàéë îáì³íó, ÿêèì íå ìîæíà ñêîðèñòàòèñÿ, âèäàëÿºìî"
+msgstr "Çíàéäåíî ôàéë îáì³íó, ÿêèì íå ìîæíà ñêîðèñòàòèñÿ, çíèùóºìî"
 
 msgid "Swap file \""
 msgstr "Ôàéë îáì³íó «"
@@ -2244,9 +2322,6 @@ msgstr "Ïåðåðâàíî: "
 msgid "Press ENTER or type command to continue"
 msgstr "Íàòèñí³òü ENTER àáî ââåä³òü êîìàíäó äëÿ ïðîäîâæåííÿ"
 
-msgid "Unknown"
-msgstr "Íåâ³äîìî"
-
 #, c-format
 msgid "%s line %ld"
 msgstr "%s ðÿäîê %ld"
@@ -2281,24 +2356,24 @@ msgstr ""
 "&C:Ñêàñóâàòè"
 
 msgid "Type number and <Enter> or click with the mouse (q or empty cancels): "
-msgstr "Íàáåð³òü ÷èñëî é <Enter> ÷è êëàöí³òü ìèøêîþ (q àáî ïîðîæíº ñêàñîâóº): "
+msgstr "Íàáåð³òü ÷èñëî é <Enter> ÷è êëàöí³òü ìèøêîþ (q ÷è ïîðîæíº ñêàñîâóº): "
 
 msgid "Type number and <Enter> (q or empty cancels): "
-msgstr "Íàáåð³òü ÷èñëî é <Enter> (q àáî ïîðîæíº ñêàñîâóº): "
+msgstr "Íàáåð³òü ÷èñëî é <Enter> (q ÷è ïîðîæíº ñêàñîâóº): "
 
 #, c-format
 msgid "%ld more line"
 msgid_plural "%ld more lines"
-msgstr[0] "äîäàíî %ld ðÿäîê"
-msgstr[1] "äîäàíî %ld ðÿäêè"
-msgstr[2] "äîäàíî %ld ðÿäê³â"
+msgstr[0] "ùå %ld ðÿäîê"
+msgstr[1] "ùå %ld ðÿäêè"
+msgstr[2] "ùå %ld ðÿäê³â"
 
 #, c-format
 msgid "%ld line less"
 msgid_plural "%ld fewer lines"
-msgstr[0] "çíèùåíî %ld ðÿäîê"
-msgstr[1] "çíèùåíî %ld ðÿäêè"
-msgstr[2] "çíèùåíî %ld ðÿäê³â"
+msgstr[0] "íà %ld ðÿäîê ìåíøå"
+msgstr[1] "íà %ld ðÿäêè ìåíøå"
+msgstr[2] "íà %ld ðÿäê³â ìåíøå"
 
 msgid " (Interrupted)"
 msgstr " (Ïåðåðâàíî)"
@@ -2417,10 +2492,6 @@ msgstr ""
 "\n"
 "--- Îïö³¿ ---"
 
-#, c-format
-msgid "For option %s"
-msgstr "Äëÿ îïö³¿ %s"
-
 # msgstr "E358: "
 msgid "cannot open "
 msgstr "íå âäàëîñÿ â³äêðèòè "
@@ -2632,7 +2703,7 @@ msgstr " (ðÿäîê çíèùåíî)"
 
 #, c-format
 msgid "%serror list %d of %d; %d errors "
-msgstr "%sñïèñîê ïîìèëîê %d ç %d; %d ïîìèëîê"
+msgstr "%sñïèñîê ïîìèëîê %d ç %d; %d ïîìèëîê "
 
 msgid "No entries"
 msgstr "ͳ÷îãî"
@@ -2652,7 +2723,7 @@ msgid "External submatches:\n"
 msgstr "Çîâí³øí³ ï³ä-çá³ãè:\n"
 
 msgid "Switching to backtracking RE engine for pattern: "
-msgstr "Ïåðåìèêàºìîñÿ äî ïîøóêó ç ïîâåðíåííÿì äëÿ øàáëîíà: "
+msgstr "Ïåðåìèêàííÿ äî ïðîñòîãî ðóø³ÿ ðåãóëÿðíèõ âèðàç³â: "
 
 msgid "Could not open temporary log file for writing, displaying on stderr... "
 msgstr ""
@@ -2682,7 +2753,7 @@ msgid ""
 "Type Name Content"
 msgstr ""
 "\n"
-"Òèï  Íàçâà Âì³ñò "
+"Òèï  Íàç. Âì³ñò  "
 
 msgid " VREPLACE"
 msgstr " ²ÐÒ ÇÀ̲ÍÀ"
@@ -2694,13 +2765,13 @@ msgid " REVERSE"
 msgstr " ÍÀÂÈÂÎвÒ"
 
 msgid " INSERT"
-msgstr " ÂÑÒÀÂÊÀ"
+msgstr " ÂÑÒÀÂÈÒÈ"
 
 msgid " (insert)"
-msgstr " (âñòàâêà)"
+msgstr " (âñòàâèòè)"
 
 msgid " (replace)"
-msgstr " (çàì³íà)"
+msgstr " (çàì³íèòè)"
 
 msgid " (vreplace)"
 msgstr " (â³ðò çàì³íà)"
@@ -2737,6 +2808,11 @@ msgstr "éäå çàïèñ"
 
 # msgstr "E195: "
 #, c-format
+msgid "Searching for \"%s\" under \"%s\" in \"%s\""
+msgstr "Ïîøóê «%s» çà «%s» â «%s»"
+
+# msgstr "E195: "
+#, c-format
 msgid "Searching for \"%s\" in \"%s\""
 msgstr "Ïîøóê «%s» â «%s»"
 
@@ -2746,7 +2822,7 @@ msgstr "Ïîøóê «%s»"
 
 #, c-format
 msgid "not found in '%s': \"%s\""
-msgstr "íå çíàéäåíî ó '%s': «%s»"
+msgstr "íå çíàéäåíî â '%s': «%s»"
 
 msgid "Source Vim script"
 msgstr "Ïðî÷èòàòè ñêðèïò Vim"
@@ -2864,7 +2940,7 @@ msgstr "  ãðóïà=%s"
 
 #, c-format
 msgid "    line=%ld  id=%d%s  name=%s  priority=%d"
-msgstr "    ðÿäîê=%ld  id=%d%s  íàçâà=%s  ïð³îðèòåò=%d"
+msgstr "    ðÿäîê=%ld id=%d%s  íàçâà=%s ïð³îðèòåò=%d"
 
 msgid " (NOT FOUND)"
 msgstr " (ÍÅ ÇÍÀÉÄÅÍÎ)"
@@ -2926,7 +3002,7 @@ msgid ""
 "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"Âèçíà÷åííÿ COMPOUNDFORBIDFLAG ï³ñëÿ åëåìåíòó PFX ìîæå äàòè íåïðàâèëüíèé "
+"Âèçíà÷åííÿ COMPOUNDFORBIDFLAG ï³ñëÿ åëåìåíòà PFX ìîæå äàòè íåïðàâèëüíèé "
 "ðåçóëüòàò ó %s ó ðÿäêó %d"
 
 #, c-format
@@ -2934,7 +3010,7 @@ msgid ""
 "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"Âèçíà÷åííÿ COMPOUNDPERMITFLAG ï³ñëÿ åëåìåíòó PFX ìîæó äàòè íåïðàâèëüíèé "
+"Âèçíà÷åííÿ COMPOUNDPERMITFLAG ï³ñëÿ åëåìåíòà PFX ìîæó äàòè íåïðàâèëüíèé "
 "ðåçóëüòàò ó %s ó ðÿäêó %d"
 
 #, c-format
@@ -2971,7 +3047,7 @@ msgid ""
 "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
 "line %d: %s"
 msgstr ""
-"Àô³êñ òàêîæ âèêîðèñòîâóºòüñÿ äëÿ BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/"
+"Àô³êñ òàêîæ âæèâàºòüñÿ äëÿ BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/"
 "NOSUGGEST ó %s ó ðÿäêó %d: %s"
 
 #, c-format
@@ -3166,7 +3242,7 @@ msgid "No Syntax items defined for this 
 msgstr "Äëÿ áóôåðà íå âèçíà÷åíî åëåìåíò³â ñèíòàêñèñó"
 
 msgid "'redrawtime' exceeded, syntax highlighting disabled"
-msgstr "âè÷åðïàíî 'redrawtime', âèìêíåíî ï³äñâ³÷óâàííÿ ñèíòàêñèñó"
+msgstr "'redrawtime' âè÷åðïàíî, ï³äñâ³÷óâàííÿ ñèíòàêñèñó âèìêíåíî"
 
 msgid "syntax iskeyword not set"
 msgstr "ñèíòàêñèñ iskeyword íå âñòàíîâëåíî"
@@ -3240,7 +3316,7 @@ msgid " or more"
 msgstr " àáî á³ëüøå"
 
 msgid "  Using tag with different case!"
-msgstr "  Âèêîðèñòàíî ì³òêó, íå ðîçð³çíÿþ÷è âåëèê³ é ìàë³ ë³òåðè"
+msgstr "  Âèêîðèñòàíî ì³òêó, íå ðîçð³çíÿþ÷è âåëèê³ é ìàë³ ë³òåðè!"
 
 # msgstr "E426: "
 msgid "  # pri kind tag"
@@ -3434,6 +3510,11 @@ msgstr "%s ïîâåðòຠ#%ld"
 msgid "%s returning %s"
 msgstr "%s ïîâåðòຠ%s"
 
+# msgstr "E428: "
+#, c-format
+msgid "Function %s does not need compiling"
+msgstr "Ôóíêö³þ %s íå ïîòð³áíî êîìï³ëþâàòè"
+
 #, c-format
 msgid "%s (%s, compiled %s)"
 msgstr "%s (%s, ñêîìï³ëüîâàíî %s)"
@@ -3540,13 +3621,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"Big version "
-msgstr ""
-"\n"
-"Âåëèêà âåðñ³ÿ "
-
-msgid ""
-"\n"
 "Normal version "
 msgstr ""
 "\n"
@@ -3554,13 +3628,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"Small version "
-msgstr ""
-"\n"
-"Ìàëà âåðñ³ÿ "
-
-msgid ""
-"\n"
 "Tiny version "
 msgstr ""
 "\n"
@@ -3911,12 +3978,12 @@ msgid "E10: \\ should be followed by /, 
 msgstr "E10: Çà \\ ìຠéòè /, ? àáî &"
 
 # msgstr "E10: "
-msgid "E11: Invalid in command-line window; <CR> executes, CTRL-C quits"
-msgstr "E11: Íåïðèïóñòèìî ó â³êí³ êîìàíä, <CR> âèêîíóº, CTRL-C âèõîäèòü"
+msgid "E11: Invalid in command-line window; :q<CR> closes the window"
+msgstr "E11: Íåïðèïóñòèìî ó â³êí³ êîìàíä; :q<CR> çàêðèâຠâ³êíî"
 
 msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search"
 msgstr ""
-"E12: Êîìàíäà íå äîçâîëåíà ó exrc/vimrc ó ïîøóêó ïîòî÷íîãî êàòàëîãó ÷è òå´ó"
+"E12: Êîìàíäà íå äîçâîëåíà ó exrc/vimrc ó ïîøóêó ïîòî÷íîãî êàòàëîãó ÷è ì³òêè"
 
 msgid "E13: File exists (add ! to override)"
 msgstr "E13: Ôàéë ³ñíóº (! ùîá íå çâàæàòè)"
@@ -4010,14 +4077,11 @@ msgid "E36: Not enough room"
 msgstr "E36: ̳ñöÿ íå âèñòà÷èòü"
 
 msgid "E37: No write since last change"
-msgstr "E37: Íå çàïèñàíî ïîïåðåäí³ çì³íè"
+msgstr "E37: Íå çàïèñàíî íàéíîâ³ø³ çì³íè"
 
 msgid "E37: No write since last change (add ! to override)"
 msgstr "E37: Çì³íè íå áóëî çàïèñàíî (! ùîá íå çâàæàòè)"
 
-msgid "E38: Null argument"
-msgstr "E38: ³äñóòí³é àðãóìåíò"
-
 msgid "E39: Number expected"
 msgstr "E39: Î÷³êóºòüñÿ ÷èñëî"
 
@@ -4031,12 +4095,6 @@ msgstr "E41: Çàáðàêëî ïàì'ÿò³!"
 msgid "E42: No Errors"
 msgstr "E42: Æîäíî¿ ïîìèëêè"
 
-msgid "E43: Damaged match string"
-msgstr "E43: Òåêñò çá³ãó ïîøêîäæåíî"
-
-msgid "E44: Corrupted regexp program"
-msgstr "E44: dzïñîâàíà ïðîãðàìà ðåãóëÿðíèõ âèðàç³â"
-
 msgid "E45: 'readonly' option is set (add ! to override)"
 msgstr "E45: Âñòàíîâëåíî îïö³þ 'readonly' (! ùîá íå çâàæàòè)"
 
@@ -4080,7 +4138,7 @@ msgstr "E55: Íåìຠïàðè %s)"
 
 #, c-format
 msgid "E59: Invalid character after %s@"
-msgstr "E59: Íåäîçâîëåíèé ñèìâîë ï³ñëÿ %s@"
+msgstr "E59: Íåêîðåêòíèé ñèìâîë ï³ñëÿ %s@"
 
 #, c-format
 msgid "E60: Too many complex %s{...}s"
@@ -4345,7 +4403,7 @@ msgid "E133: :return not inside a functi
 msgstr "E133: :return ïîçà ìåæàìè ôóíêö³¿"
 
 msgid "E134: Cannot move a range of lines into itself"
-msgstr "E134: Íåìîæëèâî ïåðåì³ñòèòè ä³àïàçîí ðÿäê³â ñàìîãî â ñåáå"
+msgstr "E134: Íåìîæëèâî ïåðåì³ñòèòè ä³àïàçîí ðÿäê³â ñàì ó ñåáå"
 
 msgid "E135: *Filter* Autocommands must not change current buffer"
 msgstr "E135: Àâòîêîìàíäè *Filter* íå ïîâèíí³ çì³íþâàòè ïîòî÷íèé áóôåð"
@@ -4388,7 +4446,7 @@ msgid "E146: Regular expressions can't b
 msgstr "E146: Ðåãóëÿðí³ âèðàçè íå ìîæíà ðîçä³ëÿòè ë³òåðàìè"
 
 msgid "E147: Cannot do :global recursive with a range"
-msgstr "E147: :global íå ìîæíà âæèâàòè ðåêóðñèâíî ç ä³àïàçîíîì"
+msgstr "E147: :global íå ìîæíà çàñòîñîâóâàòè ðåêóðñèâíî ç ä³àïàçîíîì"
 
 msgid "E148: Regular expression missing from :global"
 msgstr "E148: Ó global áðàêóº ðåãóëÿðíîãî âèðàçó"
@@ -4445,7 +4503,7 @@ msgstr "E161: Òî÷êó çóïèíêè íå çíàéäåíî: %s"
 
 #, c-format
 msgid "E162: No write since last change for buffer \"%s\""
-msgstr "E162: Áóôåð «%s» ìຠíå çáåðåæåí³ çì³íè"
+msgstr "E162: Áóôåð «%s» ìຠíåçáåðåæåí³ çì³íè"
 
 msgid "E163: There is only one file to edit"
 msgstr "E163: Ðåäàãóºòüñÿ ëèøå îäèí ôàéë"
@@ -4478,15 +4536,14 @@ msgid "E171: Missing :endif"
 msgstr "E171: Áðàêóº :endif"
 
 msgid "E172: Missing marker"
-msgstr "E172: Áðàêóº ïîçíà÷êè ê³íöÿ"
+msgstr "E172: Áðàêóº ïîçíà÷êè"
 
 #, c-format
 msgid "E173: %d more file to edit"
-msgstr "E173: Çàëèøèëîñÿ %d íå ðåäàãîâàíèõ ôàéë³â"
-
-#, c-format
-msgid "E173: %d more files to edit"
-msgstr "E173: Çàëèøèëîñÿ %d íå ðåäàãîâàíèõ ôàéë³â"
+msgid_plural "E173: %d more files to edit"
+msgstr[0] "E173: Ùå ðåäàãóâàòè %d ôàéë"
+msgstr[1] "E173: Ùå ðåäàãóâàòè %d ôàéëè"
+msgstr[2] "E173: Ùå ðåäàãóâàòè %d ôàéë³â"
 
 #, c-format
 msgid "E174: Command already exists: add ! to replace it: %s"
@@ -4611,7 +4668,7 @@ msgid "E205: Patchmode: can't save origi
 msgstr "E205: Ëàòàííÿ: íå âäàëîñÿ çáåðåãòè îðèã³íàë"
 
 msgid "E206: Patchmode: can't touch empty original file"
-msgstr "E206: Ëàòàííÿ: Íå âäàëîñÿ ñòâîðèòè îðèã³íàë"
+msgstr "E206: Ëàòàííÿ: íå âäàëîñÿ ñòâîðèòè îðèã³íàë"
 
 msgid "E207: Can't delete backup file"
 msgstr "E207: Íå âäàëîñÿ çíèùèòè ðåçåðâíèé ôàéë"
@@ -4672,11 +4729,8 @@ msgstr "E220: Áðàêóº }."
 msgid "E221: Marker cannot start with lower case letter"
 msgstr "E221: Ïîçíà÷êà ïîâèííà ïî÷èíàòèñÿ ç âåëèêî¿ ë³òåðè"
 
-msgid "E222: Add to internal buffer that was already read from"
-msgstr "E222: Äîäàâàííÿ äî âíóòð³øíüîãî áóôåðà, ç ÿêîãî âæå ïðî÷èòàíî"
-
 msgid "E223: Recursive mapping"
-msgstr "E223: Çàì³íà ðåêóðñèâíà"
+msgstr "E223: Çàì³íà êëàâ³ø ðåêóðñèâíà"
 
 # msgstr "E223: "
 #, c-format
@@ -4698,9 +4752,6 @@ msgstr "E226: Âæå º ñêîðî÷åííÿ äëÿ %s"
 msgid "E227: Mapping already exists for %s"
 msgstr "E227: Âæå º çàì³íà äëÿ %s"
 
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap: Íåïðèïóñòèìèé ðåæèì"
-
 # msgstr "E228: "
 msgid "E229: Cannot start the GUI"
 msgstr "E229: Íå âäàëîñÿ çàïóñòèòè GUI"
@@ -4714,9 +4765,6 @@ msgstr "E230: Íå âäàëîñÿ ïðî÷èòàòè ç «%s»"
 msgid "E231: 'guifontwide' invalid"
 msgstr "E231: Íåêîðåêòíèé 'guifontwide'"
 
-msgid "E232: Cannot create BalloonEval with both message and callback"
-msgstr "E232: Íå âäàëîñÿ ñòâîðèòè BalloonEval ç ïîâ³äîìëåííÿì ³ ôóíêö³ºþ"
-
 msgid "E233: Cannot open display"
 msgstr "E233: Íå âäàëîñÿ â³äêðèòè äèñïëåé"
 
@@ -4755,7 +4803,7 @@ msgstr "E241: Íå âäàëîñÿ â³ä³ñëàòè äî %s"
 
 # msgstr "E344: "
 msgid "E242: Can't split a window while closing another"
-msgstr "E242: Íåìîæëèâî ðîçáèòè â³êíî, ïîêè çàêðèâàºòüñÿ ³íøå"
+msgstr "E242: Íåìîæëèâî ðîçùåïèòè â³êíî, ïîêè çàêðèâàºòüñÿ ³íøå"
 
 #, c-format
 msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
@@ -4879,7 +4927,7 @@ msgstr "E275: Íåìîæëèâî äîäàòè òåêñòîâó âëàñòèâ³ñòü äî âèâàíòàæåíîãî áóôåðà"
 
 #, c-format
 msgid "E276: Cannot use function as a method: %s"
-msgstr "E276: Íå ìîæíà âæèòè ôóíêö³þ, ÿê ìåòîä: %s"
+msgstr "E276: Íå ìîæíà âæèòè ôóíêö³þ ÿê ìåòîä: %s"
 
 msgid "E277: Unable to read a server reply"
 msgstr "E277: Íå âäàëîñÿ ïðî÷èòàòè â³äïîâ³äü ñåðâåðà"
@@ -4887,13 +4935,6 @@ msgstr "E277: Íå âäàëîñÿ ïðî÷èòàòè â³äïîâ³äü ñåðâåðà"
 msgid "E279: Sorry, ++shell is not supported on this system"
 msgstr "E279: Äàðóéòå, ++shell íå ï³äòðèìóºòüñÿ ó í³é ñèñòåì³"
 
-msgid ""
-"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
-"org"
-msgstr ""
-"E280: ÔÀÒÀËÜÍÀ ÏÎÌÈËÊÀ TCL: ìîæëèâî ïîøêîäæåíî ñïèñîê ïîñèëàíü!? Áóäü ëàñêà, "
-"ïîâ³äîìòå ó vim-dev@vim.org"
-
 #, c-format
 msgid "E282: Cannot read from \"%s\""
 msgstr "E282: Íå âäàëîñÿ ïðî÷èòàòè ç «%s»"
@@ -4928,14 +4969,6 @@ msgstr "E289: Ìåòîä ââîäó íå ï³äòðèìóº â³äðåäàãîâàí³ òèïè"
 msgid "E290: List or number required"
 msgstr "E290: Ïîòð³áåí ñïèñîê ÷è ÷èñëî"
 
-# msgstr "E177: "
-#, c-format
-msgid "E292: Invalid count for del_bytes(): %ld"
-msgstr "E292: Íåêîðåêòíà ê³ëüê³ñòü ó del_bytes(): %ld"
-
-msgid "E293: Block was not locked"
-msgstr "E293: Áëîê íå áóëî çàô³êñîâàíî"
-
 # msgstr "E293: "
 msgid "E294: Seek error in swap file read"
 msgstr "E294: Ïîìèëêà çì³íè ïîçèö³¿ ó ôàéë³ îáì³íó"
@@ -4949,16 +4982,6 @@ msgstr "E296: Ïîìèëêà çì³íè ïîçèö³¿ ï³ä ÷àñ çàïèñó ó ôàéë îáì³íó"
 msgid "E297: Write error in swap file"
 msgstr "E297: Ïîìèëêà çàïèñó ôàéëó îáì³íó"
 
-msgid "E298: Didn't get block nr 0?"
-msgstr "E298: Íåìຠáëîêó 0?"
-
-msgid "E298: Didn't get block nr 1?"
-msgstr "E298: Íåìຠáëîêó 1?"
-
-# msgstr "E298: "
-msgid "E298: Didn't get block nr 2?"
-msgstr "E298: Íåìຠáëîêó 2?"
-
 msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
 msgstr "E299: Îá÷èñëåííÿ âèðàç³â Perl çàáîðîíåíå ó ï³ñî÷íèö³ áåç ìîäóëÿ Safe"
 
@@ -4977,9 +5000,6 @@ msgstr "E302: Íå âäàëîñÿ ïåðåéìåíóâàòè ôàéëó îáì³íó"
 msgid "E303: Unable to open swap file for \"%s\", recovery impossible"
 msgstr "E303: Íå âäàëîñÿ ïðî÷èòàòè ôàéë îáì³íó äëÿ «%s», â³äíîâëåííÿ íåìîæëèâå"
 
-msgid "E304: ml_upd_block0(): Didn't get block 0??"
-msgstr "E304: ml_upd_block0(): Íåìຠáëîêó 0??"
-
 #, c-format
 msgid "E305: No swap file found for %s"
 msgstr "E305: Íå çíàéäåíî ôàéëó îáì³íó äëÿ %s"
@@ -5019,52 +5039,13 @@ msgstr "E313: Íå âäàëîñÿ çàãîòîâèòè, íåìຠôàéëó îáì³íó"
 msgid "E314: Preserve failed"
 msgstr "E314: Çáåðåæåííÿ íå âäàëîñÿ"
 
-# msgstr "E314: "
-#, c-format
-msgid "E315: ml_get: Invalid lnum: %ld"
-msgstr "E315: ml_get: Íåïðàâèëüíèé lnum: %ld"
-
-# msgstr "E315: "
-#, c-format
-msgid "E316: ml_get: Cannot find line %ld in buffer %d %s"
-msgstr "E316: ml_get: Íå çíàéøîâ ðÿäîê %ld ó áóôåð³ %d %s"
-
-msgid "E317: Pointer block id wrong"
-msgstr "E317: Âêàç³âíèê áëîêó ïîìèëêîâèé"
-
-msgid "E317: Pointer block id wrong 2"
-msgstr "E317: Âêàç³âíèê áëîêó ïîìèëêîâèé 2"
-
-# msgstr "E316: "
-msgid "E317: Pointer block id wrong 3"
-msgstr "E317: Âêàç³âíèê áëîêó ïîìèëêîâèé 3"
-
-msgid "E317: Pointer block id wrong 4"
-msgstr "E317: Âêàç³âíèê áëîêó ïîìèëêîâèé 4"
-
-msgid "E318: Updated too many blocks?"
-msgstr "E318: Ïîíîâëåíî çàáàãàòî áëîê³â?"
-
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Âèáà÷òå, ö³º¿ êîìàíäè íåìຠó ö³é âåðñ³¿"
 
 #, c-format
-msgid "E320: Cannot find line %ld"
-msgstr "E320: Íå âäàëîñÿ çíàéòè ðÿäîê %ld"
-
-#, c-format
 msgid "E321: Could not reload \"%s\""
 msgstr "E321: Íå âäàëîñÿ ïåðå÷èòàòè «%s»"
 
-#, c-format
-msgid "E322: Line number out of range: %ld past the end"
-msgstr "E322: Íîìåð ðÿäêà âèéøîâ çà ìåæ³: %ld çà ê³íöåì"
-
-# msgstr "E322: "
-#, c-format
-msgid "E323: Line count wrong in block %ld"
-msgstr "E323: ʳëüê³ñòü ðÿäê³â ó áëîö³ %ld"
-
 msgid "E324: Can't open PostScript output file"
 msgstr "E324: Íå âäàëîñÿ â³äêðèòè ôàéë PostScript äëÿ âèâîäó"
 
@@ -5128,9 +5109,8 @@ msgstr "E338: Âèáà÷òå, àëå â êîíñîë³ íåìຠä³àëîãó âèáîðó ôàéëó"
 msgid "E339: Pattern too long"
 msgstr "E339: Çðàçîê çàíàäòî äîâãèé"
 
-# msgstr "E340: "
-msgid "E341: Internal error: lalloc(0, )"
-msgstr "E341: Âíóòð³øíÿ ïîìèëêà: lalloc(0, )"
+msgid "E340: Internal error; if you can reproduce please report a bug"
+msgstr "E340: Âíóòð³øíÿ ïîìèëêà; ÿêùî ìîæåòå â³äòâîðèòè, áóäü ëàñêà, ïîâ³äîìòå"
 
 # msgstr "E341: "
 #, c-format
@@ -5194,9 +5174,6 @@ msgstr "E354: Íåïðàâèëüíà íàçâà ðåã³ñòðó: '%s'"
 msgid "E355: Unknown option: %s"
 msgstr "E355: Íåâ³äîìà îïö³ÿ: %s"
 
-msgid "E356: get_varp ERROR"
-msgstr "E356: Ïîìèëêà get_varp"
-
 # msgstr "E356: "
 #, c-format
 msgid "E357: 'langmap': Matching character missing for %s"
@@ -5217,7 +5194,7 @@ msgid "E362: Using a boolean value as a 
 msgstr "E362: Ëîã³÷íå çíà÷åííÿ âæèòî ÿê Float"
 
 msgid "E363: Pattern uses more memory than 'maxmempattern'"
-msgstr "E363: Çðàçîê âèêîðèñòîâóº á³ëüøå, í³æ 'maxmempattern', ïàì'ÿò³"
+msgstr "E363: Çðàçîê âèêîðèñòîâóº á³ëüøå ïàì’ÿò³, í³æ 'maxmempattern'"
 
 #, c-format
 msgid "E364: Library call failed for \"%s()\""
@@ -5300,11 +5277,11 @@ msgstr "E383: Íåïðàâèëüíèé çðàçîê äëÿ ïîøóêó: %s"
 
 #, c-format
 msgid "E384: Search hit TOP without match for: %s"
-msgstr "E384: Ïîøóê ä³éøîâ äî ÏÎ×ÀÒÊÓ áåç çá³ã³â ç %s"
+msgstr "E384: Ïîøóê ä³éøîâ äî ÏÎ×ÀÒÊÓ áåç çá³ã³â ç: %s"
 
 #, c-format
 msgid "E385: Search hit BOTTOM without match for: %s"
-msgstr "E385: Ïîøóê ä³éøîâ äî ʲÍÖß áåç çá³ã³â ç %s"
+msgstr "E385: Ïîøóê ä³éøîâ äî ʲÍÖß áåç çá³ã³â ç: %s"
 
 msgid "E386: Expected '?' or '/'  after ';'"
 msgstr "E386: ϳñëÿ `;' ìຠáóòè `?' àáî `/'"
@@ -5438,6 +5415,9 @@ msgstr "E417: Ïðîïóùåíî àðãóìåíò: %s"
 msgid "E418: Illegal value: %s"
 msgstr "E418: Íåïðàâèëüíå çíà÷åííÿ: %s"
 
+msgid "E418: I'm a teapot"
+msgstr "E418: ß — ÷àéíèê"
+
 # msgstr "E418: "
 msgid "E419: FG color unknown"
 msgstr "E419: Íåâ³äîìèé êîë³ð òåêñòó"
@@ -5516,26 +5496,16 @@ msgstr "E436: Íåìຠçàïèñó «%s» ïðî ìîæëèâîñò³ òåðì³íàëó"
 msgid "E437: Terminal capability \"cm\" required"
 msgstr "E437: Ïîòð³áíà ìîæëèâ³ñòü òåðì³íàëó «cm»"
 
-msgid "E438: u_undo: Line numbers wrong"
-msgstr "E438: u_undo: Íåïðàâèëüí³ íîìåðè ðÿäê³â"
-
-msgid "E439: Undo list corrupt"
-msgstr "E439: Ñïèñîê ñêàñóâàííÿ ïîøêîäæåíî"
-
-# msgstr "E439: "
-msgid "E440: Undo line missing"
-msgstr "E440: ³äñóòí³é ðÿäîê ñêàñóâàííÿ"
-
 msgid "E441: There is no preview window"
 msgstr "E441: Íåìຠâ³êíà ïåðåãëÿäó"
 
 # msgstr "E441: "
 msgid "E442: Can't split topleft and botright at the same time"
-msgstr "E442: Íå âäàëîñÿ îäíî÷àñíî ðîçáèòè topleft ³ botright"
+msgstr "E442: Íå âäàëîñÿ îäíî÷àñíî ðîçùåïèòè topleft ³ botright"
 
 # msgstr "E442: "
 msgid "E443: Cannot rotate when another window is split"
-msgstr "E443: Íå âäàëîñÿ ïåðåì³ñòèòè â³êíî, çàâàæàþòü ³íø³"
+msgstr "E443: Íå âäàëîñÿ ïåðåì³ñòèòè ïî êîëó, ³íøå â³êíî ðîçùåïëåíå"
 
 # msgstr "E443: "
 msgid "E444: Cannot close last window"
@@ -5631,7 +5601,7 @@ msgid "E467: Custom completion requires 
 msgstr "E467: Êîðèñòóâàöüêå äîïîâíåííÿ âèìàãຠàðãóìåíò-ôóíêö³þ"
 
 msgid "E468: Completion argument only allowed for custom completion"
-msgstr "E468: Àðãóìåíò äîçâîëåíèé ò³ëüêè äëÿ äîïîâíåííÿ êîðèñòóâà÷à"
+msgstr "E468: Àðãóìåíò äîçâîëåíèé ò³ëüêè äëÿ êîðèñòóâàöüêîãî äîïîâíåííÿ"
 
 #, c-format
 msgid "E469: Invalid cscopequickfix flag %c for %c"
@@ -5646,9 +5616,6 @@ msgstr "E471: Íåîáõ³äíî âêàçàòè àðãóìåíò"
 msgid "E472: Command failed"
 msgstr "E472: Êîìàíäà íà âäàëàñü"
 
-msgid "E473: Internal error in regexp"
-msgstr "E473: Âíóòð³øíÿ ïîìèëêà ó ðåãóëÿðíîìó âèðàç³"
-
 # msgstr "E14: "
 msgid "E474: Invalid argument"
 msgstr "E474: Íåêîðåêòíèé àðãóìåíò"
@@ -5659,11 +5626,11 @@ msgstr "E475: Íåêîðåêòíèé àðãóìåíò: %s"
 
 #, c-format
 msgid "E475: Invalid value for argument %s"
-msgstr "E475: Íåêîðåêòíå çíà÷åííÿ ó àðãóìåíò³ %s"
+msgstr "E475: Íåêîðåêòíå çíà÷åííÿ àðãóìåíòó %s"
 
 #, c-format
 msgid "E475: Invalid value for argument %s: %s"
-msgstr "E475: Íåêîðåêòíå çíà÷åííÿ ó àðãóìåíò³ %s: %s"
+msgstr "E475: Íåêîðåêòíå çíà÷åííÿ àðãóìåíòó %s: %s"
 
 # msgstr "E16: "
 msgid "E476: Invalid command"
@@ -5674,6 +5641,11 @@ msgstr "E476: Íåêîðåêòíà êîìàíäà"
 msgid "E476: Invalid command: %s"
 msgstr "E476: Íåêîðåêòíà êîìàíäà: %s"
 
+# msgstr "E16: "
+#, c-format
+msgid "E476: Invalid command: %s, expected %s"
+msgstr "E476: Íåêîðåêòíà êîìàíäà: %s, î÷³êóºòüñÿ %s"
+
 # msgstr "E24: "
 msgid "E477: No ! allowed"
 msgstr "E477: ! íå äîçâîëåíî"
@@ -5719,6 +5691,10 @@ msgstr "E486: Çðàçîê íå çíàéäåíî: %s"
 msgid "E487: Argument must be positive"
 msgstr "E487: Àðãóìåíò ìຠáóòè äîäàòíèé"
 
+#, c-format
+msgid "E487: Argument must be positive: %s"
+msgstr "E487: Àðãóìåíò ìຠáóòè äîäàòíèé: %s"
+
 msgid "E488: Trailing characters"
 msgstr "E488: Íàäëèøêîâ³ ñèìâîëè"
 
@@ -5775,6 +5751,9 @@ msgstr "Íå ïðèäàòíèé äëÿ çàïèñó"
 msgid "E503: \"%s\" is not a file or writable device"
 msgstr "E503: «%s» íå ôàéë àáî íå ïðèñòð³é äëÿ çàïèñó"
 
+msgid "E503: Coffee is currently not available"
+msgstr "E503: Êàâè ïîêè ùî íåìàº"
+
 msgid "is read-only (cannot override: \"W\" in 'cpoptions')"
 msgstr "ëèøå äëÿ ÷èòàííÿ (íåìîæëèâî îá³éòè: «W» ó 'cpoptions')"
 
@@ -5809,14 +5788,15 @@ msgid "E512: Close failed"
 msgstr "E512: Íå âäàëîñÿ çàêðèòè"
 
 msgid "E513: Write error, conversion failed (make 'fenc' empty to override)"
-msgstr "E513: Ïîìèëêà çàïèñó, êîíâåðòàö³ÿ íå âäàëàñÿ (ñêèíüòå 'fenc')"
-
-#, c-format
-msgid ""
-"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+msgstr "E513: Ïîìèëêà çàïèñó, ïåðåòâîðåííÿ íå âäàëîñÿ (ñêèíüòå 'fenc')"
+
+#, c-format
+msgid ""
+"E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
 "override)"
 msgstr ""
-"E513: Ïîìèëêà çàïèñó, êîíâåðòàö³ÿ íå âäàëàñÿ ó ðÿäêó %ld (ñêèíüòå 'fenc')"
+"E513: Ïîìèëêà çàïèñó, ïåðåòâîðåííÿ íå âäàëàñÿ ó ðÿäêó %ld (ñêèíüòå 'fenc', "
+"ùîá ïîäîëàòè)"
 
 msgid "E514: Write error (file system full?)"
 msgstr "E514: Ïîìèëêà çàïèñó (ñê³í÷èëîñü â³ëüíå ì³ñöå?)"
@@ -5927,7 +5907,7 @@ msgid "E547: Illegal mouseshape"
 msgstr "E547: Íåïðàâèëüíèé âèãëÿä ìèø³"
 
 msgid "E548: Digit expected"
-msgstr "E548: Ïîòð³áíà öèôðà"
+msgstr "E548: Î÷³êóºòüñÿ öèôðà"
 
 msgid "E549: Illegal percentage"
 msgstr "E549: Íåïðàâèëüíèé â³äñîòîê"
@@ -5952,10 +5932,10 @@ msgstr "E554: Ñèíòàêñè÷íà ïîìèëêà â %s{...}"
 
 # msgstr "E424: "
 msgid "E555: At bottom of tag stack"
-msgstr "E555: ʳíåöü ñòåêó ì³òîê"
+msgstr "E555: Íà äí³ ñòåêó ì³òîê"
 
 msgid "E556: At top of tag stack"
-msgstr "E556: Âåðøèíà ñòåêó ì³òîê"
+msgstr "E556: Íà âåðøèí³ ñòåêó ì³òîê"
 
 msgid "E557: Cannot open termcap file"
 msgstr "E557: Íå âäàëîñÿ â³äêðèòè ôàéë ìîæëèâîñòåé òåðì³íàë³â"
@@ -5997,9 +5977,6 @@ msgstr "E567: Æîäíîãî ç'ºäíàííÿ ³ç cscope"
 msgid "E568: Duplicate cscope database not added"
 msgstr "E568: Ïîâòîðíà áàçà äàíèõ cscope íå äîäàíà"
 
-msgid "E570: Fatal error in cs_manage_matches"
-msgstr "E570: Ôàòàëüíà ïîìèëêà â cs_manage_matches"
-
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
 msgstr ""
@@ -6026,9 +6003,6 @@ msgstr "Ïðîïóùåíî '>'"
 msgid "Illegal register name"
 msgstr "Íåïðàâèëüíà íàçâà ðåã³ñòðó"
 
-msgid "E578: Not allowed to change text here"
-msgstr "E578: Çì³íþâàòè òåêñò òóò íå äîçâîëåíî"
-
 msgid "E579: :if nesting too deep"
 msgstr "E579: Çàíàäòî áàãàòî âêëàäåíèõ :if"
 
@@ -6133,7 +6107,7 @@ msgid "E609: Cscope error: %s"
 msgstr "E609: Ïîìèëêà cscope: %s"
 
 msgid "E610: No argument to delete"
-msgstr "E610: Íåìຠàðãóìåíò³â ùîá âèäàëèòè"
+msgstr "E610: Íåìຠàðãóìåíò³â äëÿ çíèùåííÿ"
 
 msgid "E611: Using a Special as a Number"
 msgstr "E611: Special âæèòî ÿê Number"
@@ -6145,6 +6119,18 @@ msgstr "E612: Âèçíà÷åíî çàáàãàòî íàäïèñ³â"
 msgid "E613: Unknown printer font: %s"
 msgstr "E613: Íåâ³äîìèé øðèôò ïðèíòåðà: %s"
 
+# msgstr "E396: "
+msgid "E614: Class required"
+msgstr "E614: Ïîòð³áåí êëàñ"
+
+# msgstr "E396: "
+msgid "E615: Object required"
+msgstr "E615: Ïîòð³áåí îá’ºêò"
+
+#, c-format
+msgid "E616: Object required for argument %d"
+msgstr "E616: Ïîòð³áåí îá’ºêò â àðãóìåíò³ %d"
+
 msgid "E617: Cannot be changed in the GTK GUI"
 msgstr "E617: Íå ìîæíà çì³íèòè â GUI GTK"
 
@@ -6182,6 +6168,15 @@ msgid "E626: Cannot get cscope database 
 msgstr "E626: Íå âäàëîñÿ îòðèìàòè ³íôîðìàö³þ ç áàçè äàíèõ cscope"
 
 #, c-format
+msgid "E627: Missing colon: %s"
+msgstr "E627: Áðàêóº äâîêðàïêè: %s"
+
+# msgstr "E415: "
+#, c-format
+msgid "E628: Missing ! or / in: %s"
+msgstr "E628: Ïðîïóùåíî ! ÷è / ó: %s"
+
+#, c-format
 msgid "E630: %s(): Write while not connected"
 msgstr "E630: %s(): Çàïèñ äî ï³ä’ºäíàííÿ"
 
@@ -6189,9 +6184,73 @@ msgstr "E630: %s(): Çàïèñ äî ï³ä’ºäíàííÿ"
 msgid "E631: %s(): Write failed"
 msgstr "E631: %s(): Çáåðåæåííÿ íå âäàëîñÿ"
 
+msgid "E632: Invalid buffer identifier in getLength"
+msgstr "E632: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó getLength"
+
+msgid "E633: Invalid buffer identifier in getText"
+msgstr "E633: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó getText"
+
+msgid "E634: Invalid buffer identifier in remove"
+msgstr "E634: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó delete"
+
+msgid "E635: Invalid buffer identifier in insert"
+msgstr "E635: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà â insert"
+
+msgid "E636: Invalid buffer identifier in create"
+msgstr "E636: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó create"
+
+msgid "E637: Invalid buffer identifier in startDocumentListen"
+msgstr "E637: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó startDocumentListen"
+
+msgid "E638: Invalid buffer identifier in stopDocumentListen"
+msgstr "E638: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó stopDocumentListen"
+
+msgid "E639: Invalid buffer identifier in setTitle"
+msgstr "E639: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó setTitle"
+
+msgid "E640: Invalid buffer identifier in initDone"
+msgstr "E640: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà â initDone"
+
+msgid "E641: Invalid buffer identifier in setBufferNumber"
+msgstr "E641: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó setBufferNumber"
+
+#, c-format
+msgid "E642: File %s not found in setBufferNumber"
+msgstr "E642: Ôàéë %s íå çíàéäåíî ó setBufferNumber"
+
+msgid "E643: Invalid buffer identifier in setFullName"
+msgstr "E643: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó setFullName"
+
+msgid "E644: Invalid buffer identifier in editFile"
+msgstr "E644: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà â editFile"
+
+msgid "E645: Invalid buffer identifier in setVisible"
+msgstr "E645: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó setVisible"
+
+msgid "E646: Invalid buffer identifier in setModified"
+msgstr "E646: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó setModified"
+
+msgid "E647: Invalid buffer identifier in setDot"
+msgstr "E647: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà â setDot"
+
+msgid "E648: Invalid buffer identifier in close"
+msgstr "E648: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó close"
+
+msgid "E649: Invalid buffer identifier in close"
+msgstr "E649: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó close"
+
+msgid "E650: Invalid buffer identifier in defineAnnoType"
+msgstr "E650: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà ó defineAnnoType"
+
+msgid "E651: Invalid buffer identifier in addAnno"
+msgstr "E651: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà â addAnno"
+
+msgid "E652: Invalid buffer identifier in getAnno"
+msgstr "E652: Íåêîðåêòíèé ³äåíòèô³êàòîð áóôåðà â getAnno"
+
 #, c-format
 msgid "E654: Missing delimiter after search pattern: %s"
-msgstr "E654: Áðàêóº ðîçä³ëþâà÷à ï³ñëÿ çðàçêó äëÿ ïîøóêó: %s"
+msgstr "E654: Áðàêóº ðîçä³ëüíèêà ï³ñëÿ øàáëîíó ïîøóêó: %s"
 
 msgid "E655: Too many symbolic links (cycle?)"
 msgstr "E655: Çàáàãàòî ñèìâîëüíèõ ïîñèëàíü (öèêë?)"
@@ -6264,8 +6323,9 @@ msgid "E675: No default font specified f
 msgstr "E675: Íå çàçíà÷åíî øðèôò äëÿ áàãàòîáàéòîâîãî äðóêó."
 
 # msgstr "E217: "
-msgid "E676: No matching autocommands for acwrite buffer"
-msgstr "E676: Íåìຠâ³äïîâ³äíèõ àâòîêîìàíä"
+#, c-format
+msgid "E676: No matching autocommands for buftype=%s buffer"
+msgstr "E676: Íåìຠâ³äïîâ³äíèõ àâòîêîìàíä äëÿ áóôåðà buftype=%s"
 
 msgid "E677: Error writing temp file"
 msgstr "E677: Íå âäàëîñÿ çàïèñàòè òèì÷àñîâèé ôàéë"
@@ -6309,7 +6369,7 @@ msgid "E688: More targets than List item
 msgstr "E688: Ö³ëåé á³ëüøå, í³æ åëåìåíò³â ñïèñêó"
 
 msgid "E689: Can only index a List, Dictionary or Blob"
-msgstr "E689: ²íäåêñíèé äîñòóï ìîæå áóòè ò³ëüêè äî List, Dicionary ÷è Blob"
+msgstr "E689: ²íäåêñíèé äîñòóï ìîæå áóòè ò³ëüêè äî List, Dictionary ÷è Blob"
 
 msgid "E690: Missing \"in\" after :for"
 msgstr "E690: Ïðîïóùåíî «in» ï³ñëÿ :for"
@@ -6320,6 +6380,10 @@ msgstr "E691: Ñïèñîê ìîæíà ïîð³âíÿòè ò³ëüêè ç³ ñïèñêîì"
 msgid "E692: Invalid operation for List"
 msgstr "E692: Íåêîðåêòíà îïåðàö³ÿ íàä ñïèñêîì"
 
+#, c-format
+msgid "E693: List or Class required for argument %d"
+msgstr "E693: Ïîòð³áåí List àáî Class â àðãóìåíò³ %d"
+
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: Íåêîðåêòíà îïåðàö³ÿ íàä ôóíêö³ºþ"
 
@@ -6362,7 +6426,11 @@ msgstr "E704: Íàçâà çì³ííî¿ Funcref ìຠïî÷èíàòèñÿ ç âåëèêî¿ ë³òåðè: %s"
 
 #, c-format
 msgid "E705: Variable name conflicts with existing function: %s"
-msgstr "E705: Íàçâà çì³ííî¿ ñï³âïàäàº ç ³ñíóþ÷îþ ôóíêö³ºþ: %s"
+msgstr "E705: Íàçâà çì³ííî¿ ñï³âïàäຠç íàÿâíîþ ôóíêö³ºþ: %s"
+
+#, c-format
+msgid "E706: Argument of %s must be a List, String or Dictionary"
+msgstr "E706: Àðãóìåíò ó %s ìຠáóòè List, String ÷è Dictionary"
 
 #, c-format
 msgid "E707: Function name conflicts with variable: %s"
@@ -6372,7 +6440,7 @@ msgid "E708: [:] must come last"
 msgstr "E708: [:] ìຠáóòè îñòàííüîþ"
 
 msgid "E709: [:] requires a List or Blob value"
-msgstr "E709: [:] âèìàãຠçíà÷åííÿ òèïó List àáî Blob"
+msgstr "E709: [:] ïîòðåáóº List ÷è Blob"
 
 msgid "E710: List value has more items than targets"
 msgstr "E710: Çíà÷åííÿ òèïó List ìຠá³ëüøå åëåìåíò³â, í³æ ö³ëèòü"
@@ -6392,7 +6460,7 @@ msgid "E714: List required"
 msgstr "E714: Ïîòð³áåí ñïèñîê"
 
 msgid "E715: Dictionary required"
-msgstr "E715: Ïîòð³áåí ñëîâíèê"
+msgstr "E715: Ïîòð³áåí Dictionary"
 
 #, c-format
 msgid "E716: Key not present in Dictionary: \"%s\""
@@ -6816,15 +6884,12 @@ msgstr "E828: Íå âäàëîñÿ â³äêðèòè ôàéë ³ñòî𳿠äëÿ çàïèñó: %s"
 
 #, c-format
 msgid "E829: Write error in undo file: %s"
-msgstr "E829: Ïîìèëêà çàïèñó ó ôàéë³ ³ñòîð³¿: %s"
+msgstr "E829: Ïîìèëêà çàïèñó â ôàéë ³ñòîð³¿: %s"
 
 #, c-format
 msgid "E830: Undo number %ld not found"
 msgstr "E830: Çì³íó %ld íå çíàéäåíî â ³ñòîð³¿"
 
-msgid "E831: bf_key_init() called with empty password"
-msgstr "E831: Âèêëèêàíî bf_key_init() ç ïîðîæí³ì ïàðîëåì"
-
 #, c-format
 msgid "E832: Non-encrypted file has encrypted undo file: %s"
 msgstr "E832: Íå çàøèôðîâàíèé ôàéë ìຠçàøèôðîâàíèé ôàéë ³ñòîð³¿: %s"
@@ -6854,7 +6919,7 @@ msgstr "E840: Ôóíêö³ÿ äîïîâíåííÿ çíèùèëà òåêñò"
 
 msgid "E841: Reserved name, cannot be used for user defined command"
 msgstr ""
-"E841: Çàðåçåðâîâàíà íàçâà, íå ìîæíà âèêîðèñòàòè äëÿ êîìàíäè êîðèñòóâà÷à"
+"E841: Çàðåçåðâîâàíà íàçâà, íå ìîæíà âèêîðèñòàòè äëÿ êîðèñòóâàöüêî¿ êîìàíäè"
 
 msgid "E842: No line number to use for \"<slnum>\""
 msgstr "E842: Íåìຠíîìåðà ðÿäêà, ùîá âèêîðèñòàòè ç «<sfile>»"
@@ -6895,7 +6960,7 @@ msgid "E853: Duplicate argument name: %s
 msgstr "E853: Íàçâà àðãóìåíòó ïîâòîðþºòüñÿ: %s"
 
 msgid "E854: Path too long for completion"
-msgstr "E854: Øëÿõ çàíàäòî äîâãèé äëÿ äîïîâíåííÿ"
+msgstr "E854: Øëÿõ çàäîâãèé äëÿ äîïîâíåííÿ"
 
 msgid "E855: Autocommands caused command to abort"
 msgstr "E855: Àâòîêîìàíäè ïðèçâåëè äî ñêàñóâàííÿ êîìàíäè"
@@ -6905,7 +6970,7 @@ msgid ""
 "or two strings"
 msgstr ""
 "E856: Äðóãèé àðãóìåíò «assert_fails()» ìຠáóòè òåêñòîâèì ðÿäêîì ÷è ñïèñîê ç "
-"îäíèì-äâîìà òåêñòîâèìè ðÿäêàìè"
+"îäíèì-äâîìà ñèìâîëüíèìè ðÿäêàìè"
 
 #, c-format
 msgid "E857: Dictionary key \"%s\" required"
@@ -6917,8 +6982,8 @@ msgstr "E858: Eval íå ïîâåðíóâ ä³éñíèé îá’ºêò python"
 msgid "E859: Failed to convert returned python object to a Vim value"
 msgstr "E859: Íå âäàëîñÿ ïåðåòâîðèòè îá’ºêò python ó çíà÷åííÿ vim"
 
-msgid "E860: Need 'id' and 'type' with 'both'"
-msgstr "E860: Ïîòð³áí³ 'id' ³ 'type' ó 'both'"
+msgid "E860: Need 'id' and 'type' or 'types' with 'both'"
+msgstr "E860: Ïîòð³áí³ 'id' ³ 'type' àáî 'types' ³ç 'both'"
 
 msgid "E861: Cannot open a second popup with a terminal"
 msgstr "E861: Íå ìîæíà â³äêðèòè ùå îäíå ñïëèâàþ÷å â³êíî ç äîïîìîãîþ òåðì³íàëó"
@@ -6984,10 +7049,6 @@ msgstr ""
 msgid "E876: (NFA regexp) Not enough space to store the whole NFA"
 msgstr "E876: (NFA regexp) Íåäîñòàòíüî ïàì’ÿò³, ùîá çáåðåãòè âåñü NFA"
 
-#, c-format
-msgid "E877: (NFA regexp) Invalid character class: %d"
-msgstr "E877: (NFA regexp) Íåïðàâèëüíèé êëàñ ñèìâîëó: %d"
-
 msgid "E878: (NFA regexp) Could not allocate memory for branch traversal!"
 msgstr "E878: (NFA regexp) Íå âäàëîñÿ îòðèìàòè ïàì’ÿòü äëÿ îáõîäó ã³ëîê!"
 
@@ -7008,8 +7069,7 @@ msgid ""
 "E883: Search pattern and expression register may not contain two or more "
 "lines"
 msgstr ""
-"E883: Øàáëîí ïîøóêó ³ ðåã³ñòðîâèé âèðàç íå ìîæóòü ì³ñòèòè äâà ÷è á³ëüøå "
-"ðÿäê³â"
+"E883: Øàáëîí ïîøóêó ³ ðåã³ñòð âèðàçó íå ìîæóòü ì³ñòèòè äâà ÷è á³ëüøå ðÿäê³â"
 
 #, c-format
 msgid "E884: Function name cannot contain a colon: %s"
@@ -7032,14 +7092,14 @@ msgstr ""
 
 #, c-format
 msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (NFA regexp) íå ìîæíà ïîâòîðèòè %s"
+msgstr "E888: (NFA regexp) íåìîæëèâî ïîâòîðèòè %s"
 
 msgid "E889: Number required"
 msgstr "E889: Òðåáà âêàçàòè Number"
 
 #, c-format
 msgid "E890: Trailing char after ']': %s]%s"
-msgstr "E890: Íàäëèøêîâ³ ñèìâîëè ï³ñëÿ ']': %s]%s"
+msgstr "E890: Çàéâèé ñèìâîë ï³ñëÿ ']': %s]%s"
 
 msgid "E891: Using a Funcref as a Float"
 msgstr "E891: Funcref âæèòî ÿê Float"
@@ -7101,8 +7161,8 @@ msgstr "E904: Òðåò³é àðãóìåíò ó âèêëèêó ìຠáóòè ñïèñêîì"
 msgid "E905: Received unknown command: %s"
 msgstr "E905: Îòðèìàíî íåâ³äîìó êîìàíäó: %s"
 
-msgid "E906: not an open channel"
-msgstr "E906: íå â³äêðèòèé êàíàë"
+msgid "E906: Not an open channel"
+msgstr "E906: Öå íå â³äêðèòèé êàíàë"
 
 msgid "E907: Using a special value as a Float"
 msgstr "E907: Ñïåö³àëüíå çíà÷åííÿ âæèòî ÿê Float"
@@ -7110,7 +7170,7 @@ msgstr "E907: Ñïåö³àëüíå çíà÷åííÿ âæèòî ÿê Float"
 # msgstr "E373: "
 #, c-format
 msgid "E908: Using an invalid value as a String: %s"
-msgstr "E908: Íåïðàâèëüíå çíà÷åííÿ âæèòî ÿê String: %s"
+msgstr "E908: Íåêîðåêòíå çíà÷åííÿ âæèòî ÿê String: %s"
 
 msgid "E909: Cannot index a special variable"
 msgstr "E909: Íå ìîæíà ³íäåêñóâàòè ñïåö³àëüíó çì³ííó"
@@ -7147,7 +7207,7 @@ msgstr "E918: Áóôåð ìຠáóòè çàâàíòàæåíèé: %s"
 
 #, c-format
 msgid "E919: Directory not found in '%s': \"%s\""
-msgstr "E919: Òåêó íå çíàéäåíî: '%s': «%s»"
+msgstr "E919: Êàòàëîã íå çíàéäåíî ó '%s': «%s»"
 
 msgid "E920: _io file requires _name to be set"
 msgstr "E920: ôàéë _io ïîòðåáóº âñòàíîâëåíîãî _name"
@@ -7156,14 +7216,11 @@ msgstr "E920: ôàéë _io ïîòðåáóº âñòàíîâëåíîãî _name"
 msgid "E921: Invalid callback argument"
 msgstr "E921: Íåêîðåêòíèé àðãóìåíò çâîðîòíîãî âèêëèêó"
 
-msgid "E922: Expected a dict"
-msgstr "E922: Î÷³êóºòüñÿ dict"
-
 msgid "E923: Second argument of function() must be a list or a dict"
 msgstr "E923: Äðóãèé àðãóìåíò function() ìຠáóòè ñïèñêîì ÷è ñëîâíèêîì"
 
 msgid "E924: Current window was closed"
-msgstr "E924: Ïîòî÷íå â³êíî áóëî çàêðèòî"
+msgstr "E924: Àêòèâíå â³êíî áóëî çàêðèòî"
 
 msgid "E925: Current quickfix list was changed"
 msgstr "E925: Ñïèñîê quickfix çì³íèâñÿ"
@@ -7173,7 +7230,7 @@ msgstr "E926: Ïîòî÷íèé ñïèñîê ì³ñöü çì³íèâñÿ"
 
 #, c-format
 msgid "E927: Invalid action: '%s'"
-msgstr "E927: Íåïðàâèëüíà ä³ÿ: '%s'"
+msgstr "E927: Íåïðàâèëüíà ä³ÿ: «%s»"
 
 # msgstr "E396: "
 msgid "E928: String required"
@@ -7198,11 +7255,11 @@ msgid "E933: Function was deleted: %s"
 msgstr "E933: Ôóíêö³þ âèäàëåíî: %s"
 
 msgid "E934: Cannot jump to a buffer that does not have a name"
-msgstr "E934: Íå ìîæíà ïåðåéòè äî áóôåðà, ÿêèé íå ìຠíàçâè"
+msgstr "E934: Íå ìîæíà ïåðåéòè äî áóôåðà áåç íàçâè"
 
 #, c-format
 msgid "E935: Invalid submatch number: %d"
-msgstr "E935: Íåïðàâèëüíèé íîìåð ï³ä-çá³ãó: %d"
+msgstr "E935: íåïðàâèëüíèé íîìåð ãðóïè çá³ãó: %d"
 
 msgid "E936: Cannot delete the current group"
 msgstr "E936: Íå âäàëîñÿ çíèùèòè öþ ãðóïó"
@@ -7229,9 +7286,6 @@ msgstr "E941: Ñåðâåð âæå çàïóùåíî"
 msgid "E942: +clientserver feature not available"
 msgstr "E942: ìîæëèâ³ñòü +clientserver â³äñóòíÿ"
 
-msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
-msgstr "E943: Òàáëèöþ êîìàíä ïîòð³áíî ïîíîâèòè, çàïóñò³òü 'make cmdidxs'"
-
 msgid "E944: Reverse range in character class"
 msgstr "E944: Çâîðîòí³é ä³àïàçîí ó êëàñ³ ñèìâîë³â"
 
@@ -7246,10 +7300,10 @@ msgid "E947: Job still running in buffer
 msgstr "E947: Çàâäàííÿ âæå ùå âèêîíóºòüñÿ ó áóôåð³ «%s»"
 
 msgid "E948: Job still running"
-msgstr "E948: Çàâäàííÿ âæå ùå âèêîíóºòüñÿ"
+msgstr "E948: Çàâäàííÿ âñå ùå âèêîíóºòüñÿ"
 
 msgid "E948: Job still running (add ! to end the job)"
-msgstr "E948: Çàâäàííÿ âñå ùå âèêîíóºòüñÿ (äîäàéòå ! ùîá çàê³í÷èòè)"
+msgstr "E948: Çàâäàííÿ âñå ùå âèêîíóºòüñÿ (! ùîá çàê³í÷èòè)"
 
 # msgstr "E79: "
 msgid "E949: File changed while writing"
@@ -7278,7 +7332,7 @@ msgid "E955: Not a terminal buffer"
 msgstr "E955: Íå áóôåð òåðì³íàëó"
 
 msgid "E956: Cannot use pattern recursively"
-msgstr "E956: Íå ìîæíà âæèòè øàáëîí ðåêóðñèâíî"
+msgstr "E956: Íå ìîæíà çàñòîñóâàòè øàáëîí ðåêóðñèâíî"
 
 msgid "E957: Invalid window number"
 msgstr "E957: Íåêîðåêòíèé íîìåð â³êíà"
@@ -7297,7 +7351,7 @@ msgstr "E961: Íåìຠíîìåðà ðÿäêà, ùîá âèêîðèñòàòè ç «<sflnum>»"
 
 #, c-format
 msgid "E962: Invalid action: '%s'"
-msgstr "E962: Íåïðàâèëüíà ä³ÿ: '%s'"
+msgstr "E962: Íåïðàâèëüíà ä³ÿ: «%s»"
 
 #, c-format
 msgid "E963: Setting %s to value with wrong type"
@@ -7316,9 +7370,6 @@ msgstr "E965: Áðàêóº íàçâè òèïó âëàñòèâîñò³"
 msgid "E966: Invalid line number: %ld"
 msgstr "E966: Íåêîðåêòíèé íîìåð ðÿäêà: %ld"
 
-msgid "E967: Text property info corrupted"
-msgstr "E967: Ïîøêîäæåíà ³íôîðìàö³ÿ òåêñòîâî¿ âëàñòèâîñò³"
-
 msgid "E968: Need at least one of 'id' or 'type'"
 msgstr "E968: Ïîòð³áíî ùîíàéìåíøå îäíå ç 'id' àáî 'type'"
 
@@ -7335,11 +7386,10 @@ msgid "E971: Property type %s does not e
 msgstr "E971: Òèï âëàñòèâîñò³ %s íå ³ñíóº"
 
 msgid "E972: Blob value does not have the right number of bytes"
-msgstr "E972: Çíà÷åííÿ òèïó Blob ìຠíåïðàâèëüíó ê³ëüê³ñòü áàéò³â"
+msgstr "E972: Íåïðàâèëüíà ê³ëüê³ñòü áàéò³â ó çíà÷åíí³ Blob"
 
 msgid "E973: Blob literal should have an even number of hex characters"
-msgstr ""
-"E973: Áóêâàëüíå çíà÷åííÿ Blob ìຠìàòè ïàðíó ê³ëüê³ñòü ø³òíàäöÿòêîâèõ çíàê³â"
+msgstr "E973: Çàïèñ Blob ïîâèíåí ìàòè ïàðíó ê³ëüê³ñòü ø³ñòíàäöÿòêîâèõ ñèìâîë³â"
 
 msgid "E974: Using a Blob as a Number"
 msgstr "E974: Blob âæèòî ÿê Number"
@@ -7372,7 +7422,7 @@ msgstr "E982: ConPTY íå äîñòóïíèé"
 
 #, c-format
 msgid "E983: Duplicate argument: %s"
-msgstr "E983: Àðãóìåíòó ïîâòîðþºòüñÿ: %s"
+msgstr "E983: Àðãóìåíò ïîâòîðþºòüñÿ: %s"
 
 msgid "E984: :scriptversion used outside of a sourced file"
 msgstr "E984: :scriptversion âèêîðèñòàíî ïîçà ï³ä÷èòóâàíèì ôàéëîì"
@@ -7391,14 +7441,16 @@ msgid "E988: GUI cannot be used. Cannot 
 msgstr "E988: Íå ìîæíà âèêîðèñòàòè GUI. Íå ìîæíà çàïóñòèòè gvim.exe."
 
 msgid "E989: Non-default argument follows default argument"
-msgstr "E989: Îáîâ’ÿçêîâèé àðãóìåíò ï³ñëÿ íåîáîâ’ÿçêîâîãî àðãóìåíòó"
+msgstr ""
+"E989: Àðãóìåíò áåç äîìîâëåíîãî çíà÷åííÿ ï³ñëÿ àðãóìåíòó ç äîìîâëåíèì "
+"çíà÷åííÿì"
 
 #, c-format
 msgid "E990: Missing end marker '%s'"
-msgstr "E990: Áðàêóº ïîçíà÷êè ê³íöÿ '%s'"
+msgstr "E990: Áðàêóº ïîçíà÷êè ê³íöÿ «%s»"
 
 msgid "E991: Cannot use =<< here"
-msgstr "E991: Òóò íå ìîæíà âæèòè =<<"
+msgstr "E991: Òóò íå ìîæíà çàñòîñóâàòè =<<"
 
 msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
 msgstr "E992: Íå äîçâîëåíî ó modeline, êîëè 'modelineexpr' âèìêíåíî"
@@ -7411,7 +7463,7 @@ msgid "E994: Not allowed in a popup wind
 msgstr "E994: Íå äîçâîëåíî ó ñïëèâàþ÷îìó â³êí³"
 
 msgid "E995: Cannot modify existing variable"
-msgstr "E995: Íåìîæëèâî çì³íèòè âæå çàäàíó çì³ííó"
+msgstr "E995: Íåìîæëèâî çì³íèòè íàÿâíó çì³ííó"
 
 # msgstr "E443: "
 msgid "E996: Cannot lock a range"
@@ -7468,11 +7520,13 @@ msgstr "E1006: %s âæèòî ÿê àðãóìåíò"
 msgid "E1007: Mandatory argument after optional argument"
 msgstr "E1007: Îáîâ’ÿçêîâèé àðãóìåíò ï³ñëÿ íåîáîâ’ÿçêîâîãî àðãóìåíòó"
 
-msgid "E1008: Missing <type>"
-msgstr "E1008: Áðàêóº <type>"
-
-msgid "E1009: Missing > after type"
-msgstr "E1009: Áðàêóº > ï³ñëÿ òèïó"
+#, c-format
+msgid "E1008: Missing <type> after %s"
+msgstr "E1008: Áðàêóº <type> ï³ñëÿ %s"
+
+#, c-format
+msgid "E1009: Missing > after type: %s"
+msgstr "E1009: Áðàêóº > ï³ñëÿ òèïó: %s"
 
 # msgstr "E420: "
 #, c-format
@@ -7598,14 +7652,14 @@ msgid "E1038: \"vim9script\" can only be
 msgstr "E1038: «vim9script» ìîæíà âæèòè ò³ëüêè ó ñêðèïò³"
 
 msgid "E1039: \"vim9script\" must be the first command in a script"
-msgstr "E1039: «vim9script» ìຠáóòè ïåðøîþ êîìàíäîþ â ñêðèïò³"
+msgstr "E1039: «vim9script» ìຠáóòè ïåðøîþ êîìàíäîþ ñêðèïòó"
 
 msgid "E1040: Cannot use :scriptversion after :vim9script"
 msgstr "E1040: Íå ìîæíà âæèòè :scriptversion ï³ñëÿ :vim9script"
 
 #, c-format
 msgid "E1041: Redefining script item: \"%s\""
-msgstr "E1041: Ïîâòîðíå âèçíà÷åííÿ åëåìåíòà ñêðèïòà: «%s»"
+msgstr "E1041: Ïîâòîðíå âèçíà÷åííÿ åëåìåíòà ñêðèïòó: «%s»"
 
 # msgstr "E327: "
 msgid "E1042: Export can only be used in vim9script"
@@ -7626,7 +7680,7 @@ msgstr "E1047: Ñèíòàêñè÷íà ïîìèëêà ó import: %s"
 
 #, c-format
 msgid "E1048: Item not found in script: %s"
-msgstr "E1048: Åëåìåíòà íå çíàéäåíî â ñêðèïò³: %s"
+msgstr "E1048: Åëåìåíòà íå çíàéäåíî ó ñêðèïò³: %s"
 
 #, c-format
 msgid "E1049: Item not exported in script: %s"
@@ -7728,11 +7782,6 @@ msgstr "E1074: ϳñëÿ êðàïêè íå äîçâîëåíî ïðîïóñê"
 msgid "E1075: Namespace not supported: %s"
 msgstr "E1075: Ïðîñò³ð ³ìåí íå ï³äòðèìóºòüñÿ: %s"
 
-msgid "E1076: This Vim is not compiled with float support"
-msgstr ""
-"E1076: Öÿ âåðñ³ÿ Vim íå áóëà ñêîìï³ëüîâàíà ç ï³äòðèìêîþ ÷èñåë ³ç ïëàâàþ÷îþ "
-"êîìîþ."
-
 #, c-format
 msgid "E1077: Missing argument type for %s"
 msgstr "E1077: Ïðîïóùåíî òèï àðãóìåíòó ó %s"
@@ -7792,10 +7841,11 @@ msgstr "E1093: Î÷³êóºòüñÿ %d åëåìåíòè(³â) àëå º %d"
 
 # msgstr "E327: "
 msgid "E1094: Import can only be used in a script"
-msgstr "E1094: Import ìîæíà âæèòè ò³ëüêè â ñêðèïò³"
-
-msgid "E1095: Unreachable code after :return"
-msgstr "E1095: Íåäîñÿæíèé êîä ï³ñëÿ :return"
+msgstr "E1094: Import ìîæíà âæèòè ò³ëüêè ó ñêðèïò³"
+
+#, c-format
+msgid "E1095: Unreachable code after :%s"
+msgstr "E1095: Íåäîñÿæíèé êîä ï³ñëÿ :%s"
 
 msgid "E1096: Returning a value in a function without a return type"
 msgstr "E1096: Ïîâåðíåííÿ çíà÷åííÿ ç ôóíêö³¿ áåç òèïó ïîâåðíåííÿ"
@@ -7834,43 +7884,39 @@ msgstr "E1104: Ïðîïóùåíî >"
 msgid "E1105: Cannot convert %s to string"
 msgstr "E1105: Íåìîæëèâî ïåðåòâîðèòè %s ó òåêñòîâèé ðÿäîê"
 
+#, c-format
 msgid "E1106: One argument too many"
-msgstr "E1106: Îäèí àðãóìåíò çàáàãàòî"
-
-#, c-format
-msgid "E1106: %d arguments too many"
-msgstr "E1106: %d àðãóìåíòè(³â) çàáàãàòî"
+msgid_plural "E1106: %d arguments too many"
+msgstr[0] "E1106: Íà %d àðãóìåíò çàáàãàòî"
+msgstr[1] "E1106: Íà %d àðãóìåíòè çàáàãàòî"
+msgstr[2] "E1106: Íà %d àðãóìåíò³â çàáàãàòî"
 
 # msgstr "E396: "
 msgid "E1107: String, List, Dict or Blob required"
 msgstr "E1107: Ïîòð³áåí String, List, Dict àáî Blob"
 
 #, c-format
-msgid "E1108: Item not found: %s"
-msgstr "E1108: Åëåìåíò íå çíàéäåíî: %s"
-
-#, c-format
 msgid "E1109: List item %d is not a List"
 msgstr "E1109: Åëåìåíò %d ñïèñêó íå List"
 
 #, c-format
 msgid "E1110: List item %d does not contain 3 numbers"
-msgstr "E1110: Åëåìåíò %d ñïèñêó íå ìຠ3 ÷èñëà"
+msgstr "E1110: Åëåìåíò %d ñïèñêó íå ì³ñòèòü 3 ÷èñëà"
 
 #, c-format
 msgid "E1111: List item %d range invalid"
-msgstr "E1111: ijàïàçîí åëåìåíòó %d ñïèñêó íåêîðåêòíèé"
+msgstr "E1111: ijàïàçîí åëåìåíòà %d ñïèñêó íåêîðåêòíèé"
 
 #, c-format
 msgid "E1112: List item %d cell width invalid"
-msgstr "E1112: Øèðèíà êîì³ðêè åëåìåíòó %d ñïèñêó íåêîðåêòíà"
+msgstr "E1112: Øèðèíà êîì³ðêè åëåìåíòà %d ñïèñêó íåêîðåêòíà"
 
 #, c-format
 msgid "E1113: Overlapping ranges for 0x%lx"
-msgstr "E1113: Ïåðåêðèòòÿ ä³àïàçîí³â ó 0x%lx"
+msgstr "E1113: Íàêëàäàííÿ ä³àïàçîí³â ó 0x%lx"
 
 msgid "E1114: Only values of 0x80 and higher supported"
-msgstr "E1114: ϳäòðèìóþòüñÿ ò³ëüêè çíà÷åííÿ 0x80 ³ âèù³"
+msgstr "E1114: ϳäòðèìóþòüñÿ ò³ëüêè çíà÷åííÿ 0x80 ³ âèùå"
 
 msgid "E1115: \"assert_fails()\" fourth argument must be a number"
 msgstr "E1115: ×åòâåðòèé àðãóìåíò «assert_fails()» ìຠáóòè ÷èñëîì"
@@ -7940,11 +7986,7 @@ msgid "E1135: Using a String as a Bool: 
 msgstr "E1135: String âæèòî ÿê Bool: «%s»"
 
 msgid "E1136: <Cmd> mapping must end with <CR> before second <Cmd>"
-msgstr "E1136: Çàì³íà <Cmd> ìຠçàâåðøèòèñÿ <CR> ïåðåä äðóãîþ <Cmd>"
-
-#, c-format
-msgid "E1137: <Cmd> mapping must not include %s key"
-msgstr "E1137: Çàì³íà <Cmd> íå ïîâèííî ì³ñòèòè êëàâ³øó %s"
+msgstr "E1136: Çàì³íà êëàâ³ø <Cmd> ìຠçàâåðøèòèñÿ <CR> ïåðåä äðóãîþ <Cmd>"
 
 msgid "E1138: Using a Bool as a Number"
 msgstr "E1138: Bool âæèòî ÿê Number"
@@ -8019,7 +8061,7 @@ msgid "E1158: Cannot use flatten() in Vi
 msgstr "E1158: Íåìîæëèâî âæèòè flatten() ó ñêðèïò³ Vim9, áåð³òü flattennew()"
 
 msgid "E1159: Cannot split a window when closing the buffer"
-msgstr "E1159: Íåìîæëèâî ðîçáèòè â³êíî ïðè çàêðèòò³ áóôåðà"
+msgstr "E1159: Íåìîæëèâî ðîçùåïèòè â³êíî ïðè çàêðèòò³ áóôåðà"
 
 msgid "E1160: Cannot use a default for variable arguments"
 msgstr "E1160: Íåìîæëèâî çàäàòè ïî÷àòêîâå çíà÷åííÿ äëÿ çì³ííèõ àðãóìåíò³â"
@@ -8057,7 +8099,7 @@ msgstr "E1167: Íàçâà àðãóìåíòó çàò³íþº ³ñíóþ÷ó çì³ííó: %s"
 
 #, c-format
 msgid "E1168: Argument already declared in the script: %s"
-msgstr "E1168: Àðãóìåíò âæå îãîëîøåíî â ñêðèïò³: %s"
+msgstr "E1168: Àðãóìåíò âæå îãîëîøåíî ó ñêðèïò³: %s"
 
 #, c-format
 msgid "E1169: Expression too recursive: %s"
@@ -8079,7 +8121,7 @@ msgstr "E1173: Òðàïèâñÿ òåêñò ï³ñëÿ %s: %s"
 # msgstr "E178: "
 #, c-format
 msgid "E1174: String required for argument %d"
-msgstr "E1174: Ó àðãóìåíò³ %d ïîòð³áåí òåêñòîâèé ðÿäîê"
+msgstr "E1174: Ó àðãóìåíò³ %d ïîòð³áåí String"
 
 #, c-format
 msgid "E1175: Non-empty string required for argument %d"
@@ -8138,12 +8180,12 @@ msgstr "E1188: Íåìîæëèâî â³äêðèòè òåðì³íàë ç â³êíà êîìàíäíîãî ðÿäêà"
 msgid "E1189: Cannot use :legacy with this command: %s"
 msgstr "E1189: Íåìîæëèâî âæèòè :legacy ç ö³ºþ êîìàíäîþ: %s"
 
+#, c-format
 msgid "E1190: One argument too few"
-msgstr "E1190: Áðàêóº îäíîãî àðãóìåíòó"
-
-#, c-format
-msgid "E1190: %d arguments too few"
-msgstr "E1190: Áðàêóº %d àðãóìåíòè(³â)"
+msgid_plural "E1190: %d arguments too few"
+msgstr[0] "E1190: Áðàêóº %d àðãóìåíòó"
+msgstr[1] "E1190: Áðàêóº %d àðãóìåíòè"
+msgstr[2] "E1190: Áðàêóº %d àðãóìåíò³â"
 
 #, c-format
 msgid "E1191: Call to function that failed to compile: %s"
@@ -8189,14 +8231,14 @@ msgstr "E1203: Êðàïêó ìîæíà âæèòè ò³ëüêè ³ç ñëîâíèêîì: %s"
 
 #, c-format
 msgid "E1204: No Number allowed after .: '\\%%%c'"
-msgstr "E1204: Number íå äîçâîëåíå ï³ñëÿ .: '\\%%%c'"
+msgstr "E1204: Number íå ìîæíà ï³ñëÿ .: '\\%%%c'"
 
 msgid "E1205: No white space allowed between option and"
 msgstr "E1205: Ïðîïóñê íå äîçâîëåíî ì³æ îïö³ºþ ³"
 
 #, c-format
 msgid "E1206: Dictionary required for argument %d"
-msgstr "E1206: Ïîòð³áåí ñëîâíèê ó àðãóìåíò³ %d"
+msgstr "E1206: Ïîòð³áåí Dictionary â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1207: Expression without an effect: %s"
@@ -8211,15 +8253,15 @@ msgstr "E1209: Íåêîðåêòíå çíà÷åííÿ äëÿ íîìåðà ðÿäêà: «%s»"
 
 #, c-format
 msgid "E1210: Number required for argument %d"
-msgstr "E1210: Ïîòð³áíå ÷èñëî ó àðãóìåíò³ %d"
+msgstr "E1210: Ïîòð³áíå ÷èñëî â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1211: List required for argument %d"
-msgstr "E1211: Ïîòð³áåí ñïèñîê ó àðãóìåíò³ %d"
+msgstr "E1211: Ïîòð³áåí ñïèñîê â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1212: Bool required for argument %d"
-msgstr "E1212: Ïîòð³áåí Bool ó àðãóìåíò³ %d"
+msgstr "E1212: Ïîòð³áåí Bool â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1213: Redefining imported item \"%s\""
@@ -8227,11 +8269,11 @@ msgstr "E1213: Ïîâòîðíå âèçíà÷åííÿ ³ìïîðòîâàíîãî åëåìåíòà «%s»"
 
 #, c-format
 msgid "E1214: Digraph must be just two characters: %s"
-msgstr "E1214: Äèãðàô ìຠñêëàäàòèñÿ ò³ëüêè äâîõ ñèìâîë³â: %s"
+msgstr "E1214: Äèãðàô ìຠáóòè ç äâîõ ñèìâîë³â: %s"
 
 #, c-format
 msgid "E1215: Digraph must be one character: %s"
-msgstr "E1215: Äèãðàô ìຠñêëàäàòèñÿ ³ç îäíîãî ñèìâîëó: %s"
+msgstr "E1215: Äèãðàô ìຠáóòè îäíèì ñèìâîëîì: %s"
 
 msgid ""
 "E1216: digraph_setlist() argument must be a list of lists with two items"
@@ -8241,53 +8283,53 @@ msgstr ""
 
 #, c-format
 msgid "E1217: Channel or Job required for argument %d"
-msgstr "E1217: Ïîòð³áåí Channel ÷è Job ó àðãóìåíò³ %d"
+msgstr "E1217: Ïîòð³áåí Channel ÷è Job â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1218: Job required for argument %d"
-msgstr "E1218: Ïîòð³áåí Job ó àðãóìåíò³ %d"
+msgstr "E1218: Ïîòð³áåí Job â àðãóìåíò³ %d"
 
 # msgstr "E178: "
 #, c-format
 msgid "E1219: Float or Number required for argument %d"
-msgstr "E1219: Ïîòð³áåí Float àáî Number ó àðãóìåíò³ %d"
+msgstr "E1219: Ïîòð³áåí Float àáî Number â àðãóìåíò³ %d"
 
 # msgstr "E396: "
 #, c-format
 msgid "E1220: String or Number required for argument %d"
-msgstr "E1220: Ïîòð³áåí String àáî Number ó àðãóìåíò³ %d"
+msgstr "E1220: Ïîòð³áåí String àáî Number â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1221: String or Blob required for argument %d"
-msgstr "E1221: Ïîòð³áåí String àáî Blob ó àðãóìåíò³ %d"
+msgstr "E1221: Ïîòð³áåí String àáî Blob â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1222: String or List required for argument %d"
-msgstr "E1222: Ïîòð³áåí String àáî List ó àðãóìåíò³ %d"
+msgstr "E1222: Ïîòð³áåí String àáî List â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1223: String or Dictionary required for argument %d"
-msgstr "E1223: Ïîòð³áåí String àáî Dictionary ó àðãóìåíò³ %d"
+msgstr "E1223: Ïîòð³áåí String àáî Dictionary â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1224: String, Number or List required for argument %d"
-msgstr "E1224: Ïîòð³áåí String, Number àáî List ó àðãóìåíò³ %d"
+msgstr "E1224: Ïîòð³áåí String, Number àáî List â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1225: String, List or Dictionary required for argument %d"
-msgstr "E1225: Ïîòð³áåí String, List àáî Dictionary ó àðãóìåíò³ %d"
+msgstr "E1225: Ïîòð³áåí String, List àáî Dictionary â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1226: List or Blob required for argument %d"
-msgstr "E1226: Ïîòð³áåí List àáî Blob ó àðãóìåíò³ %d"
+msgstr "E1226: Ïîòð³áåí List àáî Blob â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1227: List or Dictionary required for argument %d"
-msgstr "E1227: Ïîòð³áåí List àáî Dictionary ó àðãóìåíò³ %d"
+msgstr "E1227: Ïîòð³áåí List àáî Dictionary â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1228: List, Dictionary or Blob required for argument %d"
-msgstr "E1228: Ïîòð³áåí List, Dictionary àáî Blob ó àðãóìåíò³ %d"
+msgstr "E1228: Ïîòð³áåí List, Dictionary àáî Blob â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1229: Expected dictionary for using key \"%s\", but got %s"
@@ -8369,25 +8411,21 @@ msgstr "E1250: Àðãóìåíò ó %s ìຠáóòè List, String, Dictionary àáî Blob"
 
 #, c-format
 msgid "E1251: List, Dictionary, Blob or String required for argument %d"
-msgstr "E1251: List, Dictionary, Blob àáî String ïîòð³áåí ó àðãóìåíò³ %d"
+msgstr "E1251: List, Dictionary, Blob àáî String ïîòð³áåí â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1252: String, List or Blob required for argument %d"
-msgstr "E1252: String, List àáî Blob ïîòð³áåí ó àðãóìåíò³ %d"
-
-#, c-format
-msgid "E1253: String expected for argument %d"
-msgstr "E1253: Î÷³êóºòüñÿ String ó àðãóìåíò³ %d"
+msgstr "E1252: String, List àáî Blob ïîòð³áåí â àðãóìåíò³ %d"
 
 msgid "E1254: Cannot use script variable in for loop"
 msgstr "E1254: Íåìîæëèâî âæèòè çì³ííó ñêðèïòó ó öèêë³ for"
 
 msgid "E1255: <Cmd> mapping must end with <CR>"
-msgstr "E1255: Çàì³íà <Cmd> ìຠçàê³í÷óâàòèñÿ <CR>"
+msgstr "E1255: Çàì³íà êëàâ³ø <Cmd> ìຠçàê³í÷óâàòèñÿ <CR>"
 
 #, c-format
 msgid "E1256: String or function required for argument %d"
-msgstr "E1256: Ïîòð³áåí òåêñòîâèé ðÿäîê àáî ôóíêö³ÿ ó àðãóìåíò³ %d"
+msgstr "E1256: Ïîòð³áåí òåêñòîâèé ðÿäîê àáî ôóíêö³ÿ â àðãóìåíò³ %d"
 
 #, c-format
 msgid "E1257: Imported script must use \"as\" or end in .vim: %s"
@@ -8456,7 +8494,7 @@ msgstr "E1271: Êîìï³ëÿö³ÿ çàìèêàííÿ áåç êîíòåêñòó: %s"
 
 #, c-format
 msgid "E1272: Using type not in a script context: %s"
-msgstr "E1272: Òèï âæèòî ïîçà êîíòåêñòó ñêðèïòó: %s"
+msgstr "E1272: Òèï âæèòî ïîçà êîíòåêñòîì ñêðèïòó: %s"
 
 #, c-format
 msgid "E1273: (NFA regexp) missing value in '\\%%%c'"
@@ -8468,10 +8506,409 @@ msgstr "E1274: Íåìຠíàçâè ôàéëó ñêðèïòó äëÿ çàì³íè «<script>»"
 msgid "E1275: String or function required for ->(expr)"
 msgstr "E1275: Ïîòð³áåí òåêñòîâèé ðÿäîê àáî ôóíêö³ÿ äëÿ ->(expr)"
 
+#, c-format
+msgid "E1276: Illegal map mode string: '%s'"
+msgstr "E1276: Íåêîðåêòíèé ðÿäîê â ðåæèì³ â³äîáðàæåííÿ: «%s»"
+
+msgid "E1277: Channel and job feature is not available"
+msgstr "E1277: Ìîæëèâ³ñòü êàíàë³â ³ çàâäàíü íåäîñòóïíà"
+
+#, c-format
+msgid "E1278: Stray '}' without a matching '{': %s"
+msgstr "E1278: Çàáëóäëà '}' áåç â³äïîâ³äíî¿ '{': %s"
+
+#, c-format
+msgid "E1279: Missing '}': %s"
+msgstr "E1279: Ïðîïóùåíî '}': %s"
+
+msgid "E1280: Illegal character in word"
+msgstr "E1280: Íåäîçâîëåíèé ñèìâîë ó ñëîâ³"
+
+#, c-format
+msgid "E1281: Atom '\\%%#=%c' must be at the start of the pattern"
+msgstr "E1281: Àòîì '\\%%#=%c' ìຠáóòè íà ïî÷àòêó øàáëîíó"
+
+msgid "E1282: Bitshift operands must be numbers"
+msgstr "E1282: Îïåðàíäè á³òîâîãî çñóâó ìàþòü áóòè ÷èñëàìè"
+
+msgid "E1283: Bitshift amount must be a positive number"
+msgstr "E1283: Îáñÿã á³òîâîãî çñóâó ìຠáóòè äîäàòíèì ÷èñëîì"
+
+#, c-format
+msgid "E1284: Argument 1, list item %d: Dictionary required"
+msgstr "E1284: Àðãóìåíò 1, åëåìåíò ñïèñêó %d: ïîòð³áåí Dictionary"
+
+#, c-format
+msgid "E1285: Could not clear timeout: %s"
+msgstr "E1285: Íå âäàëîñÿ ñêàñóâàòè òàéìåð: %s"
+
+#, c-format
+msgid "E1286: Could not set timeout: %s"
+msgstr "E1286: Íå âäàëîñÿ âñòàíîâèòè òàéìåð: %s"
+
+#, c-format
+msgid "E1287: Could not set handler for timeout: %s"
+msgstr "E1287: Íå âäàëîñÿ âñòàíîâèòè îáðîáíèê òàéìåðà: %s"
+
+#, c-format
+msgid "E1288: Could not reset handler for timeout: %s"
+msgstr "E1288: Íå âäàëîñÿ ñêèíóòè îáðîáíèê òàéìåðà: %s"
+
+#, c-format
+msgid "E1289: Could not check for pending SIGALRM: %s"
+msgstr "E1289: Íå âäàëîñÿ ïåðåâ³ðèòè î÷³êóâàíèé SIGALRM: %s"
+
+msgid "E1290: substitute nesting too deep"
+msgstr "E1290: Çàáàãàòî âêëàäåíèõ çàì³í"
+
+#, c-format
+msgid "E1291: Invalid argument: %ld"
+msgstr "E1291: Íåêîðåêòíèé àðãóìåíò: %ld"
+
+msgid "E1292: Command-line window is already open"
+msgstr "E1292: ³êíî êîìàíäíîãî ðÿäêà âæå â³äêðèòå"
+
+msgid "E1293: Cannot use a negative id after adding a textprop with text"
+msgstr ""
+"E1293: Íå ìîæíà âæèâàòè íåãàòèâíèé id ï³ñëÿ äîäàâàííÿ textprop ç òåêñòîì"
+
+msgid "E1294: Can only use text_align when column is zero"
+msgstr "E1294: Ìîæíà âæèòè text_align ò³ëüêè òîä³, êîëè ñòîâïåöü íóëü"
+
+msgid "E1295: Cannot specify both 'type' and 'types'"
+msgstr "E1295: Íå ìîæíà çàäàòè îäíî÷àñíî 'type' ³ 'types'"
+
+msgid "E1296: Can only use left padding when column is zero"
+msgstr "E1296: Ìîæíà çàäàòè ë³âèé â³äñòóï ò³ëüêè òîä³, êîëè ñòîâïåöü íóëü"
+
+#, c-format
+msgid "E1297: Non-NULL Dictionary required for argument %d"
+msgstr "E1297: Äëÿ àðãóìåíòó %d ïîòð³áåí íå-NULL ñëîâíèê"
+
+#, c-format
+msgid "E1298: Non-NULL List required for argument %d"
+msgstr "E1298: Äëÿ àðãóìåíòó %d ïîòð³áåí íå-NULL ñïèñîê"
+
+msgid "E1299: Window unexpectedly closed while searching for tags"
+msgstr "E1299: ³êíî íåñïîä³âàíî çàêðèëîñÿ ï³ä ÷àñ ïîøóêó ì³òîê"
+
+msgid "E1300: Cannot use a partial with dictionary for :defer"
+msgstr "E1300: Íåìîæëèâî âæèòè ÷àñòêîâó ôóíêö³þ ç³ ñëîâíèêîì ó :defer"
+
+#, c-format
+msgid "E1301: String, Number, List or Blob required for argument %d"
+msgstr "E1301: String, Number, List àáî Blob ïîòð³áåí â àðãóìåíò³ %d"
+
+msgid "E1302: Script variable was deleted"
+msgstr "E1302: Çì³ííó ñêðèïòó áóëî âèäàëåíî"
+
+#, c-format
+msgid "E1303: Custom list completion function does not return a List but a %s"
+msgstr "E1303: Âëàñíà ôóíêö³ÿ äîïîâíåííÿ ñïèñêà ïîâåðòຠíå ñïèñîê, à %s"
+
+#, c-format
+msgid "E1304: Cannot use type with this variable: %s"
+msgstr "E1304: Íå ìîæíà âæèòè òèï ³ç ö³ºþ çì³ííîþ: %s"
+
+msgid ""
+"E1305: Cannot use \"length\", \"end_col\" and \"end_lnum\" with \"text\""
+msgstr "E1305: Íå ìîæíà âèêîðèñòàòè «length», «end_col» ³ «end_lnum» ó «text»"
+
+msgid "E1306: Loop nesting too deep"
+msgstr "E1306: Çàáàãàòî âêëàäåíèõ öèêë³â"
+
+#, c-format
+msgid "E1307: Argument %d: Trying to modify a const %s"
+msgstr "E1307: Àðãóìåíò %d: Ñïðîáà çì³íè êîíñòàíòè %s"
+
+msgid "E1308: Cannot resize a window in another tab page"
+msgstr "E1308: Íåìîæëèâî çì³íèòè ðîçì³ð â³êíà ó ³íø³é âêëàäö³"
+
+msgid "E1309: Cannot change mappings while listing"
+msgstr "E1309: Íåìîæëèâî çì³íèòè çàì³íó ïðè âèâåäåíí³ ñïèñêó"
+
+msgid "E1310: Cannot change menus while listing"
+msgstr "E1310: Íåìîæëèâî çì³íèòè ìåíþ ïðè âèâåäåíí³ ñïèñêó"
+
+msgid "E1311: Cannot change user commands while listing"
+msgstr "E1311: Íåìîæëèâî çì³íèòè êîìàíäó êîðèñòóâà÷à ïðè âèâåäåíí³ ñïèñêó"
+
+msgid "E1312: Not allowed to change the window layout in this autocmd"
+msgstr "E1312: Íå äîçâîëåíî çì³íèòè ðîçì³ùåííÿ â³êîí ó ö³é àâòîêîìàíä³"
+
+#, c-format
+msgid "E1313: Not allowed to add or remove entries (%s)"
+msgstr "E1313: Íå äîçâîëåíî äîäàâàòè àáî ïðèáèðàòè åëåìåíòè (%s)"
+
+# msgstr "E182: "
+#, c-format
+msgid "E1314: Class name must start with an uppercase letter: %s"
+msgstr "E1314: Íàçâà êëàñó ìຠïî÷èíàòèñÿ ç âåëèêî¿ ë³òåðè: %s"
+
+#, c-format
+msgid "E1315: White space required after name: %s"
+msgstr "E1315: Ïîòð³áåí ïðîïóñê ï³ñëÿ íàçâè: %s"
+
+# msgstr "E327: "
+msgid "E1316: Class can only be defined in Vim9 script"
+msgstr "E1316: Êëàñ ìîæíà âèçíà÷èòè ò³ëüêè ó ñêðèïò³ Vim9"
+
+#, c-format
+msgid "E1317: Invalid object member declaration: %s"
+msgstr "E1317: Íåêîðåêòíå îãîëîøåííÿ ÷ëåíà îá’ºêòà: %s"
+
+# msgstr "E181: "
+#, c-format
+msgid "E1318: Not a valid command in a class: %s"
+msgstr "E1318: Íåêîðåêòíà êîìàíäà â êëàñ³: %s"
+
+msgid "E1319: Using a class as a Number"
+msgstr "E1319: Êëàñ âæèòî ÿê Number"
+
+msgid "E1320: Using an object as a Number"
+msgstr "E1320: Îá’ºêò âæèòî ÿê Number"
+
+msgid "E1321: Using a class as a Float"
+msgstr "E1321: Êëàñ âæèòî ÿê Float"
+
+msgid "E1322: Using an object as a Float"
+msgstr "E1322: Îá’ºêò âæèòî ÿê Float"
+
+# msgstr "E373: "
+msgid "E1323: Using a class as a String"
+msgstr "E1323: Êëàñ âæèòî ÿê String"
+
+msgid "E1324: Using an object as a String"
+msgstr "E1324: Îá’ºêò âæèòî ÿê String"
+
+#, c-format
+msgid "E1325: Method not found on class \"%s\": %s"
+msgstr "E1325: Ìåòîä íå çíàéäåíî â êëàñ³ «%s»: %s"
+
+#, c-format
+msgid "E1326: Member not found on object \"%s\": %s"
+msgstr "E1326: ×ëåí íå çíàéäåíî â îá’ºêò³ «%s»: %s"
+
+# msgstr "E178: "
+#, c-format
+msgid "E1327: Object required, found %s"
+msgstr "E1327: Ïîòð³áåí îá’ºêò, òðàïèâñÿ %s"
+
+#, c-format
+msgid "E1328: Constructor default value must be v:none: %s"
+msgstr "E1328: Ïî÷àòêîâå çíà÷åííÿ êîíñòðóêòîðà ìຠáóòè v:none: %s"
+
+#, c-format
+msgid "E1329: Cannot get object member type from initializer: %s"
+msgstr "E1329: Íå ìîæíà ä³ñòàòè òèï ÷ëåíà îá’ºêòà ç ³í³ö³àë³çàòîðà: %s"
+
+#, c-format
+msgid "E1330: Invalid type for object member: %s"
+msgstr "E1330: Íåêîðåêòíèé òèï äëÿ ÷ëåíà îá’ºêòà: %s"
+
+msgid "E1331: Public must be followed by \"this\" or \"static\""
+msgstr "E1331: Çà public ìຠéòè «this» àáî «static»"
+
+#, c-format
+msgid "E1332: Public member name cannot start with underscore: %s"
+msgstr ""
+"E1332: Íàçâà â³äêðèòîãî ÷ëåíà (public) íå ìîæå ïî÷èíàòèñÿ ³ç ï³äêðåñëåííÿ: %s"
+
+#, c-format
+msgid "E1333: Cannot access private member: %s"
+msgstr "E1333: Íåìîæëèâî äîñòóïèòèñÿ äî ïðèâàòíîãî ÷ëåíà: %s"
+
+# msgstr "E333: "
+#, c-format
+msgid "E1334: Object member not found: %s"
+msgstr "E1334: ×ëåí îá’ºêòà íå çíàéäåíî: %s"
+
+#, c-format
+msgid "E1335: Member is not writable: %s"
+msgstr "E1335: ×ëåí íå äîñòóïíèé äëÿ çàïèñó: %s"
+
+# msgstr "E333: "
+#, c-format
+msgid "E1337: Class member not found: %s"
+msgstr "E1337: ×ëåí êëàñó íå çíàéäåíî: %s"
+
+#, c-format
+msgid "E1338: Member not found on class \"%s\": %s"
+msgstr "E1338: ×ëåí íå çíàéäåíî â êëàñ³ «%s»: %s"
+
+msgid ""
+"E1339: Cannot add a textprop with text after using a textprop with a "
+"negative id"
+msgstr ""
+"E1339: Íå ìîæíà äîäàòè textprop ç òåêñòîì ï³ñëÿ âæèòêó textprop ç â³ä’ºìíèì "
+"id"
+
+#, c-format
+msgid "E1340: Argument already declared in the class: %s"
+msgstr "E1340: Àðãóìåíò âæå îãîëîøåíî ó êëàñ³: %s"
+
+#, c-format
+msgid "E1341: Variable already declared in the class: %s"
+msgstr "E1341: Çì³ííó âæå îãîëîøåíî ó êëàñ³: %s"
+
+# msgstr "E327: "
+msgid "E1342: Interface can only be defined in Vim9 script"
+msgstr "E1342: ²íòåðôåéñ ìîæíà âèçíà÷èòè ò³ëüêè ó ñêðèïò³ Vim9"
+
+# msgstr "E182: "
+#, c-format
+msgid "E1343: Interface name must start with an uppercase letter: %s"
+msgstr "E1343: Íàçâà ³íòåðôåéñó ïîâèííà ïî÷èíàòèñÿ ç âåëèêî¿ ë³òåðè: %s"
+
+msgid "E1344: Cannot initialize a member in an interface"
+msgstr "E1344: Íåìîæëèâî ³í³ö³àë³çóâàòè ÷ëåí â ³íòåðôåéñ³"
+
+#, c-format
+msgid "E1345: Not a valid command in an interface: %s"
+msgstr "E1345: Íåêîðåêòíà êîìàíäà â ³íòåðôåéñ³: %s"
+
+#, c-format
+msgid "E1346: Interface name not found: %s"
+msgstr "E1346: Íàçâó ³íòåðôåéñó íå çíàéäåíî: %s"
+
+#, c-format
+msgid "E1347: Not a valid interface: %s"
+msgstr "E1347: Íåêîðåêòíèé ³íòåðôåéñ: %s"
+
+#, c-format
+msgid "E1348: Member \"%s\" of interface \"%s\" not implemented"
+msgstr "E1348: ×ëåí «%s» ³íòåðôåéñó «%s» íå âò³ëåíî"
+
+#, c-format
+msgid "E1349: Function \"%s\" of interface \"%s\" not implemented"
+msgstr "E1349: Ôóíêö³þ «%s» ³íòåðôåéñó «%s» íå âò³ëåíî"
+
+msgid "E1350: Duplicate \"implements\""
+msgstr "E1350: Ïîâòîðåííÿ «implements»"
+
+#, c-format
+msgid "E1351: Duplicate interface after \"implements\": %s"
+msgstr "E1351: ²íòåðôåéñ ïîâòîðþºòüñÿ ï³ñëÿ «implements»: %s"
+
+msgid "E1352: Duplicate \"extends\""
+msgstr "E1352: Ïîâòîðþºòüñÿ «extends»"
+
+# msgstr "E333: "
+#, c-format
+msgid "E1353: Class name not found: %s"
+msgstr "E1353: Íàçâó êëàñó íå çíàéäåíî: %s"
+
+#, c-format
+msgid "E1354: Cannot extend %s"
+msgstr "E1354: Íåìîæëèâî ðîçøèðèòè %s"
+
+#, c-format
+msgid "E1355: Duplicate function: %s"
+msgstr "E1355: Ôóíêö³ÿ ïîâòîðþºòüñÿ: %s"
+
+msgid "E1356: \"super\" must be followed by a dot"
+msgstr "E1356: Çà «super» ìຠéòè êðàïêà"
+
+msgid "E1357: Using \"super\" not in a class function"
+msgstr "E1357: «super» âæèòî ïîçà ôóíêö³ºþ êëàñó"
+
+msgid "E1358: Using \"super\" not in a child class"
+msgstr "E1358: «super» âæèòî íå â ïîõ³äíîìó êëàñ³"
+
+msgid "E1359: Cannot define a \"new\" function in an abstract class"
+msgstr "E1359: Íåìîæëèâî âèçíà÷èòè ôóíêö³þ «new» â àáñòðàêòíîìó êëàñ³"
+
+msgid "E1360: Using a null object"
+msgstr "E1360: Çàñòîñîâàíî îá’ºêò null"
+
+msgid "E1361: Cannot use color \"none\", did you mean \"NONE\"?"
+msgstr "E1361: Íåìîæëèâî âæèòè êîë³ð «none», ìîæå, «NONE»?"
+
+msgid "E1362: Cannot use a non-null object"
+msgstr "E1362: Íåìîæëèâî âèêîðèñòàòè íå-null îá’ºêò"
+
+msgid "E1363: Incomplete type"
+msgstr "E1363: Íåïîâíèé òèï"
+
+msgid "E1364: Warning: Pointer block corrupted"
+msgstr "E1364: Ïîïåðåäæåííÿ: Ïîøêîäæåíî áëîê âêàç³âíèêà"
+
+msgid "E1365: Cannot use a return type with the \"new\" function"
+msgstr "E1365: Íåìîæëèâî âæèòè òèï ïîâåðíåííÿ ó ôóíêö³¿ «new»"
+
+#, c-format
+msgid "E1400: Cannot mix positional and non-positional arguments: %s"
+msgstr "E1400: Íåìîæëèâî çì³øóâàòè ïîçèö³éí³ é íåïîçèö³éí³ àðãóìåíòè: %s"
+
+#, c-format
+msgid "E1401: format argument %d unused in $-style format: %s"
+msgstr "E1401: àðãóìåíò %d ôîðìàòó íå âèêîðèñòàíî ó $-ôîðìàòóâàíí³: %s"
+
+#, c-format
+msgid ""
+"E1402: Positional argument %d used as field width reused as different type: "
+"%s/%s"
+msgstr ""
+"E1402: Ïîçèö³éíèé àðãóìåíò %d, ùî çàäຠøèðèíó ïîëÿ, âæèòî ÿê ³íøèé òèï: %s/"
+"%s"
+
+#, c-format
+msgid "E1403: Positional argument %d out of bounds: %s"
+msgstr "E1403: Ïîçèö³éíèé àðãóìåíò %d ïîçà ìåæàìè: %s"
+
+#, c-format
+msgid "E1404: Positional argument %d type used inconsistently: %s/%s"
+msgstr "E1404: Òèï ïîçèö³éíîãî àðãóìåíòó %d âæèòî íåðåãóëÿðíî: %s/%s"
+
+#, c-format
+msgid "E1405: Invalid format specifier: %s"
+msgstr "E1405: Íåêîðåêòíèé ñïåöèô³êàòîð ôîðìàòó: %s"
+
+#, c-format
+msgid "E1406: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1406: ×ëåí «%s»: íåñï³âïàä³ííÿ òèï³â, î÷³êóºòüñÿ %s, à îòðèìàíî %s"
+
+#, c-format
+msgid "E1407: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1407: ×ëåí «%s»: íåñï³âïàä³ííÿ òèï³â, î÷³êóºòüñÿ %s, à îòðèìàíî %s"
+
 # msgstr "E447: "
 msgid "--No lines in buffer--"
 msgstr "--Æîäíîãî ðÿäêà--"
 
+msgid "int"
+msgstr "int"
+
+msgid "long int"
+msgstr "long int"
+
+msgid "long long int"
+msgstr "long long int"
+
+msgid "unsigned int"
+msgstr "unsigned int"
+
+msgid "unsigned long int"
+msgstr "unsigned long int"
+
+msgid "unsigned long long int"
+msgstr "unsigned long long int"
+
+msgid "pointer"
+msgstr "pointer"
+
+msgid "percent"
+msgstr "percent"
+
+msgid "char"
+msgstr "char"
+
+msgid "string"
+msgstr "string"
+
+msgid "float"
+msgstr "float"
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "Ïîøóê ä³éøîâ äî ÏÎ×ÀÒÊÓ, ïðîäîâæóºòüñÿ ç ʲÍÖß"
 
@@ -8799,20 +9236,21 @@ msgstr "Vim"
 
 # msgstr "E444: "
 msgid "(local to window)"
-msgstr "(ñòîñóºòüñÿ â³êíà)"
+msgstr "(ò³ëüêè ó â³êí³)"
 
 msgid "(local to buffer)"
-msgstr "(ñòîñóºòüñÿ áóôåðà)"
+msgstr "(ò³ëüêè â áóôåð³)"
 
 msgid "(global or local to buffer)"
-msgstr "(ãëîáàëüíî àáî ñòîñóºòüñÿ áóôåðà)"
+msgstr "(âñþäè àáî ò³ëüêè â áóôåð³)"
 
 msgid ""
 "\" Each \"set\" line shows the current value of an option (on the left)."
-msgstr "\" Êîæåí ðÿäîê «set» ïîêàçóº àêòóàëüíå çíà÷åííÿ îïö³¿ (ë³âîðó÷)."
+msgstr ""
+"\" Êîæåí ðÿäîê «set» ïîêàçóº òåïåð³øíº çíà÷åííÿ îïö³¿ (ë³âîðó÷)."
 
 msgid "\" Hit <Enter> on a \"set\" line to execute it."
-msgstr "\" Íàòèñí³òü <Enter> íà ðÿäêó «set» ùîá âèêîíàòè."
+msgstr "\" Íàòèñí³òü <Enter> ó ðÿäêó «set» ùîá âèêîíàòè."
 
 msgid "\"            A boolean option will be toggled."
 msgstr "\"            Îïö³þ-ïåðåìèêà÷ áóäå ïåðåìêíåíî."
@@ -8830,10 +9268,10 @@ msgstr ""
 "öþ îïö³þ."
 
 msgid "\" Hit <Enter> on an index line to jump there."
-msgstr "\" Íàòèñí³òü <Enter> íà ðÿäêó ç ³íäåêñîì ùîá òóäè ïåðåñòðèáíóòè."
+msgstr "\" Íàòèñí³ñòü <Enter> íà ðÿäêó âêàç³âíèêà ùîá òóäè ïåðåñòðèáíóòè."
 
 msgid "\" Hit <Space> on a \"set\" line to refresh it."
-msgstr "\" Íàòèñí³òü <Space> íà ðÿäêó «set» ùîá îíîâèòè."
+msgstr "\" Íàòèñí³òü <Ïðîá³ë> íà ðÿäêó «set» äëÿ îíîâëåííÿ."
 
 msgid "important"
 msgstr "âàæëèâî"
@@ -8848,38 +9286,38 @@ msgid "use Insert mode as the default mo
 msgstr "ðåæèì Insert ÿê ïî÷àòêîâèé ðåæèì"
 
 msgid "paste mode, insert typed text literally"
-msgstr "ðåæèì âñòàâëÿííÿ, âñòàâèòè íàáðàíèé òåêñò áóêâàëüíî"
+msgstr "ðåæèì âêëåþâàííÿ, âñòàâèòè íàáðàíèé òåêñò áóêâàëüíî"
 
 msgid "key sequence to toggle paste mode"
-msgstr "ïîñë³äîâí³ñòü êëàâ³ø äëÿ ïåðåìèêàííÿ ðåæèìó âñòàâëÿííÿ"
+msgstr "ïîñë³äîâí³ñòü êëàâ³ø äëÿ ïåðåìèêàííÿ ðåæèìó âêëåþâàííÿ"
 
 msgid "list of directories used for runtime files and plugins"
-msgstr "ñïèñîê äèðåêòîð³é äëÿ ôàéë³â ÷àñó âèêîíàííÿ ³ ïëàã³í³â"
+msgstr "ñïèñîê äèðåêòîð³é ç ôàéëàìè ÷àñó âèêîíàííÿ ³ ïëàã³íàìè"
 
 msgid "list of directories used for plugin packages"
-msgstr "ñïèñîê äèðåêòîð³é äëÿ ïàêóíê³â ïëàã³í³â"
+msgstr "ñïèñîê äèðåêòîð³é ç ïàêóíêàìè ïëàã³í³â"
 
 msgid "name of the main help file"
-msgstr "íàçâà ãîëîâíîãî ôàéëà äîïîìîãè"
+msgstr "íàçâà ãîëîâíîãî ôàéëó äîïîìîãè"
 
 msgid "moving around, searching and patterns"
 msgstr "ïåðåì³ùåííÿ, ïîøóê ³ øàáëîíè"
 
 msgid "list of flags specifying which commands wrap to another line"
-msgstr "ñïèñîê ïðàïîðö³â, ÿê³ âèçíà÷àþòü êîìàíäè, ùî ïåðåíîñÿòü íà íîâèé ðÿäîê"
+msgstr "ñïèñîê ïðàïîðö³â, ÿê³ çàäàþòü, êîòð³ êîìàíäè ïåðåíîñÿòü íà íîâèé ðÿäîê"
 
 msgid ""
 "many jump commands move the cursor to the first non-blank\n"
 "character of a line"
 msgstr ""
 "áàãàòî êîìàíä ñòðèáê³â ïåðåì³ùóþòü êóðñîð äî ïåðøîãî íåïîðîæíüîãî\n"
-"ñèìâîëà ðÿäêà"
+"ñèìâîëó ðÿäêà"
 
 msgid "nroff macro names that separate paragraphs"
 msgstr "íàçâè ìàêðîñ³â nroff, ÿê³ ðîçä³ëÿþòü ïàðàãðàôè"
 
 msgid "nroff macro names that separate sections"
-msgstr "íàçâè ìàêðîñ³â nroff, ÿê³ ðîçä³ëÿþòü ðîçä³ëè"
+msgstr "íàçâè ìàêðîñ³â nroff, ùî ðîçä³ëÿþòü ðîçä³ëè"
 
 msgid "list of directory names used for file searching"
 msgstr "ñïèñîê íàçâ äèðåêòîð³é äëÿ ïîøóêó ôàéë³â"
@@ -8900,19 +9338,19 @@ msgid "search commands wrap around the e
 msgstr "êîìàíäè ïîøóêó ïî÷èíàþòü ñïî÷àòêó ï³ñëÿ ê³íöÿ áóôåðà"
 
 msgid "show match for partly typed search command"
-msgstr "ïîêàçóâàòè çá³ã äëÿ ÷àñòêîâî íàáðàíî¿ êîìàíäè ïîøóêó"
+msgstr "ïîêàçóâàòè çá³ã ÷àñòêîâî íàáðàíî¿ êîìàíäè ïîøóêó"
 
 msgid "change the way backslashes are used in search patterns"
-msgstr "ïîì³íÿòè ñïîñ³á âæèòêó çâîðîòíèõ êîñèõ ðèñîê ó øàáëîíàõ ïîøóêó"
+msgstr "çì³íèòè ñïîñ³á âæèòêó \\ ó øàáëîíàõ ïîøóêó"
 
 msgid "select the default regexp engine used"
-msgstr "âèáðàòè îñíîâíèé ìåõàí³çì ðåãóëÿðíèõ âèðàç³â"
+msgstr "âèáðàòè îñíîâíèé ðóø³é ðåãóëÿðíèõ âèðàç³â"
 
 msgid "ignore case when using a search pattern"
-msgstr "³ãíîðóâàòè ðåã³ñòð ñèìâîë³â ó øàáëîí³ ïîøóêó"
+msgstr "íåõòóâàòè ðåã³ñòðîì ó øàáëîí³ ïîøóêó"
 
 msgid "override 'ignorecase' when pattern has upper case characters"
-msgstr "ïåðåâèçíà÷èòè 'ignorecase', êîëè øàáëîí ìຠñèìâîëè âåðõíüîãî ðåã³ñòðó"
+msgstr "â³äêèíóòè 'ignorecase', êîëè øàáëîí ìຠñèìâîëè âåðõíüîãî ðåã³ñòðó"
 
 msgid "what method to use for changing case of letters"
 msgstr "ÿêèé ìåòîä âèêîðèñòàòè äëÿ çì³íè ðåã³ñòðó áóêâ"
@@ -8940,7 +9378,7 @@ msgid "number of significant characters 
 msgstr "ê³ëüê³ñòü çíà÷óùèõ ñèìâîë³â ó íàçâ³ ì³òêè àáî íóëü"
 
 msgid "list of file names to search for tags"
-msgstr "ñïèñîê íàçâ ôàéë³â ïîøóêó ì³òîê"
+msgstr "ñïèñîê íàçâ ôàéë³â äëÿ ïîøóêó ì³òîê"
 
 msgid ""
 "how to handle case when searching in tags files:\n"
@@ -8989,6 +9427,9 @@ msgstr "ïîêàçóâàííÿ òåêñòó"
 msgid "number of lines to scroll for CTRL-U and CTRL-D"
 msgstr "ê³ëüê³ñòü ðÿäê³â ïðîêðó÷óâàííÿ ïðè CTRL-U ³ CTRL-D"
 
+msgid "scroll by screen line"
+msgstr "ïðîêðó÷óâàòè ïî ðÿäêàõ íà åêðàí³"
+
 msgid "number of screen lines to show around the cursor"
 msgstr "ê³ëüê³ñòü åêðàííèõ ðÿäê³â, ÿê³ ïîêàçóâàòè íàâêîëî êóðñîðó"
 
@@ -8996,7 +9437,7 @@ msgid "long lines wrap"
 msgstr "ïåðåíåñåííÿ äîâãèõ ðÿäê³â"
 
 msgid "wrap long lines at a character in 'breakat'"
-msgstr "ïåðåíîñèòè äîâã³ ðÿäêè íà ñèìâîëàõ ó 'breakat'"
+msgstr "ïåðåíîñèòè äîâã³ ðÿäêè ïî ñèìâîëàõ ó 'breakat'"
 
 msgid "preserve indentation in wrapped text"
 msgstr "çáåðåãòè â³äñòóïè ó ïåðåíåñåíîìó òåêñò³"
@@ -9009,7 +9450,7 @@ msgstr "ÿê³ ñèìâîëè ìîæóòü ñïðè÷èíèòè ðîçáèòòÿ ðÿäêà"
 
 msgid "string to put before wrapped screen lines"
 msgstr ""
-"ïîñë³äîâí³ñòü ñèìâîë³â, ÿê³ ðîçì³ñòèòè ïåðåä ïåðåíåñåíèìè åêðàííèìè ðÿäêàìè"
+"ñèìâîëè, ÿê³ ðîçì³ñòèòè ïåðåä ïåðåíåñåíèìè åêðàííèìè ðÿäêàìè"
 
 msgid "minimal number of columns to scroll horizontally"
 msgstr "íàéìåíøà ê³ëüê³ñòü ñòîâïö³â ãîðèçîíòàëüíîãî ïðîêðó÷óâàííÿ"
@@ -9022,8 +9463,8 @@ msgid ""
 "include \"lastline\" to show the last line even if it doesn't fit\n"
 "include \"uhex\" to show unprintable characters as a hex number"
 msgstr ""
-"äîäàéòå «lastline» ùîá ïîêàçóâàòè îñòàíí³é ðÿäîê íàâ³òü ÿêùî â³í íå âëàçèòü\n"
-"äîäàéòå «uhex» ùîá ïîêàçóâàòè íåäðóêîâí³ ñèìâîëè ÿê ø³ñòíàäöÿòêîâ³ ÷èñëà"
+"äîäàéòå «lastline» ùîá ïîêàçàòè îñòàíí³é ðÿäîê íàâ³òü ÿêùî â³í íå âëàçèòü\n"
+"äîäàéòå «uhex» ùîá ïîêàçàòè íåäðóêîâí³ ñèìâîëè ÿê ø³ñòíàäöÿòêîâ³ ÷èñëà"
 
 msgid "characters to use for the status line, folds and filler lines"
 msgstr "ñèìâîëè äëÿ ðÿäêà ñòàíó, çãîðòîê ³ çàïîâíþâà÷³â"
@@ -9072,7 +9513,7 @@ msgid "controls whether concealable text
 msgstr "êîíòðîëþº ïðèõîâóâàííÿ çàìàñêîâàíîãî òåêñòó"
 
 msgid "modes in which text in the cursor line can be concealed"
-msgstr "ðåæèìè, â ÿêèõ òåêñò â ðÿäêó ç êóðñîðîì çàìàñêóºòüñÿ"
+msgstr "ðåæèìè, â ÿêèõ òåêñò â ðÿäêó ç êóðñîðîì ìàñêóºòüñÿ"
 
 msgid "syntax, highlighting and spelling"
 msgstr "ñèíòàêñèñ, ï³äñâ³÷óâàííÿ ³ îðôîãðàô³ÿ"
@@ -9081,13 +9522,13 @@ msgid "\"dark\" or \"light\"; the backgr
 msgstr "«dark» àáî «light»; ÿñêðàâ³ñòü êîëüîðó ôîíó"
 
 msgid "type of file; triggers the FileType event when set"
-msgstr "òèï ôàéëó; êîëè âñòàíîâëåíî, àêòèâóâàòè ïîä³þ FileType"
+msgstr "òèï ôàéëó; çàïóñêຠïîä³þ FileType ïðè âñòàíîâëåíí³"
 
 msgid "name of syntax highlighting used"
 msgstr "íàçâà ñõåìè ï³äñâ³÷óâàííÿ ñèíòàêñèñó"
 
 msgid "maximum column to look for syntax items"
-msgstr "íàéá³ëüøèé ñòîâïåöü äëÿ ïîøóêó åëåìåíò³â ñèíòàêñèñó"
+msgstr "êðàéí³é ñòîâïåöü äëÿ ïîøóêó åëåìåíò³â ñèíòàêñèñó"
 
 msgid "which highlighting to use for various occasions"
 msgstr "ÿêå ï³äñâ³÷óâàííÿ çàñòîñîâóâàòè ó ð³çíèõ âèïàäêàõ"
@@ -9121,7 +9562,7 @@ msgid "list of accepted languages"
 msgstr "ñïèñîê ìîâ ïåðåâ³ðêè îðôîãðàô³¿"
 
 msgid "file that \"zg\" adds good words to"
-msgstr "ôàéë, ó ÿêèé êîìàíäà \"zg\" äîäຠõîðîø³ ñëîâà"
+msgstr "ôàéë, ó ÿêèé êîìàíäà «zg» äîäຠõîðîø³ ñëîâà"
 
 msgid "pattern to locate the end of a sentence"
 msgstr "øàáëîí äëÿ ïîøóêó ê³íöÿ ðå÷åííÿ"
@@ -9142,7 +9583,7 @@ msgid "0, 1 or 2; when to use a status l
 msgstr "0, 1 àáî 2; êîëè ïîêàçóâàòè ðÿäîê ñòàíó â îñòàííüîìó â³êí³"
 
 msgid "alternate format to be used for a status line"
-msgstr "àëüòåðíàòèâíèé ôîðìàò ðÿäêà ñòàíó"
+msgstr "çì³ííèé ôîðìàò ðÿäêà ñòàíó"
 
 msgid "make all windows the same size when adding/removing windows"
 msgstr "çðîáèòè âñ³ â³êíà îäíàêîâîãî ðîçì³ðó ïðè äîäàâàíí³/çàêðèòò³ â³êîí"
@@ -9193,6 +9634,9 @@ msgstr ""
 msgid "a new window is put below the current one"
 msgstr "íîâå â³êíî ðîçì³ùóºòüñÿ ï³ä àêòèâíèì"
 
+msgid "determines scroll behavior for split windows"
+msgstr "âèçíà÷ຠïîâåä³íêó ïðîêðó÷óâàííÿ ó ðîçùåïëåíèõ â³êíàõ"
+
 msgid "a new window is put right of the current one"
 msgstr "íîâå â³êíî ðîçì³ùóºòüñÿ ïðàâîðó÷ â³ä àêòèâíîãî"
 
@@ -9261,6 +9705,9 @@ msgstr "çðîáèòè çàïèò êîä³â êëàâ³ø òåðì³íàëó, êîëè âèçíà÷åíî xterm"
 msgid "terminal that requires extra redrawing"
 msgstr "òåðì³íàë ïîòðåáóº äîäàòêîâîãî ïåðåìàëüîâóâàííÿ"
 
+msgid "what keyboard protocol to use for which terminal"
+msgstr "ÿêèé ïðîòîêîë êëàâ³àòóðè çàñòîñîâóâàòè äëÿ ÿêîãî òåðì³íàëó"
+
 msgid "recognize keys that start with <Esc> in Insert mode"
 msgstr "ðîçï³çíàâàòè êëàâ³ø³, ùî ïî÷èíàþòüñÿ ç <Esc> â ðåæèì³ Insert"
 
@@ -9431,8 +9878,11 @@ msgstr "äîäàòè ïðàïîðåöü 's' ó 'shortmess' (íå ïîêàçóâàòè ïîâ³äîìëåííÿ ïîøóêó)"
 msgid "list of flags to make messages shorter"
 msgstr "ñïèñîê ïðàïîðö³â ùîá çðîáèòè ïîâ³äîìëåííÿ êîðîòøèìè"
 
-msgid "show (partial) command keys in the status line"
-msgstr "ïîêàçóâàòè êëàâ³ø³ (÷àñòèíè) êîìàíäè ó ðÿäêó ñòàíó"
+msgid "show (partial) command keys in location given by 'showcmdloc'"
+msgstr "ïîêàçóâàòè êëàâ³ø³ (÷àñòèíè) êîìàíäè ó ì³ñö³, çàäàíîìó 'showcmdloc'"
+
+msgid "location where to show the (partial) command keys for 'showcmd'"
+msgstr "ì³ñöå, äå ïîêàçóâàòè êëàâ³ø³ (÷àñòèíè) êîìàíäè äëÿ 'showcmd'"
 
 msgid "display the current mode in the status line"
 msgstr "ïîêàçóâàòè àêòóàëüíèé ðåæèì ó ðÿäêó ñòàíó"
@@ -9441,7 +9891,7 @@ msgid "show cursor position below each w
 msgstr "ïîêàçóâàòè ïîëîæåííÿ êóðñîðó ï³ä êîæíèì â³êíîì"
 
 msgid "alternate format to be used for the ruler"
-msgstr "âëàñíèé ôîðìàò ë³í³éêè"
+msgstr "çì³ííèé ôîðìàò ë³í³éêè"
 
 msgid "threshold for reporting number of changed lines"
 msgstr "ïîð³ã äîïîâ³ä³ ê³ëüêîñò³ çì³íåíèõ ðÿäê³â"
@@ -9450,7 +9900,7 @@ msgid "the higher the more messages are 
 msgstr "÷èì á³ëüøå, òèì á³ëüøå áóäå âèäàíî ïîâ³äîìëåíü"
 
 msgid "file to write messages in"
-msgstr "ôàéë, Ó ÿêèé çàïèñóâàòè ïîâ³äîìëåííÿ"
+msgstr "ôàéë, ó ÿêèé çàïèñóâàòè ïîâ³äîìëåííÿ"
 
 msgid "pause listings when the screen is full"
 msgstr "ñïèíèòè âèâåäåííÿ, êîëè åêðàí çàïîâíåíî"
@@ -9523,7 +9973,7 @@ msgid "line length above which to break 
 msgstr "äîâæèíà ðÿäêà, ïîíàä ÿêîþ ðÿäîê ðîçáèâàòè"
 
 msgid "margin from the right in which to break a line"
-msgstr "â³äñòóï ç ïðàâîãî êðàþ, ç ÿêîãî ðîçáèâàòè ðÿäîê"
+msgstr "â³äñòóï ç ïðàâîãî êðàþ, ïî ÿêîìó ðîçáèâàòè ðÿäîê"
 
 msgid "specifies what <BS>, CTRL-W, etc. can do in Insert mode"
 msgstr "âèçíà÷àº, ùî <BS>, CTRL-W òîùî ìîæóòü ðîáèòè ó ðåæèì³ Insert"
@@ -9637,7 +10087,7 @@ msgid "do clever autoindenting"
 msgstr "³íòåëåêòóàëüíèé àâòîìàòè÷íèé â³äñòóï"
 
 msgid "enable specific indenting for C code"
-msgstr "óâ³ìêíóòè ñïåöèô³÷í³ â³ñòóïè â êîä³ Ñ"
+msgstr "óâ³ìêíóòè ñïåöèô³÷í³ â³äñòóïè â êîä³ Ñ"
 
 msgid "options for C-indenting"
 msgstr "îïö³¿ â³äñòóïó Ñ"
@@ -9671,6 +10121,9 @@ msgstr "óâ³ìêíóòè ðåæèì lisp"
 msgid "words that change how lisp indenting works"
 msgstr "ñëîâà, ÿê³ çì³íþþòü, ÿê ïðàöþº ï³äáèâàííÿ â³äñòóï³â ó lisp"
 
+msgid "options for Lisp indenting"
+msgstr "îïö³¿ â³äñòóïó Lisp"
+
 msgid "folding"
 msgstr "çãîðòàííÿ"
 
@@ -9775,6 +10228,9 @@ msgstr "ðåäàãóâàííÿ äâ³éêîâèõ ôàéë³â"
 msgid "last line in the file has an end-of-line"
 msgstr "îñòàíí³é ðÿäîê ôàéëó ìຠñèìâîë ê³íöÿ ðÿäêà"
 
+msgid "last line in the file followed by CTRL-Z"
+msgstr "îñòàíí³é ðÿäîê ôàéëó çàê³í÷óºòüñÿ CTRL-Z"
+
 msgid "fixes missing end-of-line at end of text file"
 msgstr "âèïðàâëÿº ñèìâîë ê³íöÿ ðÿäêó, ÿêîãî áðàêóº íàïðèê³íö³ ôàéëó"
 
@@ -9803,7 +10259,7 @@ msgid "keep a backup after overwriting a
 msgstr "çáåðåãòè ðåçåðâíèé êîï³þ ï³ñëÿ ïåðåçàïèñó ôàéëó"
 
 msgid "patterns that specify for which files a backup is not made"
-msgstr "øàáëîíè, ÿê³ âèçíà÷àþòü, äëÿ ÿêèõ ôàéë³â çðîáèòè ðåçåðâíó êîï³þ"
+msgstr "øàáëîíè, ÿê³ çàçíà÷àþòü, äëÿ ÿêèõ ôàéë³â íå ðîáèòüñÿ ðåçåðâíó êîï³þ"
 
 msgid "whether to make the backup as a copy or rename the existing file"
 msgstr ""
@@ -9872,7 +10328,7 @@ msgid "how many command lines are rememb
 msgstr "ñê³ëüêè ðÿäê³â êîìàíä çàïàì’ÿòàòè"
 
 msgid "key that triggers command-line expansion"
-msgstr "êëàâ³øà, ÿêà çàïóñêຠäîïîâíåííÿ ðÿäêà êîìàíä"
+msgstr "êëàâ³øà, ÿêà çàïóñêຠðîçãîðòàííÿ ðÿäêà êîìàíä"
 
 msgid "like 'wildchar' but can also be used in a mapping"
 msgstr "í³áè 'wildchar', àëå òàêîæ ìîæíà âæèòè ó çàì³í³ êëàâ³ø"
@@ -10208,3 +10664,6 @@ msgstr "íàçâà äèíàì³÷íî¿ á³áë³îòåêè MzScheme"
 
 msgid "name of the MzScheme GC dynamic library"
 msgstr "íàçâà äèíàì³÷íî¿ á³áë³îòåêè MzScheme GC"
+
+msgid "You discovered the command-line window! You can close it with \":q\"."
+msgstr "Âè âèÿâèëè â³êíî êîìàíäíîãî ðÿäêà! Éîãî ìîæíà çàêðèòè êîìàíäîþ «:q»."
--- a/src/po/uk.po
+++ b/src/po/uk.po
@@ -12,18 +12,18 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: vim 8.1\n"
+"Project-Id-Version: Vim Ukrainian\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-05-02 17:40+0300\n"
-"PO-Revision-Date: 2022-05-20 17:12+0300\n"
+"POT-Creation-Date: 2023-08-24 11:51+0300\n"
+"PO-Revision-Date: 2023-08-27 07:48+0300\n"
 "Last-Translator: Ðнатолій Сахнік <sakhnik@gmail.com>\n"
 "Language-Team: Ukrainian\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3;     plural=n%10==1 && n%100!=11 ? 0 :            n"
-"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3;     plural=n%10==1 && n%100!=11 ? 0 :            "
+"n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 
 msgid "ERROR: "
 msgstr "ПОМИЛКÐ: "
@@ -97,23 +97,23 @@ msgstr "[СпиÑок виправлень]"
 #, c-format
 msgid "%d buffer unloaded"
 msgid_plural "%d buffers unloaded"
-msgstr[0] "Вивантажено %d буфер"
-msgstr[1] "Вивантажено %d буфери"
-msgstr[2] "Вивантажено %d буферів"
+msgstr[0] "%d буфер вивантажено"
+msgstr[1] "%d буфери вивантажено"
+msgstr[2] "%d буферів вивантажено"
 
 #, c-format
 msgid "%d buffer deleted"
 msgid_plural "%d buffers deleted"
-msgstr[0] "Знищено %d буфер"
-msgstr[1] "Знищено %d буфери"
-msgstr[2] "Знищено %d буфері"
+msgstr[0] "%d буфер знищено"
+msgstr[1] "%d буфери знищено"
+msgstr[2] "%d буферів знищено"
 
 #, c-format
 msgid "%d buffer wiped out"
 msgid_plural "%d buffers wiped out"
-msgstr[0] "Витерто %d буфер"
-msgstr[1] "Витерто %d буфери"
-msgstr[2] "Витерто %d буферів"
+msgstr[0] "%d буфер Ñтерто"
+msgstr[1] "%d буфери Ñтерто"
+msgstr[2] "%d буферів Ñтерто"
 
 msgid "W14: Warning: List of file names overflow"
 msgstr "W14: Обережно: СпиÑок назв файлів переповнено"
@@ -169,8 +169,28 @@ msgstr "Знизу"
 msgid "Top"
 msgstr "Вгорі"
 
+#, c-format
+msgid "%d%%"
+msgstr "%d%%"
+
+#, c-format
+msgid " (%d of %d)"
+msgstr " (%d з %d)"
+
+#, c-format
+msgid " ((%d) of %d)"
+msgstr " ((%d) з %d)"
+
+#, c-format
+msgid " (file %d of %d)"
+msgstr " (файл %d з %d)"
+
+#, c-format
+msgid " (file (%d) of %d)"
+msgstr " (файл (%d) з %d)"
+
 msgid "[Prompt]"
-msgstr "[Підказка]"
+msgstr "[Запит]"
 
 msgid "[Popup]"
 msgstr "[Спливаюче]"
@@ -283,6 +303,33 @@ msgstr "Ключі не однакові!"
 msgid "[crypted]"
 msgstr "[зашифровано]"
 
+#, c-format
+msgid "xchacha20v2: using custom opslimit \"%llu\" for Key derivation."
+msgstr "xchacha20v2: заÑтоÑовуєтьÑÑ Ð²Ð»Ð°Ñний opslimit «%llu» у виведенні ключа."
+
+#, c-format
+msgid "xchacha20v2: using default opslimit \"%llu\" for Key derivation."
+msgstr ""
+"xchacha20v2: заÑтоÑовуєтьÑÑ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ð¹ opslimit «%llu» у виведенні ключа."
+
+#, c-format
+msgid "xchacha20v2: using custom memlimit \"%lu\" for Key derivation."
+msgstr "xchacha20v2: заÑтоÑовуєтьÑÑ Ð²Ð»Ð°Ñний memlimit «%lu» у виведенні ключа."
+
+#, c-format
+msgid "xchacha20v2: using default memlimit \"%lu\" for Key derivation."
+msgstr ""
+"xchacha20v2: заÑтоÑовуєтьÑÑ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ð¹ memlimit «%lu» у виведенні ключа."
+
+#, c-format
+msgid "xchacha20v2: using custom algorithm \"%d\" for Key derivation."
+msgstr "xchacha20v2: заÑтоÑовуєтьÑÑ Ð²Ð»Ð°Ñний алгоритм «%d» у виведенні ключа."
+
+#, c-format
+msgid "xchacha20v2: using default algorithm \"%d\" for Key derivation."
+msgstr ""
+"xchacha20v2: заÑтоÑовуєтьÑÑ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ð¹ алгоритм «%d» у виведенні ключа."
+
 msgid "Entering Debug mode.  Type \"cont\" to continue."
 msgstr "Режим налагодженнÑ.  Щоб продовжити введіть «cont»."
 
@@ -336,7 +383,7 @@ msgid "Patch file"
 msgstr "Латка"
 
 msgid "Custom"
-msgstr "ВлаÑний"
+msgstr "ВлаÑне"
 
 msgid "Latin supplement"
 msgstr "Ð”Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð»Ð°Ñ‚Ð¸Ð½Ð¸Ñ†Ñ–"
@@ -372,7 +419,7 @@ msgid "Other"
 msgstr "Інше"
 
 msgid "Roman numbers"
-msgstr "РимÑькі чиÑла"
+msgstr "РимÑькі цифри"
 
 msgid "Arrows"
 msgstr "Стрілки"
@@ -387,7 +434,7 @@ msgid "Box drawing"
 msgstr "ÐœÐ°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ñмокутників"
 
 msgid "Block elements"
-msgstr "Елементи блоків"
+msgstr "ЧаÑтини блоків"
 
 msgid "Geometric shapes"
 msgstr "Геометричні фігури"
@@ -411,7 +458,8 @@ msgid "Bopomofo"
 msgstr "Чжуїнь"
 
 msgid "Not enough memory to set references, garbage collection aborted!"
-msgstr "ÐедоÑтатньо пам’ÑÑ‚Ñ–, щоб вÑтановити поÑиланнÑ, збір ÑÐ¼Ñ–Ñ‚Ñ‚Ñ ÑкаÑовано!"
+msgstr ""
+"ÐедоÑтатньо пам’ÑÑ‚Ñ– Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ñилань, Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ ÑÐ¼Ñ–Ñ‚Ñ‚Ñ Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð¾!"
 
 msgid ""
 "\n"
@@ -495,7 +543,7 @@ msgstr "ЗапиÑати чаÑтину файлу?"
 
 #, c-format
 msgid "Overwrite existing file \"%s\"?"
-msgstr "ПерепиÑати Ñ–Ñнуючий файл «%s»?"
+msgstr "ПерепиÑати наÑвний файл «%s»?"
 
 #, c-format
 msgid "Swap file \"%s\" exists, overwrite anyway?"
@@ -584,12 +632,6 @@ msgstr "Кінець функції"
 msgid "Backwards range given, OK to swap"
 msgstr "Інтервал задано навиворіт, щоб помінÑти міÑцÑми — ГÐРÐЗД"
 
-msgid ""
-"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX"
-msgstr ""
-"Ð’ÐУТРІШÐЄ: Ðе можна вжити EX_DFLALL з ADDR_NONE, ADDR_UNSIGNED чи "
-"ADDR_QUICKFIX"
-
 #, c-format
 msgid "%d more file to edit.  Quit anyway?"
 msgid_plural "%d more files to edit.  Quit anyway?"
@@ -598,7 +640,7 @@ msgstr[1] "Ще Ñ” %d не редаговані файли. Ð’Ñе одно вийти?"
 msgstr[2] "Ще Ñ” %d не редагованих файлів. Ð’Ñе одно вийти?"
 
 msgid "unknown"
-msgstr "Ðевідомо"
+msgstr "невідомо"
 
 msgid "Greetings, Vim user!"
 msgstr "ВітаннÑ, кориÑтувачу Vim!"
@@ -683,7 +725,7 @@ msgid "Interrupt"
 msgstr "Перервано"
 
 msgid "[Command Line]"
-msgstr "[РÑдок команд]"
+msgstr "[РÑдок Команд]"
 
 msgid "is a directory"
 msgstr "каталог"
@@ -718,7 +760,7 @@ msgid "[fifo]"
 msgstr "[канал]"
 
 msgid "[socket]"
-msgstr "[гніздо]"
+msgstr "[розетка]"
 
 msgid "[character special]"
 msgstr "[Ñпец. Ñимвольний]"
@@ -727,7 +769,7 @@ msgid "[CR missing]"
 msgstr "[Бракує CR]"
 
 msgid "[long lines split]"
-msgstr "[Розбито довгі Ñ€Ñдки]"
+msgstr "[довгі Ñ€Ñдки розбито]"
 
 #, c-format
 msgid "[CONVERSION ERROR in line %ld]"
@@ -848,13 +890,15 @@ msgstr "без збігів"
 msgid "+--%3ld line folded "
 msgid_plural "+--%3ld lines folded "
 msgstr[0] "+--%3ld Ñ€Ñдок згорнуто "
-msgstr[1] "+--%3ld Ñ€Ñдків згорнуто "
+msgstr[1] "+--%3ld Ñ€Ñдки згорнуто "
+msgstr[2] "+--%3ld Ñ€Ñдків згорнуто "
 
 #, c-format
 msgid "+-%s%3ld line: "
 msgid_plural "+-%s%3ld lines: "
 msgstr[0] "+-%s%3ld Ñ€Ñдок: "
-msgstr[1] "+-%s%3ld Ñ€Ñдків: "
+msgstr[1] "+-%s%3ld Ñ€Ñдки: "
+msgstr[2] "+-%s%3ld Ñ€Ñдків: "
 
 msgid "No match at cursor, finding next"
 msgstr "Ðемає над курÑором, пошук триває"
@@ -1165,7 +1209,7 @@ msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· cscope %s закінчено"
 
 #, c-format
 msgid "Cscope tag: %s"
-msgstr "Теґ cscope: %s"
+msgstr "Мітка cscope: %s"
 
 msgid ""
 "\n"
@@ -1190,7 +1234,7 @@ msgid "Lua library cannot be loaded."
 msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ бібліотеку Lua"
 
 msgid "cannot save undo information"
-msgstr "не вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ інформацію Ð´Ð»Ñ ÑкаÑуваннÑ"
+msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ Ñ–Ñторію змін"
 
 msgid "invalid expression"
 msgstr "некоректний вираз"
@@ -1319,7 +1363,7 @@ msgid " File name completion (^F^N^P)"
 msgstr " Ð”Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ файлу (^F^N^P)"
 
 msgid " Tag completion (^]^N^P)"
-msgstr " Ð”Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¼Ñ–Ñ‚Ð¾Ðº (^]^N^P)"
+msgstr " Ð”Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð· міток (^]^N^P)"
 
 msgid " Path pattern completion (^N^P)"
 msgstr " Ð”Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÑˆÐ»Ñху за зразком (^N^P)"
@@ -1348,9 +1392,6 @@ msgstr " Орфографічна підказка (s^N^P)"
 msgid " Keyword Local completion (^N^P)"
 msgstr " Ð”Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð¼Ñ–Ñцевих ключових Ñлів (^N^P)"
 
-msgid "Hit end of paragraph"
-msgstr "ТрапивÑÑ ÐºÑ–Ð½ÐµÑ†ÑŒ параграфа"
-
 msgid "'dictionary' option is empty"
 msgstr "ÐžÐ¿Ñ†Ñ–Ñ 'dictionary' порожнÑ"
 
@@ -1362,7 +1403,7 @@ msgid "Scanning dictionary: %s"
 msgstr "СкануєтьÑÑ Ñловник: %s"
 
 msgid " (insert) Scroll (^E/^Y)"
-msgstr " (вÑтавка) Прогорнути (^E/^Y)"
+msgstr " (вÑтавити) Прогорнути (^E/^Y)"
 
 msgid " (replace) Scroll (^E/^Y)"
 msgstr " (заміна) Прогорнути (^E/^Y)"
@@ -1383,6 +1424,12 @@ msgstr " ДодаєтьÑÑ"
 msgid "-- Searching..."
 msgstr "-- Пошук..."
 
+msgid "Hit end of paragraph"
+msgstr "ТрапивÑÑ ÐºÑ–Ð½ÐµÑ†ÑŒ параграфа"
+
+msgid "Pattern not found"
+msgstr "Зразок не знайдено"
+
 msgid "Back at original"
 msgstr "Початковий варіант"
 
@@ -1648,6 +1695,9 @@ msgstr "-T <термінал>\tÐ’Ñтановити тип терміналу у <термінал>"
 msgid "--not-a-term\t\tSkip warning for input/output not being a terminal"
 msgstr "--not-a-term\t\tПропуÑтити Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ/виводу не в термінал"
 
+msgid "--gui-dialog-file {fname}  For testing: write dialog text"
+msgstr "--gui-dialog-file {fname}  Ð”Ð»Ñ Ñ‚ÐµÑтуваннÑ: запиÑати текÑÑ‚ діалогу"
+
 msgid "--ttyfail\t\tExit if input or output is not a terminal"
 msgstr "--ttyfail\t\tВийти, Ñкщо введеннÑ/Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð½Ðµ в термінал"
 
@@ -1667,7 +1717,7 @@ msgid "-o[N]\t\tOpen N windows (default:
 msgstr "-o[N]\t\tВідкрити N вікон (або по одному Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ файлу)"
 
 msgid "-O[N]\t\tLike -o but split vertically"
-msgstr "-O[N]\t\tÐіби -o, але поділити вікна вертикально"
+msgstr "-O[N]\t\tÐіби -o, але розщепити вікна вертикально"
 
 msgid "+\t\t\tStart at end of file"
 msgstr "+\t\t\tРозпочати в кінці файлу"
@@ -1831,14 +1881,40 @@ msgid "-P <parent title>\tOpen Vim insid
 msgstr "-P <заголовок батька>\tВідкрити Vim вÑередині батьківÑького вікна"
 
 msgid "--windowid <HWND>\tOpen Vim inside another win32 widget"
-msgstr "--windowid <HWND>\tВідкрити Vim вÑередині іншого елементу win32"
+msgstr "--windowid <HWND>\tВідкрити Vim вÑередині іншого елемента win32"
+
+msgid "Seen modifyOtherKeys: true\n"
+msgstr "ТрапилоÑÑ modifyOtherKeys: true\n"
+
+msgid "Unknown"
+msgstr "Ðевідомо"
+
+msgid "Off"
+msgstr "Вимк"
+
+msgid "On"
+msgstr "Увімк"
+
+msgid "Disabled"
+msgstr "Вимкнено"
+
+msgid "Cleared"
+msgstr "Очищено"
+
+#, c-format
+msgid "modifyOtherKeys detected: %s\n"
+msgstr "Помічено modifyOtherKeys: %s\n"
+
+#, c-format
+msgid "Kitty keyboard protocol: %s\n"
+msgstr "Протокол клавіатури Kitty: %s\n"
 
 # msgstr "E227: "
 msgid "No abbreviation found"
 msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ знайдено"
 
 msgid "No mapping found"
-msgstr "Заміни не знайдено"
+msgstr "Заміни клавіш не знайдено"
 
 msgid "No marks set"
 msgstr "Ðе вÑтановлено жодної помітки"
@@ -1965,6 +2041,9 @@ msgstr "??? звідÑи Ñ– до `??? КІÐЕЦЬ' Ñ€Ñдки, можливо, Ñплутані"
 msgid "??? from here until ???END lines may have been inserted/deleted"
 msgstr "??? звідÑи Ñ– до `??? КІÐЕЦЬ' Ñ€Ñдки, можливо, були додані/знищені"
 
+msgid "??? lines may be missing"
+msgstr "??? Ñ€Ñдків може бракувати"
+
 msgid "???END"
 msgstr "??? КІÐЕЦЬ"
 
@@ -1992,14 +2071,14 @@ msgid ""
 "You may want to delete the .swp file now."
 msgstr ""
 "\n"
-"Можливо, тепер ви хочете знищити файл обміну .swp."
+"Тепер ви можете знищити файл обміну .swp."
 
 msgid ""
 "\n"
 "Note: process STILL RUNNING: "
 msgstr ""
 "\n"
-"Ðотатка: Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð’Ð¡Ð• ЩЕ ПРÐЦЮЄ: "
+"Примітка: Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð©Ð• ВИКОÐУЄТЬСЯ: "
 
 msgid "Using crypt key from swap file for the text file.\n"
 msgstr "Ð”Ð»Ñ Ñ‚ÐµÐºÑтового файлу викориÑтовуєтьÑÑ ÐºÐ»ÑŽÑ‡ шифру з файлу обміну.\n"
@@ -2075,7 +2154,7 @@ msgstr ""
 "         ID процеÑу: "
 
 msgid " (STILL RUNNING)"
-msgstr " (ВСЕ ЩЕ ПРÐЦЮЄ)"
+msgstr " (ЩЕ ВИКОÐУЄТЬСЯ)"
 
 msgid ""
 "\n"
@@ -2140,9 +2219,8 @@ msgid ""
 msgstr ""
 "\n"
 "(1) Можливо, інша програма вже редагує цей Ñамий файл. Якщо це так,\n"
-"    будьте обережні, щоб не залишилиÑÑ Ð´Ð²Ð° різні екземплÑри\n"
-"    одного й того Ñамого файлу піÑÐ»Ñ Ð·Ð¼Ñ–Ð½.  Вийдіть чи продовжуйте з "
-"обережніÑÑ‚ÑŽ.\n"
+"    будьте обережні, щоб не залишилиÑÑ Ð´Ð²Ð° різні екземплÑри одного й того\n"
+"    Ñамого файлу піÑÐ»Ñ Ð·Ð¼Ñ–Ð½.  Вийдіть чи продовжуйте обережно.\n"
 
 msgid "(2) An edit session for this file crashed.\n"
 msgstr "(2) Ð¡ÐµÐ°Ð½Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ файлу зазнав краху.\n"
@@ -2168,7 +2246,7 @@ msgstr ""
 "    щоб позбутиÑÑ Ñ†ÑŒÐ¾Ð³Ð¾ повідомленнÑ.\n"
 
 msgid "Found a swap file that is not useful, deleting it"
-msgstr "Знайдено файл обміну, Ñким не можна ÑкориÑтатиÑÑ, видалÑємо"
+msgstr "Знайдено файл обміну, Ñким не можна ÑкориÑтатиÑÑ, знищуємо"
 
 msgid "Swap file \""
 msgstr "Файл обміну «"
@@ -2244,9 +2322,6 @@ msgstr "Перервано: "
 msgid "Press ENTER or type command to continue"
 msgstr "ÐатиÑніть ENTER або введіть команду Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð½Ñ"
 
-msgid "Unknown"
-msgstr "Ðевідомо"
-
 #, c-format
 msgid "%s line %ld"
 msgstr "%s Ñ€Ñдок %ld"
@@ -2281,24 +2356,24 @@ msgstr ""
 "&C:СкаÑувати"
 
 msgid "Type number and <Enter> or click with the mouse (q or empty cancels): "
-msgstr "Ðаберіть чиÑло й <Enter> чи клацніть мишкою (q або порожнє ÑкаÑовує): "
+msgstr "Ðаберіть чиÑло й <Enter> чи клацніть мишкою (q чи порожнє ÑкаÑовує): "
 
 msgid "Type number and <Enter> (q or empty cancels): "
-msgstr "Ðаберіть чиÑло й <Enter> (q або порожнє ÑкаÑовує): "
+msgstr "Ðаберіть чиÑло й <Enter> (q чи порожнє ÑкаÑовує): "
 
 #, c-format
 msgid "%ld more line"
 msgid_plural "%ld more lines"
-msgstr[0] "додано %ld Ñ€Ñдок"
-msgstr[1] "додано %ld Ñ€Ñдки"
-msgstr[2] "додано %ld Ñ€Ñдків"
+msgstr[0] "ще %ld Ñ€Ñдок"
+msgstr[1] "ще %ld Ñ€Ñдки"
+msgstr[2] "ще %ld Ñ€Ñдків"
 
 #, c-format
 msgid "%ld line less"
 msgid_plural "%ld fewer lines"
-msgstr[0] "знищено %ld Ñ€Ñдок"
-msgstr[1] "знищено %ld Ñ€Ñдки"
-msgstr[2] "знищено %ld Ñ€Ñдків"
+msgstr[0] "на %ld Ñ€Ñдок менше"
+msgstr[1] "на %ld Ñ€Ñдки менше"
+msgstr[2] "на %ld Ñ€Ñдків менше"
 
 msgid " (Interrupted)"
 msgstr " (Перервано)"
@@ -2417,10 +2492,6 @@ msgstr ""
 "\n"
 "--- Опції ---"
 
-#, c-format
-msgid "For option %s"
-msgstr "Ð”Ð»Ñ Ð¾Ð¿Ñ†Ñ–Ñ— %s"
-
 # msgstr "E358: "
 msgid "cannot open "
 msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ "
@@ -2632,7 +2703,7 @@ msgstr " (Ñ€Ñдок знищено)"
 
 #, c-format
 msgid "%serror list %d of %d; %d errors "
-msgstr "%sÑпиÑок помилок %d з %d; %d помилок"
+msgstr "%sÑпиÑок помилок %d з %d; %d помилок "
 
 msgid "No entries"
 msgstr "Ðічого"
@@ -2652,7 +2723,7 @@ msgid "External submatches:\n"
 msgstr "Зовнішні під-збіги:\n"
 
 msgid "Switching to backtracking RE engine for pattern: "
-msgstr "ПеремикаємоÑÑ Ð´Ð¾ пошуку з поверненнÑм Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°: "
+msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð´Ð¾ проÑтого Ñ€ÑƒÑˆÑ–Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрних виразів: "
 
 msgid "Could not open temporary log file for writing, displaying on stderr... "
 msgstr ""
@@ -2682,7 +2753,7 @@ msgid ""
 "Type Name Content"
 msgstr ""
 "\n"
-"Тип  Ðазва ВміÑÑ‚ "
+"Тип  Ðаз. ВміÑÑ‚  "
 
 msgid " VREPLACE"
 msgstr " ВІРТ ЗÐМІÐÐ"
@@ -2694,13 +2765,13 @@ msgid " REVERSE"
 msgstr " ÐÐВИВОРІТ"
 
 msgid " INSERT"
-msgstr " ВСТÐВКÐ"
+msgstr " ВСТÐВИТИ"
 
 msgid " (insert)"
-msgstr " (вÑтавка)"
+msgstr " (вÑтавити)"
 
 msgid " (replace)"
-msgstr " (заміна)"
+msgstr " (замінити)"
 
 msgid " (vreplace)"
 msgstr " (вірт заміна)"
@@ -2737,6 +2808,11 @@ msgstr "йде запиÑ"
 
 # msgstr "E195: "
 #, c-format
+msgid "Searching for \"%s\" under \"%s\" in \"%s\""
+msgstr "Пошук «%s» за «%s» в «%s»"
+
+# msgstr "E195: "
+#, c-format
 msgid "Searching for \"%s\" in \"%s\""
 msgstr "Пошук «%s» в «%s»"
 
@@ -2746,7 +2822,7 @@ msgstr "Пошук «%s»"
 
 #, c-format
 msgid "not found in '%s': \"%s\""
-msgstr "не знайдено у '%s': «%s»"
+msgstr "не знайдено в '%s': «%s»"
 
 msgid "Source Vim script"
 msgstr "Прочитати Ñкрипт Vim"
@@ -2864,7 +2940,7 @@ msgstr "  група=%s"
 
 #, c-format
 msgid "    line=%ld  id=%d%s  name=%s  priority=%d"
-msgstr "    Ñ€Ñдок=%ld  id=%d%s  назва=%s  пріоритет=%d"
+msgstr "    Ñ€Ñдок=%ld id=%d%s  назва=%s пріоритет=%d"
 
 msgid " (NOT FOUND)"
 msgstr " (ÐЕ ЗÐÐЙДЕÐО)"
@@ -2926,7 +3002,7 @@ msgid ""
 "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ COMPOUNDFORBIDFLAG піÑÐ»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ PFX може дати неправильний "
+"Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ COMPOUNDFORBIDFLAG піÑÐ»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° PFX може дати неправильний "
 "результат у %s у Ñ€Ñдку %d"
 
 #, c-format
@@ -2934,7 +3010,7 @@ msgid ""
 "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
 "%d"
 msgstr ""
-"Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ COMPOUNDPERMITFLAG піÑÐ»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ PFX можу дати неправильний "
+"Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ COMPOUNDPERMITFLAG піÑÐ»Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° PFX можу дати неправильний "
 "результат у %s у Ñ€Ñдку %d"
 
 #, c-format
@@ -2971,7 +3047,7 @@ msgid ""
 "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
 "line %d: %s"
 msgstr ""
-"ÐÑ„Ñ–ÐºÑ Ñ‚Ð°ÐºÐ¾Ð¶ викориÑтовуєтьÑÑ Ð´Ð»Ñ BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/"
+"ÐÑ„Ñ–ÐºÑ Ñ‚Ð°ÐºÐ¾Ð¶ вживаєтьÑÑ Ð´Ð»Ñ BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/"
 "NOSUGGEST у %s у Ñ€Ñдку %d: %s"
 
 #, c-format
@@ -3166,7 +3242,7 @@ msgid "No Syntax items defined for this 
 msgstr "Ð”Ð»Ñ Ð±ÑƒÑ„ÐµÑ€Ð° не визначено елементів ÑинтакÑиÑу"
 
 msgid "'redrawtime' exceeded, syntax highlighting disabled"
-msgstr "вичерпано 'redrawtime', вимкнено підÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ ÑинтакÑиÑу"
+msgstr "'redrawtime' вичерпано, підÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ ÑинтакÑиÑу вимкнено"
 
 msgid "syntax iskeyword not set"
 msgstr "ÑинтакÑÐ¸Ñ iskeyword не вÑтановлено"
@@ -3240,7 +3316,7 @@ msgid " or more"
 msgstr " або більше"
 
 msgid "  Using tag with different case!"
-msgstr "  ВикориÑтано мітку, не розрізнÑючи великі й малі літери"
+msgstr "  ВикориÑтано мітку, не розрізнÑючи великі й малі літери!"
 
 # msgstr "E426: "
 msgid "  # pri kind tag"
@@ -3434,6 +3510,11 @@ msgstr "%s повертає #%ld"
 msgid "%s returning %s"
 msgstr "%s повертає %s"
 
+# msgstr "E428: "
+#, c-format
+msgid "Function %s does not need compiling"
+msgstr "Функцію %s не потрібно компілювати"
+
 #, c-format
 msgid "%s (%s, compiled %s)"
 msgstr "%s (%s, Ñкомпільовано %s)"
@@ -3540,13 +3621,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"Big version "
-msgstr ""
-"\n"
-"Велика верÑÑ–Ñ "
-
-msgid ""
-"\n"
 "Normal version "
 msgstr ""
 "\n"
@@ -3554,13 +3628,6 @@ msgstr ""
 
 msgid ""
 "\n"
-"Small version "
-msgstr ""
-"\n"
-"Мала верÑÑ–Ñ "
-
-msgid ""
-"\n"
 "Tiny version "
 msgstr ""
 "\n"
@@ -3911,12 +3978,12 @@ msgid "E10: \\ should be followed by /, 
 msgstr "E10: За \\ має йти /, ? або &"
 
 # msgstr "E10: "
-msgid "E11: Invalid in command-line window; <CR> executes, CTRL-C quits"
-msgstr "E11: ÐеприпуÑтимо у вікні команд, <CR> виконує, CTRL-C виходить"
+msgid "E11: Invalid in command-line window; :q<CR> closes the window"
+msgstr "E11: ÐеприпуÑтимо у вікні команд; :q<CR> закриває вікно"
 
 msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search"
 msgstr ""
-"E12: Команда не дозволена у exrc/vimrc у пошуку поточного каталогу чи теґу"
+"E12: Команда не дозволена у exrc/vimrc у пошуку поточного каталогу чи мітки"
 
 msgid "E13: File exists (add ! to override)"
 msgstr "E13: Файл Ñ–Ñнує (! щоб не зважати)"
@@ -4010,14 +4077,11 @@ msgid "E36: Not enough room"
 msgstr "E36: МіÑÑ†Ñ Ð½Ðµ виÑтачить"
 
 msgid "E37: No write since last change"
-msgstr "E37: Ðе запиÑано попередні зміни"
+msgstr "E37: Ðе запиÑано найновіші зміни"
 
 msgid "E37: No write since last change (add ! to override)"
 msgstr "E37: Зміни не було запиÑано (! щоб не зважати)"
 
-msgid "E38: Null argument"
-msgstr "E38: ВідÑутній аргумент"
-
 msgid "E39: Number expected"
 msgstr "E39: ОчікуєтьÑÑ Ñ‡Ð¸Ñло"
 
@@ -4031,12 +4095,6 @@ msgstr "E41: Забракло пам'ÑÑ‚Ñ–!"
 msgid "E42: No Errors"
 msgstr "E42: Жодної помилки"
 
-msgid "E43: Damaged match string"
-msgstr "E43: ТекÑÑ‚ збігу пошкоджено"
-
-msgid "E44: Corrupted regexp program"
-msgstr "E44: ЗіпÑована програма регулÑрних виразів"
-
 msgid "E45: 'readonly' option is set (add ! to override)"
 msgstr "E45: Ð’Ñтановлено опцію 'readonly' (! щоб не зважати)"
 
@@ -4080,7 +4138,7 @@ msgstr "E55: Ðемає пари %s)"
 
 #, c-format
 msgid "E59: Invalid character after %s@"
-msgstr "E59: Ðедозволений Ñимвол піÑÐ»Ñ %s@"
+msgstr "E59: Ðекоректний Ñимвол піÑÐ»Ñ %s@"
 
 #, c-format
 msgid "E60: Too many complex %s{...}s"
@@ -4345,7 +4403,7 @@ msgid "E133: :return not inside a functi
 msgstr "E133: :return поза межами функції"
 
 msgid "E134: Cannot move a range of lines into itself"
-msgstr "E134: Ðеможливо переміÑтити діапазон Ñ€Ñдків Ñамого в Ñебе"
+msgstr "E134: Ðеможливо переміÑтити діапазон Ñ€Ñдків Ñам у Ñебе"
 
 msgid "E135: *Filter* Autocommands must not change current buffer"
 msgstr "E135: Ðвтокоманди *Filter* не повинні змінювати поточний буфер"
@@ -4388,7 +4446,7 @@ msgid "E146: Regular expressions can't b
 msgstr "E146: РегулÑрні вирази не можна розділÑти літерами"
 
 msgid "E147: Cannot do :global recursive with a range"
-msgstr "E147: :global не можна вживати рекурÑивно з діапазоном"
+msgstr "E147: :global не можна заÑтоÑовувати рекурÑивно з діапазоном"
 
 msgid "E148: Regular expression missing from :global"
 msgstr "E148: У global бракує регулÑрного виразу"
@@ -4445,7 +4503,7 @@ msgstr "E161: Точку зупинки не знайдено: %s"
 
 #, c-format
 msgid "E162: No write since last change for buffer \"%s\""
-msgstr "E162: Буфер «%s» має не збережені зміни"
+msgstr "E162: Буфер «%s» має незбережені зміни"
 
 msgid "E163: There is only one file to edit"
 msgstr "E163: РедагуєтьÑÑ Ð»Ð¸ÑˆÐµ один файл"
@@ -4478,15 +4536,14 @@ msgid "E171: Missing :endif"
 msgstr "E171: Бракує :endif"
 
 msgid "E172: Missing marker"
-msgstr "E172: Бракує позначки кінцÑ"
+msgstr "E172: Бракує позначки"
 
 #, c-format
 msgid "E173: %d more file to edit"
-msgstr "E173: ЗалишилоÑÑ %d не редагованих файлів"
-
-#, c-format
-msgid "E173: %d more files to edit"
-msgstr "E173: ЗалишилоÑÑ %d не редагованих файлів"
+msgid_plural "E173: %d more files to edit"
+msgstr[0] "E173: Ще редагувати %d файл"
+msgstr[1] "E173: Ще редагувати %d файли"
+msgstr[2] "E173: Ще редагувати %d файлів"
 
 #, c-format
 msgid "E174: Command already exists: add ! to replace it: %s"
@@ -4611,7 +4668,7 @@ msgid "E205: Patchmode: can't save origi
 msgstr "E205: ЛатаннÑ: не вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ оригінал"
 
 msgid "E206: Patchmode: can't touch empty original file"
-msgstr "E206: ЛатаннÑ: Ðе вдалоÑÑ Ñтворити оригінал"
+msgstr "E206: ЛатаннÑ: не вдалоÑÑ Ñтворити оригінал"
 
 msgid "E207: Can't delete backup file"
 msgstr "E207: Ðе вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸ резервний файл"
@@ -4672,11 +4729,8 @@ msgstr "E220: Бракує }."
 msgid "E221: Marker cannot start with lower case letter"
 msgstr "E221: Позначка повинна починатиÑÑ Ð· великої літери"
 
-msgid "E222: Add to internal buffer that was already read from"
-msgstr "E222: Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð¾ внутрішнього буфера, з Ñкого вже прочитано"
-
 msgid "E223: Recursive mapping"
-msgstr "E223: Заміна рекурÑивна"
+msgstr "E223: Заміна клавіш рекурÑивна"
 
 # msgstr "E223: "
 #, c-format
@@ -4698,9 +4752,6 @@ msgstr "E226: Вже Ñ” ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s"
 msgid "E227: Mapping already exists for %s"
 msgstr "E227: Вже Ñ” заміна Ð´Ð»Ñ %s"
 
-msgid "E228: makemap: Illegal mode"
-msgstr "E228: makemap: ÐеприпуÑтимий режим"
-
 # msgstr "E228: "
 msgid "E229: Cannot start the GUI"
 msgstr "E229: Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити GUI"
@@ -4714,9 +4765,6 @@ msgstr "E230: Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ з «%s»"
 msgid "E231: 'guifontwide' invalid"
 msgstr "E231: Ðекоректний 'guifontwide'"
 
-msgid "E232: Cannot create BalloonEval with both message and callback"
-msgstr "E232: Ðе вдалоÑÑ Ñтворити BalloonEval з повідомленнÑм Ñ– функцією"
-
 msgid "E233: Cannot open display"
 msgstr "E233: Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ диÑплей"
 
@@ -4755,7 +4803,7 @@ msgstr "E241: Ðе вдалоÑÑ Ð²Ñ–Ð´Ñ–Ñлати до %s"
 
 # msgstr "E344: "
 msgid "E242: Can't split a window while closing another"
-msgstr "E242: Ðеможливо розбити вікно, поки закриваєтьÑÑ Ñ–Ð½ÑˆÐµ"
+msgstr "E242: Ðеможливо розщепити вікно, поки закриваєтьÑÑ Ñ–Ð½ÑˆÐµ"
 
 #, c-format
 msgid "E243: Argument not supported: \"-%s\"; Use the OLE version."
@@ -4879,7 +4927,7 @@ msgstr "E275: Ðеможливо додати текÑтову влаÑтивіÑÑ‚ÑŒ до вивантаженого буфера"
 
 #, c-format
 msgid "E276: Cannot use function as a method: %s"
-msgstr "E276: Ðе можна вжити функцію, Ñк метод: %s"
+msgstr "E276: Ðе можна вжити функцію Ñк метод: %s"
 
 msgid "E277: Unable to read a server reply"
 msgstr "E277: Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ відповідь Ñервера"
@@ -4887,13 +4935,6 @@ msgstr "E277: Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ відповідь Ñервера"
 msgid "E279: Sorry, ++shell is not supported on this system"
 msgstr "E279: Даруйте, ++shell не підтримуєтьÑÑ Ñƒ ній ÑиÑтемі"
 
-msgid ""
-"E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim."
-"org"
-msgstr ""
-"E280: ФÐТÐЛЬÐРПОМИЛКРTCL: можливо пошкоджено ÑпиÑок поÑилань!? Будь лаÑка, "
-"повідомте у vim-dev@vim.org"
-
 #, c-format
 msgid "E282: Cannot read from \"%s\""
 msgstr "E282: Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ з «%s»"
@@ -4928,14 +4969,6 @@ msgstr "E289: Метод вводу не підтримує відредаговані типи"
 msgid "E290: List or number required"
 msgstr "E290: Потрібен ÑпиÑок чи чиÑло"
 
-# msgstr "E177: "
-#, c-format
-msgid "E292: Invalid count for del_bytes(): %ld"
-msgstr "E292: Ðекоректна кількіÑÑ‚ÑŒ у del_bytes(): %ld"
-
-msgid "E293: Block was not locked"
-msgstr "E293: Блок не було зафікÑовано"
-
 # msgstr "E293: "
 msgid "E294: Seek error in swap file read"
 msgstr "E294: Помилка зміни позиції у файлі обміну"
@@ -4949,16 +4982,6 @@ msgstr "E296: Помилка зміни позиції під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñу у файл обміну"
 msgid "E297: Write error in swap file"
 msgstr "E297: Помилка запиÑу файлу обміну"
 
-msgid "E298: Didn't get block nr 0?"
-msgstr "E298: Ðемає блоку 0?"
-
-msgid "E298: Didn't get block nr 1?"
-msgstr "E298: Ðемає блоку 1?"
-
-# msgstr "E298: "
-msgid "E298: Didn't get block nr 2?"
-msgstr "E298: Ðемає блоку 2?"
-
 msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
 msgstr "E299: ОбчиÑÐ»ÐµÐ½Ð½Ñ Ð²Ð¸Ñ€Ð°Ð·Ñ–Ð² Perl заборонене у піÑочниці без Ð¼Ð¾Ð´ÑƒÐ»Ñ Safe"
 
@@ -4977,9 +5000,6 @@ msgstr "E302: Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ñ‚Ð¸ файлу обміну"
 msgid "E303: Unable to open swap file for \"%s\", recovery impossible"
 msgstr "E303: Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл обміну Ð´Ð»Ñ Â«%s», Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ"
 
-msgid "E304: ml_upd_block0(): Didn't get block 0??"
-msgstr "E304: ml_upd_block0(): Ðемає блоку 0??"
-
 #, c-format
 msgid "E305: No swap file found for %s"
 msgstr "E305: Ðе знайдено файлу обміну Ð´Ð»Ñ %s"
@@ -5019,52 +5039,13 @@ msgstr "E313: Ðе вдалоÑÑ Ð·Ð°Ð³Ð¾Ñ‚Ð¾Ð²Ð¸Ñ‚Ð¸, немає файлу обміну"
 msgid "E314: Preserve failed"
 msgstr "E314: Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ"
 
-# msgstr "E314: "
-#, c-format
-msgid "E315: ml_get: Invalid lnum: %ld"
-msgstr "E315: ml_get: Ðеправильний lnum: %ld"
-
-# msgstr "E315: "
-#, c-format
-msgid "E316: ml_get: Cannot find line %ld in buffer %d %s"
-msgstr "E316: ml_get: Ðе знайшов Ñ€Ñдок %ld у буфері %d %s"
-
-msgid "E317: Pointer block id wrong"
-msgstr "E317: Вказівник блоку помилковий"
-
-msgid "E317: Pointer block id wrong 2"
-msgstr "E317: Вказівник блоку помилковий 2"
-
-# msgstr "E316: "
-msgid "E317: Pointer block id wrong 3"
-msgstr "E317: Вказівник блоку помилковий 3"
-
-msgid "E317: Pointer block id wrong 4"
-msgstr "E317: Вказівник блоку помилковий 4"
-
-msgid "E318: Updated too many blocks?"
-msgstr "E318: Поновлено забагато блоків?"
-
 msgid "E319: Sorry, the command is not available in this version"
 msgstr "E319: Вибачте, цієї команди немає у цій верÑÑ–Ñ—"
 
 #, c-format
-msgid "E320: Cannot find line %ld"
-msgstr "E320: Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ñдок %ld"
-
-#, c-format
 msgid "E321: Could not reload \"%s\""
 msgstr "E321: Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ «%s»"
 
-#, c-format
-msgid "E322: Line number out of range: %ld past the end"
-msgstr "E322: Ðомер Ñ€Ñдка вийшов за межі: %ld за кінцем"
-
-# msgstr "E322: "
-#, c-format
-msgid "E323: Line count wrong in block %ld"
-msgstr "E323: КількіÑÑ‚ÑŒ Ñ€Ñдків у блоці %ld"
-
 msgid "E324: Can't open PostScript output file"
 msgstr "E324: Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл PostScript Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ"
 
@@ -5128,9 +5109,8 @@ msgstr "E338: Вибачте, але в конÑолі немає діалогу вибору файлу"
 msgid "E339: Pattern too long"
 msgstr "E339: Зразок занадто довгий"
 
-# msgstr "E340: "
-msgid "E341: Internal error: lalloc(0, )"
-msgstr "E341: Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: lalloc(0, )"
+msgid "E340: Internal error; if you can reproduce please report a bug"
+msgstr "E340: Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°; Ñкщо можете відтворити, будь лаÑка, повідомте"
 
 # msgstr "E341: "
 #, c-format
@@ -5194,9 +5174,6 @@ msgstr "E354: Ðеправильна назва регіÑтру: '%s'"
 msgid "E355: Unknown option: %s"
 msgstr "E355: Ðевідома опціÑ: %s"
 
-msgid "E356: get_varp ERROR"
-msgstr "E356: Помилка get_varp"
-
 # msgstr "E356: "
 #, c-format
 msgid "E357: 'langmap': Matching character missing for %s"
@@ -5217,7 +5194,7 @@ msgid "E362: Using a boolean value as a 
 msgstr "E362: Логічне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк Float"
 
 msgid "E363: Pattern uses more memory than 'maxmempattern'"
-msgstr "E363: Зразок викориÑтовує більше, ніж 'maxmempattern', пам'ÑÑ‚Ñ–"
+msgstr "E363: Зразок викориÑтовує більше пам’ÑÑ‚Ñ–, ніж 'maxmempattern'"
 
 #, c-format
 msgid "E364: Library call failed for \"%s()\""
@@ -5300,11 +5277,11 @@ msgstr "E383: Ðеправильний зразок Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ: %s"
 
 #, c-format
 msgid "E384: Search hit TOP without match for: %s"
-msgstr "E384: Пошук дійшов до ПОЧÐТКУ без збігів з %s"
+msgstr "E384: Пошук дійшов до ПОЧÐТКУ без збігів з: %s"
 
 #, c-format
 msgid "E385: Search hit BOTTOM without match for: %s"
-msgstr "E385: Пошук дійшов до КІÐЦЯ без збігів з %s"
+msgstr "E385: Пошук дійшов до КІÐЦЯ без збігів з: %s"
 
 msgid "E386: Expected '?' or '/'  after ';'"
 msgstr "E386: ПіÑÐ»Ñ `;' має бути `?' або `/'"
@@ -5438,6 +5415,9 @@ msgstr "E417: Пропущено аргумент: %s"
 msgid "E418: Illegal value: %s"
 msgstr "E418: Ðеправильне значеннÑ: %s"
 
+msgid "E418: I'm a teapot"
+msgstr "E418: Я — чайник"
+
 # msgstr "E418: "
 msgid "E419: FG color unknown"
 msgstr "E419: Ðевідомий колір текÑту"
@@ -5516,26 +5496,16 @@ msgstr "E436: Ðемає запиÑу «%s» про можливоÑÑ‚Ñ– терміналу"
 msgid "E437: Terminal capability \"cm\" required"
 msgstr "E437: Потрібна можливіÑÑ‚ÑŒ терміналу «cm»"
 
-msgid "E438: u_undo: Line numbers wrong"
-msgstr "E438: u_undo: Ðеправильні номери Ñ€Ñдків"
-
-msgid "E439: Undo list corrupt"
-msgstr "E439: СпиÑок ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾"
-
-# msgstr "E439: "
-msgid "E440: Undo line missing"
-msgstr "E440: ВідÑутній Ñ€Ñдок ÑкаÑуваннÑ"
-
 msgid "E441: There is no preview window"
 msgstr "E441: Ðемає вікна переглÑду"
 
 # msgstr "E441: "
 msgid "E442: Can't split topleft and botright at the same time"
-msgstr "E442: Ðе вдалоÑÑ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñно розбити topleft Ñ– botright"
+msgstr "E442: Ðе вдалоÑÑ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñно розщепити topleft Ñ– botright"
 
 # msgstr "E442: "
 msgid "E443: Cannot rotate when another window is split"
-msgstr "E443: Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñтити вікно, заважають інші"
+msgstr "E443: Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñтити по колу, інше вікно розщеплене"
 
 # msgstr "E443: "
 msgid "E444: Cannot close last window"
@@ -5631,7 +5601,7 @@ msgid "E467: Custom completion requires 
 msgstr "E467: КориÑтувацьке Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼Ð°Ð³Ð°Ñ” аргумент-функцію"
 
 msgid "E468: Completion argument only allowed for custom completion"
-msgstr "E468: Ðргумент дозволений тільки Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача"
+msgstr "E468: Ðргумент дозволений тільки Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувацького доповненнÑ"
 
 #, c-format
 msgid "E469: Invalid cscopequickfix flag %c for %c"
@@ -5646,9 +5616,6 @@ msgstr "E471: Ðеобхідно вказати аргумент"
 msgid "E472: Command failed"
 msgstr "E472: Команда на вдалаÑÑŒ"
 
-msgid "E473: Internal error in regexp"
-msgstr "E473: Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° у регулÑрному виразі"
-
 # msgstr "E14: "
 msgid "E474: Invalid argument"
 msgstr "E474: Ðекоректний аргумент"
@@ -5659,11 +5626,11 @@ msgstr "E475: Ðекоректний аргумент: %s"
 
 #, c-format
 msgid "E475: Invalid value for argument %s"
-msgstr "E475: Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ аргументі %s"
+msgstr "E475: Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ %s"
 
 #, c-format
 msgid "E475: Invalid value for argument %s: %s"
-msgstr "E475: Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ аргументі %s: %s"
+msgstr "E475: Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ %s: %s"
 
 # msgstr "E16: "
 msgid "E476: Invalid command"
@@ -5674,6 +5641,11 @@ msgstr "E476: Ðекоректна команда"
 msgid "E476: Invalid command: %s"
 msgstr "E476: Ðекоректна команда: %s"
 
+# msgstr "E16: "
+#, c-format
+msgid "E476: Invalid command: %s, expected %s"
+msgstr "E476: Ðекоректна команда: %s, очікуєтьÑÑ %s"
+
 # msgstr "E24: "
 msgid "E477: No ! allowed"
 msgstr "E477: ! не дозволено"
@@ -5719,6 +5691,10 @@ msgstr "E486: Зразок не знайдено: %s"
 msgid "E487: Argument must be positive"
 msgstr "E487: Ðргумент має бути додатний"
 
+#, c-format
+msgid "E487: Argument must be positive: %s"
+msgstr "E487: Ðргумент має бути додатний: %s"
+
 msgid "E488: Trailing characters"
 msgstr "E488: Ðадлишкові Ñимволи"
 
@@ -5775,6 +5751,9 @@ msgstr "Ðе придатний Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу"
 msgid "E503: \"%s\" is not a file or writable device"
 msgstr "E503: «%s» не файл або не приÑтрій Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу"
 
+msgid "E503: Coffee is currently not available"
+msgstr "E503: Кави поки що немає"
+
 msgid "is read-only (cannot override: \"W\" in 'cpoptions')"
 msgstr "лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ (неможливо обійти: «W» у 'cpoptions')"
 
@@ -5809,14 +5788,15 @@ msgid "E512: Close failed"
 msgstr "E512: Ðе вдалоÑÑ Ð·Ð°ÐºÑ€Ð¸Ñ‚Ð¸"
 
 msgid "E513: Write error, conversion failed (make 'fenc' empty to override)"
-msgstr "E513: Помилка запиÑу, ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ñ–Ñ Ð½Ðµ вдалаÑÑ (Ñкиньте 'fenc')"
-
-#, c-format
-msgid ""
-"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+msgstr "E513: Помилка запиÑу, Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ (Ñкиньте 'fenc')"
+
+#, c-format
+msgid ""
+"E513: Write error, conversion failed in line %ld (make 'fenc' empty to "
 "override)"
 msgstr ""
-"E513: Помилка запиÑу, ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ñ–Ñ Ð½Ðµ вдалаÑÑ Ñƒ Ñ€Ñдку %ld (Ñкиньте 'fenc')"
+"E513: Помилка запиÑу, Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ðµ вдалаÑÑ Ñƒ Ñ€Ñдку %ld (Ñкиньте 'fenc', "
+"щоб подолати)"
 
 msgid "E514: Write error (file system full?)"
 msgstr "E514: Помилка запиÑу (ÑкінчилоÑÑŒ вільне міÑце?)"
@@ -5927,7 +5907,7 @@ msgid "E547: Illegal mouseshape"
 msgstr "E547: Ðеправильний виглÑд миші"
 
 msgid "E548: Digit expected"
-msgstr "E548: Потрібна цифра"
+msgstr "E548: ОчікуєтьÑÑ Ñ†Ð¸Ñ„Ñ€Ð°"
 
 msgid "E549: Illegal percentage"
 msgstr "E549: Ðеправильний відÑоток"
@@ -5952,10 +5932,10 @@ msgstr "E554: СинтакÑична помилка в %s{...}"
 
 # msgstr "E424: "
 msgid "E555: At bottom of tag stack"
-msgstr "E555: Кінець Ñтеку міток"
+msgstr "E555: Ðа дні Ñтеку міток"
 
 msgid "E556: At top of tag stack"
-msgstr "E556: Вершина Ñтеку міток"
+msgstr "E556: Ðа вершині Ñтеку міток"
 
 msgid "E557: Cannot open termcap file"
 msgstr "E557: Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл можливоÑтей терміналів"
@@ -5997,9 +5977,6 @@ msgstr "E567: Жодного з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ–Ð· cscope"
 msgid "E568: Duplicate cscope database not added"
 msgstr "E568: Повторна база даних cscope не додана"
 
-msgid "E570: Fatal error in cs_manage_matches"
-msgstr "E570: Фатальна помилка в cs_manage_matches"
-
 msgid ""
 "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
 msgstr ""
@@ -6026,9 +6003,6 @@ msgstr "Пропущено '>'"
 msgid "Illegal register name"
 msgstr "Ðеправильна назва регіÑтру"
 
-msgid "E578: Not allowed to change text here"
-msgstr "E578: Змінювати текÑÑ‚ тут не дозволено"
-
 msgid "E579: :if nesting too deep"
 msgstr "E579: Занадто багато вкладених :if"
 
@@ -6133,7 +6107,7 @@ msgid "E609: Cscope error: %s"
 msgstr "E609: Помилка cscope: %s"
 
 msgid "E610: No argument to delete"
-msgstr "E610: Ðемає аргументів щоб видалити"
+msgstr "E610: Ðемає аргументів Ð´Ð»Ñ Ð·Ð½Ð¸Ñ‰ÐµÐ½Ð½Ñ"
 
 msgid "E611: Using a Special as a Number"
 msgstr "E611: Special вжито Ñк Number"
@@ -6145,6 +6119,18 @@ msgstr "E612: Визначено забагато надпиÑів"
 msgid "E613: Unknown printer font: %s"
 msgstr "E613: Ðевідомий шрифт принтера: %s"
 
+# msgstr "E396: "
+msgid "E614: Class required"
+msgstr "E614: Потрібен клаÑ"
+
+# msgstr "E396: "
+msgid "E615: Object required"
+msgstr "E615: Потрібен об’єкт"
+
+#, c-format
+msgid "E616: Object required for argument %d"
+msgstr "E616: Потрібен об’єкт в аргументі %d"
+
 msgid "E617: Cannot be changed in the GTK GUI"
 msgstr "E617: Ðе можна змінити в GUI GTK"
 
@@ -6182,6 +6168,15 @@ msgid "E626: Cannot get cscope database 
 msgstr "E626: Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ інформацію з бази даних cscope"
 
 #, c-format
+msgid "E627: Missing colon: %s"
+msgstr "E627: Бракує двокрапки: %s"
+
+# msgstr "E415: "
+#, c-format
+msgid "E628: Missing ! or / in: %s"
+msgstr "E628: Пропущено ! чи / у: %s"
+
+#, c-format
 msgid "E630: %s(): Write while not connected"
 msgstr "E630: %s(): Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¾ під’єднаннÑ"
 
@@ -6189,9 +6184,73 @@ msgstr "E630: %s(): Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¾ під’єднаннÑ"
 msgid "E631: %s(): Write failed"
 msgstr "E631: %s(): Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ"
 
+msgid "E632: Invalid buffer identifier in getLength"
+msgstr "E632: Ðекоректний ідентифікатор буфера у getLength"
+
+msgid "E633: Invalid buffer identifier in getText"
+msgstr "E633: Ðекоректний ідентифікатор буфера у getText"
+
+msgid "E634: Invalid buffer identifier in remove"
+msgstr "E634: Ðекоректний ідентифікатор буфера у delete"
+
+msgid "E635: Invalid buffer identifier in insert"
+msgstr "E635: Ðекоректний ідентифікатор буфера в insert"
+
+msgid "E636: Invalid buffer identifier in create"
+msgstr "E636: Ðекоректний ідентифікатор буфера у create"
+
+msgid "E637: Invalid buffer identifier in startDocumentListen"
+msgstr "E637: Ðекоректний ідентифікатор буфера у startDocumentListen"
+
+msgid "E638: Invalid buffer identifier in stopDocumentListen"
+msgstr "E638: Ðекоректний ідентифікатор буфера у stopDocumentListen"
+
+msgid "E639: Invalid buffer identifier in setTitle"
+msgstr "E639: Ðекоректний ідентифікатор буфера у setTitle"
+
+msgid "E640: Invalid buffer identifier in initDone"
+msgstr "E640: Ðекоректний ідентифікатор буфера в initDone"
+
+msgid "E641: Invalid buffer identifier in setBufferNumber"
+msgstr "E641: Ðекоректний ідентифікатор буфера у setBufferNumber"
+
+#, c-format
+msgid "E642: File %s not found in setBufferNumber"
+msgstr "E642: Файл %s не знайдено у setBufferNumber"
+
+msgid "E643: Invalid buffer identifier in setFullName"
+msgstr "E643: Ðекоректний ідентифікатор буфера у setFullName"
+
+msgid "E644: Invalid buffer identifier in editFile"
+msgstr "E644: Ðекоректний ідентифікатор буфера в editFile"
+
+msgid "E645: Invalid buffer identifier in setVisible"
+msgstr "E645: Ðекоректний ідентифікатор буфера у setVisible"
+
+msgid "E646: Invalid buffer identifier in setModified"
+msgstr "E646: Ðекоректний ідентифікатор буфера у setModified"
+
+msgid "E647: Invalid buffer identifier in setDot"
+msgstr "E647: Ðекоректний ідентифікатор буфера в setDot"
+
+msgid "E648: Invalid buffer identifier in close"
+msgstr "E648: Ðекоректний ідентифікатор буфера у close"
+
+msgid "E649: Invalid buffer identifier in close"
+msgstr "E649: Ðекоректний ідентифікатор буфера у close"
+
+msgid "E650: Invalid buffer identifier in defineAnnoType"
+msgstr "E650: Ðекоректний ідентифікатор буфера у defineAnnoType"
+
+msgid "E651: Invalid buffer identifier in addAnno"
+msgstr "E651: Ðекоректний ідентифікатор буфера в addAnno"
+
+msgid "E652: Invalid buffer identifier in getAnno"
+msgstr "E652: Ðекоректний ідентифікатор буфера в getAnno"
+
 #, c-format
 msgid "E654: Missing delimiter after search pattern: %s"
-msgstr "E654: Бракує розділювача піÑÐ»Ñ Ð·Ñ€Ð°Ð·ÐºÑƒ Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ: %s"
+msgstr "E654: Бракує роздільника піÑÐ»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ пошуку: %s"
 
 msgid "E655: Too many symbolic links (cycle?)"
 msgstr "E655: Забагато Ñимвольних поÑилань (цикл?)"
@@ -6264,8 +6323,9 @@ msgid "E675: No default font specified f
 msgstr "E675: Ðе зазначено шрифт Ð´Ð»Ñ Ð±Ð°Ð³Ð°Ñ‚Ð¾Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ друку."
 
 # msgstr "E217: "
-msgid "E676: No matching autocommands for acwrite buffer"
-msgstr "E676: Ðемає відповідних автокоманд"
+#, c-format
+msgid "E676: No matching autocommands for buftype=%s buffer"
+msgstr "E676: Ðемає відповідних автокоманд Ð´Ð»Ñ Ð±ÑƒÑ„ÐµÑ€Ð° buftype=%s"
 
 msgid "E677: Error writing temp file"
 msgstr "E677: Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати тимчаÑовий файл"
@@ -6309,7 +6369,7 @@ msgid "E688: More targets than List item
 msgstr "E688: Цілей більше, ніж елементів ÑпиÑку"
 
 msgid "E689: Can only index a List, Dictionary or Blob"
-msgstr "E689: ІндекÑний доÑтуп може бути тільки до List, Dicionary чи Blob"
+msgstr "E689: ІндекÑний доÑтуп може бути тільки до List, Dictionary чи Blob"
 
 msgid "E690: Missing \"in\" after :for"
 msgstr "E690: Пропущено «in» піÑÐ»Ñ :for"
@@ -6320,6 +6380,10 @@ msgstr "E691: СпиÑок можна порівнÑти тільки зі ÑпиÑком"
 msgid "E692: Invalid operation for List"
 msgstr "E692: Ðекоректна Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ð°Ð´ ÑпиÑком"
 
+#, c-format
+msgid "E693: List or Class required for argument %d"
+msgstr "E693: Потрібен List або Class в аргументі %d"
+
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: Ðекоректна Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ð°Ð´ функцією"
 
@@ -6362,7 +6426,11 @@ msgstr "E704: Ðазва змінної Funcref має починатиÑÑ Ð· великої літери: %s"
 
 #, c-format
 msgid "E705: Variable name conflicts with existing function: %s"
-msgstr "E705: Ðазва змінної Ñпівпадає з Ñ–Ñнуючою функцією: %s"
+msgstr "E705: Ðазва змінної Ñпівпадає з наÑвною функцією: %s"
+
+#, c-format
+msgid "E706: Argument of %s must be a List, String or Dictionary"
+msgstr "E706: Ðргумент у %s має бути List, String чи Dictionary"
 
 #, c-format
 msgid "E707: Function name conflicts with variable: %s"
@@ -6372,7 +6440,7 @@ msgid "E708: [:] must come last"
 msgstr "E708: [:] має бути оÑтанньою"
 
 msgid "E709: [:] requires a List or Blob value"
-msgstr "E709: [:] вимагає Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ List або Blob"
+msgstr "E709: [:] потребує List чи Blob"
 
 msgid "E710: List value has more items than targets"
 msgstr "E710: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ List має більше елементів, ніж цілить"
@@ -6392,7 +6460,7 @@ msgid "E714: List required"
 msgstr "E714: Потрібен ÑпиÑок"
 
 msgid "E715: Dictionary required"
-msgstr "E715: Потрібен Ñловник"
+msgstr "E715: Потрібен Dictionary"
 
 #, c-format
 msgid "E716: Key not present in Dictionary: \"%s\""
@@ -6816,15 +6884,12 @@ msgstr "E828: Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл Ñ–Ñторії Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу: %s"
 
 #, c-format
 msgid "E829: Write error in undo file: %s"
-msgstr "E829: Помилка запиÑу у файлі Ñ–Ñторії: %s"
+msgstr "E829: Помилка запиÑу в файл Ñ–Ñторії: %s"
 
 #, c-format
 msgid "E830: Undo number %ld not found"
 msgstr "E830: Зміну %ld не знайдено в Ñ–Ñторії"
 
-msgid "E831: bf_key_init() called with empty password"
-msgstr "E831: Викликано bf_key_init() з порожнім паролем"
-
 #, c-format
 msgid "E832: Non-encrypted file has encrypted undo file: %s"
 msgstr "E832: Ðе зашифрований файл має зашифрований файл Ñ–Ñторії: %s"
@@ -6854,7 +6919,7 @@ msgstr "E840: Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð·Ð½Ð¸Ñ‰Ð¸Ð»Ð° текÑÑ‚"
 
 msgid "E841: Reserved name, cannot be used for user defined command"
 msgstr ""
-"E841: Зарезервована назва, не можна викориÑтати Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ кориÑтувача"
+"E841: Зарезервована назва, не можна викориÑтати Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувацької команди"
 
 msgid "E842: No line number to use for \"<slnum>\""
 msgstr "E842: Ðемає номера Ñ€Ñдка, щоб викориÑтати з «<sfile>»"
@@ -6895,7 +6960,7 @@ msgid "E853: Duplicate argument name: %s
 msgstr "E853: Ðазва аргументу повторюєтьÑÑ: %s"
 
 msgid "E854: Path too long for completion"
-msgstr "E854: ШлÑÑ… занадто довгий Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ"
+msgstr "E854: ШлÑÑ… задовгий Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ"
 
 msgid "E855: Autocommands caused command to abort"
 msgstr "E855: Ðвтокоманди призвели до ÑкаÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸"
@@ -6905,7 +6970,7 @@ msgid ""
 "or two strings"
 msgstr ""
 "E856: Другий аргумент «assert_fails()» має бути текÑтовим Ñ€Ñдком чи ÑпиÑок з "
-"одним-двома текÑтовими Ñ€Ñдками"
+"одним-двома Ñимвольними Ñ€Ñдками"
 
 #, c-format
 msgid "E857: Dictionary key \"%s\" required"
@@ -6917,8 +6982,8 @@ msgstr "E858: Eval не повернув дійÑний об’єкт python"
 msgid "E859: Failed to convert returned python object to a Vim value"
 msgstr "E859: Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ об’єкт python у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ vim"
 
-msgid "E860: Need 'id' and 'type' with 'both'"
-msgstr "E860: Потрібні 'id' і 'type' у 'both'"
+msgid "E860: Need 'id' and 'type' or 'types' with 'both'"
+msgstr "E860: Потрібні 'id' і 'type' або 'types' із 'both'"
 
 msgid "E861: Cannot open a second popup with a terminal"
 msgstr "E861: Ðе можна відкрити ще одне Ñпливаюче вікно з допомогою терміналу"
@@ -6984,10 +7049,6 @@ msgstr ""
 msgid "E876: (NFA regexp) Not enough space to store the whole NFA"
 msgstr "E876: (NFA regexp) ÐедоÑтатньо пам’ÑÑ‚Ñ–, щоб зберегти веÑÑŒ NFA"
 
-#, c-format
-msgid "E877: (NFA regexp) Invalid character class: %d"
-msgstr "E877: (NFA regexp) Ðеправильний ÐºÐ»Ð°Ñ Ñимволу: %d"
-
 msgid "E878: (NFA regexp) Could not allocate memory for branch traversal!"
 msgstr "E878: (NFA regexp) Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ пам’ÑÑ‚ÑŒ Ð´Ð»Ñ Ð¾Ð±Ñ…Ð¾Ð´Ñƒ гілок!"
 
@@ -7008,8 +7069,7 @@ msgid ""
 "E883: Search pattern and expression register may not contain two or more "
 "lines"
 msgstr ""
-"E883: Шаблон пошуку Ñ– регіÑтровий вираз не можуть міÑтити два чи більше "
-"Ñ€Ñдків"
+"E883: Шаблон пошуку Ñ– регіÑÑ‚Ñ€ виразу не можуть міÑтити два чи більше Ñ€Ñдків"
 
 #, c-format
 msgid "E884: Function name cannot contain a colon: %s"
@@ -7032,14 +7092,14 @@ msgstr ""
 
 #, c-format
 msgid "E888: (NFA regexp) cannot repeat %s"
-msgstr "E888: (NFA regexp) не можна повторити %s"
+msgstr "E888: (NFA regexp) неможливо повторити %s"
 
 msgid "E889: Number required"
 msgstr "E889: Треба вказати Number"
 
 #, c-format
 msgid "E890: Trailing char after ']': %s]%s"
-msgstr "E890: Ðадлишкові Ñимволи піÑÐ»Ñ ']': %s]%s"
+msgstr "E890: Зайвий Ñимвол піÑÐ»Ñ ']': %s]%s"
 
 msgid "E891: Using a Funcref as a Float"
 msgstr "E891: Funcref вжито Ñк Float"
@@ -7101,8 +7161,8 @@ msgstr "E904: Третій аргумент у виклику має бути ÑпиÑком"
 msgid "E905: Received unknown command: %s"
 msgstr "E905: Отримано невідому команду: %s"
 
-msgid "E906: not an open channel"
-msgstr "E906: не відкритий канал"
+msgid "E906: Not an open channel"
+msgstr "E906: Це не відкритий канал"
 
 msgid "E907: Using a special value as a Float"
 msgstr "E907: Спеціальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк Float"
@@ -7110,7 +7170,7 @@ msgstr "E907: Спеціальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк Float"
 # msgstr "E373: "
 #, c-format
 msgid "E908: Using an invalid value as a String: %s"
-msgstr "E908: Ðеправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк String: %s"
+msgstr "E908: Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк String: %s"
 
 msgid "E909: Cannot index a special variable"
 msgstr "E909: Ðе можна індекÑувати Ñпеціальну змінну"
@@ -7147,7 +7207,7 @@ msgstr "E918: Буфер має бути завантажений: %s"
 
 #, c-format
 msgid "E919: Directory not found in '%s': \"%s\""
-msgstr "E919: Теку не знайдено: '%s': «%s»"
+msgstr "E919: Каталог не знайдено у '%s': «%s»"
 
 msgid "E920: _io file requires _name to be set"
 msgstr "E920: файл _io потребує вÑтановленого _name"
@@ -7156,14 +7216,11 @@ msgstr "E920: файл _io потребує вÑтановленого _name"
 msgid "E921: Invalid callback argument"
 msgstr "E921: Ðекоректний аргумент зворотного виклику"
 
-msgid "E922: Expected a dict"
-msgstr "E922: ОчікуєтьÑÑ dict"
-
 msgid "E923: Second argument of function() must be a list or a dict"
 msgstr "E923: Другий аргумент function() має бути ÑпиÑком чи Ñловником"
 
 msgid "E924: Current window was closed"
-msgstr "E924: Поточне вікно було закрито"
+msgstr "E924: Ðктивне вікно було закрито"
 
 msgid "E925: Current quickfix list was changed"
 msgstr "E925: СпиÑок quickfix змінивÑÑ"
@@ -7173,7 +7230,7 @@ msgstr "E926: Поточний ÑпиÑок міÑць змінивÑÑ"
 
 #, c-format
 msgid "E927: Invalid action: '%s'"
-msgstr "E927: Ðеправильна діÑ: '%s'"
+msgstr "E927: Ðеправильна діÑ: «%s»"
 
 # msgstr "E396: "
 msgid "E928: String required"
@@ -7198,11 +7255,11 @@ msgid "E933: Function was deleted: %s"
 msgstr "E933: Функцію видалено: %s"
 
 msgid "E934: Cannot jump to a buffer that does not have a name"
-msgstr "E934: Ðе можна перейти до буфера, Ñкий не має назви"
+msgstr "E934: Ðе можна перейти до буфера без назви"
 
 #, c-format
 msgid "E935: Invalid submatch number: %d"
-msgstr "E935: Ðеправильний номер під-збігу: %d"
+msgstr "E935: неправильний номер групи збігу: %d"
 
 msgid "E936: Cannot delete the current group"
 msgstr "E936: Ðе вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸ цю групу"
@@ -7229,9 +7286,6 @@ msgstr "E941: Сервер вже запущено"
 msgid "E942: +clientserver feature not available"
 msgstr "E942: можливіÑÑ‚ÑŒ +clientserver відÑутнÑ"
 
-msgid "E943: Command table needs to be updated, run 'make cmdidxs'"
-msgstr "E943: Таблицю команд потрібно поновити, запуÑÑ‚Ñ–Ñ‚ÑŒ 'make cmdidxs'"
-
 msgid "E944: Reverse range in character class"
 msgstr "E944: Зворотній діапазон у клаÑÑ– Ñимволів"
 
@@ -7246,10 +7300,10 @@ msgid "E947: Job still running in buffer
 msgstr "E947: Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ ще виконуєтьÑÑ Ñƒ буфері «%s»"
 
 msgid "E948: Job still running"
-msgstr "E948: Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ð¶Ðµ ще виконуєтьÑÑ"
+msgstr "E948: Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ñе ще виконуєтьÑÑ"
 
 msgid "E948: Job still running (add ! to end the job)"
-msgstr "E948: Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ñе ще виконуєтьÑÑ (додайте ! щоб закінчити)"
+msgstr "E948: Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ñе ще виконуєтьÑÑ (! щоб закінчити)"
 
 # msgstr "E79: "
 msgid "E949: File changed while writing"
@@ -7278,7 +7332,7 @@ msgid "E955: Not a terminal buffer"
 msgstr "E955: Ðе буфер терміналу"
 
 msgid "E956: Cannot use pattern recursively"
-msgstr "E956: Ðе можна вжити шаблон рекурÑивно"
+msgstr "E956: Ðе можна заÑтоÑувати шаблон рекурÑивно"
 
 msgid "E957: Invalid window number"
 msgstr "E957: Ðекоректний номер вікна"
@@ -7297,7 +7351,7 @@ msgstr "E961: Ðемає номера Ñ€Ñдка, щоб викориÑтати з «<sflnum>»"
 
 #, c-format
 msgid "E962: Invalid action: '%s'"
-msgstr "E962: Ðеправильна діÑ: '%s'"
+msgstr "E962: Ðеправильна діÑ: «%s»"
 
 #, c-format
 msgid "E963: Setting %s to value with wrong type"
@@ -7316,9 +7370,6 @@ msgstr "E965: Бракує назви типу влаÑтивоÑÑ‚Ñ–"
 msgid "E966: Invalid line number: %ld"
 msgstr "E966: Ðекоректний номер Ñ€Ñдка: %ld"
 
-msgid "E967: Text property info corrupted"
-msgstr "E967: Пошкоджена Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ‚ÐµÐºÑтової влаÑтивоÑÑ‚Ñ–"
-
 msgid "E968: Need at least one of 'id' or 'type'"
 msgstr "E968: Потрібно щонайменше одне з 'id' або 'type'"
 
@@ -7335,11 +7386,10 @@ msgid "E971: Property type %s does not e
 msgstr "E971: Тип влаÑтивоÑÑ‚Ñ– %s не Ñ–Ñнує"
 
 msgid "E972: Blob value does not have the right number of bytes"
-msgstr "E972: Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ð¸Ð¿Ñƒ Blob має неправильну кількіÑÑ‚ÑŒ байтів"
+msgstr "E972: Ðеправильна кількіÑÑ‚ÑŒ байтів у значенні Blob"
 
 msgid "E973: Blob literal should have an even number of hex characters"
-msgstr ""
-"E973: Буквальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Blob має мати парну кількіÑÑ‚ÑŒ шітнадцÑткових знаків"
+msgstr "E973: Ð—Ð°Ð¿Ð¸Ñ Blob повинен мати парну кількіÑÑ‚ÑŒ шіÑтнадцÑткових Ñимволів"
 
 msgid "E974: Using a Blob as a Number"
 msgstr "E974: Blob вжито Ñк Number"
@@ -7372,7 +7422,7 @@ msgstr "E982: ConPTY не доÑтупний"
 
 #, c-format
 msgid "E983: Duplicate argument: %s"
-msgstr "E983: Ðргументу повторюєтьÑÑ: %s"
+msgstr "E983: Ðргумент повторюєтьÑÑ: %s"
 
 msgid "E984: :scriptversion used outside of a sourced file"
 msgstr "E984: :scriptversion викориÑтано поза підчитуваним файлом"
@@ -7391,14 +7441,16 @@ msgid "E988: GUI cannot be used. Cannot 
 msgstr "E988: Ðе можна викориÑтати GUI. Ðе можна запуÑтити gvim.exe."
 
 msgid "E989: Non-default argument follows default argument"
-msgstr "E989: Обов’Ñзковий аргумент піÑÐ»Ñ Ð½ÐµÐ¾Ð±Ð¾Ð²â€™Ñзкового аргументу"
+msgstr ""
+"E989: Ðргумент без домовленого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ–ÑÐ»Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ з домовленим "
+"значеннÑм"
 
 #, c-format
 msgid "E990: Missing end marker '%s'"
-msgstr "E990: Бракує позначки ÐºÑ–Ð½Ñ†Ñ '%s'"
+msgstr "E990: Бракує позначки ÐºÑ–Ð½Ñ†Ñ Â«%s»"
 
 msgid "E991: Cannot use =<< here"
-msgstr "E991: Тут не можна вжити =<<"
+msgstr "E991: Тут не можна заÑтоÑувати =<<"
 
 msgid "E992: Not allowed in a modeline when 'modelineexpr' is off"
 msgstr "E992: Ðе дозволено у modeline, коли 'modelineexpr' вимкнено"
@@ -7411,7 +7463,7 @@ msgid "E994: Not allowed in a popup wind
 msgstr "E994: Ðе дозволено у Ñпливаючому вікні"
 
 msgid "E995: Cannot modify existing variable"
-msgstr "E995: Ðеможливо змінити вже задану змінну"
+msgstr "E995: Ðеможливо змінити наÑвну змінну"
 
 # msgstr "E443: "
 msgid "E996: Cannot lock a range"
@@ -7468,11 +7520,13 @@ msgstr "E1006: %s вжито Ñк аргумент"
 msgid "E1007: Mandatory argument after optional argument"
 msgstr "E1007: Обов’Ñзковий аргумент піÑÐ»Ñ Ð½ÐµÐ¾Ð±Ð¾Ð²â€™Ñзкового аргументу"
 
-msgid "E1008: Missing <type>"
-msgstr "E1008: Бракує <type>"
-
-msgid "E1009: Missing > after type"
-msgstr "E1009: Бракує > піÑÐ»Ñ Ñ‚Ð¸Ð¿Ñƒ"
+#, c-format
+msgid "E1008: Missing <type> after %s"
+msgstr "E1008: Бракує <type> піÑÐ»Ñ %s"
+
+#, c-format
+msgid "E1009: Missing > after type: %s"
+msgstr "E1009: Бракує > піÑÐ»Ñ Ñ‚Ð¸Ð¿Ñƒ: %s"
 
 # msgstr "E420: "
 #, c-format
@@ -7598,14 +7652,14 @@ msgid "E1038: \"vim9script\" can only be
 msgstr "E1038: «vim9script» можна вжити тільки у Ñкрипті"
 
 msgid "E1039: \"vim9script\" must be the first command in a script"
-msgstr "E1039: «vim9script» має бути першою командою в Ñкрипті"
+msgstr "E1039: «vim9script» має бути першою командою Ñкрипту"
 
 msgid "E1040: Cannot use :scriptversion after :vim9script"
 msgstr "E1040: Ðе можна вжити :scriptversion піÑÐ»Ñ :vim9script"
 
 #, c-format
 msgid "E1041: Redefining script item: \"%s\""
-msgstr "E1041: Повторне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ñкрипта: «%s»"
+msgstr "E1041: Повторне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ñкрипту: «%s»"
 
 # msgstr "E327: "
 msgid "E1042: Export can only be used in vim9script"
@@ -7626,7 +7680,7 @@ msgstr "E1047: СинтакÑична помилка у import: %s"
 
 #, c-format
 msgid "E1048: Item not found in script: %s"
-msgstr "E1048: Елемента не знайдено в Ñкрипті: %s"
+msgstr "E1048: Елемента не знайдено у Ñкрипті: %s"
 
 #, c-format
 msgid "E1049: Item not exported in script: %s"
@@ -7728,11 +7782,6 @@ msgstr "E1074: ПіÑÐ»Ñ ÐºÑ€Ð°Ð¿ÐºÐ¸ не дозволено пропуÑк"
 msgid "E1075: Namespace not supported: %s"
 msgstr "E1075: ПроÑÑ‚Ñ–Ñ€ імен не підтримуєтьÑÑ: %s"
 
-msgid "E1076: This Vim is not compiled with float support"
-msgstr ""
-"E1076: Ð¦Ñ Ð²ÐµÑ€ÑÑ–Ñ Vim не була Ñкомпільована з підтримкою чиÑел із плаваючою "
-"комою."
-
 #, c-format
 msgid "E1077: Missing argument type for %s"
 msgstr "E1077: Пропущено тип аргументу у %s"
@@ -7792,10 +7841,11 @@ msgstr "E1093: ОчікуєтьÑÑ %d елементи(ів) але Ñ” %d"
 
 # msgstr "E327: "
 msgid "E1094: Import can only be used in a script"
-msgstr "E1094: Import можна вжити тільки в Ñкрипті"
-
-msgid "E1095: Unreachable code after :return"
-msgstr "E1095: ÐедоÑÑжний код піÑÐ»Ñ :return"
+msgstr "E1094: Import можна вжити тільки у Ñкрипті"
+
+#, c-format
+msgid "E1095: Unreachable code after :%s"
+msgstr "E1095: ÐедоÑÑжний код піÑÐ»Ñ :%s"
 
 msgid "E1096: Returning a value in a function without a return type"
 msgstr "E1096: ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð· функції без типу поверненнÑ"
@@ -7834,43 +7884,39 @@ msgstr "E1104: Пропущено >"
 msgid "E1105: Cannot convert %s to string"
 msgstr "E1105: Ðеможливо перетворити %s у текÑтовий Ñ€Ñдок"
 
+#, c-format
 msgid "E1106: One argument too many"
-msgstr "E1106: Один аргумент забагато"
-
-#, c-format
-msgid "E1106: %d arguments too many"
-msgstr "E1106: %d аргументи(ів) забагато"
+msgid_plural "E1106: %d arguments too many"
+msgstr[0] "E1106: Ðа %d аргумент забагато"
+msgstr[1] "E1106: Ðа %d аргументи забагато"
+msgstr[2] "E1106: Ðа %d аргументів забагато"
 
 # msgstr "E396: "
 msgid "E1107: String, List, Dict or Blob required"
 msgstr "E1107: Потрібен String, List, Dict або Blob"
 
 #, c-format
-msgid "E1108: Item not found: %s"
-msgstr "E1108: Елемент не знайдено: %s"
-
-#, c-format
 msgid "E1109: List item %d is not a List"
 msgstr "E1109: Елемент %d ÑпиÑку не List"
 
 #, c-format
 msgid "E1110: List item %d does not contain 3 numbers"
-msgstr "E1110: Елемент %d ÑпиÑку не має 3 чиÑла"
+msgstr "E1110: Елемент %d ÑпиÑку не міÑтить 3 чиÑла"
 
 #, c-format
 msgid "E1111: List item %d range invalid"
-msgstr "E1111: Діапазон елементу %d ÑпиÑку некоректний"
+msgstr "E1111: Діапазон елемента %d ÑпиÑку некоректний"
 
 #, c-format
 msgid "E1112: List item %d cell width invalid"
-msgstr "E1112: Ширина комірки елементу %d ÑпиÑку некоректна"
+msgstr "E1112: Ширина комірки елемента %d ÑпиÑку некоректна"
 
 #, c-format
 msgid "E1113: Overlapping ranges for 0x%lx"
-msgstr "E1113: ÐŸÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ–Ð² у 0x%lx"
+msgstr "E1113: ÐÐ°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ–Ð² у 0x%lx"
 
 msgid "E1114: Only values of 0x80 and higher supported"
-msgstr "E1114: ПідтримуютьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0x80 Ñ– вищі"
+msgstr "E1114: ПідтримуютьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ 0x80 Ñ– вище"
 
 msgid "E1115: \"assert_fails()\" fourth argument must be a number"
 msgstr "E1115: Четвертий аргумент «assert_fails()» має бути чиÑлом"
@@ -7940,11 +7986,7 @@ msgid "E1135: Using a String as a Bool: 
 msgstr "E1135: String вжито Ñк Bool: «%s»"
 
 msgid "E1136: <Cmd> mapping must end with <CR> before second <Cmd>"
-msgstr "E1136: Заміна <Cmd> має завершитиÑÑ <CR> перед другою <Cmd>"
-
-#, c-format
-msgid "E1137: <Cmd> mapping must not include %s key"
-msgstr "E1137: Заміна <Cmd> не повинно міÑтити клавішу %s"
+msgstr "E1136: Заміна клавіш <Cmd> має завершитиÑÑ <CR> перед другою <Cmd>"
 
 msgid "E1138: Using a Bool as a Number"
 msgstr "E1138: Bool вжито Ñк Number"
@@ -8019,7 +8061,7 @@ msgid "E1158: Cannot use flatten() in Vi
 msgstr "E1158: Ðеможливо вжити flatten() у Ñкрипті Vim9, беріть flattennew()"
 
 msgid "E1159: Cannot split a window when closing the buffer"
-msgstr "E1159: Ðеможливо розбити вікно при закритті буфера"
+msgstr "E1159: Ðеможливо розщепити вікно при закритті буфера"
 
 msgid "E1160: Cannot use a default for variable arguments"
 msgstr "E1160: Ðеможливо задати початкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… аргументів"
@@ -8057,7 +8099,7 @@ msgstr "E1167: Ðазва аргументу затінює Ñ–Ñнуючу змінну: %s"
 
 #, c-format
 msgid "E1168: Argument already declared in the script: %s"
-msgstr "E1168: Ðргумент вже оголошено в Ñкрипті: %s"
+msgstr "E1168: Ðргумент вже оголошено у Ñкрипті: %s"
 
 #, c-format
 msgid "E1169: Expression too recursive: %s"
@@ -8079,7 +8121,7 @@ msgstr "E1173: ТрапивÑÑ Ñ‚ÐµÐºÑÑ‚ піÑÐ»Ñ %s: %s"
 # msgstr "E178: "
 #, c-format
 msgid "E1174: String required for argument %d"
-msgstr "E1174: У аргументі %d потрібен текÑтовий Ñ€Ñдок"
+msgstr "E1174: У аргументі %d потрібен String"
 
 #, c-format
 msgid "E1175: Non-empty string required for argument %d"
@@ -8138,12 +8180,12 @@ msgstr "E1188: Ðеможливо відкрити термінал з вікна командного Ñ€Ñдка"
 msgid "E1189: Cannot use :legacy with this command: %s"
 msgstr "E1189: Ðеможливо вжити :legacy з цією командою: %s"
 
+#, c-format
 msgid "E1190: One argument too few"
-msgstr "E1190: Бракує одного аргументу"
-
-#, c-format
-msgid "E1190: %d arguments too few"
-msgstr "E1190: Бракує %d аргументи(ів)"
+msgid_plural "E1190: %d arguments too few"
+msgstr[0] "E1190: Бракує %d аргументу"
+msgstr[1] "E1190: Бракує %d аргументи"
+msgstr[2] "E1190: Бракує %d аргументів"
 
 #, c-format
 msgid "E1191: Call to function that failed to compile: %s"
@@ -8189,14 +8231,14 @@ msgstr "E1203: Крапку можна вжити тільки із Ñловником: %s"
 
 #, c-format
 msgid "E1204: No Number allowed after .: '\\%%%c'"
-msgstr "E1204: Number не дозволене піÑÐ»Ñ .: '\\%%%c'"
+msgstr "E1204: Number не можна піÑÐ»Ñ .: '\\%%%c'"
 
 msgid "E1205: No white space allowed between option and"
 msgstr "E1205: ПропуÑк не дозволено між опцією Ñ–"
 
 #, c-format
 msgid "E1206: Dictionary required for argument %d"
-msgstr "E1206: Потрібен Ñловник у аргументі %d"
+msgstr "E1206: Потрібен Dictionary в аргументі %d"
 
 #, c-format
 msgid "E1207: Expression without an effect: %s"
@@ -8211,15 +8253,15 @@ msgstr "E1209: Ðекоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñдка: «%s»"
 
 #, c-format
 msgid "E1210: Number required for argument %d"
-msgstr "E1210: Потрібне чиÑло у аргументі %d"
+msgstr "E1210: Потрібне чиÑло в аргументі %d"
 
 #, c-format
 msgid "E1211: List required for argument %d"
-msgstr "E1211: Потрібен ÑпиÑок у аргументі %d"
+msgstr "E1211: Потрібен ÑпиÑок в аргументі %d"
 
 #, c-format
 msgid "E1212: Bool required for argument %d"
-msgstr "E1212: Потрібен Bool у аргументі %d"
+msgstr "E1212: Потрібен Bool в аргументі %d"
 
 #, c-format
 msgid "E1213: Redefining imported item \"%s\""
@@ -8227,11 +8269,11 @@ msgstr "E1213: Повторне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ елемента «%s»"
 
 #, c-format
 msgid "E1214: Digraph must be just two characters: %s"
-msgstr "E1214: Диграф має ÑкладатиÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ двох Ñимволів: %s"
+msgstr "E1214: Диграф має бути з двох Ñимволів: %s"
 
 #, c-format
 msgid "E1215: Digraph must be one character: %s"
-msgstr "E1215: Диграф має ÑкладатиÑÑ Ñ–Ð· одного Ñимволу: %s"
+msgstr "E1215: Диграф має бути одним Ñимволом: %s"
 
 msgid ""
 "E1216: digraph_setlist() argument must be a list of lists with two items"
@@ -8241,53 +8283,53 @@ msgstr ""
 
 #, c-format
 msgid "E1217: Channel or Job required for argument %d"
-msgstr "E1217: Потрібен Channel чи Job у аргументі %d"
+msgstr "E1217: Потрібен Channel чи Job в аргументі %d"
 
 #, c-format
 msgid "E1218: Job required for argument %d"
-msgstr "E1218: Потрібен Job у аргументі %d"
+msgstr "E1218: Потрібен Job в аргументі %d"
 
 # msgstr "E178: "
 #, c-format
 msgid "E1219: Float or Number required for argument %d"
-msgstr "E1219: Потрібен Float або Number у аргументі %d"
+msgstr "E1219: Потрібен Float або Number в аргументі %d"
 
 # msgstr "E396: "
 #, c-format
 msgid "E1220: String or Number required for argument %d"
-msgstr "E1220: Потрібен String або Number у аргументі %d"
+msgstr "E1220: Потрібен String або Number в аргументі %d"
 
 #, c-format
 msgid "E1221: String or Blob required for argument %d"
-msgstr "E1221: Потрібен String або Blob у аргументі %d"
+msgstr "E1221: Потрібен String або Blob в аргументі %d"
 
 #, c-format
 msgid "E1222: String or List required for argument %d"
-msgstr "E1222: Потрібен String або List у аргументі %d"
+msgstr "E1222: Потрібен String або List в аргументі %d"
 
 #, c-format
 msgid "E1223: String or Dictionary required for argument %d"
-msgstr "E1223: Потрібен String або Dictionary у аргументі %d"
+msgstr "E1223: Потрібен String або Dictionary в аргументі %d"
 
 #, c-format
 msgid "E1224: String, Number or List required for argument %d"
-msgstr "E1224: Потрібен String, Number або List у аргументі %d"
+msgstr "E1224: Потрібен String, Number або List в аргументі %d"
 
 #, c-format
 msgid "E1225: String, List or Dictionary required for argument %d"
-msgstr "E1225: Потрібен String, List або Dictionary у аргументі %d"
+msgstr "E1225: Потрібен String, List або Dictionary в аргументі %d"
 
 #, c-format
 msgid "E1226: List or Blob required for argument %d"
-msgstr "E1226: Потрібен List або Blob у аргументі %d"
+msgstr "E1226: Потрібен List або Blob в аргументі %d"
 
 #, c-format
 msgid "E1227: List or Dictionary required for argument %d"
-msgstr "E1227: Потрібен List або Dictionary у аргументі %d"
+msgstr "E1227: Потрібен List або Dictionary в аргументі %d"
 
 #, c-format
 msgid "E1228: List, Dictionary or Blob required for argument %d"
-msgstr "E1228: Потрібен List, Dictionary або Blob у аргументі %d"
+msgstr "E1228: Потрібен List, Dictionary або Blob в аргументі %d"
 
 #, c-format
 msgid "E1229: Expected dictionary for using key \"%s\", but got %s"
@@ -8369,25 +8411,21 @@ msgstr "E1250: Ðргумент у %s має бути List, String, Dictionary або Blob"
 
 #, c-format
 msgid "E1251: List, Dictionary, Blob or String required for argument %d"
-msgstr "E1251: List, Dictionary, Blob або String потрібен у аргументі %d"
+msgstr "E1251: List, Dictionary, Blob або String потрібен в аргументі %d"
 
 #, c-format
 msgid "E1252: String, List or Blob required for argument %d"
-msgstr "E1252: String, List або Blob потрібен у аргументі %d"
-
-#, c-format
-msgid "E1253: String expected for argument %d"
-msgstr "E1253: ОчікуєтьÑÑ String у аргументі %d"
+msgstr "E1252: String, List або Blob потрібен в аргументі %d"
 
 msgid "E1254: Cannot use script variable in for loop"
 msgstr "E1254: Ðеможливо вжити змінну Ñкрипту у циклі for"
 
 msgid "E1255: <Cmd> mapping must end with <CR>"
-msgstr "E1255: Заміна <Cmd> має закінчуватиÑÑ <CR>"
+msgstr "E1255: Заміна клавіш <Cmd> має закінчуватиÑÑ <CR>"
 
 #, c-format
 msgid "E1256: String or function required for argument %d"
-msgstr "E1256: Потрібен текÑтовий Ñ€Ñдок або Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ñƒ аргументі %d"
+msgstr "E1256: Потрібен текÑтовий Ñ€Ñдок або Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð² аргументі %d"
 
 #, c-format
 msgid "E1257: Imported script must use \"as\" or end in .vim: %s"
@@ -8456,7 +8494,7 @@ msgstr "E1271: КомпілÑÑ†Ñ–Ñ Ð·Ð°Ð¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð±ÐµÐ· контекÑту: %s"
 
 #, c-format
 msgid "E1272: Using type not in a script context: %s"
-msgstr "E1272: Тип вжито поза контекÑту Ñкрипту: %s"
+msgstr "E1272: Тип вжито поза контекÑтом Ñкрипту: %s"
 
 #, c-format
 msgid "E1273: (NFA regexp) missing value in '\\%%%c'"
@@ -8468,10 +8506,409 @@ msgstr "E1274: Ðемає назви файлу Ñкрипту Ð´Ð»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ «<script>»"
 msgid "E1275: String or function required for ->(expr)"
 msgstr "E1275: Потрібен текÑтовий Ñ€Ñдок або Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð´Ð»Ñ ->(expr)"
 
+#, c-format
+msgid "E1276: Illegal map mode string: '%s'"
+msgstr "E1276: Ðекоректний Ñ€Ñдок в режимі відображеннÑ: «%s»"
+
+msgid "E1277: Channel and job feature is not available"
+msgstr "E1277: МожливіÑÑ‚ÑŒ каналів Ñ– завдань недоÑтупна"
+
+#, c-format
+msgid "E1278: Stray '}' without a matching '{': %s"
+msgstr "E1278: Заблудла '}' без відповідної '{': %s"
+
+#, c-format
+msgid "E1279: Missing '}': %s"
+msgstr "E1279: Пропущено '}': %s"
+
+msgid "E1280: Illegal character in word"
+msgstr "E1280: Ðедозволений Ñимвол у Ñлові"
+
+#, c-format
+msgid "E1281: Atom '\\%%#=%c' must be at the start of the pattern"
+msgstr "E1281: Ðтом '\\%%#=%c' має бути на початку шаблону"
+
+msgid "E1282: Bitshift operands must be numbers"
+msgstr "E1282: Операнди бітового зÑуву мають бути чиÑлами"
+
+msgid "E1283: Bitshift amount must be a positive number"
+msgstr "E1283: ОбÑÑг бітового зÑуву має бути додатним чиÑлом"
+
+#, c-format
+msgid "E1284: Argument 1, list item %d: Dictionary required"
+msgstr "E1284: Ðргумент 1, елемент ÑпиÑку %d: потрібен Dictionary"
+
+#, c-format
+msgid "E1285: Could not clear timeout: %s"
+msgstr "E1285: Ðе вдалоÑÑ ÑкаÑувати таймер: %s"
+
+#, c-format
+msgid "E1286: Could not set timeout: %s"
+msgstr "E1286: Ðе вдалоÑÑ Ð²Ñтановити таймер: %s"
+
+#, c-format
+msgid "E1287: Could not set handler for timeout: %s"
+msgstr "E1287: Ðе вдалоÑÑ Ð²Ñтановити обробник таймера: %s"
+
+#, c-format
+msgid "E1288: Could not reset handler for timeout: %s"
+msgstr "E1288: Ðе вдалоÑÑ Ñкинути обробник таймера: %s"
+
+#, c-format
+msgid "E1289: Could not check for pending SIGALRM: %s"
+msgstr "E1289: Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ð¸Ñ‚Ð¸ очікуваний SIGALRM: %s"
+
+msgid "E1290: substitute nesting too deep"
+msgstr "E1290: Забагато вкладених замін"
+
+#, c-format
+msgid "E1291: Invalid argument: %ld"
+msgstr "E1291: Ðекоректний аргумент: %ld"
+
+msgid "E1292: Command-line window is already open"
+msgstr "E1292: Вікно командного Ñ€Ñдка вже відкрите"
+
+msgid "E1293: Cannot use a negative id after adding a textprop with text"
+msgstr ""
+"E1293: Ðе можна вживати негативний id піÑÐ»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ textprop з текÑтом"
+
+msgid "E1294: Can only use text_align when column is zero"
+msgstr "E1294: Можна вжити text_align тільки тоді, коли Ñтовпець нуль"
+
+msgid "E1295: Cannot specify both 'type' and 'types'"
+msgstr "E1295: Ðе можна задати одночаÑно 'type' Ñ– 'types'"
+
+msgid "E1296: Can only use left padding when column is zero"
+msgstr "E1296: Можна задати лівий відÑтуп тільки тоді, коли Ñтовпець нуль"
+
+#, c-format
+msgid "E1297: Non-NULL Dictionary required for argument %d"
+msgstr "E1297: Ð”Ð»Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ %d потрібен не-NULL Ñловник"
+
+#, c-format
+msgid "E1298: Non-NULL List required for argument %d"
+msgstr "E1298: Ð”Ð»Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñƒ %d потрібен не-NULL ÑпиÑок"
+
+msgid "E1299: Window unexpectedly closed while searching for tags"
+msgstr "E1299: Вікно неÑподівано закрилоÑÑ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ міток"
+
+msgid "E1300: Cannot use a partial with dictionary for :defer"
+msgstr "E1300: Ðеможливо вжити чаÑткову функцію зі Ñловником у :defer"
+
+#, c-format
+msgid "E1301: String, Number, List or Blob required for argument %d"
+msgstr "E1301: String, Number, List або Blob потрібен в аргументі %d"
+
+msgid "E1302: Script variable was deleted"
+msgstr "E1302: Змінну Ñкрипту було видалено"
+
+#, c-format
+msgid "E1303: Custom list completion function does not return a List but a %s"
+msgstr "E1303: ВлаÑна Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÑпиÑка повертає не ÑпиÑок, а %s"
+
+#, c-format
+msgid "E1304: Cannot use type with this variable: %s"
+msgstr "E1304: Ðе можна вжити тип із цією змінною: %s"
+
+msgid ""
+"E1305: Cannot use \"length\", \"end_col\" and \"end_lnum\" with \"text\""
+msgstr "E1305: Ðе можна викориÑтати «length», «end_col» Ñ– «end_lnum» у «text»"
+
+msgid "E1306: Loop nesting too deep"
+msgstr "E1306: Забагато вкладених циклів"
+
+#, c-format
+msgid "E1307: Argument %d: Trying to modify a const %s"
+msgstr "E1307: Ðргумент %d: Спроба зміни конÑтанти %s"
+
+msgid "E1308: Cannot resize a window in another tab page"
+msgstr "E1308: Ðеможливо змінити розмір вікна у іншій вкладці"
+
+msgid "E1309: Cannot change mappings while listing"
+msgstr "E1309: Ðеможливо змінити заміну при виведенні ÑпиÑку"
+
+msgid "E1310: Cannot change menus while listing"
+msgstr "E1310: Ðеможливо змінити меню при виведенні ÑпиÑку"
+
+msgid "E1311: Cannot change user commands while listing"
+msgstr "E1311: Ðеможливо змінити команду кориÑтувача при виведенні ÑпиÑку"
+
+msgid "E1312: Not allowed to change the window layout in this autocmd"
+msgstr "E1312: Ðе дозволено змінити Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–ÐºÐ¾Ð½ у цій автокоманді"
+
+#, c-format
+msgid "E1313: Not allowed to add or remove entries (%s)"
+msgstr "E1313: Ðе дозволено додавати або прибирати елементи (%s)"
+
+# msgstr "E182: "
+#, c-format
+msgid "E1314: Class name must start with an uppercase letter: %s"
+msgstr "E1314: Ðазва клаÑу має починатиÑÑ Ð· великої літери: %s"
+
+#, c-format
+msgid "E1315: White space required after name: %s"
+msgstr "E1315: Потрібен пропуÑк піÑÐ»Ñ Ð½Ð°Ð·Ð²Ð¸: %s"
+
+# msgstr "E327: "
+msgid "E1316: Class can only be defined in Vim9 script"
+msgstr "E1316: ÐšÐ»Ð°Ñ Ð¼Ð¾Ð¶Ð½Ð° визначити тільки у Ñкрипті Vim9"
+
+#, c-format
+msgid "E1317: Invalid object member declaration: %s"
+msgstr "E1317: Ðекоректне Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð½Ñ Ñ‡Ð»ÐµÐ½Ð° об’єкта: %s"
+
+# msgstr "E181: "
+#, c-format
+msgid "E1318: Not a valid command in a class: %s"
+msgstr "E1318: Ðекоректна команда в клаÑÑ–: %s"
+
+msgid "E1319: Using a class as a Number"
+msgstr "E1319: ÐšÐ»Ð°Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк Number"
+
+msgid "E1320: Using an object as a Number"
+msgstr "E1320: Об’єкт вжито Ñк Number"
+
+msgid "E1321: Using a class as a Float"
+msgstr "E1321: ÐšÐ»Ð°Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк Float"
+
+msgid "E1322: Using an object as a Float"
+msgstr "E1322: Об’єкт вжито Ñк Float"
+
+# msgstr "E373: "
+msgid "E1323: Using a class as a String"
+msgstr "E1323: ÐšÐ»Ð°Ñ Ð²Ð¶Ð¸Ñ‚Ð¾ Ñк String"
+
+msgid "E1324: Using an object as a String"
+msgstr "E1324: Об’єкт вжито Ñк String"
+
+#, c-format
+msgid "E1325: Method not found on class \"%s\": %s"
+msgstr "E1325: Метод не знайдено в клаÑÑ– «%s»: %s"
+
+#, c-format
+msgid "E1326: Member not found on object \"%s\": %s"
+msgstr "E1326: Член не знайдено в об’єкті «%s»: %s"
+
+# msgstr "E178: "
+#, c-format
+msgid "E1327: Object required, found %s"
+msgstr "E1327: Потрібен об’єкт, трапивÑÑ %s"
+
+#, c-format
+msgid "E1328: Constructor default value must be v:none: %s"
+msgstr "E1328: Початкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñтруктора має бути v:none: %s"
+
+#, c-format
+msgid "E1329: Cannot get object member type from initializer: %s"
+msgstr "E1329: Ðе можна діÑтати тип члена об’єкта з ініціалізатора: %s"
+
+#, c-format
+msgid "E1330: Invalid type for object member: %s"
+msgstr "E1330: Ðекоректний тип Ð´Ð»Ñ Ñ‡Ð»ÐµÐ½Ð° об’єкта: %s"
+
+msgid "E1331: Public must be followed by \"this\" or \"static\""
+msgstr "E1331: За public має йти «this» або «static»"
+
+#, c-format
+msgid "E1332: Public member name cannot start with underscore: %s"
+msgstr ""
+"E1332: Ðазва відкритого члена (public) не може починатиÑÑ Ñ–Ð· підкреÑленнÑ: %s"
+
+#, c-format
+msgid "E1333: Cannot access private member: %s"
+msgstr "E1333: Ðеможливо доÑтупитиÑÑ Ð´Ð¾ приватного члена: %s"
+
+# msgstr "E333: "
+#, c-format
+msgid "E1334: Object member not found: %s"
+msgstr "E1334: Член об’єкта не знайдено: %s"
+
+#, c-format
+msgid "E1335: Member is not writable: %s"
+msgstr "E1335: Член не доÑтупний Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу: %s"
+
+# msgstr "E333: "
+#, c-format
+msgid "E1337: Class member not found: %s"
+msgstr "E1337: Член клаÑу не знайдено: %s"
+
+#, c-format
+msgid "E1338: Member not found on class \"%s\": %s"
+msgstr "E1338: Член не знайдено в клаÑÑ– «%s»: %s"
+
+msgid ""
+"E1339: Cannot add a textprop with text after using a textprop with a "
+"negative id"
+msgstr ""
+"E1339: Ðе можна додати textprop з текÑтом піÑÐ»Ñ Ð²Ð¶Ð¸Ñ‚ÐºÑƒ textprop з від’ємним "
+"id"
+
+#, c-format
+msgid "E1340: Argument already declared in the class: %s"
+msgstr "E1340: Ðргумент вже оголошено у клаÑÑ–: %s"
+
+#, c-format
+msgid "E1341: Variable already declared in the class: %s"
+msgstr "E1341: Змінну вже оголошено у клаÑÑ–: %s"
+
+# msgstr "E327: "
+msgid "E1342: Interface can only be defined in Vim9 script"
+msgstr "E1342: Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¼Ð¾Ð¶Ð½Ð° визначити тільки у Ñкрипті Vim9"
+
+# msgstr "E182: "
+#, c-format
+msgid "E1343: Interface name must start with an uppercase letter: %s"
+msgstr "E1343: Ðазва інтерфейÑу повинна починатиÑÑ Ð· великої літери: %s"
+
+msgid "E1344: Cannot initialize a member in an interface"
+msgstr "E1344: Ðеможливо ініціалізувати член в інтерфейÑÑ–"
+
+#, c-format
+msgid "E1345: Not a valid command in an interface: %s"
+msgstr "E1345: Ðекоректна команда в інтерфейÑÑ–: %s"
+
+#, c-format
+msgid "E1346: Interface name not found: %s"
+msgstr "E1346: Ðазву інтерфейÑу не знайдено: %s"
+
+#, c-format
+msgid "E1347: Not a valid interface: %s"
+msgstr "E1347: Ðекоректний інтерфейÑ: %s"
+
+#, c-format
+msgid "E1348: Member \"%s\" of interface \"%s\" not implemented"
+msgstr "E1348: Член «%s» інтерфейÑу «%s» не втілено"
+
+#, c-format
+msgid "E1349: Function \"%s\" of interface \"%s\" not implemented"
+msgstr "E1349: Функцію «%s» інтерфейÑу «%s» не втілено"
+
+msgid "E1350: Duplicate \"implements\""
+msgstr "E1350: ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ Â«implements»"
+
+#, c-format
+msgid "E1351: Duplicate interface after \"implements\": %s"
+msgstr "E1351: Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑÑ Ð¿Ñ–ÑÐ»Ñ Â«implements»: %s"
+
+msgid "E1352: Duplicate \"extends\""
+msgstr "E1352: ПовторюєтьÑÑ Â«extends»"
+
+# msgstr "E333: "
+#, c-format
+msgid "E1353: Class name not found: %s"
+msgstr "E1353: Ðазву клаÑу не знайдено: %s"
+
+#, c-format
+msgid "E1354: Cannot extend %s"
+msgstr "E1354: Ðеможливо розширити %s"
+
+#, c-format
+msgid "E1355: Duplicate function: %s"
+msgstr "E1355: Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑÑ: %s"
+
+msgid "E1356: \"super\" must be followed by a dot"
+msgstr "E1356: За «super» має йти крапка"
+
+msgid "E1357: Using \"super\" not in a class function"
+msgstr "E1357: «super» вжито поза функцією клаÑу"
+
+msgid "E1358: Using \"super\" not in a child class"
+msgstr "E1358: «super» вжито не в похідному клаÑÑ–"
+
+msgid "E1359: Cannot define a \"new\" function in an abstract class"
+msgstr "E1359: Ðеможливо визначити функцію «new» в абÑтрактному клаÑÑ–"
+
+msgid "E1360: Using a null object"
+msgstr "E1360: ЗаÑтоÑовано об’єкт null"
+
+msgid "E1361: Cannot use color \"none\", did you mean \"NONE\"?"
+msgstr "E1361: Ðеможливо вжити колір «none», може, «NONE»?"
+
+msgid "E1362: Cannot use a non-null object"
+msgstr "E1362: Ðеможливо викориÑтати не-null об’єкт"
+
+msgid "E1363: Incomplete type"
+msgstr "E1363: Ðеповний тип"
+
+msgid "E1364: Warning: Pointer block corrupted"
+msgstr "E1364: ПопередженнÑ: Пошкоджено блок вказівника"
+
+msgid "E1365: Cannot use a return type with the \"new\" function"
+msgstr "E1365: Ðеможливо вжити тип Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ñƒ функції «new»"
+
+#, c-format
+msgid "E1400: Cannot mix positional and non-positional arguments: %s"
+msgstr "E1400: Ðеможливо змішувати позиційні й непозиційні аргументи: %s"
+
+#, c-format
+msgid "E1401: format argument %d unused in $-style format: %s"
+msgstr "E1401: аргумент %d формату не викориÑтано у $-форматуванні: %s"
+
+#, c-format
+msgid ""
+"E1402: Positional argument %d used as field width reused as different type: "
+"%s/%s"
+msgstr ""
+"E1402: Позиційний аргумент %d, що задає ширину полÑ, вжито Ñк інший тип: %s/"
+"%s"
+
+#, c-format
+msgid "E1403: Positional argument %d out of bounds: %s"
+msgstr "E1403: Позиційний аргумент %d поза межами: %s"
+
+#, c-format
+msgid "E1404: Positional argument %d type used inconsistently: %s/%s"
+msgstr "E1404: Тип позиційного аргументу %d вжито нерегулÑрно: %s/%s"
+
+#, c-format
+msgid "E1405: Invalid format specifier: %s"
+msgstr "E1405: Ðекоректний Ñпецифікатор формату: %s"
+
+#, c-format
+msgid "E1406: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1406: Член «%s»: неÑÐ¿Ñ–Ð²Ð¿Ð°Ð´Ñ–Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ñ–Ð², очікуєтьÑÑ %s, а отримано %s"
+
+#, c-format
+msgid "E1407: Member \"%s\": type mismatch, expected %s but got %s"
+msgstr "E1407: Член «%s»: неÑÐ¿Ñ–Ð²Ð¿Ð°Ð´Ñ–Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ñ–Ð², очікуєтьÑÑ %s, а отримано %s"
+
 # msgstr "E447: "
 msgid "--No lines in buffer--"
 msgstr "--Жодного Ñ€Ñдка--"
 
+msgid "int"
+msgstr "int"
+
+msgid "long int"
+msgstr "long int"
+
+msgid "long long int"
+msgstr "long long int"
+
+msgid "unsigned int"
+msgstr "unsigned int"
+
+msgid "unsigned long int"
+msgstr "unsigned long int"
+
+msgid "unsigned long long int"
+msgstr "unsigned long long int"
+
+msgid "pointer"
+msgstr "pointer"
+
+msgid "percent"
+msgstr "percent"
+
+msgid "char"
+msgstr "char"
+
+msgid "string"
+msgstr "string"
+
+msgid "float"
+msgstr "float"
+
 msgid "search hit TOP, continuing at BOTTOM"
 msgstr "Пошук дійшов до ПОЧÐТКУ, продовжуєтьÑÑ Ð· КІÐЦЯ"
 
@@ -8799,20 +9236,21 @@ msgstr "Vim"
 
 # msgstr "E444: "
 msgid "(local to window)"
-msgstr "(ÑтоÑуєтьÑÑ Ð²Ñ–ÐºÐ½Ð°)"
+msgstr "(тільки у вікні)"
 
 msgid "(local to buffer)"
-msgstr "(ÑтоÑуєтьÑÑ Ð±ÑƒÑ„ÐµÑ€Ð°)"
+msgstr "(тільки в буфері)"
 
 msgid "(global or local to buffer)"
-msgstr "(глобально або ÑтоÑуєтьÑÑ Ð±ÑƒÑ„ÐµÑ€Ð°)"
+msgstr "(вÑюди або тільки в буфері)"
 
 msgid ""
 "\" Each \"set\" line shows the current value of an option (on the left)."
-msgstr "\" Кожен Ñ€Ñдок «set» показує актуальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð¿Ñ†Ñ–Ñ— (ліворуч)."
+msgstr ""
+"\" Кожен Ñ€Ñдок «set» показує теперішнє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð¿Ñ†Ñ–Ñ— (ліворуч)."
 
 msgid "\" Hit <Enter> on a \"set\" line to execute it."
-msgstr "\" ÐатиÑніть <Enter> на Ñ€Ñдку «set» щоб виконати."
+msgstr "\" ÐатиÑніть <Enter> у Ñ€Ñдку «set» щоб виконати."
 
 msgid "\"            A boolean option will be toggled."
 msgstr "\"            Опцію-перемикач буде перемкнено."
@@ -8830,10 +9268,10 @@ msgstr ""
 "цю опцію."
 
 msgid "\" Hit <Enter> on an index line to jump there."
-msgstr "\" ÐатиÑніть <Enter> на Ñ€Ñдку з індекÑом щоб туди переÑтрибнути."
+msgstr "\" ÐатиÑніÑÑ‚ÑŒ <Enter> на Ñ€Ñдку вказівника щоб туди переÑтрибнути."
 
 msgid "\" Hit <Space> on a \"set\" line to refresh it."
-msgstr "\" ÐатиÑніть <Space> на Ñ€Ñдку «set» щоб оновити."
+msgstr "\" ÐатиÑніть <Пробіл> на Ñ€Ñдку «set» Ð´Ð»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ."
 
 msgid "important"
 msgstr "важливо"
@@ -8848,38 +9286,38 @@ msgid "use Insert mode as the default mo
 msgstr "режим Insert Ñк початковий режим"
 
 msgid "paste mode, insert typed text literally"
-msgstr "режим вÑтавлÑннÑ, вÑтавити набраний текÑÑ‚ буквально"
+msgstr "режим вклеюваннÑ, вÑтавити набраний текÑÑ‚ буквально"
 
 msgid "key sequence to toggle paste mode"
-msgstr "поÑлідовніÑÑ‚ÑŒ клавіш Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ вÑтавлÑннÑ"
+msgstr "поÑлідовніÑÑ‚ÑŒ клавіш Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ вклеюваннÑ"
 
 msgid "list of directories used for runtime files and plugins"
-msgstr "ÑпиÑок директорій Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² чаÑу Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ– плагінів"
+msgstr "ÑпиÑок директорій з файлами чаÑу Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ– плагінами"
 
 msgid "list of directories used for plugin packages"
-msgstr "ÑпиÑок директорій Ð´Ð»Ñ Ð¿Ð°ÐºÑƒÐ½ÐºÑ–Ð² плагінів"
+msgstr "ÑпиÑок директорій з пакунками плагінів"
 
 msgid "name of the main help file"
-msgstr "назва головного файла допомоги"
+msgstr "назва головного файлу допомоги"
 
 msgid "moving around, searching and patterns"
 msgstr "переміщеннÑ, пошук Ñ– шаблони"
 
 msgid "list of flags specifying which commands wrap to another line"
-msgstr "ÑпиÑок прапорців, Ñкі визначають команди, що переноÑÑÑ‚ÑŒ на новий Ñ€Ñдок"
+msgstr "ÑпиÑок прапорців, Ñкі задають, котрі команди переноÑÑÑ‚ÑŒ на новий Ñ€Ñдок"
 
 msgid ""
 "many jump commands move the cursor to the first non-blank\n"
 "character of a line"
 msgstr ""
 "багато команд Ñтрибків переміщують курÑор до першого непорожнього\n"
-"Ñимвола Ñ€Ñдка"
+"Ñимволу Ñ€Ñдка"
 
 msgid "nroff macro names that separate paragraphs"
 msgstr "назви макроÑів nroff, Ñкі розділÑÑŽÑ‚ÑŒ параграфи"
 
 msgid "nroff macro names that separate sections"
-msgstr "назви макроÑів nroff, Ñкі розділÑÑŽÑ‚ÑŒ розділи"
+msgstr "назви макроÑів nroff, що розділÑÑŽÑ‚ÑŒ розділи"
 
 msgid "list of directory names used for file searching"
 msgstr "ÑпиÑок назв директорій Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ файлів"
@@ -8900,19 +9338,19 @@ msgid "search commands wrap around the e
 msgstr "команди пошуку починають Ñпочатку піÑÐ»Ñ ÐºÑ–Ð½Ñ†Ñ Ð±ÑƒÑ„ÐµÑ€Ð°"
 
 msgid "show match for partly typed search command"
-msgstr "показувати збіг Ð´Ð»Ñ Ñ‡Ð°Ñтково набраної команди пошуку"
+msgstr "показувати збіг чаÑтково набраної команди пошуку"
 
 msgid "change the way backslashes are used in search patterns"
-msgstr "помінÑти ÑпоÑіб вжитку зворотних коÑих риÑок у шаблонах пошуку"
+msgstr "змінити ÑпоÑіб вжитку \\ у шаблонах пошуку"
 
 msgid "select the default regexp engine used"
-msgstr "вибрати оÑновний механізм регулÑрних виразів"
+msgstr "вибрати оÑновний рушій регулÑрних виразів"
 
 msgid "ignore case when using a search pattern"
-msgstr "ігнорувати регіÑÑ‚Ñ€ Ñимволів у шаблоні пошуку"
+msgstr "нехтувати регіÑтром у шаблоні пошуку"
 
 msgid "override 'ignorecase' when pattern has upper case characters"
-msgstr "перевизначити 'ignorecase', коли шаблон має Ñимволи верхнього регіÑтру"
+msgstr "відкинути 'ignorecase', коли шаблон має Ñимволи верхнього регіÑтру"
 
 msgid "what method to use for changing case of letters"
 msgstr "Ñкий метод викориÑтати Ð´Ð»Ñ Ð·Ð¼Ñ–Ð½Ð¸ регіÑтру букв"
@@ -8940,7 +9378,7 @@ msgid "number of significant characters 
 msgstr "кількіÑÑ‚ÑŒ значущих Ñимволів у назві мітки або нуль"
 
 msgid "list of file names to search for tags"
-msgstr "ÑпиÑок назв файлів пошуку міток"
+msgstr "ÑпиÑок назв файлів Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ міток"
 
 msgid ""
 "how to handle case when searching in tags files:\n"
@@ -8989,6 +9427,9 @@ msgstr "Ð¿Ð¾ÐºÐ°Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐºÑту"
 msgid "number of lines to scroll for CTRL-U and CTRL-D"
 msgstr "кількіÑÑ‚ÑŒ Ñ€Ñдків Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ CTRL-U Ñ– CTRL-D"
 
+msgid "scroll by screen line"
+msgstr "прокручувати по Ñ€Ñдках на екрані"
+
 msgid "number of screen lines to show around the cursor"
 msgstr "кількіÑÑ‚ÑŒ екранних Ñ€Ñдків, Ñкі показувати навколо курÑору"
 
@@ -8996,7 +9437,7 @@ msgid "long lines wrap"
 msgstr "перенеÑÐµÐ½Ð½Ñ Ð´Ð¾Ð²Ð³Ð¸Ñ… Ñ€Ñдків"
 
 msgid "wrap long lines at a character in 'breakat'"
-msgstr "переноÑити довгі Ñ€Ñдки на Ñимволах у 'breakat'"
+msgstr "переноÑити довгі Ñ€Ñдки по Ñимволах у 'breakat'"
 
 msgid "preserve indentation in wrapped text"
 msgstr "зберегти відÑтупи у перенеÑеному текÑÑ‚Ñ–"
@@ -9009,7 +9450,7 @@ msgstr "Ñкі Ñимволи можуть Ñпричинити Ñ€Ð¾Ð·Ð±Ð¸Ñ‚Ñ‚Ñ Ñ€Ñдка"
 
 msgid "string to put before wrapped screen lines"
 msgstr ""
-"поÑлідовніÑÑ‚ÑŒ Ñимволів, Ñкі розміÑтити перед перенеÑеними екранними Ñ€Ñдками"
+"Ñимволи, Ñкі розміÑтити перед перенеÑеними екранними Ñ€Ñдками"
 
 msgid "minimal number of columns to scroll horizontally"
 msgstr "найменша кількіÑÑ‚ÑŒ Ñтовпців горизонтального прокручуваннÑ"
@@ -9022,8 +9463,8 @@ msgid ""
 "include \"lastline\" to show the last line even if it doesn't fit\n"
 "include \"uhex\" to show unprintable characters as a hex number"
 msgstr ""
-"додайте «lastline» щоб показувати оÑтанній Ñ€Ñдок навіть Ñкщо він не влазить\n"
-"додайте «uhex» щоб показувати недруковні Ñимволи Ñк шіÑтнадцÑткові чиÑла"
+"додайте «lastline» щоб показати оÑтанній Ñ€Ñдок навіть Ñкщо він не влазить\n"
+"додайте «uhex» щоб показати недруковні Ñимволи Ñк шіÑтнадцÑткові чиÑла"
 
 msgid "characters to use for the status line, folds and filler lines"
 msgstr "Ñимволи Ð´Ð»Ñ Ñ€Ñдка Ñтану, згорток Ñ– заповнювачів"
@@ -9072,7 +9513,7 @@ msgid "controls whether concealable text
 msgstr "контролює Ð¿Ñ€Ð¸Ñ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¼Ð°Ñкованого текÑту"
 
 msgid "modes in which text in the cursor line can be concealed"
-msgstr "режими, в Ñких текÑÑ‚ в Ñ€Ñдку з курÑором замаÑкуєтьÑÑ"
+msgstr "режими, в Ñких текÑÑ‚ в Ñ€Ñдку з курÑором маÑкуєтьÑÑ"
 
 msgid "syntax, highlighting and spelling"
 msgstr "ÑинтакÑиÑ, підÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– орфографіÑ"
@@ -9081,13 +9522,13 @@ msgid "\"dark\" or \"light\"; the backgr
 msgstr "«dark» або «light»; ÑÑкравіÑÑ‚ÑŒ кольору фону"
 
 msgid "type of file; triggers the FileType event when set"
-msgstr "тип файлу; коли вÑтановлено, активувати подію FileType"
+msgstr "тип файлу; запуÑкає подію FileType при вÑтановленні"
 
 msgid "name of syntax highlighting used"
 msgstr "назва Ñхеми підÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ ÑинтакÑиÑу"
 
 msgid "maximum column to look for syntax items"
-msgstr "найбільший Ñтовпець Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ елементів ÑинтакÑиÑу"
+msgstr "крайній Ñтовпець Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ елементів ÑинтакÑиÑу"
 
 msgid "which highlighting to use for various occasions"
 msgstr "Ñке підÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°ÑтоÑовувати у різних випадках"
@@ -9121,7 +9562,7 @@ msgid "list of accepted languages"
 msgstr "ÑпиÑок мов перевірки орфографії"
 
 msgid "file that \"zg\" adds good words to"
-msgstr "файл, у Ñкий команда \"zg\" додає хороші Ñлова"
+msgstr "файл, у Ñкий команда «zg» додає хороші Ñлова"
 
 msgid "pattern to locate the end of a sentence"
 msgstr "шаблон Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ ÐºÑ–Ð½Ñ†Ñ Ñ€ÐµÑ‡ÐµÐ½Ð½Ñ"
@@ -9142,7 +9583,7 @@ msgid "0, 1 or 2; when to use a status l
 msgstr "0, 1 або 2; коли показувати Ñ€Ñдок Ñтану в оÑтанньому вікні"
 
 msgid "alternate format to be used for a status line"
-msgstr "альтернативний формат Ñ€Ñдка Ñтану"
+msgstr "змінний формат Ñ€Ñдка Ñтану"
 
 msgid "make all windows the same size when adding/removing windows"
 msgstr "зробити вÑÑ– вікна однакового розміру при додаванні/закритті вікон"
@@ -9193,6 +9634,9 @@ msgstr ""
 msgid "a new window is put below the current one"
 msgstr "нове вікно розміщуєтьÑÑ Ð¿Ñ–Ð´ активним"
 
+msgid "determines scroll behavior for split windows"
+msgstr "визначає поведінку Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‡ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ розщеплених вікнах"
+
 msgid "a new window is put right of the current one"
 msgstr "нове вікно розміщуєтьÑÑ Ð¿Ñ€Ð°Ð²Ð¾Ñ€ÑƒÑ‡ від активного"
 
@@ -9261,6 +9705,9 @@ msgstr "зробити запит кодів клавіш терміналу, коли визначено xterm"
 msgid "terminal that requires extra redrawing"
 msgstr "термінал потребує додаткового перемальовуваннÑ"
 
+msgid "what keyboard protocol to use for which terminal"
+msgstr "Ñкий протокол клавіатури заÑтоÑовувати Ð´Ð»Ñ Ñкого терміналу"
+
 msgid "recognize keys that start with <Esc> in Insert mode"
 msgstr "розпізнавати клавіші, що починаютьÑÑ Ð· <Esc> в режимі Insert"
 
@@ -9431,8 +9878,11 @@ msgstr "додати прапорець 's' у 'shortmess' (не показувати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ)"
 msgid "list of flags to make messages shorter"
 msgstr "ÑпиÑок прапорців щоб зробити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¾Ñ‚ÑˆÐ¸Ð¼Ð¸"
 
-msgid "show (partial) command keys in the status line"
-msgstr "показувати клавіші (чаÑтини) команди у Ñ€Ñдку Ñтану"
+msgid "show (partial) command keys in location given by 'showcmdloc'"
+msgstr "показувати клавіші (чаÑтини) команди у міÑці, заданому 'showcmdloc'"
+
+msgid "location where to show the (partial) command keys for 'showcmd'"
+msgstr "міÑце, де показувати клавіші (чаÑтини) команди Ð´Ð»Ñ 'showcmd'"
 
 msgid "display the current mode in the status line"
 msgstr "показувати актуальний режим у Ñ€Ñдку Ñтану"
@@ -9441,7 +9891,7 @@ msgid "show cursor position below each w
 msgstr "показувати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ ÐºÑƒÑ€Ñору під кожним вікном"
 
 msgid "alternate format to be used for the ruler"
-msgstr "влаÑний формат лінійки"
+msgstr "змінний формат лінійки"
 
 msgid "threshold for reporting number of changed lines"
 msgstr "поріг доповіді кількоÑÑ‚Ñ– змінених Ñ€Ñдків"
@@ -9450,7 +9900,7 @@ msgid "the higher the more messages are 
 msgstr "чим більше, тим більше буде видано повідомлень"
 
 msgid "file to write messages in"
-msgstr "файл, У Ñкий запиÑувати повідомленнÑ"
+msgstr "файл, у Ñкий запиÑувати повідомленнÑ"
 
 msgid "pause listings when the screen is full"
 msgstr "Ñпинити виведеннÑ, коли екран заповнено"
@@ -9523,7 +9973,7 @@ msgid "line length above which to break 
 msgstr "довжина Ñ€Ñдка, понад Ñкою Ñ€Ñдок розбивати"
 
 msgid "margin from the right in which to break a line"
-msgstr "відÑтуп з правого краю, з Ñкого розбивати Ñ€Ñдок"
+msgstr "відÑтуп з правого краю, по Ñкому розбивати Ñ€Ñдок"
 
 msgid "specifies what <BS>, CTRL-W, etc. can do in Insert mode"
 msgstr "визначає, що <BS>, CTRL-W тощо можуть робити у режимі Insert"
@@ -9637,7 +10087,7 @@ msgid "do clever autoindenting"
 msgstr "інтелектуальний автоматичний відÑтуп"
 
 msgid "enable specific indenting for C code"
-msgstr "увімкнути Ñпецифічні віÑтупи в коді С"
+msgstr "увімкнути Ñпецифічні відÑтупи в коді С"
 
 msgid "options for C-indenting"
 msgstr "опції відÑтупу С"
@@ -9671,6 +10121,9 @@ msgstr "увімкнути режим lisp"
 msgid "words that change how lisp indenting works"
 msgstr "Ñлова, Ñкі змінюють, Ñк працює Ð¿Ñ–Ð´Ð±Ð¸Ð²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ñтупів у lisp"
 
+msgid "options for Lisp indenting"
+msgstr "опції відÑтупу Lisp"
+
 msgid "folding"
 msgstr "згортаннÑ"
 
@@ -9775,6 +10228,9 @@ msgstr "Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… файлів"
 msgid "last line in the file has an end-of-line"
 msgstr "оÑтанній Ñ€Ñдок файлу має Ñимвол ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдка"
 
+msgid "last line in the file followed by CTRL-Z"
+msgstr "оÑтанній Ñ€Ñдок файлу закінчуєтьÑÑ CTRL-Z"
+
 msgid "fixes missing end-of-line at end of text file"
 msgstr "виправлÑÑ” Ñимвол ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдку, Ñкого бракує наприкінці файлу"
 
@@ -9803,7 +10259,7 @@ msgid "keep a backup after overwriting a
 msgstr "зберегти резервний копію піÑÐ»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñу файлу"
 
 msgid "patterns that specify for which files a backup is not made"
-msgstr "шаблони, Ñкі визначають, Ð´Ð»Ñ Ñких файлів зробити резервну копію"
+msgstr "шаблони, Ñкі зазначають, Ð´Ð»Ñ Ñких файлів не робитьÑÑ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ñƒ копію"
 
 msgid "whether to make the backup as a copy or rename the existing file"
 msgstr ""
@@ -9872,7 +10328,7 @@ msgid "how many command lines are rememb
 msgstr "Ñкільки Ñ€Ñдків команд запам’Ñтати"
 
 msgid "key that triggers command-line expansion"
-msgstr "клавіша, Ñка запуÑкає Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ€Ñдка команд"
+msgstr "клавіша, Ñка запуÑкає Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ñ€Ñдка команд"
 
 msgid "like 'wildchar' but can also be used in a mapping"
 msgstr "ніби 'wildchar', але також можна вжити у заміні клавіш"
@@ -10208,3 +10664,6 @@ msgstr "назва динамічної бібліотеки MzScheme"
 
 msgid "name of the MzScheme GC dynamic library"
 msgstr "назва динамічної бібліотеки MzScheme GC"
+
+msgid "You discovered the command-line window! You can close it with \":q\"."
+msgstr "Ви виÑвили вікно командного Ñ€Ñдка! Його можна закрити командою «:q»."
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -835,7 +835,6 @@ pum_set_selected(int n, int repeat UNUSE
 	{
 	    win_T	*curwin_save = curwin;
 	    tabpage_T   *curtab_save = curtab;
-	    int		res = OK;
 # ifdef FEAT_PROP_POPUP
 	    use_popup_T	use_popup;
 # else
@@ -875,6 +874,8 @@ pum_set_selected(int n, int repeat UNUSE
 # endif
 		    )
 	    {
+		int	res = OK;
+
 		if (!resized
 			&& curbuf->b_nwindows == 1
 			&& curbuf->b_fname == NULL
@@ -920,13 +921,10 @@ pum_set_selected(int n, int repeat UNUSE
 			    ml_append(lnum++, p, 0, FALSE);
 			    break;
 			}
-			else
-			{
-			    *e = NUL;
-			    ml_append(lnum++, p, (int)(e - p + 1), FALSE);
-			    *e = '\n';
-			    p = e + 1;
-			}
+			*e = NUL;
+			ml_append(lnum++, p, (int)(e - p + 1), FALSE);
+			*e = '\n';
+			p = e + 1;
 		    }
 		    // delete the empty last line
 		    ml_delete(curbuf->b_ml.ml_line_count);
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -817,7 +817,7 @@ apply_general_options(win_T *wp, dict_T 
     }
 
     if (set_padding_border(dict, wp->w_popup_padding, "padding", 999) == FAIL ||
-        set_padding_border(dict, wp->w_popup_border, "border", 1) == FAIL)
+	set_padding_border(dict, wp->w_popup_border, "border", 1) == FAIL)
 	return FAIL;
 
     di = dict_find(dict, (char_u *)"borderhighlight", -1);
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -664,7 +664,8 @@ script_prof_save(
     void
 profile_may_start_func(profinfo_T *info, ufunc_T *fp, ufunc_T *caller)
 {
-    if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
+    if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL,
+								&fp->uf_hash))
     {
 	info->pi_started_profiling = TRUE;
 	func_do_profile(fp);
--- a/src/proto/debugger.pro
+++ b/src/proto/debugger.pro
@@ -10,6 +10,6 @@ int debug_has_expr_breakpoint(void);
 void ex_breakdel(exarg_T *eap);
 void ex_breaklist(exarg_T *eap);
 linenr_T dbg_find_breakpoint(int file, char_u *fname, linenr_T after);
-int has_profiling(int file, char_u *fname, int *fp);
+int has_profiling(int file, char_u *fname, int *fp, hash_T *hash);
 void dbg_breakpoint(char_u *name, linenr_T lnum);
 /* vim: set ft=c : */
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -59,6 +59,7 @@ int set_ref_in_dict(dict_T *d, int copyI
 int set_ref_in_list(list_T *ll, int copyID);
 int set_ref_in_list_items(list_T *l, int copyID, ht_stack_T **ht_stack);
 int set_ref_in_callback(callback_T *cb, int copyID);
+int set_ref_in_item_class(class_T *cl, int copyID, ht_stack_T **ht_stack, list_stack_T **list_stack);
 int set_ref_in_item(typval_T *tv, int copyID, ht_stack_T **ht_stack, list_stack_T **list_stack);
 char_u *echo_string_core(typval_T *tv, char_u **tofree, char_u *numbuf, int copyID, int echo_style, int restore_copyID, int composite_val);
 char_u *echo_string(typval_T *tv, char_u **tofree, char_u *numbuf, int copyID);
--- a/src/proto/typval.pro
+++ b/src/proto/typval.pro
@@ -51,6 +51,8 @@ int check_for_list_or_dict_arg(typval_T 
 int check_for_list_or_dict_or_blob_arg(typval_T *args, int idx);
 int check_for_list_or_dict_or_blob_or_string_arg(typval_T *args, int idx);
 int check_for_opt_buffer_or_dict_arg(typval_T *args, int idx);
+int check_for_object_arg(typval_T *args, int idx);
+int check_for_class_or_list_arg(typval_T *args, int idx);
 char_u *tv_get_string(typval_T *varp);
 char_u *tv_get_string_strict(typval_T *varp);
 char_u *tv_get_string_buf(typval_T *varp, char_u *buf);
--- a/src/proto/vim9class.pro
+++ b/src/proto/vim9class.pro
@@ -1,7 +1,7 @@
 /* vim9class.c */
-int object_index_from_itf_index(class_T *itf, int is_method, int idx, class_T *cl);
+int object_index_from_itf_index(class_T *itf, int is_method, int idx, class_T *cl, int is_static);
 void ex_class(exarg_T *eap);
-type_T *class_member_type(class_T *cl, char_u *name, char_u *name_end, int *member_idx);
+type_T *class_member_type(class_T *cl, int is_object, char_u *name, char_u *name_end, int *member_idx, ocmember_T **m);
 void ex_enum(exarg_T *eap);
 void ex_type(exarg_T *eap);
 int class_object_index(char_u **arg, typval_T *rettv, evalarg_T *evalarg, int verbose);
@@ -12,7 +12,11 @@ void copy_object(typval_T *from, typval_
 void object_unref(object_T *obj);
 void copy_class(typval_T *from, typval_T *to);
 void class_unref(class_T *cl);
+int class_free_nonref(int copyID);
+int set_ref_in_classes(int copyID);
 void object_created(object_T *obj);
 void object_cleared(object_T *obj);
 int object_free_nonref(int copyID);
+void f_instanceof(typval_T *argvars, typval_T *rettv);
+int class_instance_of(class_T *cl, class_T *other_cl);
 /* vim: set ft=c : */
--- a/src/proto/vim9instr.pro
+++ b/src/proto/vim9instr.pro
@@ -4,8 +4,8 @@ isn_T *generate_instr_drop(cctx_T *cctx,
 isn_T *generate_instr_type(cctx_T *cctx, isntype_T isn_type, type_T *type);
 isn_T *generate_instr_debug(cctx_T *cctx);
 int generate_CONSTRUCT(cctx_T *cctx, class_T *cl);
-int generate_GET_OBJ_MEMBER(cctx_T *cctx, int idx, type_T *type);
-int generate_GET_ITF_MEMBER(cctx_T *cctx, class_T *itf, int idx, type_T *type);
+int generate_GET_OBJ_MEMBER(cctx_T *cctx, int idx, type_T *type, int is_static);
+int generate_GET_ITF_MEMBER(cctx_T *cctx, class_T *itf, int idx, type_T *type, int is_static);
 int generate_STORE_THIS(cctx_T *cctx, int idx);
 int may_generate_2STRING(int offset, int tolerant, cctx_T *cctx);
 int generate_add_instr(cctx_T *cctx, vartype_T vartype, type_T *type1, type_T *type2, exprtype_T expr_type);
@@ -28,6 +28,7 @@ int generate_PUSHCHANNEL(cctx_T *cctx);
 int generate_PUSHJOB(cctx_T *cctx);
 int generate_PUSHBLOB(cctx_T *cctx, blob_T *blob);
 int generate_PUSHFUNC(cctx_T *cctx, char_u *name, type_T *type, int may_prefix);
+int generate_PUSHOBJ(cctx_T *cctx);
 int generate_AUTOLOAD(cctx_T *cctx, char_u *name, type_T *type);
 int generate_GETITEM(cctx_T *cctx, int index, int with_op);
 int generate_SLICE(cctx_T *cctx, int count);
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2180,7 +2180,7 @@ qf_add_entry(
     qfp->qf_end_col = end_col;
     qfp->qf_viscol = vis_col;
     if (user_data == NULL || user_data->v_type == VAR_UNKNOWN)
-        qfp->qf_user_data.v_type = VAR_UNKNOWN;
+	qfp->qf_user_data.v_type = VAR_UNKNOWN;
     else
     {
 	copy_tv(user_data, &qfp->qf_user_data);
@@ -4492,7 +4492,7 @@ is_qf_win(win_T *win, qf_info_T *qi)
     // set to NULL.
     // A window displaying a location list buffer will have the w_llist_ref
     // pointing to the location list.
-    if (bt_quickfix(win->w_buffer))
+    if (buf_valid(win->w_buffer) && bt_quickfix(win->w_buffer))
 	if ((IS_QF_STACK(qi) && win->w_llist_ref == NULL)
 		|| (IS_LL_STACK(qi) && win->w_llist_ref == qi))
 	    return TRUE;
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -2051,7 +2051,8 @@ vim_regsub_both(
 	// "flags & REGSUB_COPY" != 0.
 	if (copy)
 	{
-	    if (eval_result[nested] != NULL)
+	    if (eval_result[nested] != NULL &&
+		    (int)STRLEN(eval_result[nested]) < destlen)
 	    {
 		STRCPY(dest, eval_result[nested]);
 		dst += STRLEN(eval_result[nested]);
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1721,7 +1721,7 @@ do_source_ext(
 	int	forceit;
 
 	// Check if we do profiling for this script.
-	if (!si->sn_prof_on && has_profiling(TRUE, si->sn_name, &forceit))
+	if (!si->sn_prof_on && has_profiling(TRUE, si->sn_name, &forceit, NULL))
 	{
 	    script_do_profile(si);
 	    si->sn_pr_force = forceit;
--- a/src/spell.c
+++ b/src/spell.c
@@ -125,6 +125,11 @@ static int spell_mb_isword_class(int cl,
 #define FIND_COMPOUND	    3	// find case-folded compound word
 #define FIND_KEEPCOMPOUND   4	// find keep-case compound word
 
+// type values for get_char_type
+#define CHAR_OTHER	0
+#define CHAR_UPPER	1
+#define CHAR_DIGIT	2
+
 static void find_word(matchinf_T *mip, int mode);
 static void find_prefix(matchinf_T *mip, int mode);
 static int fold_more(matchinf_T *mip);
@@ -138,6 +143,7 @@ static void spell_soundfold_sal(slang_T 
 static void spell_soundfold_wsal(slang_T *slang, char_u *inword, char_u *res);
 static void dump_word(slang_T *slang, char_u *word, char_u *pat, int *dir, int round, int flags, linenr_T lnum);
 static linenr_T dump_prefixes(slang_T *slang, char_u *word, char_u *pat, int *dir, int round, int flags, linenr_T startlnum);
+static char_u *advance_camelcase_word(char_u *p, win_T *wp, int *is_camel_case);
 
 /*
  * Main spell-checking function.
@@ -170,7 +176,7 @@ spell_check(
     int		lpi;
     int		count_word = docount;
     int		use_camel_case = *wp->w_s->b_p_spo != NUL;
-    int		camel_case = 0;
+    int		is_camel_case = FALSE;
 
     // A word never starts at a space or a control character.  Return quickly
     // then, skipping over the character.
@@ -202,27 +208,15 @@ spell_check(
     mi.mi_fend = ptr;
     if (spell_iswordp(mi.mi_fend, wp))
     {
-	int prev_upper;
-	int this_upper = FALSE;  // init for gcc
-
 	if (use_camel_case)
-	{
-	    c = PTR2CHAR(mi.mi_fend);
-	    this_upper = SPELL_ISUPPER(c);
-	}
-
-	do
+	    mi.mi_fend = advance_camelcase_word(ptr, wp, &is_camel_case);
+	else
 	{
-	    MB_PTR_ADV(mi.mi_fend);
-	    if (use_camel_case)
+	    do
 	    {
-		prev_upper = this_upper;
-		c = PTR2CHAR(mi.mi_fend);
-		this_upper = SPELL_ISUPPER(c);
-		camel_case = !prev_upper && this_upper;
-	    }
-	} while (*mi.mi_fend != NUL && spell_iswordp(mi.mi_fend, wp)
-							       && !camel_case);
+		MB_PTR_ADV(mi.mi_fend);
+	    } while (*mi.mi_fend != NUL && spell_iswordp(mi.mi_fend, wp));
+	}
 
 	if (capcol != NULL && *capcol == 0 && wp->w_s->b_cap_prog != NULL)
 	{
@@ -253,7 +247,7 @@ spell_check(
 							     MAXWLEN + 1);
     mi.mi_fwordlen = (int)STRLEN(mi.mi_fword);
 
-    if (camel_case && mi.mi_fwordlen > 0)
+    if (is_camel_case && mi.mi_fwordlen > 0)
 	// Introduce a fake word end space into the folded word.
 	mi.mi_fword[mi.mi_fwordlen - 1] = ' ';
 
@@ -388,6 +382,75 @@ spell_check(
 }
 
 /*
+ * Determine the type of character 'c'.
+ */
+    static int
+get_char_type(int c)
+{
+    if (VIM_ISDIGIT(c))
+	return CHAR_DIGIT;
+    if (SPELL_ISUPPER(c))
+	return CHAR_UPPER;
+    return CHAR_OTHER;
+}
+
+/*
+ * Returns a pointer to the end of the word starting at "str".
+ * Supports camelCase words.
+ */
+    static char_u *
+advance_camelcase_word(char_u *str, win_T *wp, int *is_camel_case)
+{
+    int last_type, last_last_type, this_type;
+    int c;
+    char_u *end = str;
+
+    *is_camel_case = FALSE;
+
+    if (*str == NUL)
+	return str;
+
+    c = PTR2CHAR(end);
+    MB_PTR_ADV(end);
+    // We need at most the types of the type of the last two chars.
+    last_last_type = -1;
+    last_type = get_char_type(c);
+
+    while (*end != NUL && spell_iswordp(end, wp))
+    {
+	c = PTR2CHAR(end);
+	this_type = get_char_type(c);
+
+	if (last_last_type == CHAR_UPPER && last_type == CHAR_UPPER
+		&& this_type == CHAR_OTHER)
+	{
+	    // Handle the following cases:
+	    // UpperUpperLower
+	    *is_camel_case = TRUE;
+	    // Back up by one char.
+	    MB_PTR_BACK(str, end);
+	    break;
+	}
+	else if ((this_type == CHAR_UPPER && last_type == CHAR_OTHER)
+		|| (this_type != last_type
+		    && (this_type == CHAR_DIGIT || last_type == CHAR_DIGIT)))
+	{
+	    // Handle the following cases:
+	    // LowerUpper LowerDigit UpperDigit DigitUpper DigitLower
+	    *is_camel_case = TRUE;
+	    break;
+	}
+
+	last_last_type = last_type;
+	last_type = this_type;
+
+	MB_PTR_ADV(end);
+    }
+
+    return end;
+}
+
+/*
  * Check if the word at "mip->mi_word" is in the tree.
  * When "mode" is FIND_FOLDWORD check in fold-case word tree.
  * When "mode" is FIND_KEEPWORD check in keep-case word tree.
--- a/src/strings.c
+++ b/src/strings.c
@@ -2251,8 +2251,7 @@ enum
  */
     static int
 format_typeof(
-    const char	*type,
-    int		usetvs UNUSED)
+    const char	*type)
 {
     // allowed values: \0, h, l, L
     char    length_modifier = '\0';
@@ -2285,18 +2284,6 @@ format_typeof(
 	default: break;
     }
 
-# if defined(FEAT_EVAL)
-    if (usetvs)
-    {
-	switch (fmt_spec)
-	{
-	    case 'd': case 'u': case 'o': case 'x': case 'X':
-		if (length_modifier == '\0')
-		    length_modifier = 'L';
-	}
-    }
-# endif
-
     // get parameter value, do initial processing
     switch (fmt_spec)
     {
@@ -2330,7 +2317,7 @@ format_typeof(
 	    if (fmt_spec == 'p')
 		return TYPE_POINTER;
 	    else if (fmt_spec == 'b' || fmt_spec == 'B')
-		return TYPE_UNSIGNEDINT;
+		return TYPE_UNSIGNEDLONGLONGINT;
 	    else if (fmt_spec == 'd')
 	    {
 		// signed
@@ -2379,7 +2366,7 @@ format_typeof(
 format_typename(
     const char  *type)
 {
-    switch (format_typeof(type, FALSE))
+    switch (format_typeof(type))
     {
 	case TYPE_INT:
 	    return _(typename_int);
@@ -2433,7 +2420,8 @@ adjust_types(
 	if (*ap_types == NULL)
 	    new_types = ALLOC_CLEAR_MULT(const char *, arg);
 	else
-	    new_types = vim_realloc(*ap_types, arg * sizeof(const char *));
+	    new_types = vim_realloc((char **)*ap_types,
+						arg * sizeof(const char *));
 
 	if (new_types == NULL)
 	    return FAIL;
@@ -2466,7 +2454,7 @@ adjust_types(
 	}
 	else
 	{
-	    if (format_typeof(type, FALSE) != format_typeof((*ap_types)[arg - 1], FALSE))
+	    if (format_typeof(type) != format_typeof((*ap_types)[arg - 1]))
 	    {
 		semsg(_( e_positional_arg_num_type_inconsistent_str_str), arg, format_typename(type), format_typename((*ap_types)[arg - 1]));
 		return FAIL;
@@ -2771,7 +2759,7 @@ parse_fmt_types(
     return OK;
 
 error:
-    vim_free(*ap_types);
+    vim_free((char**)*ap_types);
     *ap_types = NULL;
     *num_posarg = 0;
     return FAIL;
@@ -2783,7 +2771,8 @@ skip_to_arg(
     va_list	ap_start,
     va_list	*ap,
     int		*arg_idx,
-    int		*arg_cur)
+    int		*arg_cur,
+    const char	*fmt)
 {
     int		arg_min = 0;
 
@@ -2808,9 +2797,17 @@ skip_to_arg(
 
     for (*arg_cur = arg_min; *arg_cur < *arg_idx - 1; ++*arg_cur)
     {
-	const char *p = ap_types[*arg_cur];
-
-	int fmt_type = format_typeof(p, TRUE);
+	const char *p;
+
+	if (ap_types == NULL || ap_types[*arg_cur] == NULL)
+	{
+	    siemsg(e_aptypes_is_null_nr_str, *arg_cur, fmt);
+	    return;
+	}
+
+	p = ap_types[*arg_cur];
+
+	int fmt_type = format_typeof(p);
 
 	// get parameter value, do initial processing
 	switch (fmt_type)
@@ -3023,7 +3020,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 		    tvs != NULL ? tv_nr(tvs, &arg_idx) :
 # endif
-			(skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+			(skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+				     &arg_cur, fmt),
 			va_arg(ap, int));
 
 		if (j >= 0)
@@ -3083,7 +3081,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 			tvs != NULL ? tv_nr(tvs, &arg_idx) :
 # endif
-			    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+			    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+					 &arg_cur, fmt),
 			    va_arg(ap, int));
 
 		    if (j >= 0)
@@ -3156,7 +3155,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 			    tvs != NULL ? tv_nr(tvs, &arg_idx) :
 # endif
-				(skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+				(skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+					     &arg_cur, fmt),
 				va_arg(ap, int));
 
 			// standard demands unsigned char
@@ -3171,7 +3171,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 				tvs != NULL ? tv_str(tvs, &arg_idx, &tofree) :
 # endif
-				    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+				    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+						 &arg_cur, fmt),
 				    va_arg(ap, char *));
 
 		    if (str_arg == NULL)
@@ -3268,7 +3269,8 @@ vim_vsnprintf_typval(
 				 tvs != NULL ? (void *)tv_str(tvs, &arg_idx,
 									NULL) :
 # endif
-					(skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+					(skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+						     &arg_cur, fmt),
 					va_arg(ap, void *));
 
 			if (ptr_arg != NULL)
@@ -3281,7 +3283,8 @@ vim_vsnprintf_typval(
 				    tvs != NULL ?
 					   (uvarnumber_T)tv_nr(tvs, &arg_idx) :
 # endif
-					(skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+					(skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+						     &arg_cur, fmt),
 					va_arg(ap, uvarnumber_T));
 
 			if (bin_arg != 0)
@@ -3299,7 +3302,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 					tvs != NULL ? tv_nr(tvs, &arg_idx) :
 # endif
-					    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+					    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+							 &arg_cur, fmt),
 					    va_arg(ap, int));
 
 			    if (int_arg > 0)
@@ -3312,7 +3316,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 					tvs != NULL ? tv_nr(tvs, &arg_idx) :
 # endif
-					    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+					    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+							 &arg_cur, fmt),
 					    va_arg(ap, long int));
 
 			    if (long_arg > 0)
@@ -3325,7 +3330,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 					tvs != NULL ? tv_nr(tvs, &arg_idx) :
 # endif
-					    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+					    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+							 &arg_cur, fmt),
 					    va_arg(ap, varnumber_T));
 
 			    if (llong_arg > 0)
@@ -3347,7 +3353,8 @@ vim_vsnprintf_typval(
 					    tvs != NULL ? (unsigned)
 							tv_nr(tvs, &arg_idx) :
 # endif
-						(skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+						(skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+							     &arg_cur, fmt),
 						va_arg(ap, unsigned int));
 
 				if (uint_arg != 0)
@@ -3359,7 +3366,8 @@ vim_vsnprintf_typval(
 					    tvs != NULL ? (unsigned long)
 							tv_nr(tvs, &arg_idx) :
 # endif
-						(skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+						(skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+							     &arg_cur, fmt),
 						va_arg(ap, unsigned long int));
 
 				if (ulong_arg != 0)
@@ -3371,7 +3379,8 @@ vim_vsnprintf_typval(
 					    tvs != NULL ? (uvarnumber_T)
 							tv_nr(tvs, &arg_idx) :
 # endif
-						(skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+						(skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+							     &arg_cur, fmt),
 						va_arg(ap, uvarnumber_T));
 
 				if (ullong_arg != 0)
@@ -3573,7 +3582,8 @@ vim_vsnprintf_typval(
 # if defined(FEAT_EVAL)
 			tvs != NULL ? tv_float(tvs, &arg_idx) :
 # endif
-			    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx, &arg_cur),
+			    (skip_to_arg(ap_types, ap_start, &ap, &arg_idx,
+					 &arg_cur, fmt),
 			    va_arg(ap, double));
 
 		    abs_f = f < 0 ? -f : f;
@@ -3862,7 +3872,7 @@ vim_vsnprintf_typval(
     if (tvs != NULL && tvs[num_posarg != 0 ? num_posarg : arg_idx - 1].v_type != VAR_UNKNOWN)
 	emsg(_(e_too_many_arguments_to_printf));
 
-    vim_free(ap_types);
+    vim_free((char*)ap_types);
     va_end(ap);
 
     // Return the number of characters formatted (excluding trailing nul
--- a/src/structs.h
+++ b/src/structs.h
@@ -1489,8 +1489,8 @@ typedef struct {
 #define TTFLAG_SUPER	    0x40    // object from "super".
 
 typedef enum {
-    VIM_ACCESS_PRIVATE,	// read/write only inside th class
-    VIM_ACCESS_READ,	// read everywhere, write only inside th class
+    VIM_ACCESS_PRIVATE,	// read/write only inside the class
+    VIM_ACCESS_READ,	// read everywhere, write only inside the class
     VIM_ACCESS_ALL	// read/write everywhere
 } omacc_T;
 
@@ -1515,6 +1515,7 @@ struct itf2class_S {
 
 #define CLASS_INTERFACE	    1
 #define CLASS_EXTENDED	    2	    // another class extends this one
+#define CLASS_ABSTRACT	    4	    // abstract class
 
 // "class_T": used for v_class of typval of VAR_CLASS
 // Also used for an interface (class_flags has CLASS_INTERFACE).
@@ -1525,6 +1526,8 @@ struct class_S
 
     int		class_refcount;
     int		class_copyID;		// used by garbage collection
+    class_T	*class_next_used;	// for list headed by "first_class"
+    class_T	*class_prev_used;	// for list headed by "first_class"
 
     class_T	*class_extends;		// parent class or NULL
 
@@ -1823,6 +1826,7 @@ struct ufunc_S
 # ifdef FEAT_PROFILE
     int		uf_profiling;	// TRUE when func is being profiled
     int		uf_prof_initialized;
+    hash_T	uf_hash;	// hash for uf_name when profiling
     // profiling the function as a whole
     int		uf_tm_count;	// nr of calls
     proftime_T	uf_tm_total;	// time spent in function + children
@@ -1872,6 +1876,7 @@ struct ufunc_S
 
 #define FC_OBJECT   0x4000	// object method
 #define FC_NEW	    0x8000	// constructor
+#define FC_ABSTRACT 0x10000	// abstract method
 
 #define MAX_FUNC_ARGS	20	// maximum number of function arguments
 #define VAR_SHORT_LEN	20	// short variable name length
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -105,6 +105,7 @@ NEW_TESTS = \
 	test_conceal \
 	test_const \
 	test_cpoptions \
+	test_crash \
 	test_crypt \
 	test_cscope \
 	test_cursor_func \
@@ -290,6 +291,7 @@ NEW_TESTS = \
 	test_taglist \
 	test_tcl \
 	test_termcodes \
+	test_termdebug \
 	test_termencoding \
 	test_terminal \
 	test_terminal2 \
@@ -368,6 +370,7 @@ NEW_TESTS_RES = \
 	test_conceal.res \
 	test_const.res \
 	test_cpoptions.res \
+	test_crash.res \
 	test_crypt.res \
 	test_cscope.res \
 	test_cursor_func.res \
@@ -523,6 +526,7 @@ NEW_TESTS_RES = \
 	test_taglist.res \
 	test_tcl.res \
 	test_termcodes.res \
+	test_termdebug.res \
 	test_termencoding.res \
 	test_terminal.res \
 	test_terminal2.res \
new file mode 100644
--- /dev/null
+++ b/src/testdir/crash/bt_quickfix1_poc
@@ -0,0 +1,5 @@
+au BufReadPre * exe 'sn' .. expand("<abuf>")
+call writefile([''],'X')
+sil! e X
+call writefile([''],'X')
+sil! e X
new file mode 100644
--- /dev/null
+++ b/src/testdir/crash/bt_quickfix_poc
@@ -0,0 +1,9 @@
+comman!-narg=* Xexpr <mods>lex<args>
+auto BufReadPre * exe"sn" ..expand("<abuf>") 
+fu Xautocmd_changelist()
+cal writefile(['Xtestfile2:4:4'],'Xerr')
+  sil! edi Xerr
+Xexpr 'Xtestfile:4:4'
+endf
+call Xautocmd_changelist()
+call Xautocmd_changelist()
\ No newline at end of file
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0d0ea475c1062a4df89ee505a078ecc578d57f22
GIT binary patch
literal 1541
zc%0Q!O=uHA6n>H9kVhIv3qeG2QY40&YRIk8Lq&|jQbmL0k}B36x5_rbWYvQ$ji6{Z
ziUn`#*<cRRL-bU<>Sd84y?Ymgiig<C_+~eWP1@2>@ZbkK^XC1`n{U3^T_6!Am$As2
z4TZ%<<ITs0hgd9@US{4H`hFuPqD&#g_Hgz?S^S<)8y!jrQD)9J$8qu-u)q$8TU0?v
zG8SL^JiypKY8JSVID*ucv*vlSIAEbznoeJ9Z?7=^*B*8qEa79E-DZq7390n%wll3c
z7#yrbjG!tQ@ahh-wcRv@vo6Zn)2lkyxRso!aER8C6$f>o6J#{Bs($meX(Gi_G|Yjr
z&`MG?ev#&L@BrLE3dLC=OM;sPGz-VfDZ#UcIhTicFTC>Ej8;C0Wx>m{mvwu}w(YmJ
zeQH09;0T;?$p-?F>A=y*s}qq(z=UT{F^7g&57ev3$5t5VCDcn&eyGS9;X@|z4$1{7
zvBJl6TKu{$^FB0QBBfPRm?J8y9*YUZbx3i2p3%TZ^P{R?%)5L?J-*iQpI22bK!s~}
z@0$=+_p(>jP(7fKE!O`|$9&&9W_O}v=6~1mW|xj%mgbh8T-vB(5<5C>sbQNjcNq`2
znZE0w*aqimH`IMyR&xEVXVFsoQ}Yy%x8^-LT1M*(I?~XyYb8Rhw#bcUt%DczsX`av
z-{dhpRsq_fwgbF($4|X(0N`DY?lbkG-cKu#+vjZgPxRAZI~bcGY?M|2=5sh%3daF|
OJ71kEd0~#55B~sDO&Co8
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4867e0f956bbb2a3621dac76fa5bdbdcd8fe789f
GIT binary patch
literal 3238
zc%1E3O=uHA6n-nsp)aXEEd&+CsYsOCO31B^hk7syK}Cb~k|OGkDY9)aS@mMcdJr+G
zv`4Yt1Vi-FL%j-~(n}6Kc=s+uiXKWX<D1?7Y+|iOqV1s{?99BG_h#PrX7}4Ypb%~?
zVU|`FH0JsFu;3vQi3~4M=*yi^*+-1JZp1_5-Heq^k9><KhmH?OnWx(4TCJA;3A1!W
z-ldQZiV~e_EcOr`<bwiN22LU$DQM*~j|AXkHa9VRll?-pUub{2v@z~?CuqPRZ;9>^
z@lGKfv-#QG-MvmY)2)4bypW^R*vH-8l#6^SwQP!{u%ly+fWEg#*<KSkjYJadQkV70
zvXIwf+!R2M(2nZWtK46N$KWo+P+pMAkiwcoYx0aWE=B5u@WTt6N+k1VF)u}a>bhAR
zFBXfHV)5Kz7{oz1?=lYr!V`hh;kkG?9I)W|G>&3M`hjK%#mFZDGlym_sL)Z5q=BUH
zKB`&8wiq$l_<mcZ4a~emb}PkjlqoEG*^jMroJl0X;QmReOFnaX4tYH7DBfV-vJU`2
z<^K-O658=^05m#vcD2Q>Yz#Ro@tbIH)-!+Isf=9Ai_A*v+{d<dc+s(3wiWK%d~Hm)
zUu_EQ;I4>tPDJV$+!_E~;I|J2gEoL>uUQ|^?713%Qc0C7_&5pXq>lA79glEsm9QQ4
z*NyK}$8))2z_Vpfx!7zfF00q7qwB=j<nEuA^#^OTr6X&2@3z&J*-DdDXj7v$#p2pv
zX&sJw@N54!f3)k45$(CH{CAFM`>-q8{{*|D-6Y!8mh$|~>$?5I-vq8@JO2fx9G(f*
U)ikDM9KJRkPtfvDh$_eY0himUtpET3
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..7e38a9a17c2690ae6fa6b9f7da44c2b938aa1361
GIT binary patch
literal 4053
zc%1E3O=wd=5S~bL$Rw?!fuN$e6^T+)3GviaFdmFTP|+Z{Boy1XrpQZz$x|;D<3Yis
zVz2((Jd}FsAzr<Bs0caa;N80rDJX<o)_Lzqo233EBo(pw;LYy5`PrG-VRjcNgxMPA
zs8K1*)+&ru{@zw>`2GHHjXa-kB;+_T>Lw9)9kHn+0VxYq{Zy@1lUuMv2jxxj5Ctem
zbiDa~lxQEH;k+C;hJ2c!#wFefz-%s`314TY9@-;J=X7y%KVki#Qx394bc={Rd2%zE
z@Xyb7xx7VR+GXmF+9rpnxto`<xP?MIzOIRwFoLO~fbrKzIj;sBMl^;-c|?Dy>&WsD
zllx%q&<L8+E4*HS2Ve<8D9=lkmqO2?o;|70OA$XRT49?lL}P{1SdgNya7`=CmrA9T
zQt9jgn8ZmqXJzhm`ZCTFz8BLzpHqh?i<rQ)Yz1m%6p@bvS{}8$TVYY%lMW<>w^1!A
z=0!wf=IfkFIxzhlS*;wx1gEfWN1xir@o6*$4qhLYN91EG&nY`kBZxDmE<kZRFD<`=
zE^V6<_^Z9Zk(v?iHTBsRP^yjs3ND~JJi)bVudWen%`uLKY0u6>z<-zRP?&8i1c&oO
zk(J*4Z%}uZ`vd?`zdrg#6QDULUu!0T$OgZ%DdJqubnoa@7dqeU<(Wl$e8XrE<1nzJ
z$KfF6)^G23Riqn#>VXek^vS=2;q)CGhSPTo)=V;-zQgG|oW8%ro1QJKf?Z7st1-Nf
k#;}g=-mt%e=N?n4$WMT~t`;#Vr{PPROM;GJ&t0Q^2MmMq<NyEw
new file mode 100644
--- /dev/null
+++ b/src/testdir/crash/poc_tagfunc.vim
@@ -0,0 +1,6 @@
+fu Tagfunc(t,f,o)
+  bw
+endf
+set tagfunc=Tagfunc
+n0
+sil0norm0i
new file mode 100644
--- /dev/null
+++ b/src/testdir/crash/vim_regsub_both
@@ -0,0 +1,10 @@
+fu R()
+sil!norm0z=
+endf
+cal R()
+s/\%')/\=R()
+d
+no0 normyynore sm:vs0@vvvvvvvvvvse()dir(¼Xtest=csd{so88
+vs
+0scr
+so
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..19a57114be60c39dfb8b97ab95118caad7105322
GIT binary patch
literal 244
zc$`I!u?oU45QgJ=E>7xDFoI&+r5USGaPSEnL^MljQY_d;dm6M3K7nuKlexsSNWJBL
z{{Q&?ORse8dVtw+T&Obdvnm=4yC4gZLJ}W;;a_TMo}?h8LjWaUz^5}W;E~Nf#9CQZ
zQ(#uD_jrP{q?j)RST<`apwTL1ZK01{b<ShO`OcV^;hgk9XZaj`4(b_0p%|^A)otR)
u`rNtS?P{<Z*;2QI()C7kBeK$cZ!Z!rQG()uDhxp*Fic8w=n-LGR`3NUEKW24
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_crash_01.dump
@@ -0,0 +1,20 @@
+> +0&#ffffff0@74
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
+@75
deleted file mode 100644
--- a/src/testdir/dumps/Test_cursor_position_with_showbreak.dump
+++ /dev/null
@@ -1,6 +0,0 @@
-| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@71|X
-> +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|c|o|n|d| |l|i|n|e| @61
-|~+0#4040ff13&| @73
-|~| @73
-|~| @73
-|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|7|4| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_cursor_position_with_showbreak_1.dump
@@ -0,0 +1,6 @@
+| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@71|X
+| +0#0000e05#a8a8a8255@1>s+0#0000000#ffffff0|e|c|o|n|d| |l|i|n|e| @61
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|7|4| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_cursor_position_with_showbreak_2.dump
@@ -0,0 +1,6 @@
+| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@71|X
+| +0#0000e05#a8a8a8255@1| +0#0000000#ffffff0@1|++0#4040ff13&>$| +0#0000000&@68
+| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|c|o|n|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@60
+|~+0#4040ff13&| @73
+|~| @73
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|7|4| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_cursor_position_with_showbreak_3.dump
@@ -0,0 +1,6 @@
+| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@71|X
+| +0#0000e05#a8a8a8255@1|++0#4040ff13#ffffff0>$| +0#0000000&@70
+| +0#0000e05#a8a8a8255@1|s+0#0000000#ffffff0|e|c|o|n|d| |l|i|n|e|$+0#4040ff13&| +0#0000000&@60
+|~+0#4040ff13&| @73
+|~| @73
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@44|1|,|7|4| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_above_and_before_1.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0| @73
+| +0#e000e06&@1|1|2|3| +0#0000000&@69
+@2|b|:+0#e000e06&| |4|5|6| +0#0000000&>c| @64
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|2|,|5|-|8|5| @7|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_above_and_before_2.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0| @73
+| +0#e000e06&@1|1|2|3| +0#0000000&@69
+@2|b|:+0#e000e06&| |4|5|6> +0#0000000&|c| @64
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|2|,|4|-|8|4| @7|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_above_and_before_3.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0| @73
+| +0#e000e06&@1|1|2|3| +0#0000000&@69
+@2>b|:+0#e000e06&| |4|5|6| +0#0000000&|c| @64
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|2|,|3|-|7|8| @7|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_above_and_before_4.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0| @73
+| +0#e000e06&@1|1|2|3| +0#0000000&@69
+@1> |b|:+0#e000e06&| |4|5|6| +0#0000000&|c| @64
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|2|,|2|-|7@1| @7|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_above_and_before_5.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0| @73
+| +0#e000e06&@1|1|2|3| +0#0000000&@69
+> @1|b|:+0#e000e06&| |4|5|6| +0#0000000&|c| @64
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|2|,|1|-|7|6| @7|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_above_linebreak_1.dump
@@ -0,0 +1,6 @@
+|1+0#e000e06#ffffff0|2|3| +0#0000000&@71
+|a| |b| @71
+|c| >d| @71
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|2|,|3| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_above_linebreak_2.dump
@@ -0,0 +1,6 @@
+|1+0#e000e06#ffffff0|2|3| +0#0000000&@71
+|a| >b| @71
+|c| |d| @71
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|1|,|3|-|7|8| @7|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_before_double_width_wrap_1.dump
@@ -0,0 +1,3 @@
+|a+0&#ffffff0@39|b+0#e000e06&@8|>+0#4040ff13&
+|å£*0#0000000&|1+&|2|3|4>5| @42
+@32|1|,|4|8|-|5|7| @6|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_before_linebreak_1.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0@49
+| @1|++0#4040ff13&|b+0#e000e06&@9| +0#0000000&@36
+@2|++0#4040ff13&|c+0#0000000&@43>c| @1
+|~+0#4040ff13&| @48
+|~| @48
+| +0#0000000&@31|1|,|9|6|-|1|4|8| @5|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_before_linebreak_2.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0@44|b+0#e000e06&@4
+| +0#0000000&@1|++0#4040ff13&|b+0#e000e06&@4| +0#0000000&@41
+@2|++0#4040ff13&|c+0#0000000&@43>c| @1
+|~+0#4040ff13&| @48
+|~| @48
+| +0#0000000&@31|1|,|9|1|-|1|4|8| @5|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_lcs_extends_1.dump
@@ -0,0 +1,3 @@
+|a+0&#ffffff0@19>a@28|!+0#4040ff13&
+|~| @48
+| +0#0000000&@31|1|,|2|1| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_lcs_extends_2.dump
@@ -0,0 +1,3 @@
+|a+0&#ffffff0@18>a@29|!+0#4040ff13&
+|~| @48
+| +0#0000000&@31|1|,|2|1| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_lcs_extends_3.dump
@@ -0,0 +1,3 @@
+|a+0&#ffffff0@17>a@30|!+0#4040ff13&
+|~| @48
+| +0#0000000&@31|1|,|2|1| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_lcs_extends_4.dump
@@ -0,0 +1,3 @@
+|a+0&#ffffff0@16>a@30|b+0#e000e06&|!+0#4040ff13&
+|~| @48
+| +0#0000000&@31|1|,|2|1| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_lcs_extends_5.dump
@@ -0,0 +1,3 @@
+|a+0&#ffffff0@15>a@30|b+0#e000e06&@2
+|~+0#4040ff13&| @48
+| +0#0000000&@31|1|,|2|1| @9|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gM.dump
@@ -0,0 +1,3 @@
+|1+0&#ffffff0|2|b+0#e000e06&@2|3+0#0000000&|4>5|6|7|b+0#e000e06&@2|8+0#0000000&|9| @44
+|~+0#4040ff13&| @58
+| +0#0000000&@41|1|,|5|-|8| @8|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gj_gk_1.dump
@@ -0,0 +1,6 @@
+>a+0&#ffffff0@39|b@9|a@9
+@5| @54
+|a@39|b@9|a@9
+@5| @54
+|~+0#4040ff13&| @58
+| +0#0000000&@41|1|,|1| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gj_gk_2.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0@39|b@9|a@9
+>a@4| @54
+|a@39|b@9|a@9
+@5| @54
+|~+0#4040ff13&| @58
+| +0#0000000&@41|1|,|5|1|-|6|1| @6|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gj_gk_3.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0@39|b@9|a@9
+@5| @54
+>a@39|b@9|a@9
+@5| @54
+|~+0#4040ff13&| @58
+| +0#0000000&@41|2|,|1| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gj_gk_4.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0@39|b@9|a@9
+@5| @54
+|a@39|b@9|a@9
+>a@4| @54
+|~+0#4040ff13&| @58
+| +0#0000000&@41|2|,|5|1|-|6|1| @6|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gj_gk_5.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0@39|b@9|a@9
+@5| @54
+>a@39|b@9|a@9
+@5| @54
+|~+0#4040ff13&| @58
+| +0#0000000&@41|2|,|1| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gj_gk_6.dump
@@ -0,0 +1,6 @@
+|a+0&#ffffff0@39|b@9|a@9
+>a@4| @54
+|a@39|b@9|a@9
+@5| @54
+|~+0#4040ff13&| @58
+| +0#0000000&@41|1|,|5|1|-|6|1| @6|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_normal_gj_gk_7.dump
@@ -0,0 +1,6 @@
+>a+0&#ffffff0@39|b@9|a@9
+@5| @54
+|a@39|b@9|a@9
+@5| @54
+|~+0#4040ff13&| @58
+| +0#0000000&@41|1|,|1| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_showbreak_22.dump
@@ -0,0 +1,6 @@
+| +0&#ffffff0@1|1| >1+0#e000e06&|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2
+| +0#0000000&@5|++0#4040ff13&|3+0#e000e06&|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1
+| +0#0000000&@5|++0#4040ff13&|2+0#e000e06&|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3| +0#0000000&@2
+|~+0#4040ff13&| @28
+|~| @28
+| +0#0000000&@29
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_showbreak_23.dump
@@ -0,0 +1,6 @@
+| +0&#ffffff0@1|1| |a@25
+| @5|++0#4040ff13&>1+0#e000e06&|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2
+| +0#0000000&@5|++0#4040ff13&|3+0#e000e06&|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1
+| +0#0000000&@5|++0#4040ff13&|2+0#e000e06&|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3
+|~+0#4040ff13&| @28
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@17
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_inserts_text_showbreak_24.dump
@@ -0,0 +1,6 @@
+| +0&#ffffff0@1|1| |a@25
+| @3|++0#4040ff13&>1+0#e000e06&|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1
+| +0#0000000&@3|++0#4040ff13&|2+0#e000e06&|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2
+| +0#0000000&@3|++0#4040ff13&|3+0#e000e06&|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3|1|2|3| +0#0000000&@5
+|~+0#4040ff13&| @28
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@17
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_with_text_empty_line_6.dump
@@ -0,0 +1,8 @@
+|X+0&#ffff4012@59
+|a+0&#e0e0e08@1>a+0&#ffffff0| @56
+|X+0&#ffff4012@59
+@1| +0&#ffffff0@58
+|b+0&#e0e0e08@2|b+0&#ffffff0@2| @53
+|~+0#4040ff13&| @58
+|~| @58
+|-+2#0000000&@1| |V|I|S|U|A|L| |B|L|O|C|K| |-@1| +0&&@13|3|x|3| @6|2|,|3| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_with_text_empty_line_7.dump
@@ -0,0 +1,8 @@
+|X+0&#ffff4012@59
+>a+0&#ffffff0@2| @56
+|X+0&#ffff4012@59
+@1| +0&#ffffff0@58
+|b@5| @53
+|~+0#4040ff13&| @58
+|~| @58
+|s+0#e000002&|e|a|r|c|h| |h|i|t| |B|O|T|.@2|t|i|n|u|i|n|g| |a|t| |T|O|P| +0#0000000&@10|2|,|1| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_with_text_empty_line_8.dump
@@ -0,0 +1,8 @@
+|X+0&#ffff4012@59
+|a+0&#ffffff0@2| @56
+|c>X+0&#ffff4012@58
+@2| +0&#ffffff0@57
+|b@5| @53
+|~+0#4040ff13&| @58
+|~| @58
+|-+2#0000000&@1| |I|N|S|E|R|T| |-@1| +0&&@29|3|,|2| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_prop_with_text_empty_line_9.dump
@@ -0,0 +1,8 @@
+|X+0&#ffff4012@59
+>a+0&#ffffff0@2| @56
+|c|X+0&#ffff4012@58
+@2| +0&#ffffff0@57
+|b@5| @53
+|~+0#4040ff13&| @58
+|~| @58
+|s+0#e000002&|e|a|r|c|h| |h|i|t| |B|O|T|.@2|t|i|n|u|i|n|g| |a|t| |T|O|P| +0#0000000&@10|2|,|1| @10|A|l@1| 
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_xxd_color_0.dump
@@ -0,0 +1,20 @@
+|$+0&#ffffff0| |.@1|/|x@1|d|/|x@1|d| |-|R| |n|e|v|e|r| @1|<| |X@1|D|f|i|l|e|_|c|o|l|o|r|s| @35
+|0@7|:| |0@2|1| |0|2|0|3| |0|4|0|5| |0|6|0|7| |0|8|0|9| |0|a|0|b| |0|c|0|d| |0|e|0|f| @1|.@15| @7
+|0@5|1|0|:| |1|0|1@1| |1|2|1|3| |1|4|1|5| |1|6|1|7| |1|8|1|9| |1|a|1|b| |1|c|1|d| |1|e|1|f| @1|.@15| @7
+|0@5|2|0|:| |2|0|2|1| |2@2|3| |2|4|2|5| |2|6|0@1| |2|8|2|9| |2|a|2|b| |2|c|2|d| |2|e|2|f| @2|!|"|#|$|%|&|.|(|)|*|+|,|-|.|/| @7
+|0@5|3|0|:| |3|0|3|1| |3|2|3@1| |3|4|3|5| |3|6|3|7| |3|8|3|9| |3|a|3|b| |3|c|3|d| |3|e|3|f| @1|0|1|2|3|4|5|6|7|8|9|:|;|<|=|>|?| @7
+|0@5|4|0|:| |4|0|4|1| |4|2|4|3| |4@2|5| |4|6|4|7| |4|8|4|9| |4|a|4|b| |4|c|4|d| |4|e|4|f| @1|@|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O| @7
+|0@5|5|0|:| |5|0|5|1| |5|2|5|3| |5|4|5@1| |5|6|5|7| |5|8|5|9| |5|a|5|b| |0@1|5|d| |5|e|5|f| @1|P|Q|R|S|T|U|V|W|X|Y|Z|[|.|]|^|_| @7
+|0@5|6|0|:| |6|0|6|1| |6|2|6|3| |6|4|6|5| |6@2|7| |6|8|6|9| |6|a|6|b| |6|c|6|d| |6|e|6|f| @1|`|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o| @7
+|0@5|7|0|:| |7|0|7|1| |7|2|7|3| |7|4|7|5| |7|6|7@1| |7|8|7|9| |7|a|7|b| |7|c|7|d| |7|e|7|f| @1|p|q|r|s|t|u|v|w|x|y|z|{|||}|~|.| @7
+|0@5|8|0|:| |8|0|8|1| |8|2|8|3| |8|4|8|5| |8|6|8|7| |8@2|9| |8|a|8|b| |8|c|8|d| |8|e|8|f| @1|.@15| @7
+|0@5|9|0|:| |9|0|9|1| |9|2|9|3| |9|4|9|5| |9|6|9|7| |9|8|9@1| |9|a|9|b| |9|c|9|d| |9|e|9|f| @1|.@15| @7
+|0@5|a|0|:| |a|0|a|1| |a|2|a|3| |a|4|a|5| |a|6|a|7| |a|8|a|9| |a@2|b| |a|c|a|d| |a|e|a|f| @1|.@15| @7
+|0@5|b|0|:| |b|0|b|1| |b|2|b|3| |b|4|b|5| |b|6|b|7| |b|8|b|9| |b|a|b@1| |b|c|b|d| |b|e|b|f| @1|.@15| @7
+|0@5|c|0|:| |c|0|c|1| |c|2|c|3| |c|4|c|5| |c|6|c|7| |c|8|c|9| |c|a|c|b| |c@2|d| |c|e|c|f| @1|.@15| @7
+|0@5|d|0|:| |d|0|d|1| |d|2|d|3| |d|4|d|5| |d|6|d|7| |d|8|d|9| |d|a|d|b| |d|c|d@1| |d|e|d|f| @1|.@15| @7
+|0@5|e|0|:| |e|0|e|1| |e|2|e|3| |e|4|e|5| |e|6|e|7| |e|8|e|9| |e|a|e|b| |e|c|e|d| |e@2|f| @1|.@15| @7
+|0@5|f|0|:| |f|0|f|1| |f|2|f|3| |f|4|f|5| |f|6|f|7| |f|8|f|9| |f|a|f|b| |f|c|f|d| |f|e|f@1| @1|.@15| @7
+|$| > @72
+@75
+@75
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_xxd_color_1.dump
@@ -0,0 +1,20 @@
+|$+0&#ffffff0| |0@7|:| |0+2#e0e0e08&@1|0+2#e000002&|1| +0#0000000&|0+2#e000002&|2|0|3| +0#0000000&|0+2#e000002&|4|0|5| +0#0000000&|0+2#e000002&|6|0|7| +0#0000000&|0+2#e000002&|8|0+2#e0e0004&|9| +0#0000000&|0+2#e0e0004&|a|0+2#e000002&|b| +0#0000000&|0+2#e000002&|c|0+2#e0e0004&|d| +0#0000000&|0+2#e000002&|e|0|f| +0#0000000&@1|.+2#e0e0e08&|.+2#e000002&@7|.+2#e0e0004&@1|.+2#e000002&@1|.+2#e0e0004&|.+2#e000002&@1| +0#0000000&@5
+|0@5|1|0|:| |1+2#e000002&|0|1@1| +0#0000000&|1+2#e000002&|2|1|3| +0#0000000&|1+2#e000002&|4|1|5| +0#0000000&|1+2#e000002&|6|1|7| +0#0000000&|1+2#e000002&|8|1|9| +0#0000000&|1+2#e000002&|a|1|b| +0#0000000&|1+2#e000002&|c|1|d| +0#0000000&|1+2#e000002&|e|1|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|2|0|:| |2+2#00e0003&|0|2|1| +0#0000000&|2+2#00e0003&@2|3| +0#0000000&|2+2#00e0003&|4|2|5| +0#0000000&|2+2#00e0003&|6|0+2#e0e0e08&@1| +0#0000000&|2+2#00e0003&|8|2|9| +0#0000000&|2+2#00e0003&|a|2|b| +0#0000000&|2+2#00e0003&|c|2|d| +0#0000000&|2+2#00e0003&|e|2|f| +0#0000000&@1| +2#00e0003&|!|"|#|$|%|&|.+2#e0e0e08&|(+2#00e0003&|)|*|+|,|-|.|/| +0#0000000&@7
+|0@5|3|0|:| |3+2#00e0003&|0|3|1| +0#0000000&|3+2#00e0003&|2|3@1| +0#0000000&|3+2#00e0003&|4|3|5| +0#0000000&|3+2#00e0003&|6|3|7| +0#0000000&|3+2#00e0003&|8|3|9| +0#0000000&|3+2#00e0003&|a|3|b| +0#0000000&|3+2#00e0003&|c|3|d| +0#0000000&|3+2#00e0003&|e|3|f| +0#0000000&@1|0+2#00e0003&|1|2|3|4|5|6|7|8|9|:|;|<|=|>|?| +0#0000000&@7
+|0@5|4|0|:| |4+2#00e0003&|0|4|1| +0#0000000&|4+2#00e0003&|2|4|3| +0#0000000&|4+2#00e0003&@2|5| +0#0000000&|4+2#00e0003&|6|4|7| +0#0000000&|4+2#00e0003&|8|4|9| +0#0000000&|4+2#00e0003&|a|4|b| +0#0000000&|4+2#00e0003&|c|4|d| +0#0000000&|4+2#00e0003&|e|4|f| +0#0000000&@1|@+2#00e0003&|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O| +0#0000000&@7
+|0@5|5|0|:| |5+2#00e0003&|0|5|1| +0#0000000&|5+2#00e0003&|2|5|3| +0#0000000&|5+2#00e0003&|4|5@1| +0#0000000&|5+2#00e0003&|6|5|7| +0#0000000&|5+2#00e0003&|8|5|9| +0#0000000&|5+2#00e0003&|a|5|b| +0#0000000&|0+2#e0e0e08&@1|5+2#00e0003&|d| +0#0000000&|5+2#00e0003&|e|5|f| +0#0000000&@1|P+2#00e0003&|Q|R|S|T|U|V|W|X|Y|Z|[|.+2#e0e0e08&|]+2#00e0003&|^|_| +0#0000000&@7
+|0@5|6|0|:| |6+2#00e0003&|0|6|1| +0#0000000&|6+2#00e0003&|2|6|3| +0#0000000&|6+2#00e0003&|4|6|5| +0#0000000&|6+2#00e0003&@2|7| +0#0000000&|6+2#00e0003&|8|6|9| +0#0000000&|6+2#00e0003&|a|6|b| +0#0000000&|6+2#00e0003&|c|6|d| +0#0000000&|6+2#00e0003&|e|6|f| +0#0000000&@1|`+2#00e0003&|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o| +0#0000000&@7
+|0@5|7|0|:| |7+2#00e0003&|0|7|1| +0#0000000&|7+2#00e0003&|2|7|3| +0#0000000&|7+2#00e0003&|4|7|5| +0#0000000&|7+2#00e0003&|6|7@1| +0#0000000&|7+2#00e0003&|8|7|9| +0#0000000&|7+2#00e0003&|a|7|b| +0#0000000&|7+2#00e0003&|c|7|d| +0#0000000&|7+2#00e0003&|e|7+2#e000002&|f| +0#0000000&@1|p+2#00e0003&|q|r|s|t|u|v|w|x|y|z|{|||}|~|.+2#e000002&| +0#0000000&@7
+|0@5|8|0|:| |8+2#e000002&|0|8|1| +0#0000000&|8+2#e000002&|2|8|3| +0#0000000&|8+2#e000002&|4|8|5| +0#0000000&|8+2#e000002&|6|8|7| +0#0000000&|8+2#e000002&@2|9| +0#0000000&|8+2#e000002&|a|8|b| +0#0000000&|8+2#e000002&|c|8|d| +0#0000000&|8+2#e000002&|e|8|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|9|0|:| |9+2#e000002&|0|9|1| +0#0000000&|9+2#e000002&|2|9|3| +0#0000000&|9+2#e000002&|4|9|5| +0#0000000&|9+2#e000002&|6|9|7| +0#0000000&|9+2#e000002&|8|9@1| +0#0000000&|9+2#e000002&|a|9|b| +0#0000000&|9+2#e000002&|c|9|d| +0#0000000&|9+2#e000002&|e|9|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|a|0|:| |a+2#e000002&|0|a|1| +0#0000000&|a+2#e000002&|2|a|3| +0#0000000&|a+2#e000002&|4|a|5| +0#0000000&|a+2#e000002&|6|a|7| +0#0000000&|a+2#e000002&|8|a|9| +0#0000000&|a+2#e000002&@2|b| +0#0000000&|a+2#e000002&|c|a|d| +0#0000000&|a+2#e000002&|e|a|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|b|0|:| |b+2#e000002&|0|b|1| +0#0000000&|b+2#e000002&|2|b|3| +0#0000000&|b+2#e000002&|4|b|5| +0#0000000&|b+2#e000002&|6|b|7| +0#0000000&|b+2#e000002&|8|b|9| +0#0000000&|b+2#e000002&|a|b@1| +0#0000000&|b+2#e000002&|c|b|d| +0#0000000&|b+2#e000002&|e|b|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|c|0|:| |c+2#e000002&|0|c|1| +0#0000000&|c+2#e000002&|2|c|3| +0#0000000&|c+2#e000002&|4|c|5| +0#0000000&|c+2#e000002&|6|c|7| +0#0000000&|c+2#e000002&|8|c|9| +0#0000000&|c+2#e000002&|a|c|b| +0#0000000&|c+2#e000002&@2|d| +0#0000000&|c+2#e000002&|e|c|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|d|0|:| |d+2#e000002&|0|d|1| +0#0000000&|d+2#e000002&|2|d|3| +0#0000000&|d+2#e000002&|4|d|5| +0#0000000&|d+2#e000002&|6|d|7| +0#0000000&|d+2#e000002&|8|d|9| +0#0000000&|d+2#e000002&|a|d|b| +0#0000000&|d+2#e000002&|c|d@1| +0#0000000&|d+2#e000002&|e|d|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|e|0|:| |e+2#e000002&|0|e|1| +0#0000000&|e+2#e000002&|2|e|3| +0#0000000&|e+2#e000002&|4|e|5| +0#0000000&|e+2#e000002&|6|e|7| +0#0000000&|e+2#e000002&|8|e|9| +0#0000000&|e+2#e000002&|a|e|b| +0#0000000&|e+2#e000002&|c|e|d| +0#0000000&|e+2#e000002&@2|f| +0#0000000&@1|.+2#e000002&@15| +0#0000000&@7
+|0@5|f|0|:| |f+2#e000002&|0|f|1| +0#0000000&|f+2#e000002&|2|f|3| +0#0000000&|f+2#e000002&|4|f|5| +0#0000000&|f+2#e000002&|6|f|7| +0#0000000&|f+2#e000002&|8|f|9| +0#0000000&|f+2#e000002&|a|f|b| +0#0000000&|f+2#e000002&|c|f|d| +0#0000000&|f+2#e000002&|e|f+2#0000e05&@1| +0#0000000&@1|.+2#e000002&@14|.+2#0000e05&| +0#0000000&@7
+|$| > @72
+@75
+@75
+@75
new file mode 100644
--- /dev/null
+++ b/src/testdir/dumps/Test_xxd_color_1.vim
@@ -0,0 +1,3 @@
+" Filter that removes the Shell Prompt from the xxd command
+" 18,20d
+:1s#|\$+0&\#ffffff0| |.@1|/|x@1|d|/|x@1|d|.*\n#|$+0\&\#ffffff0| #e
--- a/src/testdir/term_util.vim
+++ b/src/testdir/term_util.vim
@@ -56,6 +56,7 @@ endfunc
 " "statusoff" - number of lines the status is offset from default
 " "wait_for_ruler" - if zero then don't wait for ruler to show
 " "no_clean" - if non-zero then remove "--clean" from the command
+" "cmd"  - run any other command, e.g. "xxd" (used in xxd test)
 func RunVimInTerminal(arguments, options)
   " If Vim doesn't exit a swap file remains, causing other tests to fail.
   " Remove it here.
@@ -90,7 +91,11 @@ func RunVimInTerminal(arguments, options
     let reset_u7 = ' --cmd "set t_u7=" '
   endif
 
-  let cmd = GetVimCommandCleanTerm() .. reset_u7 .. a:arguments
+  if empty(get(a:options, 'cmd', ''))
+    let cmd = GetVimCommandCleanTerm() .. reset_u7 .. a:arguments
+  else
+    let cmd = get(a:options, 'cmd')
+  endif
 
   if get(a:options, 'no_clean', 0)
     let cmd = substitute(cmd, '--clean', '', '')
@@ -120,7 +125,7 @@ func RunVimInTerminal(arguments, options
 
   call TermWait(buf)
 
-  if get(a:options, 'wait_for_ruler', 1)
+  if get(a:options, 'wait_for_ruler', 1) && empty(get(a:options, 'cmd', ''))
     " Wait for "All" or "Top" of the ruler to be shown in the last line or in
     " the status line of the last window. This can be quite slow (e.g. when
     " using valgrind).
--- a/src/testdir/test_breakindent.vim
+++ b/src/testdir/test_breakindent.vim
@@ -897,7 +897,8 @@ func Test_cursor_position_with_showbreak
   let lines =<< trim END
       vim9script
       &signcolumn = 'yes'
-      &showbreak = '+ '
+      &showbreak = '++'
+      &breakindentopt = 'shift:2'
       var leftcol: number = win_getid()->getwininfo()->get(0, {})->get('textoff')
       repeat('x', &columns - leftcol - 1)->setline(1)
       'second line'->setline(2)
@@ -906,7 +907,18 @@ func Test_cursor_position_with_showbreak
   let buf = RunVimInTerminal('-S XscriptShowbreak', #{rows: 6})
 
   call term_sendkeys(buf, "AX")
-  call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak', {})
+  call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_1', {})
+  " No line wraps, so changing 'showbreak' should lead to the same screen.
+  call term_sendkeys(buf, "\<C-\>\<C-O>:setlocal showbreak=+\<CR>")
+  call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_1', {})
+  " No line wraps, so setting 'breakindent' should lead to the same screen.
+  call term_sendkeys(buf, "\<C-\>\<C-O>:setlocal breakindent\<CR>")
+  call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_1', {})
+  " The first line now wraps because of "eol" in 'listchars'.
+  call term_sendkeys(buf, "\<C-\>\<C-O>:setlocal list\<CR>")
+  call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_2', {})
+  call term_sendkeys(buf, "\<C-\>\<C-O>:setlocal nobreakindent\<CR>")
+  call VerifyScreenDump(buf, 'Test_cursor_position_with_showbreak_3', {})
 
   call StopVimInTerminal(buf)
 endfunc
--- a/src/testdir/test_channel_lsp.py
+++ b/src/testdir/test_channel_lsp.py
@@ -172,7 +172,7 @@ class ThreadedTCPRequestHandler(socketse
     def do_extra_hdr_fields(self, payload):
         self.send_extra_hdr_fields(payload['id'], 'extra-hdr-fields')
 
-    def do_delayad_payload(self, payload):
+    def do_delayed_payload(self, payload):
         self.send_delayed_payload(payload['id'], 'delayed-payload')
 
     def do_hdr_without_len(self, payload):
@@ -208,7 +208,7 @@ class ThreadedTCPRequestHandler(socketse
                         'msg-specific-cb': self.do_msg_specific_cb,
                         'server-req': self.do_server_req,
                         'extra-hdr-fields': self.do_extra_hdr_fields,
-                        'delayed-payload': self.do_delayad_payload,
+                        'delayed-payload': self.do_delayed_payload,
                         'hdr-without-len': self.do_hdr_without_len,
                         'hdr-with-wrong-len': self.do_hdr_with_wrong_len,
                         'hdr-with-negative-len': self.do_hdr_with_negative_len,
--- a/src/testdir/test_codestyle.vim
+++ b/src/testdir/test_codestyle.vim
@@ -6,48 +6,44 @@ def s:ReportError(fname: string, lnum: n
   endif
 enddef
 
+def s:PerformCheck(fname: string, pattern: string, msg: string, skip: string)
+  var lnum = 1
+  while (lnum > 0)
+    cursor(lnum, 1)
+    lnum = search(pattern, 'W', 0, 0, skip)
+    ReportError(fname, lnum, msg)
+    if (lnum > 0)
+      lnum += 1
+    endif
+  endwhile
+enddef
+
 def Test_source_files()
-  for fname in glob('../*.[ch]', 0, 1)
+  for fname in glob('../*.[ch]', 0, 1) + ['../xxd/xxd.c']
     bwipe!
     g:ignoreSwapExists = 'e'
     exe 'edit ' .. fname
 
-    cursor(1, 1)
-    var lnum = search(' \t')
-    ReportError(fname, lnum, 'space before Tab')
+    PerformCheck(fname, ' \t', 'space before Tab', '')
 
-    cursor(1, 1)
-    lnum = search('\s$')
-    ReportError(fname, lnum, 'trailing white space')
+    PerformCheck(fname, '\s$', 'trailing white space', '')
 
     # some files don't stick to the Vim style rules
     if fname =~ 'iscygpty.c'
       continue
     endif
 
-    # Examples in comments use "condition) {", skip them.
-    # Skip if a double quote or digit comes after the "{".
-    # Skip specific string used in os_unix.c.
-    # Also skip fold markers.
     var skip = 'getline(".") =~ "condition) {" || getline(".") =~ "vimglob_func" || getline(".") =~ "{\"" || getline(".") =~ "{\\d" || getline(".") =~ "{{{"'
-    cursor(1, 1)
-    lnum = search(')\s*{', '', 0, 0, skip)
-    ReportError(fname, lnum, 'curly after closing paren')
+    PerformCheck(fname, ')\s*{', 'curly after closing paren', skip)
 
     # Examples in comments use double quotes.
     skip = "getline('.') =~ '\"'"
 
-    cursor(1, 1)
-    lnum = search('}\s*else', '', 0, 0, skip)
-    ReportError(fname, lnum, 'curly before "else"')
+    PerformCheck(fname, '}\s*else', 'curly before "else"', skip)
 
-    cursor(1, 1)
-    lnum = search('else\s*{', '', 0, 0, skip)
-    ReportError(fname, lnum, 'curly after "else"')
+    PerformCheck(fname, 'else\s*{', 'curly after "else"', skip)
 
-    cursor(1, 1)
-    lnum = search('\<\(if\|while\|for\)(', '', 0, 0, skip)
-    ReportError(fname, lnum, 'missing white space after "if"/"while"/"for"')
+    PerformCheck(fname, '\<\(if\|while\|for\)(', 'missing white space after "if"/"while"/"for"', skip)
   endfor
 
   bwipe!
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_crash.vim
@@ -0,0 +1,99 @@
+" Some tests, that used to crash Vim
+source check.vim
+source screendump.vim
+
+CheckScreendump
+
+func Test_crash1()
+  CheckNotBSD
+  CheckExecutable dash
+  " Test 7 fails on Mac ...
+  CheckNotMac
+
+  " The following used to crash Vim
+  let opts = #{cmd: 'sh'}
+  let vim  = GetVimProg()
+
+  let buf = RunVimInTerminal('sh', opts)
+
+  let file = 'crash/poc_huaf1'
+  let cmn_args = "%s -u NONE -i NONE -n -e -s -S %s -c ':qa!'"
+  let args = printf(cmn_args, vim, file)
+  call term_sendkeys(buf, args ..
+    \ '  && echo "crash 1: [OK]" > X_crash1_result.txt' .. "\<cr>")
+  call TermWait(buf, 50)
+
+  let file = 'crash/poc_huaf2'
+  let args = printf(cmn_args, vim, file)
+  call term_sendkeys(buf, args ..
+    \ '  && echo "crash 2: [OK]" >> X_crash1_result.txt' .. "\<cr>")
+  call TermWait(buf, 50)
+
+  let file = 'crash/poc_huaf3'
+  let args = printf(cmn_args, vim, file)
+  call term_sendkeys(buf, args ..
+    \ '  && echo "crash 3: [OK]" >> X_crash1_result.txt' .. "\<cr>")
+  call TermWait(buf, 100)
+
+  let file = 'crash/bt_quickfix_poc'
+  let args = printf(cmn_args, vim, file)
+  call term_sendkeys(buf, args ..
+    \ '  && echo "crash 4: [OK]" >> X_crash1_result.txt' .. "\<cr>")
+  " clean up
+  call delete('Xerr')
+  " This test takes a bit longer
+  call TermWait(buf, 1000)
+
+  let file = 'crash/poc_tagfunc.vim'
+  let args = printf(cmn_args, vim, file)
+  " using || because this poc causes vim to exit with exitstatus != 0
+  call term_sendkeys(buf, args ..
+    \ '  || echo "crash 5: [OK]" >> X_crash1_result.txt' .. "\<cr>")
+
+  call TermWait(buf, 100)
+
+  let file = 'crash/bt_quickfix1_poc'
+  let args = printf(cmn_args, vim, file)
+  call term_sendkeys(buf, args ..
+    \ '  && echo "crash 6: [OK]" >> X_crash1_result.txt' .. "\<cr>")
+  " clean up
+  call delete('X')
+  call TermWait(buf, 3000)
+
+  let file = 'crash/vim_regsub_both_poc'
+  let args = printf(cmn_args, vim, file)
+  call term_sendkeys(buf, args ..
+    \ '  && echo "crash 7: [OK]" >> X_crash1_result.txt' .. "\<cr>")
+  call TermWait(buf, 3000)
+
+  " clean up
+  exe buf .. "bw!"
+
+  sp X_crash1_result.txt
+
+  let expected = [
+      \ 'crash 1: [OK]',
+      \ 'crash 2: [OK]',
+      \ 'crash 3: [OK]',
+      \ 'crash 4: [OK]',
+      \ 'crash 5: [OK]',
+      \ 'crash 6: [OK]',
+      \ 'crash 7: [OK]',
+      \ ]
+
+  call assert_equal(expected, getline(1, '$'))
+  bw!
+
+  call delete('X_crash1_result.txt')
+endfunc
+
+func Test_crash2()
+  " The following used to crash Vim
+  let opts = #{wait_for_ruler: 0, rows: 20}
+  let args = ' -u NONE -i NONE -n -e -s -S '
+  let buf = RunVimInTerminal(args .. ' crash/vim_regsub_both', opts)
+  call VerifyScreenDump(buf, 'Test_crash_01', {})
+  exe buf .. "bw!"
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_crypt.vim
+++ b/src/testdir/test_crypt.vim
@@ -290,7 +290,11 @@ func Test_uncrypt_xchacha20v2_2()
   " encrypted using xchacha20
   call assert_match("\[xchachav2\]", execute(':messages'))
   bw!
-  call feedkeys(":verbose :sp Xcrypt_sodium_v2.txt\<CR>sodium\<CR>", 'xt')
+	try
+		call feedkeys(":verbose :sp Xcrypt_sodium_v2.txt\<CR>sodium\<CR>", 'xt')
+  catch /^Vim\%((\a\+)\)\=:E1230:/ " sodium_mlock() not possible, may happen at Github CI
+    throw 'Skipped: sodium_mlock() not possible'
+  endtry
   " successfully decrypted
   call assert_equal(range(1, 4000)->map( {_, v -> string(v)}), getline(1,'$'))
   call assert_match('xchacha20v2: using default \w\+ "\d\+" for Key derivation.', execute(':messages'))
--- a/src/testdir/test_display.vim
+++ b/src/testdir/test_display.vim
@@ -410,12 +410,19 @@ func Test_display_linebreak_breakat()
   new
   vert resize 25
   let _breakat = &breakat
-  setl signcolumn=yes linebreak breakat=) showbreak=+\ 
+  setl signcolumn=yes linebreak breakat=) showbreak=++
   call setline(1, repeat('x', winwidth(0) - 2) .. ')abc')
   let lines = ScreenLines([1, 2], 25)
   let expected = [
           \ '  xxxxxxxxxxxxxxxxxxxxxxx',
-          \ '  + )abc                 '
+          \ '  ++)abc                 ',
+          \ ]
+  call assert_equal(expected, lines)
+  setl breakindent breakindentopt=shift:2
+  let lines = ScreenLines([1, 2], 25)
+  let expected = [
+          \ '  xxxxxxxxxxxxxxxxxxxxxxx',
+          \ '    ++)abc               ',
           \ ]
   call assert_equal(expected, lines)
   %bw!
--- a/src/testdir/test_filetype.vim
+++ b/src/testdir/test_filetype.vim
@@ -205,7 +205,7 @@ def s:GetFilenameChecks(): dict<list<str
     dnsmasq: ['/etc/dnsmasq.conf', '/etc/dnsmasq.d/file', 'any/etc/dnsmasq.conf', 'any/etc/dnsmasq.d/file'],
     dockerfile: ['Containerfile', 'Dockerfile', 'dockerfile', 'file.Dockerfile', 'file.dockerfile', 'Dockerfile.debian', 'Containerfile.something'],
     dosbatch: ['file.bat'],
-    dosini: ['/etc/yum.conf', 'file.ini', 'npmrc', '.npmrc', 'php.ini', 'php.ini-5', 'php.ini-file', '/etc/yum.repos.d/file', 'any/etc/yum.conf', 'any/etc/yum.repos.d/file', 'file.wrap'],
+    dosini: ['/etc/yum.conf', 'file.ini', 'npmrc', '.npmrc', 'php.ini', 'php.ini-5', 'php.ini-file', '/etc/yum.repos.d/file', 'any/etc/yum.conf', 'any/etc/yum.repos.d/file', 'file.wrap', 'file.vbp'],
     dot: ['file.dot', 'file.gv'],
     dracula: ['file.drac', 'file.drc', 'filelvs', 'filelpe', 'drac.file', 'lpe', 'lvs', 'some-lpe', 'some-lvs'],
     dtd: ['file.dtd'],
@@ -482,6 +482,7 @@ def s:GetFilenameChecks(): dict<list<str
     nim: ['file.nim', 'file.nims', 'file.nimble'],
     ninja: ['file.ninja'],
     nix: ['file.nix'],
+    norg: ['file.norg'],
     nqc: ['file.nqc'],
     nroff: ['file.tr', 'file.nr', 'file.roff', 'file.tmac', 'file.mom', 'tmac.file'],
     nsis: ['file.nsi', 'file.nsh'],
@@ -759,7 +760,7 @@ def s:GetFilenameChecks(): dict<list<str
     usw2kagtlog: ['usw2kagt.log', 'USW2KAGT.LOG', 'usw2kagt.file.log', 'USW2KAGT.FILE.LOG', 'file.usw2kagt.log', 'FILE.USW2KAGT.LOG'],
     v: ['file.vsh', 'file.vv'],
     vala: ['file.vala'],
-    vb: ['file.sba', 'file.vb', 'file.vbs', 'file.dsm', 'file.ctl'],
+    vb: ['file.sba', 'file.vb', 'file.vbs', 'file.dsm', 'file.ctl', 'file.dob', 'file.dsr'],
     vdf: ['file.vdf'],
     vdmpp: ['file.vpp', 'file.vdmpp'],
     vdmrt: ['file.vdmrt'],
@@ -769,7 +770,7 @@ def s:GetFilenameChecks(): dict<list<str
     vgrindefs: ['vgrindefs'],
     vhdl: ['file.hdl', 'file.vhd', 'file.vhdl', 'file.vbe', 'file.vst', 'file.vhdl_123', 'file.vho', 'some.vhdl_1', 'some.vhdl_1-file'],
     vhs: ['file.tape'],
-    vim: ['file.vim', 'file.vba', '.exrc', '_exrc', 'some-vimrc', 'some-vimrc-file', 'vimrc', 'vimrc-file'],
+    vim: ['file.vim', '.exrc', '_exrc', 'some-vimrc', 'some-vimrc-file', 'vimrc', 'vimrc-file'],
     viminfo: ['.viminfo', '_viminfo'],
     vmasm: ['file.mar'],
     voscm: ['file.cm'],
@@ -943,6 +944,9 @@ def s:GetScriptChecks(): dict<list<list<
     fish:   [['#!/path/fish']],
     forth:  [['#!/path/gforth']],
     icon:   [['#!/path/icon']],
+    crystal: [['#!/path/crystal']],
+    rexx:   [['#!/path/rexx'],
+            ['#!/path/regina']],
   }
 enddef
 
@@ -1379,7 +1383,7 @@ func Test_frm_file()
 
   " Visual Basic
 
-  call writefile(['Begin VB.Form Form1'], 'Xfile.frm')
+  call writefile(['VERSION 5.00', 'Begin VB.Form Form1'], 'Xfile.frm')
   split Xfile.frm
   call assert_equal('vb', &filetype)
   bwipe!
@@ -2043,7 +2047,22 @@ func Test_cls_file()
 
   " Rexx
 
-  call writefile(['# rexx'], 'Xfile.cls')
+  call writefile(['#!/usr/bin/rexx'], 'Xfile.cls')
+  split Xfile.cls
+  call assert_equal('rexx', &filetype)
+  bwipe!
+
+  call writefile(['#!/usr/bin/regina'], 'Xfile.cls')
+  split Xfile.cls
+  call assert_equal('rexx', &filetype)
+  bwipe!
+
+  call writefile(['/* Comment */'], 'Xfile.cls')
+  split Xfile.cls
+  call assert_equal('rexx', &filetype)
+  bwipe!
+
+  call writefile(['::class Foo subclass Bar public'], 'Xfile.cls')
   split Xfile.cls
   call assert_equal('rexx', &filetype)
   bwipe!
@@ -2288,4 +2307,26 @@ func Test_typ_file()
   filetype off
 endfunc
 
+func Test_vba_file()
+  filetype on
+
+  " Test dist#ft#FTvba()
+
+  " Visual Basic
+
+  call writefile(['looks like Visual Basic'], 'Xfile.vba', 'D')
+  split Xfile.vba
+  call assert_equal('vb', &filetype)
+  bwipe!
+
+  " Vimball Archiver (ft=vim)
+
+  call writefile(['" Vimball Archiver by Charles E. Campbell, Ph.D.', 'UseVimball', 'finish'], 'Xfile.vba', 'D')
+  split Xfile.vba
+  call assert_equal('vim', &filetype)
+  bwipe!
+
+  filetype off
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -935,9 +935,19 @@ func Test_mode()
 
   if has('terminal')
     term
+    " Terminal-Job mode
+    call assert_equal('t', mode())
+    call assert_equal('t', mode(1))
+    call feedkeys("\<C-W>:echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt')
+    call assert_equal("c-ct", g:current_modes)
+    call feedkeys("\<Esc>", 'xt')
+
+    " Terminal-Normal mode
     call feedkeys("\<C-W>N", 'xt')
     call assert_equal('n', mode())
     call assert_equal('nt', mode(1))
+    call feedkeys(":echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt')
+    call assert_equal("c-c", g:current_modes)
     call feedkeys("aexit\<CR>", 'xt')
   endif
 
@@ -3607,4 +3617,9 @@ func Test_string_reverse()
   let &encoding = save_enc
 endfunc
 
+func Test_fullcommand()
+  " this used to crash vim
+  call assert_equal('', fullcommand(10))
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -1687,4 +1687,9 @@ func Test_gui_macro_csi()
   iunmap <C-D>t
 endfunc
 
+func Test_gui_csi_keytrans()
+  call assert_equal('<C-L>', keytrans("\x9b\xfc\x04L"))
+  call assert_equal('<C-D>', keytrans("\x9b\xfc\x04D"))
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -374,6 +374,12 @@ func Test_set_completion()
   call assert_equal('"set filetype=sshdconfig', @:)
   call feedkeys(":set filetype=a\<C-A>\<C-B>\"\<CR>", 'xt')
   call assert_equal('"set filetype=' .. getcompletion('a*', 'filetype')->join(), @:)
+
+  " Expand values for 'syntax'
+  call feedkeys(":set syntax=sshdconfi\<Tab>\<C-B>\"\<CR>", 'xt')
+  call assert_equal('"set syntax=sshdconfig', @:)
+  call feedkeys(":set syntax=a\<C-A>\<C-B>\"\<CR>", 'xt')
+  call assert_equal('"set syntax=' .. getcompletion('a*', 'syntax')->join(), @:)
 endfunc
 
 func Test_set_option_errors()
@@ -1811,11 +1817,11 @@ func Test_paste_depending_options()
 
   let result = readfile('Xoutput_paste')->filter('!empty(v:val)')
   call assert_equal('noexpandtab', result[0])
-  call assert_match("^	Last set from .*Xvimrc_paste2 line 1$", result[1])
+  call assert_match("^\tLast set from .*Xvimrc_paste2 line 1$", result[1])
   call assert_equal('noexpandtab', result[2])
-  call assert_match("^	Last set from .*Xvimrc_paste2 line 1$", result[3])
+  call assert_match("^\tLast set from .*Xvimrc_paste2 line 1$", result[3])
   call assert_equal('noexpandtab', result[4])
-  call assert_match("^	Last set from .*Xvimrc_paste2 line 1$", result[5])
+  call assert_match("^\tLast set from .*Xvimrc_paste2 line 1$", result[5])
 
   call delete('Xoutput_paste')
 endfunc
@@ -1846,11 +1852,11 @@ func Test_binary_depending_options()
 
   let result = readfile('Xoutput_bin')->filter('!empty(v:val)')
   call assert_equal('noexpandtab', result[0])
-  call assert_match("^	Last set from .*Xvimrc_bin2 line 1$", result[1])
+  call assert_match("^\tLast set from .*Xvimrc_bin2 line 1$", result[1])
   call assert_equal('noexpandtab', result[2])
-  call assert_match("^	Last set from .*Xvimrc_bin2 line 1$", result[3])
+  call assert_match("^\tLast set from .*Xvimrc_bin2 line 1$", result[3])
   call assert_equal('noexpandtab', result[4])
-  call assert_match("^	Last set from .*Xvimrc_bin2 line 1$", result[5])
+  call assert_match("^\tLast set from .*Xvimrc_bin2 line 1$", result[5])
 
   call delete('Xoutput_bin')
 endfunc
--- a/src/testdir/test_recover.vim
+++ b/src/testdir/test_recover.vim
@@ -161,6 +161,7 @@ endfunc
 func Test_recover_empty_swap_file()
   CheckUnix
   call writefile([], '.Xfile1.swp', 'D')
+  set dir=.
   let msg = execute('recover Xfile1')
   call assert_match('Unable to read block 0 from .Xfile1.swp', msg)
   call assert_equal('Xfile1', @%)
@@ -173,6 +174,7 @@ func Test_recover_empty_swap_file()
 
   " :recover from an empty buffer
   call assert_fails('recover', 'E305:')
+  set dir&vim
 endfunc
 
 " Test for :recover using a corrupted swap file
--- a/src/testdir/test_selectmode.vim
+++ b/src/testdir/test_selectmode.vim
@@ -310,4 +310,15 @@ func Test_selectmode_register()
   bw!
 endfunc
 
+func Test_ins_ctrl_o_in_insert_mode_resets_selectmode()
+  new
+  " ctrl-o in insert mode resets restart_VIsual_select
+  call setline(1, 'abcdef')
+  call cursor(1, 1)
+  exe "norm! \<c-v>\<c-g>\<c-o>c\<c-o>\<c-v>\<right>\<right>IABC"
+  call assert_equal('ABCbcdef', getline(1))
+
+  bwipe!
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -132,6 +132,26 @@ foobar/?
   set spell&
 endfunc
 
+func Test_spell_camelcase()
+  set spell spelloptions=camel
+  let words = [
+      \ 'UPPER',
+      \ 'lower',
+      \ 'mixedCase',
+      \ 'HTML',
+      \ 'XMLHttpRequest',
+      \ 'foo123bar',
+      \ '12345678',
+      \ 'HELLO123world',
+      \]
+
+  for word in words
+    call assert_equal(['', ''],  spellbadword(word))
+  endfor
+
+  set spell& spelloptions&
+endfunc
+
 func Test_spell_file_missing()
   let s:spell_file_missing = 0
   augroup TestSpellFileMissing
--- a/src/testdir/test_substitute.vim
+++ b/src/testdir/test_substitute.vim
@@ -1439,4 +1439,18 @@ func Test_z_substitute_expr_leak()
   delfunc SubExpr
 endfunc
 
+func Test_substitute_expr_switch_win()
+  func R()
+    wincmd x
+    return 'XXXX'
+  endfunc
+  new Xfoobar
+  let bufnr = bufnr('%')
+  put ="abcdef"
+  silent! s/\%')/\=R()
+  call assert_fails(':%s/./\=R()/g', 'E565')
+  delfunc R
+  exe bufnr .. "bw!"
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_termdebug.vim
@@ -0,0 +1,92 @@
+" Test for the termdebug plugin
+
+source shared.vim
+source check.vim
+
+CheckUnix
+CheckFeature terminal
+CheckExecutable gdb
+CheckExecutable gcc
+
+let g:GDB = exepath('gdb')
+if g:GDB->empty()
+  throw 'Skipped: gdb is not found in $PATH'
+endif
+
+let g:GCC = exepath('gcc')
+if g:GCC->empty()
+  throw 'Skipped: gcc is not found in $PATH'
+endif
+
+packadd termdebug
+
+func Test_termdebug_basic()
+  let lines =<< trim END
+    #include <stdio.h>
+    #include <stdlib.h>
+
+    int isprime(int n)
+    {
+      if (n <= 1)
+        return 0;
+
+      for (int i = 2; i <= n / 2; i++)
+        if (n % i == 0)
+          return 0;
+
+      return 1;
+    }
+
+    int main(int argc, char *argv[])
+    {
+      int n = 7;
+
+      printf("%d is %s prime\n", n, isprime(n) ? "a" : "not a");
+
+      return 0;
+    }
+  END
+  call writefile(lines, 'XTD_basic.c', 'D')
+  call system($'{g:GCC} -g -o XTD_basic XTD_basic.c')
+
+  edit XTD_basic.c
+  Termdebug ./XTD_basic
+  call WaitForAssert({-> assert_equal(3, winnr('$'))})
+  let gdb_buf = winbufnr(1)
+  wincmd b
+  Break 9
+  call term_wait(gdb_buf)
+  redraw!
+  call assert_equal([
+        \ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0',
+        \  'priority': 110, 'group': 'TermDebug'}],
+        \ sign_getplaced('', #{group: 'TermDebug'})[0].signs)
+  Run
+  call term_wait(gdb_buf, 400)
+  redraw!
+  call WaitForAssert({-> assert_equal([
+        \ {'lnum': 9, 'id': 12, 'name': 'debugPC', 'priority': 110,
+        \  'group': 'TermDebug'},
+        \ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0',
+        \  'priority': 110, 'group': 'TermDebug'}],
+        \ sign_getplaced('', #{group: 'TermDebug'})[0].signs)})
+  Finish
+  call term_wait(gdb_buf)
+  redraw!
+  call WaitForAssert({-> assert_equal([
+        \ {'lnum': 9, 'id': 1014, 'name': 'debugBreakpoint1.0',
+        \  'priority': 110, 'group': 'TermDebug'},
+        \ {'lnum': 20, 'id': 12, 'name': 'debugPC',
+        \  'priority': 110, 'group': 'TermDebug'}],
+        \ sign_getplaced('', #{group: 'TermDebug'})[0].signs)})
+  Continue
+  wincmd t
+  quit!
+  redraw!
+  call assert_equal([], sign_getplaced('', #{group: 'TermDebug'})[0].signs)
+
+  call delete('XTD_basic')
+  %bw!
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -1983,7 +1983,7 @@ func Test_prop_with_linebreak()
       set linebreak
       setline(1, 'one twoword')
       prop_type_add('test', {highlight: 'Special'})
-      prop_add(1, 4, {text: ': virtual text', type: 'test', text_wrap: 'wrap'})
+      prop_add(1, 4, {text: ': virtual text', type: 'test'})
   END
   call writefile(lines, 'XscriptPropWithLinebreak', 'D')
   let buf = RunVimInTerminal('-S XscriptPropWithLinebreak', #{rows: 6, cols: 50})
@@ -2602,6 +2602,57 @@ func Test_prop_inserts_text_highlight()
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_prop_inserts_text_normal_gM()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    call setline(1, '123456789')
+    call prop_type_add('theprop', #{highlight: 'Special'})
+    call prop_add(1, 3, {'type': 'theprop', 'text': 'bbb'})
+    call prop_add(1, 8, {'type': 'theprop', 'text': 'bbb'})
+  END
+  call writefile(lines, 'XscriptPropsNormal_gM', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropsNormal_gM', #{rows: 3, cols: 60})
+  call term_sendkeys(buf, "gM")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gM', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
+func Run_test_prop_inserts_text_normal_gj_gk(cmd)
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    call setline(1, repeat([repeat('a', 55)], 2))
+    call prop_type_add('theprop', {})
+    call prop_add(1, 41, {'type': 'theprop', 'text': repeat('b', 10)})
+    call prop_add(2, 41, {'type': 'theprop', 'text': repeat('b', 10)})
+  END
+  let lines = insert(lines, a:cmd)
+  call writefile(lines, 'XscriptPropsNormal_gj_gk', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropsNormal_gj_gk', #{rows: 6, cols: 60})
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gj_gk_1', {})
+  call term_sendkeys(buf, "gj")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gj_gk_2', {})
+  call term_sendkeys(buf, "gj")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gj_gk_3', {})
+  call term_sendkeys(buf, "gj")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gj_gk_4', {})
+  call term_sendkeys(buf, "gk")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gj_gk_5', {})
+  call term_sendkeys(buf, "gk")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gj_gk_6', {})
+  call term_sendkeys(buf, "gk")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_normal_gj_gk_7', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
+func Test_prop_inserts_text_normal_gj_gk()
+  call Run_test_prop_inserts_text_normal_gj_gk('')
+  call Run_test_prop_inserts_text_normal_gj_gk('set virtualedit=all')
+endfunc
+
 func Test_prop_inserts_text_visual_block()
   CheckRunVimInTerminal
 
@@ -2635,11 +2686,11 @@ func Run_test_prop_inserts_text_showbrea
 
   let lines =<< trim END
     highlight! link LineNr Normal
+    setlocal number showbreak=+ breakindent breakindentopt=shift:2
+    setlocal scrolloff=0 smoothscroll
     call setline(1, repeat('a', 28))
     call prop_type_add('theprop', #{highlight: 'Special'})
-    call prop_add(1, 28, #{type: 'theprop', text: repeat('123', 23), text_wrap: 'wrap'})
-    setlocal number showbreak=+ breakindent breakindentopt=shift:2
-    setlocal scrolloff=0 smoothscroll
+    call prop_add(1, 28, #{type: 'theprop', text: repeat('123', 23)})
     normal! $
   END
   let lines = insert(lines, a:cmd)
@@ -2687,6 +2738,12 @@ func Run_test_prop_inserts_text_showbrea
   call VerifyScreenDump(buf, 'Test_prop_inserts_text_showbreak_20', {})
   call term_sendkeys(buf, "\<C-E>")
   call VerifyScreenDump(buf, 'Test_prop_inserts_text_showbreak_21', {})
+  call term_sendkeys(buf, "zbx")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_showbreak_22', {})
+  call term_sendkeys(buf, "26ia\<Esc>a")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_showbreak_23', {})
+  call term_sendkeys(buf, "\<C-\>\<C-O>:setlocal breakindentopt=\<CR>")
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_showbreak_24', {})
 
   call StopVimInTerminal(buf)
 endfunc
@@ -2701,10 +2758,10 @@ func Test_prop_before_tab_skipcol()
   CheckRunVimInTerminal
 
   let lines =<< trim END
+    setlocal list listchars=tab:<-> scrolloff=0 smoothscroll
     call setline(1, repeat("\t", 4) .. 'a')
     call prop_type_add('theprop', #{highlight: 'Special'})
-    call prop_add(1, 4, #{type: 'theprop', text: repeat('12', 32), text_wrap: 'wrap'})
-    setlocal list listchars=tab:<-> scrolloff=0 smoothscroll
+    call prop_add(1, 4, #{type: 'theprop', text: repeat('12', 32)})
     normal! $
   END
   call writefile(lines, 'XscriptPropsBeforeTabSkipcol', 'D')
@@ -2734,6 +2791,66 @@ func Test_prop_before_tab_skipcol()
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_prop_inserts_text_before_linebreak()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    setlocal linebreak showbreak=+ breakindent breakindentopt=shift:2
+    call setline(1, repeat('a', 50) .. ' ' .. repeat('c', 45))
+    call prop_type_add('theprop', #{highlight: 'Special'})
+    call prop_add(1, 51, #{type: 'theprop', text: repeat('b', 10)})
+    normal! $
+  END
+  call writefile(lines, 'XscriptPropsBeforeLinebreak', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropsBeforeLinebreak', #{rows: 6, cols: 50})
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_before_linebreak_1', {})
+  call term_sendkeys(buf, '05x$')
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_before_linebreak_2', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
+func Test_prop_inserts_text_before_double_width_wrap()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    call setline(1, repeat('a', 40) .. 'å£' .. '12345')
+    call prop_type_add('theprop', #{highlight: 'Special'})
+    call prop_add(1, 41, #{type: 'theprop', text: repeat('b', 9)})
+    normal! $
+  END
+  call writefile(lines, 'XscriptPropsBeforeDoubleWidthWrap', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropsBeforeDoubleWidthWrap', #{rows: 3, cols: 50})
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_before_double_width_wrap_1', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
+func Test_prop_inserts_text_lcs_extends()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    setlocal nowrap list listchars=extends:!
+    call setline(1, repeat('a', &columns + 1))
+    call prop_type_add('theprop', #{highlight: 'Special'})
+    call prop_add(1, &columns + 2, #{type: 'theprop', text: 'bbb'})
+  END
+  call writefile(lines, 'XscriptPropsListExtends', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropsListExtends', #{rows: 3, cols: 50})
+  call term_sendkeys(buf, '20l')
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_lcs_extends_1', {})
+  call term_sendkeys(buf, 'zl')
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_lcs_extends_2', {})
+  call term_sendkeys(buf, 'zl')
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_lcs_extends_3', {})
+  call term_sendkeys(buf, 'zl')
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_lcs_extends_4', {})
+  call term_sendkeys(buf, 'zl')
+  call VerifyScreenDump(buf, 'Test_prop_inserts_text_lcs_extends_5', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
 func Test_prop_add_with_text_fails()
   call prop_type_add('failing', #{highlight: 'ErrorMsg'})
   call assert_fails("call prop_add(1, 0, #{type: 'failing', text: 'X', end_lnum: 1})", 'E1305:')
@@ -3138,8 +3255,8 @@ func Test_props_with_text_empty_line()
   let lines =<< trim END
       call setline(1, ['', 'aaa', '', 'bbbbbb'])
       call prop_type_add('prop1', #{highlight: 'Search'})
-      call prop_add(1, 1, #{type: 'prop1', text_wrap: 'wrap', text: repeat('X', &columns)})
-      call prop_add(3, 1, #{type: 'prop1', text_wrap: 'wrap', text: repeat('X', &columns + 1)})
+      call prop_add(1, 1, #{type: 'prop1', text: repeat('X', &columns)})
+      call prop_add(3, 1, #{type: 'prop1', text: repeat('X', &columns + 1)})
       normal gg0
   END
   call writefile(lines, 'XscriptPropsWithTextEmptyLine', 'D')
@@ -3153,6 +3270,14 @@ func Test_props_with_text_empty_line()
   call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_4', {})
   call term_sendkeys(buf, "j")
   call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_5', {})
+  call term_sendkeys(buf, "0\<C-V>2l2k")
+  call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_6', {})
+  call term_sendkeys(buf, "\<Esc>/aaa\\n\\%V\<CR>")
+  call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_7', {})
+  call term_sendkeys(buf, "3ggic")
+  call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_8', {})
+  call term_sendkeys(buf, "\<Esc>/aaa\\nc\\%V\<CR>")
+  call VerifyScreenDump(buf, 'Test_prop_with_text_empty_line_9', {})
 
   call StopVimInTerminal(buf)
 endfunc
@@ -3398,6 +3523,51 @@ func Test_prop_above_with_number()
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_prop_above_with_linebreak()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    setlocal linebreak breakindent breakindentopt=shift:4
+    call setline(1, ["a b", "c d"])
+    call prop_type_add('theprop' , #{highlight: 'Special'})
+    call prop_add(1, 0, #{type: 'theprop', text: '123', text_align: 'above'})
+    normal! 2gg$
+  END
+  call writefile(lines, 'XscriptPropAboveLinebreak', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropAboveLinebreak', #{rows: 6})
+  call VerifyScreenDump(buf, 'Test_prop_above_linebreak_1', {})
+  call term_sendkeys(buf, 'k')
+  call VerifyScreenDump(buf, 'Test_prop_above_linebreak_2', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
+func Test_prop_above_and_before()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    setlocal linebreak breakindent breakindentopt=shift:2
+    call setline(1, ["a", "  b c"])
+    call prop_type_add('theprop' , #{highlight: 'Special'})
+    call prop_add(2, 0, #{type: 'theprop', text: '  123', text_align: 'above'})
+    call prop_add(2, 4, #{type: 'theprop', text: ': 456'} )
+    normal! 2gg$
+  END
+  call writefile(lines, 'XscriptPropAboveAndBefore', 'D')
+  let buf = RunVimInTerminal('-S XscriptPropAboveAndBefore', #{rows: 6})
+  call VerifyScreenDump(buf, 'Test_prop_above_and_before_1', {})
+  call term_sendkeys(buf, 'h')
+  call VerifyScreenDump(buf, 'Test_prop_above_and_before_2', {})
+  call term_sendkeys(buf, 'h')
+  call VerifyScreenDump(buf, 'Test_prop_above_and_before_3', {})
+  call term_sendkeys(buf, 'h')
+  call VerifyScreenDump(buf, 'Test_prop_above_and_before_4', {})
+  call term_sendkeys(buf, 'h')
+  call VerifyScreenDump(buf, 'Test_prop_above_and_before_5', {})
+
+  call StopVimInTerminal(buf)
+endfunc
+
 func Test_prop_below_split_line()
   CheckRunVimInTerminal
 
--- a/src/testdir/test_undo.vim
+++ b/src/testdir/test_undo.vim
@@ -862,5 +862,15 @@ func Test_undo_after_write()
   call delete('Xtestfile.txt')
 endfunc
 
+func Test_undo_range_normal()
+  new
+  call setline(1, ['asa', 'bsb'])
+  let &l:undolevels = &l:undolevels
+  %normal dfs
+  call assert_equal(['a', 'b'], getline(1, '$'))
+  undo
+  call assert_equal(['asa', 'bsb'], getline(1, '$'))
+  bwipe!
+endfunc
 
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/testdir/test_usercommands.vim
+++ b/src/testdir/test_usercommands.vim
@@ -772,6 +772,33 @@ func Test_usercmd_with_block()
   END
   call v9.CheckScriptFailure(lines, 'E1128:')
   delcommand BadCommand
+
+  let lines =<< trim END
+	  vim9script
+    command Cmd {
+        g:result = [1,
+        2]
+    }
+    Cmd
+  END
+  call v9.CheckScriptSuccess(lines)
+  call assert_equal([1, 2], g:result)
+  delcommand Cmd
+	unlet! g:result
+
+  let lines =<< trim END
+		vim9script
+		command Cmd {
+			g:result = and(0x80,
+			0x80)
+    }
+    Cmd
+  END
+  call v9.CheckScriptSuccess(lines)
+  call assert_equal(128, g:result)
+  delcommand Cmd
+	unlet! g:result
+
 endfunc
 
 func Test_delcommand_buffer()
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -2301,6 +2301,46 @@ def Test_insert()
   v9.CheckDefAndScriptFailure(['insert([2, 3], 1, "x")'], ['E1013: Argument 3: type mismatch, expected number but got string', 'E1210: Number required for argument 3'])
 enddef
 
+def Test_instanceof()
+  var lines =<< trim END
+    vim9script
+    class Foo
+    endclass
+    instanceof('hello', Foo)
+  END
+  v9.CheckScriptFailure(lines, 'E616: Object required for argument 1')
+
+  lines =<< trim END
+    vim9script
+    class Foo
+    endclass
+    instanceof(Foo.new(), 123)
+  END
+  v9.CheckScriptFailure(lines, 'E693: List or Class required for argument 2')
+
+  lines =<< trim END
+    vim9script
+    class Foo
+    endclass
+    def Bar()
+      instanceof('hello', Foo)
+    enddef
+    Bar()
+  END
+  v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected object<Unknown> but got string')
+
+  lines =<< trim END
+    vim9script
+    class Foo
+    endclass
+    def Bar()
+      instanceof(Foo.new(), 123)
+    enddef
+    Bar()
+  END
+  v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected class<Unknown> but got number')
+enddef
+
 def Test_invert()
   v9.CheckDefAndScriptFailure(['invert("x")'], ['E1013: Argument 1: type mismatch, expected number but got string', 'E1210: Number required for argument 1'])
 enddef
--- a/src/testdir/test_vim9_class.vim
+++ b/src/testdir/test_vim9_class.vim
@@ -337,7 +337,7 @@ def Test_object_not_set()
       var bg: Background           # UNINITIALIZED
       echo Colorscheme.new(bg).GetBackground()
   END
-  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected object<Background> but got object<Unknown>')
+  v9.CheckScriptFailure(lines, 'E1360:')
 
   # TODO: this should not give an error but be handled at runtime
   lines =<< trim END
@@ -359,6 +359,46 @@ def Test_object_not_set()
   v9.CheckScriptFailure(lines, 'E1363:')
 enddef
 
+def Test_null_object_assign_compare()
+  var lines =<< trim END
+    vim9script
+
+    var nullo = null_object
+    def F(): any
+      return nullo
+    enddef
+    assert_equal('object<Unknown>', typename(F()))
+
+    var o0 = F()
+    assert_true(o0 == null_object)
+    assert_true(o0 == null)
+
+    var o1: any = nullo
+    assert_true(o1 == null_object)
+    assert_true(o1 == null)
+
+    def G()
+      var x = null_object
+    enddef
+
+    class C
+    endclass
+    var o2: C
+    assert_true(o2 == null_object)
+    assert_true(o2 == null)
+
+    o2 = null_object
+    assert_true(o2 == null)
+
+    o2 = C.new()
+    assert_true(o2 != null)
+
+    o2 = null_object
+    assert_true(o2 == null)
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
 def Test_class_member_initializer()
   var lines =<< trim END
       vim9script
@@ -450,7 +490,7 @@ def Test_assignment_with_operator()
       vim9script
 
       class Foo
-        this.x: number
+        public this.x: number
 
         def Add(n: number)
           this.x += n
@@ -469,6 +509,36 @@ def Test_assignment_with_operator()
       assert_equal(23, f.x)
   END
   v9.CheckScriptSuccess(lines)
+
+  # do the same thing, but through an interface
+  lines =<< trim END
+      vim9script
+
+      interface I
+        public this.x: number
+      endinterface
+
+      class Foo implements I
+        public this.x: number
+
+        def Add(n: number)
+          var i: I = this
+          i.x += n
+        enddef
+      endclass
+
+      var f =  Foo.new(3)
+      f.Add(17)
+      assert_equal(20, f.x)
+
+      def AddToFoo(i: I)
+        i.x += 3
+      enddef
+
+      AddToFoo(f)
+      assert_equal(23, f.x)
+  END
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_list_of_objects()
@@ -854,6 +924,59 @@ def Test_class_object_member_access()
     endclass
   END
   v9.CheckScriptFailure(lines, 'E1065:')
+
+  # Test for "static" cannot be followed by "this".
+  lines =<< trim END
+    vim9script
+    class Something
+      static this.val = 1
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1368: Static cannot be followed by "this" in a member name')
+
+  # Access from child class extending a class:
+  lines =<< trim END
+      vim9script
+      class A
+        this.ro_obj_var = 10
+        public this.rw_obj_var = 20
+        this._priv_obj_var = 30
+
+        static ro_class_var = 40
+        public static rw_class_var = 50
+        static _priv_class_var = 60
+      endclass
+
+      class B extends A
+        def Foo()
+          var x: number
+          x = this.ro_obj_var
+          this.ro_obj_var = 0
+          x = this.rw_obj_var
+          this.rw_obj_var = 0
+          x = this._priv_obj_var
+          this._priv_obj_var = 0
+
+          x = ro_class_var
+          ro_class_var = 0
+          x = rw_class_var
+          rw_class_var = 0
+          x = _priv_class_var
+          _priv_class_var = 0
+
+          x = A.ro_class_var
+          A.ro_class_var = 0
+          x = A.rw_class_var
+          A.rw_class_var = 0
+          x = A._priv_class_var
+          A._priv_class_var = 0
+        enddef
+      endclass
+
+      var b = B.new()
+      b.Foo()
+  END
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_class_object_compare()
@@ -1131,6 +1254,61 @@ def Test_class_member()
   END
   v9.CheckScriptFailure(lines, 'E1010:')
 
+  # Test for setting a member on a null object
+  lines =<< trim END
+    vim9script
+    class A
+        public this.val: string
+    endclass
+
+    def F()
+        var obj: A
+        obj.val = ""
+    enddef
+    F()
+  END
+  v9.CheckScriptFailure(lines, 'E1360: Using a null object')
+
+  # Test for accessing a member on a null object
+  lines =<< trim END
+    vim9script
+    class A
+        this.val: string
+    endclass
+
+    def F()
+        var obj: A
+        echo obj.val
+    enddef
+    F()
+  END
+  v9.CheckScriptFailure(lines, 'E1360: Using a null object')
+
+  # Test for setting a member on a null object, at script level
+  lines =<< trim END
+    vim9script
+    class A
+        public this.val: string
+    endclass
+
+    var obj: A
+    obj.val = ""
+  END
+  # FIXME(in source): this should give E1360 as well!
+  v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected object<A> but got string')
+
+  # Test for accessing a member on a null object, at script level
+  lines =<< trim END
+    vim9script
+    class A
+        this.val: string
+    endclass
+
+    var obj: A
+    echo obj.val
+  END
+  v9.CheckScriptFailure(lines, 'E1360: Using a null object')
+
   # Test for no space before or after the '=' when initializing a member
   # variable
   lines =<< trim END
@@ -1203,6 +1381,60 @@ func Test_class_garbagecollect()
   call v9.CheckScriptSuccess(lines)
 endfunc
 
+" Test interface garbage collection
+func Test_interface_garbagecollect()
+  let lines =<< trim END
+    vim9script
+
+    interface I
+      static ro_class_var: number
+      public static rw_class_var: number
+      static _priv_class_var: number
+      this.ro_obj_var: number
+      public this.rw_obj_var: number
+      this._priv_obj_var: number
+
+      static def ClassFoo(): number
+      static def _ClassBar(): number
+      def ObjFoo(): number
+      def _ObjBar(): number
+    endinterface
+
+    class A implements I
+      static ro_class_var: number = 10
+      public static rw_class_var: number = 20
+      static _priv_class_var: number = 30
+      this.ro_obj_var: number = 40
+      public this.rw_obj_var: number = 50
+      this._priv_obj_var: number = 60
+
+      static def _ClassBar(): number
+        return _priv_class_var
+      enddef
+
+      static def ClassFoo(): number
+        return ro_class_var + rw_class_var + A._ClassBar()
+      enddef
+
+      def _ObjBar(): number
+        return this._priv_obj_var
+      enddef
+
+      def ObjFoo(): number
+        return this.ro_obj_var + this.rw_obj_var + this._ObjBar()
+      enddef
+    endclass
+
+    assert_equal(60, A.ClassFoo())
+    var o = A.new()
+    assert_equal(150, o.ObjFoo())
+    test_garbagecollect_now()
+    assert_equal(60, A.ClassFoo())
+    assert_equal(150, o.ObjFoo())
+  END
+  call v9.CheckScriptSuccess(lines)
+endfunc
+
 def Test_class_function()
   var lines =<< trim END
       vim9script
@@ -1268,6 +1500,18 @@ def Test_class_defcompile()
   END
   v9.CheckScriptFailure(lines, 'E1012: Type mismatch; expected number but got string')
 
+  lines =<< trim END
+      vim9script
+
+      class C
+          static def new()
+          enddef
+      endclass
+
+      defcompile C.new
+  END
+  v9.CheckScriptFailure(lines, 'E1370: Cannot define a "new" function as static')
+
   # Trying to compile a function using a non-existing class variable
   lines =<< trim END
     vim9script
@@ -1667,6 +1911,171 @@ def Test_class_implements_interface()
       endclass
   END
   v9.CheckScriptFailure(lines, 'E1407: Member "IsEven": type mismatch, expected func(number): bool but got func(number, ...list<number>): bool')
+
+  # access superclass interface members from subclass, mix variable order
+  lines =<< trim END
+    vim9script
+
+    interface I1
+        public static svar1: number
+        public static svar2: number
+        public this.mvar1: number
+        public this.mvar2: number
+    endinterface
+
+    # NOTE: the order is swapped
+    class A implements I1
+        public this.mvar2: number
+        public this.mvar1: number
+        public static svar2: number
+        public static svar1: number
+        def new()
+            svar1 = 11
+            svar2 = 12
+            this.mvar1 = 111
+            this.mvar2 = 112
+        enddef
+    endclass
+
+    class B extends A
+        def new()
+            svar1 = 21
+            svar2 = 22
+            this.mvar1 = 121
+            this.mvar2 = 122
+        enddef
+    endclass
+
+    class C extends B
+        def new()
+            svar1 = 31
+            svar2 = 32
+            this.mvar1 = 131
+            this.mvar2 = 132
+        enddef
+    endclass
+
+    def F1(i: I1): list<number>
+        return [ i.svar1, i.svar2 ]
+    enddef
+
+    def F2(i: I1): list<number>
+        return [ i.mvar1, i.mvar2 ]
+    enddef
+
+    var oa = A.new()
+    var ob = B.new()
+    var oc = C.new()
+
+    assert_equal([11, 12],   F1(oa))
+    assert_equal([21, 22],   F1(ob))
+    assert_equal([31, 32],   F1(oc))
+
+    assert_equal([111, 112], F2(oa))
+    assert_equal([121, 122], F2(ob))
+    assert_equal([131, 132], F2(oc))
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Access superclass interface members from subclass, mix variable order.
+  # Two interfaces, one on A, one on B; each has both kinds of variables
+  lines =<< trim END
+    vim9script
+
+    interface I1
+        public static svar1: number
+        public static svar2: number
+        public this.mvar1: number
+        public this.mvar2: number
+    endinterface
+
+    interface I2
+        public static svar3: number
+        public static svar4: number
+        public this.mvar3: number
+        public this.mvar4: number
+    endinterface
+
+    class A implements I1
+        public static svar1: number
+        public static svar2: number
+        public this.mvar1: number
+        public this.mvar2: number
+        def new()
+            svar1 = 11
+            svar2 = 12
+            this.mvar1 = 111
+            this.mvar2 = 112
+        enddef
+    endclass
+
+    class B extends A implements I2
+        public static svar3: number
+        public static svar4: number
+        public this.mvar3: number
+        public this.mvar4: number
+        def new()
+            svar1 = 21
+            svar2 = 22
+            svar3 = 23
+            svar4 = 24
+            this.mvar1 = 121
+            this.mvar2 = 122
+            this.mvar3 = 123
+            this.mvar4 = 124
+        enddef
+    endclass
+
+    class C extends B
+        public static svar5: number
+        def new()
+            svar1 = 31
+            svar2 = 32
+            svar3 = 33
+            svar4 = 34
+            svar5 = 1001
+            this.mvar1 = 131
+            this.mvar2 = 132
+            this.mvar3 = 133
+            this.mvar4 = 134
+        enddef
+    endclass
+
+    def F1(i: I1): list<number>
+        return [ i.svar1, i.svar2 ]
+    enddef
+
+    def F2(i: I1): list<number>
+        return [ i.mvar1, i.mvar2 ]
+    enddef
+
+    def F3(i: I2): list<number>
+        return [ i.svar3, i.svar4 ]
+    enddef
+
+    def F4(i: I2): list<number>
+        return [ i.mvar3, i.mvar4 ]
+    enddef
+
+    def F5(o: C): number
+        return o.svar5
+    enddef
+
+    var oa = A.new()
+    var ob = B.new()
+    var oc = C.new()
+
+    assert_equal([[11, 12]],   [F1(oa)])
+    assert_equal([[21, 22], [23, 24]], [F1(ob), F3(ob)])
+    assert_equal([[31, 32], [33, 34]], [F1(oc), F3(oc)])
+
+    assert_equal([[111, 112]], [F2(oa)])
+    assert_equal([[121, 122], [123, 124]], [F2(ob), F4(ob)])
+    assert_equal([[131, 132], [133, 134]], [F2(oc), F4(oc)])
+
+    assert_equal(1001, F5(oc))
+  END
+  v9.CheckScriptSuccess(lines)
 enddef
 
 def Test_call_interface_method()
@@ -2315,7 +2724,7 @@ def Test_extends_method_crashes_vim()
     endclass
 
     class Bool extends Property
-      this.value: bool
+      this.value2: bool
     endclass
 
     def Observe(obj: Property, who: Observer)
@@ -2367,6 +2776,53 @@ def Test_call_method_in_extended_class()
   v9.CheckScriptSuccess(lines)
 enddef
 
+def Test_instanceof()
+  var lines =<< trim END
+    vim9script
+
+    class Base1
+    endclass
+
+    class Base2 extends Base1
+    endclass
+
+    interface Intf1
+    endinterface
+
+    class Mix1 implements Intf1
+    endclass
+
+    class Base3 extends Mix1
+    endclass
+
+    var b1 = Base1.new()
+    var b2 = Base2.new()
+    var b3 = Base3.new()
+
+    assert_true(instanceof(b1, Base1))
+    assert_true(instanceof(b2, Base1))
+    assert_false(instanceof(b1, Base2))
+    assert_true(instanceof(b3, Mix1))
+    assert_false(instanceof(b3, []))
+    assert_true(instanceof(b3, [Base1, Base2, Intf1]))
+
+    def Foo()
+      var a1 = Base1.new()
+      var a2 = Base2.new()
+      var a3 = Base3.new()
+
+      assert_true(instanceof(a1, Base1))
+      assert_true(instanceof(a2, Base1))
+      assert_false(instanceof(a1, Base2))
+      assert_true(instanceof(a3, Mix1))
+      assert_false(instanceof(a3, []))
+      assert_true(instanceof(a3, [Base1, Base2, Intf1]))
+    enddef
+    Foo()
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
 " Test for calling a method in the parent class that is extended partially.
 " This used to fail with the 'E118: Too many arguments for function: Text' error
 " message (Github issue #12524).
@@ -2485,30 +2941,24 @@ def Test_multi_level_member_access()
     vim9script
 
     class A
-      this.val1: number = 0
-      this.val2: number = 0
-      this.val3: number = 0
+      public this.val1: number = 0
     endclass
 
     class B extends A
-      this.val2: number = 0
-      this.val3: number = 0
+      public this.val2: number = 0
     endclass
 
     class C extends B
-      this.val3: number = 0
+      public this.val3: number = 0
     endclass
 
     def A_members(a: A)
       a.val1 += 1
-      a.val2 += 1
-      a.val3 += 1
     enddef
 
     def B_members(b: B)
       b.val1 += 1
       b.val2 += 1
-      b.val3 += 1
     enddef
 
     def C_members(c: C)
@@ -2522,8 +2972,8 @@ def Test_multi_level_member_access()
     B_members(cobj)
     C_members(cobj)
     assert_equal(3, cobj.val1)
-    assert_equal(3, cobj.val2)
-    assert_equal(3, cobj.val3)
+    assert_equal(2, cobj.val2)
+    assert_equal(1, cobj.val3)
   END
   v9.CheckScriptSuccess(lines)
 enddef
@@ -2714,4 +3164,1449 @@ def Test_object_lockvar()
   v9.CheckScriptSuccess(lines)
 enddef
 
+" Test for a private object method
+def Test_private_object_method()
+  # Try calling a private method using an object (at the script level)
+  var lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    var a = A.new()
+    a._Foo()
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Try calling a private method using an object (from a def function)
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    def T()
+      var a = A.new()
+      a._Foo()
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Use a private method from another object method (in script context)
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+      def Bar(): number
+        return this._Foo()
+      enddef
+    endclass
+    var a = A.new()
+    assert_equal(1234, a.Bar())
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Use a private method from another object method (def function context)
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+      def Bar(): number
+        return this._Foo()
+      enddef
+    endclass
+    def T()
+      var a = A.new()
+      assert_equal(1234, a.Bar())
+    enddef
+    T()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Try calling a private method without the "this" prefix
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+      def Bar(): number
+        return _Foo()
+      enddef
+    endclass
+    var a = A.new()
+    a.Bar()
+  END
+  v9.CheckScriptFailure(lines, 'E117: Unknown function: _Foo')
+
+  # Try calling a private method using the class name
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    A._Foo()
+  END
+  v9.CheckScriptFailure(lines, 'E1325: Method not found on class "A": _Foo()')
+
+  # Try to use "public" keyword when defining a private method
+  lines =<< trim END
+    vim9script
+
+    class A
+      public def _Foo()
+      enddef
+    endclass
+    var a = A.new()
+    a._Foo()
+  END
+  v9.CheckScriptFailure(lines, 'E1331: Public must be followed by "this" or "static"')
+
+  # Define two private methods with the same name
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo()
+      enddef
+      def _Foo()
+      enddef
+    endclass
+    var a = A.new()
+  END
+  v9.CheckScriptFailure(lines, 'E1355: Duplicate function: _Foo')
+
+  # Define a private method and a object method with the same name
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo()
+      enddef
+      def Foo()
+      enddef
+    endclass
+    var a = A.new()
+  END
+  v9.CheckScriptFailure(lines, 'E1355: Duplicate function: Foo')
+
+  # Define an object method and a private method with the same name
+  lines =<< trim END
+    vim9script
+
+    class A
+      def Foo()
+      enddef
+      def _Foo()
+      enddef
+    endclass
+    var a = A.new()
+  END
+  v9.CheckScriptFailure(lines, 'E1355: Duplicate function: _Foo')
+
+  # Call a public method and a private method from a private method
+  lines =<< trim END
+    vim9script
+
+    class A
+      def Foo(): number
+        return 100
+      enddef
+      def _Bar(): number
+        return 200
+      enddef
+      def _Baz()
+        assert_equal(100, this.Foo())
+        assert_equal(200, this._Bar())
+      enddef
+      def T()
+        this._Baz()
+      enddef
+    endclass
+    var a = A.new()
+    a.T()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Try calling a private method from another class
+  lines =<< trim END
+    vim9script
+
+    class A
+      def _Foo(): number
+        return 100
+      enddef
+    endclass
+    class B
+      def Foo(): number
+        var a = A.new()
+        a._Foo()
+      enddef
+    endclass
+    var b = B.new()
+    b.Foo()
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Call a private object method from a child class object method
+  lines =<< trim END
+    vim9script
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    class B extends A
+      def Bar()
+      enddef
+    endclass
+    class C extends B
+      def Baz(): number
+        return this._Foo()
+      enddef
+    endclass
+    var c = C.new()
+    assert_equal(1234, c.Baz())
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Call a private object method from a child class object
+  lines =<< trim END
+    vim9script
+    class A
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    class B extends A
+      def Bar()
+      enddef
+    endclass
+    class C extends B
+      def Baz(): number
+      enddef
+    endclass
+    var c = C.new()
+    assert_equal(1234, c._Foo())
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Using "_" prefix in a method name should fail outside of a class
+  lines =<< trim END
+    vim9script
+    def _Foo(): number
+      return 1234
+    enddef
+    var a = _Foo()
+  END
+  v9.CheckScriptFailure(lines, 'E1267: Function name must start with a capital: _Foo(): number')
+enddef
+
+" Test for an private class method
+def Test_private_class_method()
+  # Try calling a class private method (at the script level)
+  var lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    A._Foo()
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Try calling a class private method (from a def function)
+  lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    def T()
+      A._Foo()
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Try calling a class private method using an object (at the script level)
+  lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    var a = A.new()
+    a._Foo()
+  END
+  v9.CheckScriptFailure(lines, 'E1325: Method not found on class "A": _Foo()')
+
+  # Try calling a class private method using an object (from a def function)
+  lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    def T()
+      var a = A.new()
+      a._Foo()
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1325: Method not found on class "A": _Foo()')
+
+  # Use a class private method from an object method
+  lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+      def Bar()
+        assert_equal(1234, A._Foo())
+      enddef
+    endclass
+    var a = A.new()
+    a.Bar()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Use a class private method from another class private method
+  lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo1(): number
+        return 1234
+      enddef
+      static def _Foo2()
+        assert_equal(1234, A._Foo1())
+      enddef
+      def Bar()
+        A._Foo2()
+      enddef
+    endclass
+    var a = A.new()
+    a.Bar()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Declare a class method and a class private method with the same name
+  lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo()
+      enddef
+      static def Foo()
+      enddef
+    endclass
+    var a = A.new()
+  END
+  v9.CheckScriptFailure(lines, 'E1355: Duplicate function: Foo')
+
+  # Try calling a class private method from another class
+  lines =<< trim END
+    vim9script
+
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    class B
+      def Foo(): number
+        return A._Foo()
+      enddef
+    endclass
+    var b = B.new()
+    assert_equal(1234, b.Foo())
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Call a private class method from a child class object method
+  lines =<< trim END
+    vim9script
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    class B extends A
+      def Bar()
+      enddef
+    endclass
+    class C extends B
+      def Baz(): number
+        return A._Foo()
+      enddef
+    endclass
+    var c = C.new()
+    assert_equal(1234, c.Baz())
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Call a private class method from a child class private class method
+  lines =<< trim END
+    vim9script
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    class B extends A
+      def Bar()
+      enddef
+    endclass
+    class C extends B
+      static def Baz(): number
+        return A._Foo()
+      enddef
+    endclass
+    assert_equal(1234, C.Baz())
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Call a private class method from a child class object
+  lines =<< trim END
+    vim9script
+    class A
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    class B extends A
+      def Bar()
+      enddef
+    endclass
+    class C extends B
+      def Baz(): number
+      enddef
+    endclass
+    var c = C.new()
+    assert_equal(1234, C._Foo())
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+enddef
+
+" Test for an interface private object_method
+def Test_interface_private_object_method()
+  # Implement an interface private method and use it from a public method
+  var lines =<< trim END
+    vim9script
+    interface Intf
+      def _Foo(): number
+    endinterface
+    class A implements Intf
+      def _Foo(): number
+        return 1234
+      enddef
+      def Bar(): number
+        return this._Foo()
+      enddef
+    endclass
+    var a = A.new()
+    assert_equal(1234, a.Bar())
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Call an interface private class method (script context)
+  lines =<< trim END
+    vim9script
+    interface Intf
+      def _Foo(): number
+    endinterface
+    class A implements Intf
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    var a = A.new()
+    assert_equal(1234, a._Foo())
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Call an interface private class method (def context)
+  lines =<< trim END
+    vim9script
+    interface Intf
+      def _Foo(): number
+    endinterface
+    class A implements Intf
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    def T()
+      var a = A.new()
+      assert_equal(1234, a._Foo())
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo()')
+
+  # Implement an interface private object method as a private class method
+  lines =<< trim END
+    vim9script
+    interface Intf
+      def _Foo(): number
+    endinterface
+    class A implements Intf
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1349: Function "_Foo" of interface "Intf" not implemented')
+enddef
+
+" Test for an interface private class method
+def Test_interface_private_class_method()
+  # Implement an interface private class method and use it from a public method
+  var lines =<< trim END
+    vim9script
+    interface Intf
+      static def _Foo(): number
+    endinterface
+    class A implements Intf
+      static def _Foo(): number
+        return 1234
+      enddef
+      def Bar(): number
+        return A._Foo()
+      enddef
+    endclass
+    var a = A.new()
+    assert_equal(1234, a.Bar())
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Call an interface private class method (script context)
+  lines =<< trim END
+    vim9script
+    interface Intf
+      static def _Foo(): number
+    endinterface
+    class A implements Intf
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    assert_equal(1234, A._Foo())
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo())')
+
+  # Call an interface private class method (def context)
+  lines =<< trim END
+    vim9script
+    interface Intf
+      static def _Foo(): number
+    endinterface
+    class A implements Intf
+      static def _Foo(): number
+        return 1234
+      enddef
+    endclass
+    def T()
+      assert_equal(1234, A._Foo())
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1366: Cannot access private method: _Foo())')
+
+  # Implement an interface private class method as a private object method
+  lines =<< trim END
+    vim9script
+    interface Intf
+      static def _Foo(): number
+    endinterface
+    class A implements Intf
+      def _Foo(): number
+        return 1234
+      enddef
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1349: Function "_Foo" of interface "Intf" not implemented')
+enddef
+
+" Test for using the return value of a class/object method as a function
+" argument.
+def Test_objmethod_funcarg()
+  var lines =<< trim END
+    vim9script
+
+    class C
+      def Foo(): string
+        return 'foo'
+      enddef
+    endclass
+
+    def Bar(a: number, s: string): string
+      return s
+    enddef
+
+    def Baz(c: C)
+      assert_equal('foo', Bar(10, c.Foo()))
+    enddef
+
+    var t = C.new()
+    Baz(t)
+  END
+  v9.CheckScriptSuccess(lines)
+
+  lines =<< trim END
+    vim9script
+
+    class C
+      static def Foo(): string
+        return 'foo'
+      enddef
+    endclass
+
+    def Bar(a: number, s: string): string
+      return s
+    enddef
+
+    def Baz()
+      assert_equal('foo', Bar(10, C.Foo()))
+    enddef
+
+    Baz()
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
+def Test_static_inheritence()
+  # subclasses get their own static copy
+  var lines =<< trim END
+    vim9script
+
+    class A
+        static _svar: number
+        this._mvar: number
+        def new()
+            _svar = 1
+            this._mvar = 101
+        enddef
+        def AccessObject(): number
+            return this._mvar
+        enddef
+        def AccessStaticThroughObject(): number
+            return _svar
+        enddef
+    endclass
+
+    class B extends A
+        def new()
+            _svar = 2
+            this._mvar = 102
+        enddef
+    endclass
+
+    class C extends B
+        def new()
+            _svar = 3
+            this._mvar = 103
+        enddef
+
+        def AccessPrivateStaticThroughClassName(): number
+            assert_equal(1, A._svar)
+            assert_equal(2, B._svar)
+            assert_equal(3, C._svar)
+            return 444
+        enddef
+    endclass
+
+    var oa = A.new()
+    var ob = B.new()
+    var oc = C.new()
+    assert_equal(101, oa.AccessObject())
+    assert_equal(102, ob.AccessObject())
+    assert_equal(103, oc.AccessObject())
+
+    assert_equal(444, oc.AccessPrivateStaticThroughClassName())
+
+    # verify object properly resolves to correct static
+    assert_equal(1, oa.AccessStaticThroughObject())
+    assert_equal(2, ob.AccessStaticThroughObject())
+    assert_equal(3, oc.AccessStaticThroughObject())
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
+" Test for declaring duplicate object and class members
+def Test_dup_member_variable()
+  # Duplicate member variable
+  var lines =<< trim END
+    vim9script
+    class C
+      this.val = 10
+      this.val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
+
+  # Duplicate private member variable
+  lines =<< trim END
+    vim9script
+    class C
+      this._val = 10
+      this._val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
+
+  # Duplicate public member variable
+  lines =<< trim END
+    vim9script
+    class C
+      public this.val = 10
+      public this.val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
+
+  # Duplicate private member variable
+  lines =<< trim END
+    vim9script
+    class C
+      this.val = 10
+      this._val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
+
+  # Duplicate public and private member variable
+  lines =<< trim END
+    vim9script
+    class C
+      this._val = 20
+      public this.val = 10
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
+
+  # Duplicate class member variable
+  lines =<< trim END
+    vim9script
+    class C
+      static s: string = "abc"
+      static _s: string = "def"
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _s')
+
+  # Duplicate public and private class member variable
+  lines =<< trim END
+    vim9script
+    class C
+      public static s: string = "abc"
+      static _s: string = "def"
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _s')
+
+  # Duplicate class and object member variable
+  lines =<< trim END
+    vim9script
+    class C
+      static val = 10
+      this.val = 20
+      def new()
+      enddef
+    endclass
+    var c = C.new()
+    assert_equal(10, C.val)
+    assert_equal(20, c.val)
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Duplicate object member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      this.val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      this.val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
+
+  # Duplicate object private member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      this._val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      this._val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
+
+  # Duplicate object private member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      this.val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      this._val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
+
+  # Duplicate object member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      this._val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      this.val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
+
+  # Duplicate class member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      static val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      static val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
+
+  # Duplicate private class member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      static _val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      static _val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
+
+  # Duplicate private class member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      static val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      static _val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: _val')
+
+  # Duplicate class member variable in a derived class
+  lines =<< trim END
+    vim9script
+    class A
+      static _val = 10
+    endclass
+    class B extends A
+    endclass
+    class C extends B
+      static val = 20
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1369: Duplicate member: val')
+
+  # Two member variables with a common prefix
+  lines =<< trim END
+    vim9script
+    class A
+      public static svar2: number
+      public static svar: number
+    endclass
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
+def Test_interface_static_member_access()
+  # In a class cannot read from interface static
+  var lines =<< trim END
+    vim9script
+    interface I
+        public static num: number
+    endinterface
+    class C implements I
+        public static num = 3
+        def F()
+            var x = I.num
+        enddef
+    endclass
+    C.new().F()
+  END
+  v9.CheckScriptFailure(lines, 'E1409: Cannot directly access interface "I" static member "num"')
+
+  # In a class cannot write to interface static
+  lines =<< trim END
+    vim9script
+    interface I
+        public static num: number
+    endinterface
+    class C implements I
+        public static num = 3
+        def F()
+            I.num = 7
+        enddef
+    endclass
+    C.new().F()
+  END
+  v9.CheckScriptFailure(lines, 'E1409: Cannot directly access interface "I" static member "num"')
+
+  # In a def cannot read from interface static
+  lines =<< trim END
+    vim9script
+    interface I
+        public static num: number
+    endinterface
+    def F()
+        var x = I.num
+    enddef
+    F()
+  END
+  v9.CheckScriptFailure(lines, 'E1409: Cannot directly access interface "I" static member "num"')
+
+  # In a def cannot write to interface static
+  lines =<< trim END
+    vim9script
+    interface I
+        public static num: number
+    endinterface
+    def F()
+        I.num = 7
+    enddef
+    F()
+  END
+  v9.CheckScriptFailure(lines, 'E1409: Cannot directly access interface "I" static member "num"')
+
+  # script level cannot read interface static
+  lines =<< trim END
+    vim9script
+    interface I
+        public static s_var1: number
+    endinterface
+
+    var x = I.s_var1
+  END
+  v9.CheckScriptFailure(lines, 'E1409: Cannot directly access interface "I" static member "s_var1"')
+
+  # script level cannot write interface static
+  lines =<< trim END
+    vim9script
+    interface I
+        public static s_var1: number
+    endinterface
+
+    I.s_var1 = 3
+  END
+  v9.CheckScriptFailure(lines, 'E1409: Cannot directly access interface "I" static member "I.s_var1 = 3"')
+
+enddef
+
+def Test_static_member_access_outside_class()
+  # Verify access of statics implemented from interface
+  # in a :def (outside of a class)
+  # Note the order of the static is different
+  # between the interface and the class,
+  # since they are allocated in order in each interface/class;
+  # so the static index is mapped from interfaced to  class as needed.
+
+  # Check reading statics
+  var lines =<< trim END
+    vim9script
+
+    interface I
+        public static s_var1: number
+        public static s_var2: number
+    endinterface
+
+    class C implements I
+        public static s_var2 = 2
+        public static x_static = 7
+        public static s_var1 = 1
+    endclass
+
+    def F1(): number
+        assert_equal(1, C.s_var1)
+        assert_equal(2, C.s_var2)
+        assert_equal(7, C.x_static)
+        return 11
+    enddef
+
+    # access the class static through an interface argument
+    def F2(i: I): number
+        assert_equal(1, i.s_var1)
+        assert_equal(2, i.s_var2)
+        return 22
+    enddef
+
+    # access the class static through an object interface
+    def F3(o: C): number
+        assert_equal(1, o.s_var1)
+        assert_equal(2, o.s_var2)
+        assert_equal(7, o.x_static)
+        return 33
+    enddef
+
+    assert_equal(11, F1())
+    var c = C.new()
+    assert_equal(22, F2(c))
+    assert_equal(33, F3(c))
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
+" Test for accessing a private member outside a class in a def function
+def Test_private_member_access_outside_class()
+  # private object member variable
+  var lines =<< trim END
+    vim9script
+    class A
+      this._val = 10
+      def GetVal(): number
+        return this._val
+      enddef
+    endclass
+    def T()
+      var a = A.new()
+      a._val = 20
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1333: Cannot access private member: _val')
+
+  # access a non-existing private object member variable
+  lines =<< trim END
+    vim9script
+    class A
+      this._val = 10
+    endclass
+    def T()
+      var a = A.new()
+      a._a = 1
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1089: Unknown variable: _a = 1')
+
+  # private static member variable
+  lines =<< trim END
+    vim9script
+    class A
+      static _val = 10
+    endclass
+    def T()
+      var a = A.new()
+      var x = a._val
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1333: Cannot access private member: _val')
+
+  # private static member variable
+  lines =<< trim END
+    vim9script
+    class A
+      static _val = 10
+    endclass
+    def T()
+      var a = A.new()
+      a._val = 3
+    enddef
+    T()
+  END
+  # TODO: wrong error, should be about private member
+  v9.CheckScriptFailure(lines, 'E1089: Unknown variable')
+
+  # private static class variable
+  lines =<< trim END
+    vim9script
+    class A
+      static _val = 10
+    endclass
+    def T()
+      var x = A._val
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1333: Cannot access private member: _val')
+
+  # private static class variable
+  lines =<< trim END
+    vim9script
+    class A
+      static _val = 10
+    endclass
+    def T()
+      A._val = 3
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E1333: Cannot access private member: _val')
+
+
+enddef
+
+" Test for changing the member access of an interface in a implementation class
+def Test_change_interface_member_access()
+  var lines =<< trim END
+    vim9script
+    interface A
+      public this.val: number
+    endinterface
+    class B implements A
+      this.val = 10
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1367: Access level of member "val" of interface "A" is different')
+
+  lines =<< trim END
+    vim9script
+    interface A
+      this.val: number
+    endinterface
+    class B implements A
+      public this.val = 10
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1367: Access level of member "val" of interface "A" is different')
+enddef
+
+" Test for trying to change a readonly member from a def function
+def Test_readonly_member_change_in_def_func()
+  var lines =<< trim END
+    vim9script
+    class A
+      this.val: number
+    endclass
+    def T()
+      var a = A.new()
+      a.val = 20
+    enddef
+    T()
+  END
+  v9.CheckScriptFailure(lines, 'E46: Cannot change read-only variable "val"')
+enddef
+
+" Test for reading and writing a class member from a def function
+def Test_modify_class_member_from_def_function()
+  var lines =<< trim END
+    vim9script
+    class A
+      this.var1: number = 10
+      public static var2: list<number> = [1, 2]
+      public static var3: dict<number> = {a: 1, b: 2}
+      static _priv_var4: number = 40
+    endclass
+    def T()
+      assert_equal([1, 2], A.var2)
+      assert_equal({a: 1, b: 2}, A.var3)
+      A.var2 = [3, 4]
+      A.var3 = {c: 3, d: 4}
+      assert_equal([3, 4], A.var2)
+      assert_equal({c: 3, d: 4}, A.var3)
+      assert_fails('echo A._priv_var4', 'E1333: Cannot access private member: _priv_var4')
+    enddef
+    T()
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
+" Test for accessing a class member variable using an object
+def Test_class_member_access_using_object()
+  var lines =<< trim END
+    vim9script
+    class A
+      public static svar1: list<number> = [1]
+      public static svar2: list<number> = [2]
+    endclass
+
+    A.svar1->add(3)
+    A.svar2->add(4)
+    assert_equal([1, 3], A.svar1)
+    assert_equal([2, 4], A.svar2)
+    var a1 = A.new()
+    a1.svar1->add(5)
+    a1.svar2->add(6)
+    assert_equal([1, 3, 5], a1.svar1)
+    assert_equal([2, 4, 6], a1.svar2)
+
+    def Foo()
+      A.svar1->add(7)
+      A.svar2->add(8)
+      assert_equal([1, 3, 5, 7], A.svar1)
+      assert_equal([2, 4, 6, 8], A.svar2)
+      var a2 = A.new()
+      a2.svar1->add(9)
+      a2.svar2->add(10)
+      assert_equal([1, 3, 5, 7, 9], a2.svar1)
+      assert_equal([2, 4, 6, 8, 10], a2.svar2)
+    enddef
+    Foo()
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
+" Test for using a interface method using a child object
+def Test_interface_method_from_child()
+  var lines =<< trim END
+    vim9script
+
+    interface A
+      def Foo(): string
+    endinterface
+
+    class B implements A
+      def Foo(): string
+        return 'foo'
+      enddef
+    endclass
+
+    class C extends B
+      def Bar(): string
+        return 'bar'
+      enddef
+    endclass
+
+    def T1(a: A)
+      assert_equal('foo', a.Foo())
+    enddef
+
+    def T2(b: B)
+      assert_equal('foo', b.Foo())
+    enddef
+
+    var c = C.new()
+    T1(c)
+    T2(c)
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
+" Test for using an interface method using a child object when it is overridden
+" by the child class.
+" FIXME: This test fails.
+" def Test_interface_overridden_method_from_child()
+"   var lines =<< trim END
+"     vim9script
+"
+"     interface A
+"       def Foo(): string
+"     endinterface
+"
+"     class B implements A
+"       def Foo(): string
+"         return 'b-foo'
+"       enddef
+"     endclass
+"
+"     class C extends B
+"       def Bar(): string
+"         return 'bar'
+"       enddef
+"       def Foo(): string
+"         return 'c-foo'
+"       enddef
+"     endclass
+"
+"     def T1(a: A)
+"       assert_equal('c-foo', a.Foo())
+"     enddef
+"
+"     def T2(b: B)
+"       assert_equal('c-foo', b.Foo())
+"     enddef
+"
+"     var c = C.new()
+"     T1(c)
+"     T2(c)
+"   END
+"   v9.CheckScriptSuccess(lines)
+" enddef
+
+" Test for abstract methods
+def Test_abstract_method()
+  # Use two abstract methods
+  var lines =<< trim END
+    vim9script
+    abstract class A
+      def M1(): number
+        return 10
+      enddef
+      abstract def M2(): number
+      abstract def M3(): number
+    endclass
+    class B extends A
+      def M2(): number
+        return 20
+      enddef
+      def M3(): number
+        return 30
+      enddef
+    endclass
+    var b = B.new()
+    assert_equal([10, 20, 30], [b.M1(), b.M2(), b.M3()])
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Don't define an abstract method
+  lines =<< trim END
+    vim9script
+    abstract class A
+      abstract def Foo()
+    endclass
+    class B extends A
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1373: Abstract method "Foo" is not implemented')
+
+  # Use abstract method in a concrete class
+  lines =<< trim END
+    vim9script
+    class A
+      abstract def Foo()
+    endclass
+    class B extends A
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1372: Abstract method "abstract def Foo()" cannot be defined in a concrete class')
+
+  # Use abstract method in an interface
+  lines =<< trim END
+    vim9script
+    interface A
+      abstract def Foo()
+    endinterface
+    class B implements A
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1372: Abstract method "abstract def Foo()" cannot be defined in a concrete class')
+
+  # Abbreviate the "abstract" keyword
+  lines =<< trim END
+    vim9script
+    class A
+      abs def Foo()
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1065: Command cannot be shortened: abs def Foo()')
+
+  # Use "abstract" with a member variable
+  lines =<< trim END
+    vim9script
+    abstract class A
+      abstract this.val = 10
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1371: Abstract must be followed by "def" or "static"')
+
+  # Use a static abstract method
+  lines =<< trim END
+    vim9script
+    abstract class A
+      abstract static def Foo(): number
+    endclass
+    class B extends A
+      static def Foo(): number
+        return 4
+      enddef
+    endclass
+    assert_equal(4, B.Foo())
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Type mismatch between abstract method and concrete method
+  lines =<< trim END
+    vim9script
+    abstract class A
+      abstract def Foo(a: string, b: number): list<number>
+    endclass
+    class B extends A
+      def Foo(a: number, b: string): list<string>
+        return []
+      enddef
+    endclass
+  END
+  v9.CheckScriptFailure(lines, 'E1407: Member "Foo": type mismatch, expected func(string, number): list<number> but got func(number, string): list<string>')
+
+  # Use an abstract class to invoke an abstract method
+  # FIXME: This should fail
+  lines =<< trim END
+    vim9script
+    abstract class A
+      abstract static def Foo()
+    endclass
+    A.Foo()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  # Invoke an abstract method from a def function
+  lines =<< trim END
+    vim9script
+    abstract class A
+      abstract def Foo(): list<number>
+    endclass
+    class B extends A
+      def Foo(): list<number>
+        return [3, 5]
+      enddef
+    endclass
+    def Bar(c: B)
+      assert_equal([3, 5], c.Foo())
+    enddef
+    var b = B.new()
+    Bar(b)
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
--- a/src/testdir/test_vim9_disassemble.vim
+++ b/src/testdir/test_vim9_disassemble.vim
@@ -3046,4 +3046,88 @@ def Test_disassemble_class_function()
   unlet g:instr
 enddef
 
+" Disassemble instructions for using an interface with static and regular member
+" variables.
+def Test_disassemble_interface_static_member()
+  var lines =<< trim END
+    vim9script
+    interface I
+      public static s_var: number
+      public this.o_var: number
+      public static s_var2: number
+      public this.o_var2: number
+    endinterface
+
+    class C implements I
+      public static s_var: number
+      public this.o_var: number
+      public static s_var2: number
+      public this.o_var2: number
+    endclass
+
+    def F1(i: I)
+      var x: number
+      x = i.s_var
+      x = i.o_var
+      x = i.s_var2
+      x = i.o_var2
+    enddef
+
+    def F2(o: C)
+      var x: number
+      x = o.s_var
+      x = o.o_var
+      x = o.s_var2
+      x = o.o_var2
+    enddef
+
+    g:instr1 = execute('disassemble F1')
+    g:instr2 = execute('disassemble F2')
+  END
+  v9.CheckScriptSuccess(lines)
+  assert_match('<SNR>\d*_F1\_s*' ..
+    'var x: number\_s*' ..
+    'x = i.s_var\_s*' ..
+    '0 LOAD arg\[-1\]\_s*' ..
+    '1 ITF_MEMBER 0 on I \[STATIC\]\_s*' ..
+    '2 STORE $0\_s*' ..
+    'x = i.o_var\_s*' ..
+    '3 LOAD arg\[-1\]\_s*' ..
+    '4 ITF_MEMBER 0 on I\_s*' ..
+    '5 STORE $0\_s*' ..
+    'x = i.s_var2\_s*' ..
+    '6 LOAD arg\[-1\]\_s*' ..
+    '7 ITF_MEMBER 1 on I \[STATIC\]\_s*' ..
+    '8 STORE $0\_s*' ..
+    'x = i.o_var2\_s*' ..
+    '9 LOAD arg\[-1\]\_s*' ..
+    '10 ITF_MEMBER 1 on I\_s*' ..
+    '11 STORE $0\_s*' ..
+    '12 RETURN void\_s*',
+    g:instr1)
+  assert_match('<SNR>\d*_F2\_s*' ..
+    'var x: number\_s*' ..
+    'x = o.s_var\_s*' ..
+    '0 LOAD arg\[-1\]\_s*' ..
+    '1 OBJ_MEMBER 0 \[STATIC\]\_s*' ..
+    '2 STORE $0\_s*' ..
+    'x = o.o_var\_s*' ..
+    '3 LOAD arg\[-1\]\_s*' ..
+    '4 OBJ_MEMBER 0\_s*' ..
+    '5 STORE $0\_s*' ..
+    'x = o.s_var2\_s*' ..
+    '6 LOAD arg\[-1\]\_s*' ..
+    '7 OBJ_MEMBER 1 \[STATIC\]\_s*' ..
+    ' 8 STORE $0\_s*' ..
+    'x = o.o_var2\_s*' ..
+    '9 LOAD arg\[-1\]\_s*' ..
+    '10 OBJ_MEMBER 1\_s*' ..
+    '11 STORE $0\_s*' ..
+    '12 RETURN void',
+    g:instr2)
+
+  unlet g:instr1
+  unlet g:instr2
+enddef
+
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
--- a/src/testdir/test_vim9_import.vim
+++ b/src/testdir/test_vim9_import.vim
@@ -2919,5 +2919,15 @@ def Test_vim9_import_symlink()
   endif
 enddef
 
+def Test_export_in_conditional_block()
+  var lines =<< trim END
+      vim9script
+      if exists('this_will_fail')
+        export var MyVar = "hello"
+      endif
+  END
+  v9.CheckScriptSuccess(lines)
+enddef
+
 
 " vim: ts=8 sw=2 sts=2 expandtab tw=80 fdm=marker
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -4332,6 +4332,23 @@ def Test_option_set()
   set foldlevel&
 enddef
 
+def Test_option_set_line_number()
+  var lines =<< trim END
+      vim9script
+      # line2
+      # line3
+      def F()
+          # line5
+          &foldlevel = -128
+      enddef
+      F()
+  END
+  v9.CheckScriptSuccess(lines)
+
+  var res = execute('verbose set foldlevel')
+  assert_match('  foldlevel.*Last set from .*XScriptSuccess\d\+ line 6', res)
+enddef
+
 def Test_option_modifier()
   # legacy script allows for white space
   var lines =<< trim END
--- a/src/testdir/test_xxd.vim
+++ b/src/testdir/test_xxd.vim
@@ -1,5 +1,8 @@
 " Test for the xxd command
 
+source check.vim
+source screendump.vim
+
 if empty($XXD) && executable('..\xxd\xxd.exe')
   let s:xxd_cmd = '..\xxd\xxd.exe'
 elseif empty($XXD) || !executable($XXD)
@@ -311,7 +314,7 @@ endfunc
 
 " Various ways with wrong arguments that trigger the usage output.
 func Test_xxd_usage()
-  for arg in ['-h', '-c', '-g', '-o', '-s', '-l', '-X', 'one two three']
+  for arg in ['-h', '-c', '-g', '-o', '-s', '-l', '-X', '-R', 'one two three']
     new
     exe 'r! ' . s:xxd_cmd . ' ' . arg
     call assert_match("Usage:", join(getline(1, 3)))
@@ -415,4 +418,182 @@ func Test_xxd_little_endian_with_cols()
   bwipe!
 endfunc
 
+func Test_xxd_color()
+"Test: color=never
+let s:test = 1
+
+"Note Quotation mark escaped
+"Note Aposhpere vaihdettu apostrophe replaced with 0x00
+"Note Backslash replaced with 0x00
+let data = [
+    \ "00000000: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................",
+    \ "00000010: 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f  ................",
+    \ "00000020: 2021 2223 2425 2600 2829 2a2b 2c2d 2e2f   !\"#$%&.()*+,-./",
+    \ "00000030: 3031 3233 3435 3637 3839 3a3b 3c3d 3e3f  0123456789:;<=>?",
+    \ "00000040: 4041 4243 4445 4647 4849 4a4b 4c4d 4e4f  @ABCDEFGHIJKLMNO",
+    \ "00000050: 5051 5253 5455 5657 5859 5a5b 005d 5e5f  PQRSTUVWXYZ[.]^_",
+    \ "00000060: 6061 6263 6465 6667 6869 6a6b 6c6d 6e6f  `abcdefghijklmno",
+    \ "00000070: 7071 7273 7475 7677 7879 7a7b 7c7d 7e7f  pqrstuvwxyz{|}~.",
+    \ "00000080: 8081 8283 8485 8687 8889 8a8b 8c8d 8e8f  ................",
+    \ "00000090: 9091 9293 9495 9697 9899 9a9b 9c9d 9e9f  ................",
+    \ "000000a0: a0a1 a2a3 a4a5 a6a7 a8a9 aaab acad aeaf  ................",
+    \ "000000b0: b0b1 b2b3 b4b5 b6b7 b8b9 babb bcbd bebf  ................",
+    \ "000000c0: c0c1 c2c3 c4c5 c6c7 c8c9 cacb cccd cecf  ................",
+    \ "000000d0: d0d1 d2d3 d4d5 d6d7 d8d9 dadb dcdd dedf  ................",
+    \ "000000e0: e0e1 e2e3 e4e5 e6e7 e8e9 eaeb eced eeef  ................",
+    \ "000000f0: f0f1 f2f3 f4f5 f6f7 f8f9 fafb fcfd feff  ................"]
+call writefile(data,'Xinput')
+
+  silent exe '!' . s:xxd_cmd . ' -r < Xinput > XXDfile'
+
+  %d
+  exe '0r! ' . s:xxd_cmd . ' -R never ' . ' XXDfile'
+  $d
+  let expected = [
+      \ "00000000: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................",
+      \ "00000010: 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f  ................",
+      \ "00000020: 2021 2223 2425 2600 2829 2a2b 2c2d 2e2f   !\"#$%&.()*+,-./",
+      \ "00000030: 3031 3233 3435 3637 3839 3a3b 3c3d 3e3f  0123456789:;<=>?",
+      \ "00000040: 4041 4243 4445 4647 4849 4a4b 4c4d 4e4f  @ABCDEFGHIJKLMNO",
+      \ "00000050: 5051 5253 5455 5657 5859 5a5b 005d 5e5f  PQRSTUVWXYZ[.]^_",
+      \ "00000060: 6061 6263 6465 6667 6869 6a6b 6c6d 6e6f  `abcdefghijklmno",
+      \ "00000070: 7071 7273 7475 7677 7879 7a7b 7c7d 7e7f  pqrstuvwxyz{|}~.",
+      \ "00000080: 8081 8283 8485 8687 8889 8a8b 8c8d 8e8f  ................",
+      \ "00000090: 9091 9293 9495 9697 9899 9a9b 9c9d 9e9f  ................",
+      \ "000000a0: a0a1 a2a3 a4a5 a6a7 a8a9 aaab acad aeaf  ................",
+      \ "000000b0: b0b1 b2b3 b4b5 b6b7 b8b9 babb bcbd bebf  ................",
+      \ "000000c0: c0c1 c2c3 c4c5 c6c7 c8c9 cacb cccd cecf  ................",
+      \ "000000d0: d0d1 d2d3 d4d5 d6d7 d8d9 dadb dcdd dedf  ................",
+      \ "000000e0: e0e1 e2e3 e4e5 e6e7 e8e9 eaeb eced eeef  ................",
+      \ "000000f0: f0f1 f2f3 f4f5 f6f7 f8f9 fafb fcfd feff  ................"]
+
+  call assert_equal(expected, getline(1,'$'), s:Mess(s:test))
+
+  "Test: color=always
+  let s:test += 1
+
+  %d
+  exe '0r! ' . s:xxd_cmd . ' -R always -c 4 ' . ' XXDfile'
+  $d
+  let expected = [
+      \ "00000000: \e[1;37m00\e[0m\e[1;31m01\e[0m \e[1;31m02\e[0m\e[1;31m03\e[0m  \e[1;37m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000004: \e[1;31m04\e[0m\e[1;31m05\e[0m \e[1;31m06\e[0m\e[1;31m07\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000008: \e[1;31m08\e[0m\e[1;33m09\e[0m \e[1;33m0a\e[0m\e[1;31m0b\e[0m  \e[1;31m.\e[0m\e[1;33m.\e[0m\e[1;33m.\e[0m\e[1;31m.\e[0m",
+      \ "0000000c: \e[1;31m0c\e[0m\e[1;33m0d\e[0m \e[1;31m0e\e[0m\e[1;31m0f\e[0m  \e[1;31m.\e[0m\e[1;33m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000010: \e[1;31m10\e[0m\e[1;31m11\e[0m \e[1;31m12\e[0m\e[1;31m13\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000014: \e[1;31m14\e[0m\e[1;31m15\e[0m \e[1;31m16\e[0m\e[1;31m17\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000018: \e[1;31m18\e[0m\e[1;31m19\e[0m \e[1;31m1a\e[0m\e[1;31m1b\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "0000001c: \e[1;31m1c\e[0m\e[1;31m1d\e[0m \e[1;31m1e\e[0m\e[1;31m1f\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000020: \e[1;32m20\e[0m\e[1;32m21\e[0m \e[1;32m22\e[0m\e[1;32m23\e[0m  \e[1;32m \e[0m\e[1;32m!\e[0m\e[1;32m\"\e[0m\e[1;32m#\e[0m",
+      \ "00000024: \e[1;32m24\e[0m\e[1;32m25\e[0m \e[1;32m26\e[0m\e[1;37m00\e[0m  \e[1;32m$\e[0m\e[1;32m%\e[0m\e[1;32m&\e[0m\e[1;37m.\e[0m",
+      \ "00000028: \e[1;32m28\e[0m\e[1;32m29\e[0m \e[1;32m2a\e[0m\e[1;32m2b\e[0m  \e[1;32m(\e[0m\e[1;32m)\e[0m\e[1;32m*\e[0m\e[1;32m+\e[0m",
+      \ "0000002c: \e[1;32m2c\e[0m\e[1;32m2d\e[0m \e[1;32m2e\e[0m\e[1;32m2f\e[0m  \e[1;32m,\e[0m\e[1;32m-\e[0m\e[1;32m.\e[0m\e[1;32m/\e[0m",
+      \ "00000030: \e[1;32m30\e[0m\e[1;32m31\e[0m \e[1;32m32\e[0m\e[1;32m33\e[0m  \e[1;32m0\e[0m\e[1;32m1\e[0m\e[1;32m2\e[0m\e[1;32m3\e[0m",
+      \ "00000034: \e[1;32m34\e[0m\e[1;32m35\e[0m \e[1;32m36\e[0m\e[1;32m37\e[0m  \e[1;32m4\e[0m\e[1;32m5\e[0m\e[1;32m6\e[0m\e[1;32m7\e[0m",
+      \ "00000038: \e[1;32m38\e[0m\e[1;32m39\e[0m \e[1;32m3a\e[0m\e[1;32m3b\e[0m  \e[1;32m8\e[0m\e[1;32m9\e[0m\e[1;32m:\e[0m\e[1;32m;\e[0m",
+      \ "0000003c: \e[1;32m3c\e[0m\e[1;32m3d\e[0m \e[1;32m3e\e[0m\e[1;32m3f\e[0m  \e[1;32m<\e[0m\e[1;32m=\e[0m\e[1;32m>\e[0m\e[1;32m?\e[0m",
+      \ "00000040: \e[1;32m40\e[0m\e[1;32m41\e[0m \e[1;32m42\e[0m\e[1;32m43\e[0m  \e[1;32m@\e[0m\e[1;32mA\e[0m\e[1;32mB\e[0m\e[1;32mC\e[0m",
+      \ "00000044: \e[1;32m44\e[0m\e[1;32m45\e[0m \e[1;32m46\e[0m\e[1;32m47\e[0m  \e[1;32mD\e[0m\e[1;32mE\e[0m\e[1;32mF\e[0m\e[1;32mG\e[0m",
+      \ "00000048: \e[1;32m48\e[0m\e[1;32m49\e[0m \e[1;32m4a\e[0m\e[1;32m4b\e[0m  \e[1;32mH\e[0m\e[1;32mI\e[0m\e[1;32mJ\e[0m\e[1;32mK\e[0m",
+      \ "0000004c: \e[1;32m4c\e[0m\e[1;32m4d\e[0m \e[1;32m4e\e[0m\e[1;32m4f\e[0m  \e[1;32mL\e[0m\e[1;32mM\e[0m\e[1;32mN\e[0m\e[1;32mO\e[0m",
+      \ "00000050: \e[1;32m50\e[0m\e[1;32m51\e[0m \e[1;32m52\e[0m\e[1;32m53\e[0m  \e[1;32mP\e[0m\e[1;32mQ\e[0m\e[1;32mR\e[0m\e[1;32mS\e[0m",
+      \ "00000054: \e[1;32m54\e[0m\e[1;32m55\e[0m \e[1;32m56\e[0m\e[1;32m57\e[0m  \e[1;32mT\e[0m\e[1;32mU\e[0m\e[1;32mV\e[0m\e[1;32mW\e[0m",
+      \ "00000058: \e[1;32m58\e[0m\e[1;32m59\e[0m \e[1;32m5a\e[0m\e[1;32m5b\e[0m  \e[1;32mX\e[0m\e[1;32mY\e[0m\e[1;32mZ\e[0m\e[1;32m[\e[0m",
+      \ "0000005c: \e[1;37m00\e[0m\e[1;32m5d\e[0m \e[1;32m5e\e[0m\e[1;32m5f\e[0m  \e[1;37m.\e[0m\e[1;32m]\e[0m\e[1;32m^\e[0m\e[1;32m_\e[0m",
+      \ "00000060: \e[1;32m60\e[0m\e[1;32m61\e[0m \e[1;32m62\e[0m\e[1;32m63\e[0m  \e[1;32m`\e[0m\e[1;32ma\e[0m\e[1;32mb\e[0m\e[1;32mc\e[0m",
+      \ "00000064: \e[1;32m64\e[0m\e[1;32m65\e[0m \e[1;32m66\e[0m\e[1;32m67\e[0m  \e[1;32md\e[0m\e[1;32me\e[0m\e[1;32mf\e[0m\e[1;32mg\e[0m",
+      \ "00000068: \e[1;32m68\e[0m\e[1;32m69\e[0m \e[1;32m6a\e[0m\e[1;32m6b\e[0m  \e[1;32mh\e[0m\e[1;32mi\e[0m\e[1;32mj\e[0m\e[1;32mk\e[0m",
+      \ "0000006c: \e[1;32m6c\e[0m\e[1;32m6d\e[0m \e[1;32m6e\e[0m\e[1;32m6f\e[0m  \e[1;32ml\e[0m\e[1;32mm\e[0m\e[1;32mn\e[0m\e[1;32mo\e[0m",
+      \ "00000070: \e[1;32m70\e[0m\e[1;32m71\e[0m \e[1;32m72\e[0m\e[1;32m73\e[0m  \e[1;32mp\e[0m\e[1;32mq\e[0m\e[1;32mr\e[0m\e[1;32ms\e[0m",
+      \ "00000074: \e[1;32m74\e[0m\e[1;32m75\e[0m \e[1;32m76\e[0m\e[1;32m77\e[0m  \e[1;32mt\e[0m\e[1;32mu\e[0m\e[1;32mv\e[0m\e[1;32mw\e[0m",
+      \ "00000078: \e[1;32m78\e[0m\e[1;32m79\e[0m \e[1;32m7a\e[0m\e[1;32m7b\e[0m  \e[1;32mx\e[0m\e[1;32my\e[0m\e[1;32mz\e[0m\e[1;32m{\e[0m",
+      \ "0000007c: \e[1;32m7c\e[0m\e[1;32m7d\e[0m \e[1;32m7e\e[0m\e[1;31m7f\e[0m  \e[1;32m|\e[0m\e[1;32m}\e[0m\e[1;32m~\e[0m\e[1;31m.\e[0m",
+      \ "00000080: \e[1;31m80\e[0m\e[1;31m81\e[0m \e[1;31m82\e[0m\e[1;31m83\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000084: \e[1;31m84\e[0m\e[1;31m85\e[0m \e[1;31m86\e[0m\e[1;31m87\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000088: \e[1;31m88\e[0m\e[1;31m89\e[0m \e[1;31m8a\e[0m\e[1;31m8b\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "0000008c: \e[1;31m8c\e[0m\e[1;31m8d\e[0m \e[1;31m8e\e[0m\e[1;31m8f\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000090: \e[1;31m90\e[0m\e[1;31m91\e[0m \e[1;31m92\e[0m\e[1;31m93\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000094: \e[1;31m94\e[0m\e[1;31m95\e[0m \e[1;31m96\e[0m\e[1;31m97\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "00000098: \e[1;31m98\e[0m\e[1;31m99\e[0m \e[1;31m9a\e[0m\e[1;31m9b\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "0000009c: \e[1;31m9c\e[0m\e[1;31m9d\e[0m \e[1;31m9e\e[0m\e[1;31m9f\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000a0: \e[1;31ma0\e[0m\e[1;31ma1\e[0m \e[1;31ma2\e[0m\e[1;31ma3\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000a4: \e[1;31ma4\e[0m\e[1;31ma5\e[0m \e[1;31ma6\e[0m\e[1;31ma7\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000a8: \e[1;31ma8\e[0m\e[1;31ma9\e[0m \e[1;31maa\e[0m\e[1;31mab\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000ac: \e[1;31mac\e[0m\e[1;31mad\e[0m \e[1;31mae\e[0m\e[1;31maf\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000b0: \e[1;31mb0\e[0m\e[1;31mb1\e[0m \e[1;31mb2\e[0m\e[1;31mb3\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000b4: \e[1;31mb4\e[0m\e[1;31mb5\e[0m \e[1;31mb6\e[0m\e[1;31mb7\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000b8: \e[1;31mb8\e[0m\e[1;31mb9\e[0m \e[1;31mba\e[0m\e[1;31mbb\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000bc: \e[1;31mbc\e[0m\e[1;31mbd\e[0m \e[1;31mbe\e[0m\e[1;31mbf\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000c0: \e[1;31mc0\e[0m\e[1;31mc1\e[0m \e[1;31mc2\e[0m\e[1;31mc3\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000c4: \e[1;31mc4\e[0m\e[1;31mc5\e[0m \e[1;31mc6\e[0m\e[1;31mc7\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000c8: \e[1;31mc8\e[0m\e[1;31mc9\e[0m \e[1;31mca\e[0m\e[1;31mcb\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000cc: \e[1;31mcc\e[0m\e[1;31mcd\e[0m \e[1;31mce\e[0m\e[1;31mcf\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000d0: \e[1;31md0\e[0m\e[1;31md1\e[0m \e[1;31md2\e[0m\e[1;31md3\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000d4: \e[1;31md4\e[0m\e[1;31md5\e[0m \e[1;31md6\e[0m\e[1;31md7\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000d8: \e[1;31md8\e[0m\e[1;31md9\e[0m \e[1;31mda\e[0m\e[1;31mdb\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000dc: \e[1;31mdc\e[0m\e[1;31mdd\e[0m \e[1;31mde\e[0m\e[1;31mdf\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000e0: \e[1;31me0\e[0m\e[1;31me1\e[0m \e[1;31me2\e[0m\e[1;31me3\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000e4: \e[1;31me4\e[0m\e[1;31me5\e[0m \e[1;31me6\e[0m\e[1;31me7\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000e8: \e[1;31me8\e[0m\e[1;31me9\e[0m \e[1;31mea\e[0m\e[1;31meb\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000ec: \e[1;31mec\e[0m\e[1;31med\e[0m \e[1;31mee\e[0m\e[1;31mef\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000f0: \e[1;31mf0\e[0m\e[1;31mf1\e[0m \e[1;31mf2\e[0m\e[1;31mf3\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000f4: \e[1;31mf4\e[0m\e[1;31mf5\e[0m \e[1;31mf6\e[0m\e[1;31mf7\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000f8: \e[1;31mf8\e[0m\e[1;31mf9\e[0m \e[1;31mfa\e[0m\e[1;31mfb\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m",
+      \ "000000fc: \e[1;31mfc\e[0m\e[1;31mfd\e[0m \e[1;31mfe\e[0m\e[1;34mff\e[0m  \e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;31m.\e[0m\e[1;34m.\e[0m"]
+  call assert_equal(expected, getline(1,'$'), s:Mess(s:test))
+
+  call delete('Xinput')
+  call delete('XXDfile')
+
+endfunc
+
+func Test_xxd_color2()
+  CheckScreendump
+  CheckUnix
+  CheckNotMac
+  CheckNotBSD
+  CheckExecutable dash
+
+  "Note Quotation mark escaped
+  "Note Aposhpere vaihdettu apostrophe replaced with 0x00
+  "Note Backslash replaced with 0x00
+  let data = [
+      \ "00000000: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................",
+      \ "00000010: 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f  ................",
+      \ "00000020: 2021 2223 2425 2600 2829 2a2b 2c2d 2e2f   !\"#$%&.()*+,-./",
+      \ "00000030: 3031 3233 3435 3637 3839 3a3b 3c3d 3e3f  0123456789:;<=>?",
+      \ "00000040: 4041 4243 4445 4647 4849 4a4b 4c4d 4e4f  @ABCDEFGHIJKLMNO",
+      \ "00000050: 5051 5253 5455 5657 5859 5a5b 005d 5e5f  PQRSTUVWXYZ[.]^_",
+      \ "00000060: 6061 6263 6465 6667 6869 6a6b 6c6d 6e6f  `abcdefghijklmno",
+      \ "00000070: 7071 7273 7475 7677 7879 7a7b 7c7d 7e7f  pqrstuvwxyz{|}~.",
+      \ "00000080: 8081 8283 8485 8687 8889 8a8b 8c8d 8e8f  ................",
+      \ "00000090: 9091 9293 9495 9697 9899 9a9b 9c9d 9e9f  ................",
+      \ "000000a0: a0a1 a2a3 a4a5 a6a7 a8a9 aaab acad aeaf  ................",
+      \ "000000b0: b0b1 b2b3 b4b5 b6b7 b8b9 babb bcbd bebf  ................",
+      \ "000000c0: c0c1 c2c3 c4c5 c6c7 c8c9 cacb cccd cecf  ................",
+      \ "000000d0: d0d1 d2d3 d4d5 d6d7 d8d9 dadb dcdd dedf  ................",
+      \ "000000e0: e0e1 e2e3 e4e5 e6e7 e8e9 eaeb eced eeef  ................",
+      \ "000000f0: f0f1 f2f3 f4f5 f6f7 f8f9 fafb fcfd feff  ................"]
+  call writefile(data, 'Xinput', 'D')
+
+  call system(s:xxd_cmd .. ' -r < Xinput > XXDfile_colors')
+
+  let $PS1='$ '
+  " This needs dash, plain bashs sh does not seem to work :(
+  let buf = RunVimInTerminal('', #{rows: 20, cmd: 'sh'})
+  call term_sendkeys(buf,  s:xxd_cmd .. " -R never  < XXDfile_colors\<cr>")
+  call TermWait(buf)
+  call VerifyScreenDump(buf, 'Test_xxd_color_0', {})
+
+  call TermWait(buf)
+  call term_sendkeys(buf,  "clear\<CR>")
+  call term_sendkeys(buf,  s:xxd_cmd .. " -R always  < XXDfile_colors\<cr>")
+  call TermWait(buf)
+  call VerifyScreenDump(buf, 'Test_xxd_color_1', {})
+
+  call term_sendkeys(buf,  "exit\<CR>")
+
+  call delete('XXDfile_colors')
+  unlet! $PS1
+endfunc
 " vim: shiftwidth=2 sts=2 expandtab
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -759,13 +759,12 @@ text_prop_compare(const void *s1, const 
     tp2 = &text_prop_compare_props[idx2];
     col1 = tp1->tp_col;
     col2 = tp2->tp_col;
-    if (col1 == MAXCOL && col2 == MAXCOL)
+    if (col1 == MAXCOL || col2 == MAXCOL)
     {
 	int order1 = text_prop_order(tp1->tp_flags);
 	int order2 = text_prop_order(tp2->tp_flags);
 
-	// both props add text before or after the line, sort on order where it
-	// is added
+	// sort on order where it is added
 	if (order1 != order2)
 	    return order1 < order2 ? 1 : -1;
     }
--- a/src/typval.c
+++ b/src/typval.c
@@ -539,7 +539,7 @@ check_for_list_arg(typval_T *args, int i
 {
     if (args[idx].v_type != VAR_LIST)
     {
-	    semsg(_(e_list_required_for_argument_nr), idx + 1);
+	semsg(_(e_list_required_for_argument_nr), idx + 1);
 	return FAIL;
     }
     return OK;
@@ -974,6 +974,34 @@ check_for_opt_buffer_or_dict_arg(typval_
 }
 
 /*
+ * Give an error and return FAIL unless "args[idx]" is an object.
+ */
+    int
+check_for_object_arg(typval_T *args, int idx)
+{
+    if (args[idx].v_type != VAR_OBJECT)
+    {
+	semsg(_(e_object_required_for_argument_nr), idx + 1);
+	return FAIL;
+    }
+    return OK;
+}
+
+/*
+ * Give an error and return FAIL unless "args[idx]" is a class or a list.
+ */
+    int
+check_for_class_or_list_arg(typval_T *args, int idx)
+{
+    if (args[idx].v_type != VAR_CLASS && args[idx].v_type != VAR_LIST)
+    {
+	semsg(_(e_list_or_class_required_for_argument_nr), idx + 1);
+	return FAIL;
+    }
+    return OK;
+}
+
+/*
  * Get the string value of a variable.
  * If it is a Number variable, the number is converted into a string.
  * tv_get_string() uses a single, static buffer.  YOU CAN ONLY USE IT ONCE!
@@ -1550,12 +1578,15 @@ typval_compare_null(typval_T *tv1, typva
 #ifdef FEAT_JOB_CHANNEL
 	    case VAR_CHANNEL: return tv->vval.v_channel == NULL;
 #endif
+	    // TODO: null_class handling
+	    // case VAR_CLASS: return tv->vval.v_class == NULL;
 	    case VAR_DICT: return tv->vval.v_dict == NULL;
 	    case VAR_FUNC: return tv->vval.v_string == NULL;
 #ifdef FEAT_JOB_CHANNEL
 	    case VAR_JOB: return tv->vval.v_job == NULL;
 #endif
 	    case VAR_LIST: return tv->vval.v_list == NULL;
+	    case VAR_OBJECT: return tv->vval.v_object == NULL;
 	    case VAR_PARTIAL: return tv->vval.v_partial == NULL;
 	    case VAR_STRING: return tv->vval.v_string == NULL;
 
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1879,7 +1879,7 @@ get_func_arguments(
 	    argp = skipwhite(argp);
 	if (*argp != ',')
 	    break;
-	if (vim9script && !IS_WHITE_OR_NUL(argp[1]))
+	if (vim9script && !IS_WHITE_NL_OR_NUL(argp[1]))
 	{
 	    if (evaluate)
 		semsg(_(e_white_space_required_after_str_str), ",", argp);
@@ -4369,10 +4369,14 @@ trans_function_name_ext(
 		lead += (int)STRLEN(sid_buf);
 	}
     }
+    // The function name must start with an upper case letter (unless it is a
+    // Vim9 class new() function or a Vim9 class private method)
     else if (!(flags & TFN_INT)
 	    && (builtin_function(lv.ll_name, len)
 				   || (vim9script && *lv.ll_name == '_'))
-	    && !((flags & TFN_IN_CLASS) && STRNCMP(lv.ll_name, "new", 3) == 0))
+	    && !((flags & TFN_IN_CLASS)
+		&& (STRNCMP(lv.ll_name, "new", 3) == 0
+		    || (*lv.ll_name == '_'))))
     {
 	semsg(_(vim9script ? e_function_name_must_start_with_capital_str
 			   : e_function_name_must_start_with_capital_or_s_str),
@@ -5017,6 +5021,7 @@ define_function(
     // Do not define the function when getting the body fails and when
     // skipping.
     if (((class_flags & CF_INTERFACE) == 0
+		&& (class_flags & CF_ABSTRACT_METHOD) == 0
 		&& get_function_body(eap, &newlines, line_arg, lines_to_free)
 								       == FAIL)
 	    || eap->skip)
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,210 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1885,
+/**/
+    1884,
+/**/
+    1883,
+/**/
+    1882,
+/**/
+    1881,
+/**/
+    1880,
+/**/
+    1879,
+/**/
+    1878,
+/**/
+    1877,
+/**/
+    1876,
+/**/
+    1875,
+/**/
+    1874,
+/**/
+    1873,
+/**/
+    1872,
+/**/
+    1871,
+/**/
+    1870,
+/**/
+    1869,
+/**/
+    1868,
+/**/
+    1867,
+/**/
+    1866,
+/**/
+    1865,
+/**/
+    1864,
+/**/
+    1863,
+/**/
+    1862,
+/**/
+    1861,
+/**/
+    1860,
+/**/
+    1859,
+/**/
+    1858,
+/**/
+    1857,
+/**/
+    1856,
+/**/
+    1855,
+/**/
+    1854,
+/**/
+    1853,
+/**/
+    1852,
+/**/
+    1851,
+/**/
+    1850,
+/**/
+    1849,
+/**/
+    1848,
+/**/
+    1847,
+/**/
+    1846,
+/**/
+    1845,
+/**/
+    1844,
+/**/
+    1843,
+/**/
+    1842,
+/**/
+    1841,
+/**/
+    1840,
+/**/
+    1839,
+/**/
+    1838,
+/**/
+    1837,
+/**/
+    1836,
+/**/
+    1835,
+/**/
+    1834,
+/**/
+    1833,
+/**/
+    1832,
+/**/
+    1831,
+/**/
+    1830,
+/**/
+    1829,
+/**/
+    1828,
+/**/
+    1827,
+/**/
+    1826,
+/**/
+    1825,
+/**/
+    1824,
+/**/
+    1823,
+/**/
+    1822,
+/**/
+    1821,
+/**/
+    1820,
+/**/
+    1819,
+/**/
+    1818,
+/**/
+    1817,
+/**/
+    1816,
+/**/
+    1815,
+/**/
+    1814,
+/**/
+    1813,
+/**/
+    1812,
+/**/
+    1811,
+/**/
+    1810,
+/**/
+    1809,
+/**/
+    1808,
+/**/
+    1807,
+/**/
+    1806,
+/**/
+    1805,
+/**/
+    1804,
+/**/
+    1803,
+/**/
+    1802,
+/**/
+    1801,
+/**/
+    1800,
+/**/
+    1799,
+/**/
+    1798,
+/**/
+    1797,
+/**/
+    1796,
+/**/
+    1795,
+/**/
+    1794,
+/**/
+    1793,
+/**/
+    1792,
+/**/
+    1791,
+/**/
+    1790,
+/**/
+    1789,
+/**/
+    1788,
+/**/
+    1787,
+/**/
+    1786,
+/**/
+    1785,
+/**/
+    1784,
+/**/
     1783,
 /**/
     1782,
--- a/src/vim.h
+++ b/src/vim.h
@@ -2915,5 +2915,6 @@ long elapsed(DWORD start_tick);
 // Flags used by "class_flags" of define_function()
 #define CF_CLASS	1	// inside a class
 #define CF_INTERFACE	2	// inside an interface
+#define CF_ABSTRACT_METHOD	4	// inside an abstract class
 
 #endif // VIM__H
--- a/src/vim9.h
+++ b/src/vim9.h
@@ -498,6 +498,7 @@ typedef struct {
 typedef struct {
     class_T	*cm_class;
     int		cm_idx;
+    int		cm_static;
 } classmember_T;
 // arguments to ISN_STOREINDEX
 typedef struct {
--- a/src/vim9class.c
+++ b/src/vim9class.c
@@ -21,23 +21,60 @@
 # include "vim9.h"
 #endif
 
+static class_T *first_class = NULL;
+static class_T *next_nonref_class = NULL;
+
+/*
+ * Call this function when a class has been created.  It will be added to the
+ * list headed by "first_class".
+ */
+    static void
+class_created(class_T *cl)
+{
+    if (first_class != NULL)
+    {
+	cl->class_next_used = first_class;
+	first_class->class_prev_used = cl;
+    }
+    first_class = cl;
+}
+
+/*
+ * Call this function when a class has been cleared and is about to be freed.
+ * It is removed from the list headed by "first_class".
+ */
+    static void
+class_cleared(class_T *cl)
+{
+    if (cl->class_next_used != NULL)
+	cl->class_next_used->class_prev_used = cl->class_prev_used;
+    if (cl->class_prev_used != NULL)
+	cl->class_prev_used->class_next_used = cl->class_next_used;
+    else if (first_class == cl)
+	first_class = cl->class_next_used;
+
+    // update the next class to check if needed
+    if (cl == next_nonref_class)
+	next_nonref_class = cl->class_next_used;
+}
+
 /*
  * Parse a member declaration, both object and class member.
  * Returns OK or FAIL.  When OK then "varname_end" is set to just after the
- * variable name and "type_ret" is set to the decleared or detected type.
+ * variable name and "type_ret" is set to the declared or detected type.
  * "init_expr" is set to the initialisation expression (allocated), if there is
  * one.  For an interface "init_expr" is NULL.
  */
     static int
 parse_member(
-	exarg_T	*eap,
-	char_u	*line,
-	char_u	*varname,
-	int	has_public,	    // TRUE if "public" seen before "varname"
-	char_u	**varname_end,
-	garray_T *type_list,
-	type_T	**type_ret,
-	char_u	**init_expr)
+    exarg_T	*eap,
+    char_u	*line,
+    char_u	*varname,
+    int		has_public,	    // TRUE if "public" seen before "varname"
+    char_u	**varname_end,
+    garray_T	*type_list,
+    type_T	**type_ret,
+    char_u	**init_expr)
 {
     *varname_end = to_name_end(varname, FALSE);
     if (*varname == '_' && has_public)
@@ -96,8 +133,8 @@ parse_member(
 	fill_evalarg_from_eap(&evalarg, eap, FALSE);
 	(void)skip_expr_concatenate(&init_arg, &expr_start, &expr_end, &evalarg);
 
-	// No type specified for the member.  Set it to "any" and the correct type will be
-	// set when the object is instantiated.
+	// No type specified for the member.  Set it to "any" and the correct
+	// type will be set when the object is instantiated.
 	if (type == NULL)
 	    type = &t_any;
 
@@ -119,12 +156,12 @@ parse_member(
  */
     static int
 add_member(
-	garray_T    *gap,
-	char_u	    *varname,
-	char_u	    *varname_end,
-	int	    has_public,
-	type_T	    *type,
-	char_u	    *init_expr)
+    garray_T	*gap,
+    char_u	*varname,
+    char_u	*varname_end,
+    int		has_public,
+    type_T	*type,
+    char_u	*init_expr)
 {
     if (ga_grow(gap, 1) == FAIL)
 	return FAIL;
@@ -183,9 +220,11 @@ add_members_to_class(
  * "cl" implementing that interface.
  */
     int
-object_index_from_itf_index(class_T *itf, int is_method, int idx, class_T *cl)
+object_index_from_itf_index(class_T *itf, int is_method, int idx, class_T *cl,
+								int is_static)
 {
-    if (idx > (is_method ? itf->class_obj_method_count
+    if (idx >= (is_method ? itf->class_obj_method_count
+				   : is_static ? itf->class_class_member_count
 						: itf->class_obj_member_count))
     {
 	siemsg("index %d out of range for interface %s", idx, itf->class_name);
@@ -198,18 +237,58 @@ object_index_from_itf_index(class_T *itf
     if (cl == itf)
 	return idx;
 
-    itf2class_T *i2c;
-    for (i2c = itf->class_itf2class; i2c != NULL; i2c = i2c->i2c_next)
-	if (i2c->i2c_class == cl && i2c->i2c_is_method == is_method)
-	    break;
+    itf2class_T		*i2c = NULL;
+    int			searching = TRUE;
+    int			method_offset = 0;
+
+    for (class_T *super = cl; super != NULL && searching;
+						super = super->class_extends)
+    {
+	for (i2c = itf->class_itf2class; i2c != NULL; i2c = i2c->i2c_next)
+	{
+	    if (i2c->i2c_class == super && i2c->i2c_is_method == is_method)
+	    {
+		searching = FALSE;
+		break;
+	    }
+	}
+	if (searching && is_method)
+	    // The parent class methods are stored after the current class
+	    // methods.
+	    method_offset += is_static
+				? super->class_class_function_count_child
+				: super->class_obj_method_count_child;
+    }
     if (i2c == NULL)
     {
 	siemsg("class %s not found on interface %s",
 					      cl->class_name, itf->class_name);
 	return 0;
     }
-    int *table = (int *)(i2c + 1);
-    return table[idx];
+    if (is_static)
+    {
+	// TODO: Need a table for fast lookup?
+	char_u *name = itf->class_class_members[idx].ocm_name;
+	for (int i = 0; i < i2c->i2c_class->class_class_member_count; ++i)
+	{
+	    ocmember_T *m = &i2c->i2c_class->class_class_members[i];
+	    if (STRCMP(name, m->ocm_name) == 0)
+	    {
+		return i;
+	    }
+	}
+	siemsg("class %s, interface %s, static %s not found",
+				      cl->class_name, itf->class_name, name);
+	return 0;
+    }
+    else
+    {
+	// A table follows the i2c for the class
+	int *table = (int *)(i2c + 1);
+	// "method_offset" is 0, if method is in the current class.  If method
+	// is in a parent class, then it is non-zero.
+	return table[idx] + method_offset;
+    }
 }
 
 /*
@@ -229,23 +308,144 @@ validate_extends_class(char_u *extends_n
 	semsg(_(e_class_name_not_found_str), extends_name);
 	return success;
     }
+
+    if (tv.v_type != VAR_CLASS
+	    || tv.vval.v_class == NULL
+	    || (tv.vval.v_class->class_flags & CLASS_INTERFACE) != 0)
+	semsg(_(e_cannot_extend_str), extends_name);
     else
     {
-	if (tv.v_type != VAR_CLASS
-		|| tv.vval.v_class == NULL
-		|| (tv.vval.v_class->class_flags & CLASS_INTERFACE) != 0)
-	    semsg(_(e_cannot_extend_str), extends_name);
-	else
+	class_T *extends_cl = tv.vval.v_class;
+	++extends_cl->class_refcount;
+	*extends_clp = extends_cl;
+	success = TRUE;
+    }
+    clear_tv(&tv);
+
+    return success;
+}
+
+/*
+ * Check whether a class/object member variable in "classmembers_gap" /
+ * "objmembers_gap" is a duplicate of a member in any of the extended parent
+ * class lineage.  Returns TRUE if there are no duplicates.
+ */
+    static int
+validate_extends_members(
+    garray_T	*classmembers_gap,
+    garray_T	*objmembers_gap,
+    class_T	*extends_cl)
+{
+    for (int loop = 1; loop <= 2; ++loop)
+    {
+	// loop == 1: check class members
+	// loop == 2: check object members
+	int member_count = loop == 1 ? classmembers_gap->ga_len
+						: objmembers_gap->ga_len;
+	if (member_count == 0)
+	    continue;
+	ocmember_T *members = (ocmember_T *)(loop == 1
+						? classmembers_gap->ga_data
+						: objmembers_gap->ga_data);
+
+	// Validate each member variable
+	for (int c_i = 0; c_i < member_count; c_i++)
 	{
-	    class_T *extends_cl = tv.vval.v_class;
-	    ++extends_cl->class_refcount;
-	    *extends_clp = extends_cl;
-	    success = TRUE;
+	    class_T	*p_cl = extends_cl;
+	    ocmember_T	*c_m = members + c_i;
+	    char_u	*pstr = (*c_m->ocm_name == '_')
+					? c_m->ocm_name + 1 : c_m->ocm_name;
+
+	    // Check in all the parent classes in the lineage
+	    while (p_cl != NULL)
+	    {
+		int p_member_count = loop == 1
+					? p_cl->class_class_member_count
+					: p_cl->class_obj_member_count;
+		if (p_member_count == 0)
+		    continue;
+		ocmember_T *p_members = (loop == 1
+					? p_cl->class_class_members
+					: p_cl->class_obj_members);
+
+		// Compare against all the members in the parent class
+		for (int p_i = 0; p_i < p_member_count; p_i++)
+		{
+		    ocmember_T	*p_m = p_members + p_i;
+		    char_u	*qstr = (*p_m->ocm_name == '_')
+					? p_m->ocm_name + 1 : p_m->ocm_name;
+		    if (STRCMP(pstr, qstr) == 0)
+		    {
+			semsg(_(e_duplicate_member_str), c_m->ocm_name);
+			return FALSE;
+		    }
+		}
+
+		p_cl = p_cl->class_extends;
+	    }
 	}
-	clear_tv(&tv);
     }
 
-    return success;
+    return TRUE;
+}
+
+/*
+ * When extending an abstract class, check whether all the abstract methods in
+ * the parent class are implemented.  Returns TRUE if all the methods are
+ * implemented.
+ */
+    static int
+validate_extends_methods(
+    garray_T	*classmethods_gap,
+    garray_T	*objmethods_gap,
+    class_T	*extends_cl)
+{
+    for (int loop = 1; loop <= 2; ++loop)
+    {
+	// loop == 1: check class methods
+	// loop == 2: check object methods
+	int extends_method_count = loop == 1
+				? extends_cl->class_class_function_count
+				: extends_cl->class_obj_method_count;
+	if (extends_method_count == 0)
+	    continue;
+
+	ufunc_T **extends_methods = loop == 1
+				? extends_cl->class_class_functions
+				: extends_cl->class_obj_methods;
+
+	int method_count = loop == 1 ? classmethods_gap->ga_len
+						: objmethods_gap->ga_len;
+	ufunc_T **cl_fp = (ufunc_T **)(loop == 1
+						? classmethods_gap->ga_data
+						: objmethods_gap->ga_data);
+
+	for (int i = 0; i < extends_method_count; i++)
+	{
+	    ufunc_T *uf = extends_methods[i];
+	    if ((uf->uf_flags & FC_ABSTRACT) == 0)
+		continue;
+
+	    int method_found = FALSE;
+
+	    for (int j = 0; j < method_count; j++)
+	    {
+		if (STRCMP(uf->uf_name, cl_fp[j]->uf_name) == 0)
+		{
+		    method_found = TRUE;
+		    break;
+		}
+	    }
+
+	    if (!method_found)
+	    {
+		semsg(_(e_abstract_method_str_not_found), uf->uf_name);
+		return FALSE;
+	    }
+	}
+    }
+
+    return TRUE;
 }
 
 /*
@@ -260,9 +460,7 @@ validate_interface_members(
     garray_T	*classmembers_gap,
     garray_T	*objmembers_gap)
 {
-    int success = TRUE;
-
-    for (int loop = 1; loop <= 2 && success; ++loop)
+    for (int loop = 1; loop <= 2; ++loop)
     {
 	// loop == 1: check class members
 	// loop == 2: check object members
@@ -291,9 +489,16 @@ validate_interface_members(
 		// Ensure the type is matching.
 		where.wt_func_name = (char *)m->ocm_name;
 		where.wt_kind = WT_MEMBER;
-		if (check_type_maybe(if_ms[if_i].ocm_type, m->ocm_type, TRUE,
-								where) != OK)
-		    success = FALSE;
+		if (check_type(if_ms[if_i].ocm_type, m->ocm_type, TRUE,
+								where) == FAIL)
+		    return FALSE;
+
+		if (if_ms[if_i].ocm_access != m->ocm_access)
+		{
+		    semsg(_(e_member_str_of_interface_str_has_different_access),
+			    if_ms[if_i].ocm_name, intf_class_name);
+		    return FALSE;
+		}
 
 		break;
 	    }
@@ -301,13 +506,12 @@ validate_interface_members(
 	    {
 		semsg(_(e_member_str_of_interface_str_not_implemented),
 			if_ms[if_i].ocm_name, intf_class_name);
-		success = FALSE;
-		break;
+		return FALSE;
 	    }
 	}
     }
 
-    return success;
+    return TRUE;
 }
 
 /*
@@ -323,9 +527,7 @@ validate_interface_methods(
     garray_T	*classfunctions_gap,
     garray_T	*objmethods_gap)
 {
-    int success = TRUE;
-
-    for (int loop = 1; loop <= 2 && success; ++loop)
+    for (int loop = 1; loop <= 2; ++loop)
     {
 	// loop == 1: check class functions
 	// loop == 2: check object methods
@@ -342,8 +544,8 @@ validate_interface_methods(
 						: objmethods_gap->ga_len;
 	for (int if_i = 0; if_i < if_count; ++if_i)
 	{
-	    char_u *if_name = if_fp[if_i]->uf_name;
-	    int cl_i;
+	    char_u	*if_name = if_fp[if_i]->uf_name;
+	    int		cl_i;
 	    for (cl_i = 0; cl_i < cl_count; ++cl_i)
 	    {
 		char_u *cl_name = cl_fp[cl_i]->uf_name;
@@ -354,9 +556,9 @@ validate_interface_methods(
 		    // Ensure the type is matching.
 		    where.wt_func_name = (char *)if_name;
 		    where.wt_kind = WT_METHOD;
-		    if (check_type_maybe(if_fp[if_i]->uf_func_type,
-				cl_fp[cl_i]->uf_func_type, TRUE, where) != OK)
-			success = FALSE;
+		    if (check_type(if_fp[if_i]->uf_func_type,
+			cl_fp[cl_i]->uf_func_type, TRUE, where) == FAIL)
+			return FALSE;
 		    break;
 		}
 	    }
@@ -364,18 +566,17 @@ validate_interface_methods(
 	    {
 		semsg(_(e_function_str_of_interface_str_not_implemented),
 			if_name, intf_class_name);
-		success = FALSE;
-		break;
+		return FALSE;
 	    }
 	}
     }
 
-    return success;
+    return TRUE;
 }
 
 /*
  * Validate all the "implements" classes when creating a new class.  The
- * classes are returned in "intf_classes".  The class functions, class methods,
+ * classes are returned in "intf_classes".  The class functions, class members,
  * object methods and object members in the new class are in
  * "classfunctions_gap", "classmembers_gap", "objmethods_gap", and
  * "objmembers_gap" respectively.
@@ -423,8 +624,9 @@ validate_implements_classes(
 
 	// check the functions/methods of the interface match the
 	// functions/methods of the class
-	success = validate_interface_methods(impl, ifcl, classfunctions_gap,
-							objmethods_gap);
+	if (success)
+	    success = validate_interface_methods(impl, ifcl,
+					classfunctions_gap, objmethods_gap);
 	clear_tv(&tv);
     }
 
@@ -442,18 +644,16 @@ check_func_arg_names(
     garray_T	*objmethods_gap,
     garray_T	*classmembers_gap)
 {
-    int success = TRUE;
-
     // loop 1: class functions, loop 2: object methods
-    for (int loop = 1; loop <= 2 && success; ++loop)
+    for (int loop = 1; loop <= 2; ++loop)
     {
 	garray_T *gap = loop == 1 ? classfunctions_gap : objmethods_gap;
 
-	for (int fi = 0; fi < gap->ga_len && success; ++fi)
+	for (int fi = 0; fi < gap->ga_len; ++fi)
 	{
 	    ufunc_T *uf = ((ufunc_T **)gap->ga_data)[fi];
 
-	    for (int i = 0; i < uf->uf_args.ga_len && success; ++i)
+	    for (int i = 0; i < uf->uf_args.ga_len; ++i)
 	    {
 		char_u *aname = ((char_u **)uf->uf_args.ga_data)[i];
 		garray_T *mgap = classmembers_gap;
@@ -461,25 +661,100 @@ check_func_arg_names(
 		// Check all the class member names
 		for (int mi = 0; mi < mgap->ga_len; ++mi)
 		{
-		    char_u *mname = ((ocmember_T *)mgap->ga_data + mi)
-			->ocm_name;
+		    char_u *mname =
+				((ocmember_T *)mgap->ga_data + mi)->ocm_name;
 		    if (STRCMP(aname, mname) == 0)
 		    {
-			success = FALSE;
-
 			if (uf->uf_script_ctx.sc_sid > 0)
 			    SOURCING_LNUM = uf->uf_script_ctx.sc_lnum;
 
 			semsg(_(e_argument_already_declared_in_class_str),
 				aname);
-			break;
+
+			return FALSE;
 		    }
 		}
 	    }
 	}
     }
 
-    return success;
+    return TRUE;
+}
+
+/*
+ * Returns TRUE if the member "varname" is already defined.
+ */
+    static int
+is_duplicate_member(garray_T *mgap, char_u *varname, char_u *varname_end)
+{
+    char_u	*name = vim_strnsave(varname, varname_end - varname);
+    char_u	*pstr = (*name == '_') ? name + 1 : name;
+    int		dup = FALSE;
+
+    for (int i = 0; i < mgap->ga_len; ++i)
+    {
+	ocmember_T *m = ((ocmember_T *)mgap->ga_data) + i;
+	char_u	*qstr = *m->ocm_name == '_' ? m->ocm_name + 1 : m->ocm_name;
+	if (STRCMP(pstr, qstr) == 0)
+	{
+	    semsg(_(e_duplicate_member_str), name);
+	    dup = TRUE;
+	    break;
+	}
+    }
+
+    vim_free(name);
+    return dup;
+}
+
+/*
+ * Returns TRUE if the method "name" is already defined.
+ */
+    static int
+is_duplicate_method(garray_T *fgap, char_u *name)
+{
+    char_u *pstr = (*name == '_') ? name + 1 : name;
+
+    for (int i = 0; i < fgap->ga_len; ++i)
+    {
+	char_u	*n = ((ufunc_T **)fgap->ga_data)[i]->uf_name;
+	char_u	*qstr = *n == '_' ? n + 1 : n;
+	if (STRCMP(pstr, qstr) == 0)
+	{
+	    semsg(_(e_duplicate_function_str), name);
+	    return TRUE;
+	}
+    }
+
+    return FALSE;
+}
+
+/*
+ * Returns TRUE if the constructor is valid.
+ */
+    static int
+is_valid_constructor(ufunc_T *uf, int is_abstract, int has_static)
+{
+    // Constructors are not allowed in abstract classes.
+    if (is_abstract)
+    {
+	emsg(_(e_cannot_define_new_function_in_abstract_class));
+	return FALSE;
+    }
+    // A constructor is always static, no need to define it so.
+    if (has_static)
+    {
+	emsg(_(e_cannot_define_new_function_as_static));
+	return FALSE;
+    }
+    // A return type should not be specified for the new()
+    // constructor method.
+    if (uf->uf_ret_type->tt_type != VAR_VOID)
+    {
+	emsg(_(e_cannot_use_a_return_type_with_new));
+	return FALSE;
+    }
+    return TRUE;
 }
 
 /*
@@ -492,18 +767,18 @@ check_func_arg_names(
  */
     static int
 update_member_method_lookup_table(
-	class_T		*ifcl,
-	class_T		*cl,
-	garray_T	*objmethods,
-	int		pobj_method_offset,
-	int		is_interface)
+    class_T	*ifcl,
+    class_T	*cl,
+    garray_T	*objmethods,
+    int		pobj_method_offset,
+    int		is_interface)
 {
     if (ifcl == NULL)
 	return OK;
 
     // Table for members.
     itf2class_T *if2cl = alloc_clear(sizeof(itf2class_T)
-	    + ifcl->class_obj_member_count * sizeof(int));
+				+ ifcl->class_obj_member_count * sizeof(int));
     if (if2cl == NULL)
 	return FAIL;
     if2cl->i2c_next = ifcl->class_itf2class;
@@ -515,7 +790,7 @@ update_member_method_lookup_table(
 	for (int cl_i = 0; cl_i < cl->class_obj_member_count; ++cl_i)
 	{
 	    if (STRCMP(ifcl->class_obj_members[if_i].ocm_name,
-			cl->class_obj_members[cl_i].ocm_name) == 0)
+				cl->class_obj_members[cl_i].ocm_name) == 0)
 	    {
 		int *table = (int *)(if2cl + 1);
 		table[if_i] = cl_i;
@@ -525,7 +800,7 @@ update_member_method_lookup_table(
 
     // Table for methods.
     if2cl = alloc_clear(sizeof(itf2class_T)
-	    + ifcl->class_obj_method_count * sizeof(int));
+				+ ifcl->class_obj_method_count * sizeof(int));
     if (if2cl == NULL)
 	return FAIL;
     if2cl->i2c_next = ifcl->class_itf2class;
@@ -539,8 +814,7 @@ update_member_method_lookup_table(
 	for (int cl_i = 0; cl_i < objmethods->ga_len; ++cl_i)
 	{
 	    if (STRCMP(ifcl->class_obj_methods[if_i]->uf_name,
-			((ufunc_T **)objmethods->ga_data)[cl_i]->uf_name)
-		    == 0)
+			((ufunc_T **)objmethods->ga_data)[cl_i]->uf_name) == 0)
 	    {
 		int *table = (int *)(if2cl + 1);
 		table[if_i] = cl_i;
@@ -558,8 +832,8 @@ update_member_method_lookup_table(
 	    // the intermediate parent classes.
 	    if (cl->class_extends != ifcl)
 	    {
-		class_T	    *parent = cl->class_extends;
-		int	    method_offset = objmethods->ga_len;
+		class_T		*parent = cl->class_extends;
+		int		method_offset = objmethods->ga_len;
 
 		while (!done && parent != NULL && parent != ifcl)
 		{
@@ -648,8 +922,8 @@ add_class_members(class_T *cl, exarg_T *
 
     for (int i = 0; i < cl->class_class_member_count; ++i)
     {
-	ocmember_T *m = &cl->class_class_members[i];
-	typval_T *tv = &cl->class_members_tv[i];
+	ocmember_T	*m = &cl->class_class_members[i];
+	typval_T	*tv = &cl->class_members_tv[i];
 	if (m->ocm_init != NULL)
 	{
 	    typval_T *etv = eval_expr(m->ocm_init, eap);
@@ -709,7 +983,7 @@ add_default_constructor(
     if (nf != NULL && ga_grow(classfunctions_gap, 1) == OK)
     {
 	((ufunc_T **)classfunctions_gap->ga_data)[classfunctions_gap->ga_len]
-	    = nf;
+									= nf;
 	++classfunctions_gap->ga_len;
 
 	nf->uf_flags |= FC_NEW;
@@ -739,10 +1013,10 @@ add_classfuncs_objmethods(
     // loop 1: class functions, loop 2: object methods
     for (int loop = 1; loop <= 2; ++loop)
     {
-	garray_T *gap = loop == 1 ? classfunctions_gap : objmethods_gap;
-	int	     *fcount = loop == 1 ? &cl->class_class_function_count
+	garray_T	*gap = loop == 1 ? classfunctions_gap : objmethods_gap;
+	int		*fcount = loop == 1 ? &cl->class_class_function_count
 						: &cl->class_obj_method_count;
-	ufunc_T ***fup = loop == 1 ? &cl->class_class_functions
+	ufunc_T		***fup = loop == 1 ? &cl->class_class_functions
 						: &cl->class_obj_methods;
 
 	int parent_count = 0;
@@ -832,11 +1106,11 @@ add_classfuncs_objmethods(
     void
 ex_class(exarg_T *eap)
 {
-    int	    is_class = eap->cmdidx == CMD_class;  // FALSE for :interface
-    long    start_lnum = SOURCING_LNUM;
+    int		is_class = eap->cmdidx == CMD_class;  // FALSE for :interface
+    long	start_lnum = SOURCING_LNUM;
+    char_u	*arg = eap->arg;
+    int		is_abstract = eap->cmdidx == CMD_abstract;
 
-    char_u *arg = eap->arg;
-    int is_abstract = eap->cmdidx == CMD_abstract;
     if (is_abstract)
     {
 	if (STRNCMP(arg, "class", 5) != 0 || !VIM_ISWHITE(arg[5]))
@@ -1049,6 +1323,31 @@ early_ret:
 	    }
 	}
 
+	int abstract_method = FALSE;
+	char_u *pa = p;
+	if (checkforcmd(&p, "abstract", 3))
+	{
+	    if (STRNCMP(pa, "abstract", 8) != 0)
+	    {
+		semsg(_(e_command_cannot_be_shortened_str), pa);
+		break;
+	    }
+
+	    if (!is_abstract)
+	    {
+		semsg(_(e_abstract_method_in_concrete_class), pa);
+		break;
+	    }
+
+	    abstract_method = TRUE;
+	    p = skipwhite(pa + 8);
+	    if (STRNCMP(p, "def", 3) != 0 && STRNCMP(p, "static", 6) != 0)
+	    {
+		emsg(_(e_abstract_must_be_followed_by_def_or_static));
+		break;
+	    }
+	}
+
 	int has_static = FALSE;
 	char_u *ps = p;
 	if (checkforcmd(&p, "static", 4))
@@ -1073,6 +1372,11 @@ early_ret:
 		semsg(_(e_invalid_object_member_declaration_str), p);
 		break;
 	    }
+	    if (has_static)
+	    {
+		emsg(_(e_static_cannot_be_followed_by_this));
+		break;
+	    }
 	    char_u *varname = p + 5;
 	    char_u *varname_end = NULL;
 	    type_T *type = NULL;
@@ -1081,6 +1385,11 @@ early_ret:
 			  &varname_end, &type_list, &type,
 			  is_class ? &init_expr: NULL) == FAIL)
 		break;
+	    if (is_duplicate_member(&objmembers, varname, varname_end))
+	    {
+		vim_free(init_expr);
+		break;
+	    }
 	    if (add_member(&objmembers, varname, varname_end,
 					  has_public, type, init_expr) == FAIL)
 	    {
@@ -1117,44 +1426,35 @@ early_ret:
 	    ea.cookie = eap->cookie;
 
 	    ga_init2(&lines_to_free, sizeof(char_u *), 50);
+	    int class_flags;
+	    if (is_class)
+		class_flags = abstract_method ? CF_ABSTRACT_METHOD : CF_CLASS;
+	    else
+		class_flags = CF_INTERFACE;
 	    ufunc_T *uf = define_function(&ea, NULL, &lines_to_free,
-					   is_class ? CF_CLASS : CF_INTERFACE);
+								class_flags);
 	    ga_clear_strings(&lines_to_free);
 
 	    if (uf != NULL)
 	    {
-		char_u *name = uf->uf_name;
-		int is_new = STRNCMP(name, "new", 3) == 0;
-		if (is_new && is_abstract)
+		char_u	*name = uf->uf_name;
+		int	is_new = STRNCMP(name, "new", 3) == 0;
+
+		if (is_new && !is_valid_constructor(uf, is_abstract,
+								has_static))
 		{
-		    emsg(_(e_cannot_define_new_function_in_abstract_class));
-		    success = FALSE;
 		    func_clear_free(uf, FALSE);
 		    break;
 		}
-		if (is_new)
-		{
-		    // A return type should not be specified for the new()
-		    // constructor method.
-		    if (uf->uf_ret_type->tt_type != VAR_VOID)
-		    {
-			emsg(_(e_cannot_use_a_return_type_with_new));
-			success = FALSE;
-			func_clear_free(uf, FALSE);
-			break;
-		    }
-		}
+
 		garray_T *fgap = has_static || is_new
 					       ? &classfunctions : &objmethods;
 		// Check the name isn't used already.
-		for (int i = 0; i < fgap->ga_len; ++i)
+		if (is_duplicate_method(fgap, name))
 		{
-		    char_u *n = ((ufunc_T **)fgap->ga_data)[i]->uf_name;
-		    if (STRCMP(name, n) == 0)
-		    {
-			semsg(_(e_duplicate_function_str), name);
-			break;
-		    }
+		    success = FALSE;
+		    func_clear_free(uf, FALSE);
+		    break;
 		}
 
 		if (ga_grow(fgap, 1) == OK)
@@ -1162,6 +1462,9 @@ early_ret:
 		    if (is_new)
 			uf->uf_flags |= FC_NEW;
 
+		    if (abstract_method)
+			uf->uf_flags |= FC_ABSTRACT;
+
 		    ((ufunc_T **)fgap->ga_data)[fgap->ga_len] = uf;
 		    ++fgap->ga_len;
 		}
@@ -1183,6 +1486,11 @@ early_ret:
 		      &varname_end, &type_list, &type,
 		      is_class ? &init_expr : NULL) == FAIL)
 		break;
+	    if (is_duplicate_member(&classmembers, varname, varname_end))
+	    {
+		vim_free(init_expr);
+		break;
+	    }
 	    if (add_member(&classmembers, varname, varname_end,
 				      has_public, type, init_expr) == FAIL)
 	    {
@@ -1213,6 +1521,20 @@ early_ret:
 	success = validate_extends_class(extends, &extends_cl);
     VIM_CLEAR(extends);
 
+    // Check the new class members and object members are not duplicates of the
+    // members in the extended class lineage.
+    if (success && extends_cl != NULL)
+	success = validate_extends_members(&classmembers, &objmembers,
+								extends_cl);
+
+    // When extending an abstract class, make sure all the abstract methods in
+    // the parent class are implemented.  If the current class is an abstract
+    // class, then there is no need for this check.
+    if (success && !is_abstract && extends_cl != NULL
+				&& (extends_cl->class_flags & CLASS_ABSTRACT))
+	success = validate_extends_methods(&classfunctions, &objmethods,
+								extends_cl);
+
     class_T **intf_classes = NULL;
 
     // Check all "implements" entries are valid.
@@ -1240,6 +1562,8 @@ early_ret:
 	    goto cleanup;
 	if (!is_class)
 	    cl->class_flags = CLASS_INTERFACE;
+	else if (is_abstract)
+	    cl->class_flags = CLASS_ABSTRACT;
 
 	cl->class_refcount = 1;
 	cl->class_name = vim_strnsave(name_start, name_end - name_start);
@@ -1327,11 +1651,14 @@ early_ret:
 	cl->class_object_type.tt_class = cl;
 	cl->class_type_list = type_list;
 
+	class_created(cl);
+
 	// TODO:
 	// - Fill hashtab with object members and methods ?
 
 	// Add the class to the script-local variables.
 	// TODO: handle other context, e.g. in a function
+	// TODO: does uf_hash need to be cleared?
 	typval_T tv;
 	tv.v_type = VAR_CLASS;
 	tv.vval.v_class = cl;
@@ -1410,24 +1737,35 @@ cleanup:
 /*
  * Find member "name" in class "cl", set "member_idx" to the member index and
  * return its type.
+ * When "is_object" is TRUE, then look for object members.  Otherwise look for
+ * class members.
  * When not found "member_idx" is set to -1 and t_any is returned.
+ * Set *p_m ocmmember_T if not NULL
  */
     type_T *
 class_member_type(
-	class_T *cl,
-	char_u	*name,
-	char_u	*name_end,
-	int	*member_idx)
+    class_T	*cl,
+    int		is_object,
+    char_u	*name,
+    char_u	*name_end,
+    int		*member_idx,
+    ocmember_T	**p_m)
 {
     *member_idx = -1;  // not found (yet)
-    size_t len = name_end - name;
+    size_t	len = name_end - name;
+    int		member_count = is_object ? cl->class_obj_member_count
+						: cl->class_class_member_count;
+    ocmember_T	*members = is_object ? cl->class_obj_members
+						: cl->class_class_members;
 
-    for (int i = 0; i < cl->class_obj_member_count; ++i)
+    for (int i = 0; i < member_count; ++i)
     {
-	ocmember_T *m = cl->class_obj_members + i;
+	ocmember_T *m = members + i;
 	if (STRNCMP(m->ocm_name, name, len) == 0 && m->ocm_name[len] == NUL)
 	{
 	    *member_idx = i;
+	    if (p_m != NULL)
+		*p_m = m;
 	    return m->ocm_type;
 	}
     }
@@ -1455,6 +1793,57 @@ ex_type(exarg_T *eap UNUSED)
 }
 
 /*
+ * Returns OK if a member variable named "name" is present in the class "cl".
+ * Otherwise returns FAIL.  If found, the member variable typval is set in
+ * "rettv".  If "is_object" is TRUE, then the object member variable table is
+ * searched.  Otherwise the class member variable table is searched.
+ */
+    static int
+get_member_tv(
+    class_T	*cl,
+    int		is_object,
+    char_u	*name,
+    size_t	namelen,
+    typval_T	*rettv)
+{
+    int member_count = is_object ? cl->class_obj_member_count
+						: cl->class_class_member_count;
+    ocmember_T *members = is_object ? cl->class_obj_members
+						: cl->class_class_members;
+
+    for (int i = 0; i < member_count; ++i)
+    {
+	ocmember_T *m = &members[i];
+	if (STRNCMP(name, m->ocm_name, namelen) == 0
+						&& m->ocm_name[namelen] == NUL)
+	{
+	    if (*name == '_')
+	    {
+		semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+		return FAIL;
+	    }
+
+	    // The object only contains a pointer to the class, the member
+	    // values array follows right after that.
+	    object_T *obj = rettv->vval.v_object;
+	    if (is_object)
+	    {
+		typval_T *tv = (typval_T *)(obj + 1) + i;
+		copy_tv(tv, rettv);
+	    }
+	    else
+		copy_tv(&cl->class_members_tv[i], rettv);
+
+	    object_unref(obj);
+
+	    return OK;
+	}
+    }
+
+    return FAIL;
+}
+
+/*
  * Evaluate what comes after a class:
  * - class member: SomeClass.varname
  * - class function: SomeClass.SomeMethod()
@@ -1520,8 +1909,15 @@ class_object_index(
 	    char_u *ufname = (char_u *)fp->uf_name;
 	    if (STRNCMP(name, ufname, len) == 0 && ufname[len] == NUL)
 	    {
-		typval_T    argvars[MAX_FUNC_ARGS + 1];
-		int	    argcount = 0;
+		typval_T	argvars[MAX_FUNC_ARGS + 1];
+		int		argcount = 0;
+
+		if (*ufname == '_')
+		{
+		    // Cannot access a private method outside of a class
+		    semsg(_(e_cannot_access_private_method_str), name);
+		    return FAIL;
+		}
 
 		char_u *argp = name_end;
 		int ret = get_func_arguments(&argp, evalarg, 0,
@@ -1529,7 +1925,7 @@ class_object_index(
 		if (ret == FAIL)
 		    return FAIL;
 
-		funcexe_T   funcexe;
+		funcexe_T funcexe;
 		CLEAR_FIELD(funcexe);
 		funcexe.fe_evaluate = TRUE;
 		if (rettv->v_type == VAR_OBJECT)
@@ -1568,27 +1964,13 @@ class_object_index(
 
     else if (rettv->v_type == VAR_OBJECT)
     {
-	for (int i = 0; i < cl->class_obj_member_count; ++i)
+	// Search in the object member variable table and the class member
+	// variable table.
+	if (get_member_tv(cl, TRUE, name, len, rettv) == OK
+		|| get_member_tv(cl, FALSE, name, len, rettv) == OK)
 	{
-	    ocmember_T *m = &cl->class_obj_members[i];
-	    if (STRNCMP(name, m->ocm_name, len) == 0 && m->ocm_name[len] == NUL)
-	    {
-		if (*name == '_')
-		{
-		    semsg(_(e_cannot_access_private_member_str), m->ocm_name);
-		    return FAIL;
-		}
-
-		// The object only contains a pointer to the class, the member
-		// values array follows right after that.
-		object_T *obj = rettv->vval.v_object;
-		typval_T *tv = (typval_T *)(obj + 1) + i;
-		copy_tv(tv, rettv);
-		object_unref(obj);
-
-		*arg = name_end;
-		return OK;
-	    }
+	    *arg = name_end;
+	    return OK;
 	}
 
 	semsg(_(e_member_not_found_on_object_str_str), cl->class_name, name);
@@ -1607,6 +1989,12 @@ class_object_index(
 		    semsg(_(e_cannot_access_private_member_str), m->ocm_name);
 		    return FAIL;
 		}
+		if ((cl->class_flags & CLASS_INTERFACE) != 0)
+		{
+		    semsg(_(e_interface_static_direct_access_str),
+						cl->class_name, m->ocm_name);
+		    return FAIL;
+		}
 
 		typval_T *tv = &cl->class_members_tv[i];
 		copy_tv(tv, rettv);
@@ -1635,8 +2023,8 @@ find_class_func(char_u **arg)
     if (name_end == name || *name_end != '.')
 	return NULL;
 
-    size_t len = name_end - name;
-    typval_T tv;
+    size_t	len = name_end - name;
+    typval_T	tv;
     tv.v_type = VAR_UNKNOWN;
     if (eval_variable(name, (int)len,
 				    0, &tv, NULL, EVAL_VAR_NOAUTOLOAD) == FAIL)
@@ -1711,7 +2099,8 @@ class_member_index(char_u *name, size_t 
 inside_class(cctx_T *cctx_arg, class_T *cl)
 {
     for (cctx_T *cctx = cctx_arg; cctx != NULL; cctx = cctx->ctx_outer)
-	if (cctx->ctx_ufunc != NULL && cctx->ctx_ufunc->uf_class == cl)
+	if (cctx->ctx_ufunc != NULL
+			&& class_instance_of(cctx->ctx_ufunc->uf_class, cl))
 	    return TRUE;
     return FALSE;
 }
@@ -1743,7 +2132,7 @@ object_clear(object_T *obj)
     class_T *cl = obj->obj_class;
 
     if (!cl)
-        return;
+	return;
 
     // the member values are just after the object structure
     typval_T *tv = (typval_T *)(obj + 1);
@@ -1783,73 +2172,114 @@ copy_class(typval_T *from, typval_T *to)
 }
 
 /*
+ * Free the class "cl" and its contents.
+ */
+    static void
+class_free(class_T *cl)
+{
+    // Freeing what the class contains may recursively come back here.
+    // Clear "class_name" first, if it is NULL the class does not need to
+    // be freed.
+    VIM_CLEAR(cl->class_name);
+
+    class_unref(cl->class_extends);
+
+    for (int i = 0; i < cl->class_interface_count; ++i)
+    {
+	vim_free(((char_u **)cl->class_interfaces)[i]);
+	if (cl->class_interfaces_cl[i] != NULL)
+	    class_unref(cl->class_interfaces_cl[i]);
+    }
+    vim_free(cl->class_interfaces);
+    vim_free(cl->class_interfaces_cl);
+
+    itf2class_T *next;
+    for (itf2class_T *i2c = cl->class_itf2class; i2c != NULL; i2c = next)
+    {
+	next = i2c->i2c_next;
+	vim_free(i2c);
+    }
+
+    for (int i = 0; i < cl->class_class_member_count; ++i)
+    {
+	ocmember_T *m = &cl->class_class_members[i];
+	vim_free(m->ocm_name);
+	vim_free(m->ocm_init);
+	if (cl->class_members_tv != NULL)
+	    clear_tv(&cl->class_members_tv[i]);
+    }
+    vim_free(cl->class_class_members);
+    vim_free(cl->class_members_tv);
+
+    for (int i = 0; i < cl->class_obj_member_count; ++i)
+    {
+	ocmember_T *m = &cl->class_obj_members[i];
+	vim_free(m->ocm_name);
+	vim_free(m->ocm_init);
+    }
+    vim_free(cl->class_obj_members);
+
+    for (int i = 0; i < cl->class_class_function_count; ++i)
+    {
+	ufunc_T *uf = cl->class_class_functions[i];
+	func_clear_free(uf, FALSE);
+    }
+    vim_free(cl->class_class_functions);
+
+    for (int i = 0; i < cl->class_obj_method_count; ++i)
+    {
+	ufunc_T *uf = cl->class_obj_methods[i];
+	func_clear_free(uf, FALSE);
+    }
+    vim_free(cl->class_obj_methods);
+
+    clear_type_list(&cl->class_type_list);
+
+    class_cleared(cl);
+
+    vim_free(cl);
+}
+
+/*
  * Unreference a class.  Free it when the reference count goes down to zero.
  */
     void
 class_unref(class_T *cl)
 {
     if (cl != NULL && --cl->class_refcount <= 0 && cl->class_name != NULL)
-    {
-	// Freeing what the class contains may recursively come back here.
-	// Clear "class_name" first, if it is NULL the class does not need to
-	// be freed.
-	VIM_CLEAR(cl->class_name);
-
-	class_unref(cl->class_extends);
+	class_free(cl);
+}
 
-	for (int i = 0; i < cl->class_interface_count; ++i)
-	{
-	    vim_free(((char_u **)cl->class_interfaces)[i]);
-	    if (cl->class_interfaces_cl[i] != NULL)
-		class_unref(cl->class_interfaces_cl[i]);
-	}
-	vim_free(cl->class_interfaces);
-	vim_free(cl->class_interfaces_cl);
+/*
+ * Go through the list of all classes and free items without "copyID".
+ */
+    int
+class_free_nonref(int copyID)
+{
+    int		did_free = FALSE;
 
-	itf2class_T *next;
-	for (itf2class_T *i2c = cl->class_itf2class; i2c != NULL; i2c = next)
-	{
-	    next = i2c->i2c_next;
-	    vim_free(i2c);
-	}
-
-	for (int i = 0; i < cl->class_class_member_count; ++i)
+    for (class_T *cl = first_class; cl != NULL; cl = next_nonref_class)
+    {
+	next_nonref_class = cl->class_next_used;
+	if ((cl->class_copyID & COPYID_MASK) != (copyID & COPYID_MASK))
 	{
-	    ocmember_T *m = &cl->class_class_members[i];
-	    vim_free(m->ocm_name);
-	    vim_free(m->ocm_init);
-	    if (cl->class_members_tv != NULL)
-		clear_tv(&cl->class_members_tv[i]);
+	    // Free the class and items it contains.
+	    class_free(cl);
+	    did_free = TRUE;
 	}
-	vim_free(cl->class_class_members);
-	vim_free(cl->class_members_tv);
-
-	for (int i = 0; i < cl->class_obj_member_count; ++i)
-	{
-	    ocmember_T *m = &cl->class_obj_members[i];
-	    vim_free(m->ocm_name);
-	    vim_free(m->ocm_init);
-	}
-	vim_free(cl->class_obj_members);
+    }
 
-	for (int i = 0; i < cl->class_class_function_count; ++i)
-	{
-	    ufunc_T *uf = cl->class_class_functions[i];
-	    func_clear_free(uf, FALSE);
-	}
-	vim_free(cl->class_class_functions);
+    next_nonref_class = NULL;
+    return did_free;
+}
 
-	for (int i = 0; i < cl->class_obj_method_count; ++i)
-	{
-	    ufunc_T *uf = cl->class_obj_methods[i];
-	    func_clear_free(uf, FALSE);
-	}
-	vim_free(cl->class_obj_methods);
+    int
+set_ref_in_classes(int copyID)
+{
+    for (class_T *cl = first_class; cl != NULL; cl = cl->class_next_used)
+	set_ref_in_item_class(cl, copyID, NULL, NULL);
 
-	clear_type_list(&cl->class_type_list);
-
-	vim_free(cl);
-    }
+    return FALSE;
 }
 
 static object_T *first_object = NULL;
@@ -1913,5 +2343,69 @@ object_free_nonref(int copyID)
     return did_free;
 }
 
+/*
+ * Return TRUE when the class "cl", its base class or one of the implemented
+ * interfaces matches the class "other_cl".
+ */
+    int
+class_instance_of(class_T *cl, class_T *other_cl)
+{
+    if (cl == other_cl)
+	return TRUE;
+
+    // Recursively check the base classes.
+    for (; cl != NULL; cl = cl->class_extends)
+    {
+	if (cl == other_cl)
+	    return TRUE;
+	// Check the implemented interfaces.
+	for (int i = cl->class_interface_count - 1; i >= 0; --i)
+	    if (cl->class_interfaces_cl[i] == other_cl)
+		return TRUE;
+    }
+
+    return FALSE;
+}
+
+/*
+ * "instanceof(object, classinfo)" function
+ */
+    void
+f_instanceof(typval_T *argvars, typval_T *rettv)
+{
+    typval_T	*object_tv = &argvars[0];
+    typval_T	*classinfo_tv = &argvars[1];
+    listitem_T	*li;
+
+    rettv->vval.v_number = VVAL_FALSE;
+
+    if (check_for_object_arg(argvars, 0) == FAIL
+	    || check_for_class_or_list_arg(argvars, 1) == FAIL)
+	return;
+
+    if (classinfo_tv->v_type == VAR_LIST)
+    {
+	FOR_ALL_LIST_ITEMS(classinfo_tv->vval.v_list, li)
+	{
+	    if (li->li_tv.v_type != VAR_CLASS)
+	    {
+		emsg(_(e_class_required));
+		return;
+	    }
+
+	    if (class_instance_of(object_tv->vval.v_object->obj_class,
+			li->li_tv.vval.v_class) == TRUE)
+	    {
+		rettv->vval.v_number = VVAL_TRUE;
+		return;
+	    }
+	}
+    }
+    else if (classinfo_tv->v_type == VAR_CLASS)
+    {
+	rettv->vval.v_number = class_instance_of(object_tv->vval.v_object->obj_class,
+		classinfo_tv->vval.v_class);
+    }
+}
 
 #endif // FEAT_EVAL
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -1865,11 +1865,32 @@ compile_lhs(
 	else if (use_class)
 	{
 	    // for an object or class member get the type of the member
-	    class_T *cl = lhs->lhs_type->tt_class;
-	    lhs->lhs_member_type = class_member_type(cl, after + 1,
-					   lhs->lhs_end, &lhs->lhs_member_idx);
+	    class_T	*cl = lhs->lhs_type->tt_class;
+	    ocmember_T	*m;
+
+	    lhs->lhs_member_type = class_member_type(cl,
+					lhs->lhs_type->tt_type == VAR_OBJECT,
+					after + 1, lhs->lhs_end,
+					&lhs->lhs_member_idx, &m);
 	    if (lhs->lhs_member_idx < 0)
 		return FAIL;
+	    if ((cl->class_flags & CLASS_INTERFACE) != 0
+					&& lhs->lhs_type->tt_type == VAR_CLASS)
+	    {
+		semsg(_(e_interface_static_direct_access_str),
+						cl->class_name, m->ocm_name);
+		return FAIL;
+	    }
+	    // If it is private member variable, then accessing it outside the
+	    // class is not allowed.
+	    if ((m->ocm_access != VIM_ACCESS_ALL) && !inside_class(cctx, cl))
+	    {
+		char *msg = (m->ocm_access == VIM_ACCESS_PRIVATE)
+				? e_cannot_access_private_member_str
+				: e_cannot_change_readonly_variable_str;
+		semsg(_(msg), m->ocm_name);
+		return FAIL;
+	    }
 	}
 	else
 	{
@@ -2075,11 +2096,12 @@ compile_load_lhs_with_index(lhs_T *lhs, 
 	// Also for "obj.value".
        char_u *dot = vim_strchr(var_start, '.');
        if (dot == NULL)
-           return FAIL;
-
-	class_T *cl = lhs->lhs_type->tt_class;
-	type_T *type = class_member_type(cl, dot + 1,
-					   lhs->lhs_end, &lhs->lhs_member_idx);
+	   return FAIL;
+
+	class_T	*cl = lhs->lhs_type->tt_class;
+	type_T	*type = class_member_type(cl, TRUE, dot + 1,
+					   lhs->lhs_end, &lhs->lhs_member_idx,
+					   NULL);
 	if (lhs->lhs_member_idx < 0)
 	    return FAIL;
 
@@ -2096,8 +2118,9 @@ compile_load_lhs_with_index(lhs_T *lhs, 
 		return FAIL;
 	}
 	if (cl->class_flags & CLASS_INTERFACE)
-	    return generate_GET_ITF_MEMBER(cctx, cl, lhs->lhs_member_idx, type);
-	return generate_GET_OBJ_MEMBER(cctx, lhs->lhs_member_idx, type);
+	    return generate_GET_ITF_MEMBER(cctx, cl, lhs->lhs_member_idx, type,
+									FALSE);
+	return generate_GET_OBJ_MEMBER(cctx, lhs->lhs_member_idx, type, FALSE);
     }
 
     compile_load_lhs(lhs, var_start, NULL, cctx);
@@ -2299,6 +2322,9 @@ push_default_value(
 	case VAR_CHANNEL:
 	    r = generate_PUSHCHANNEL(cctx);
 	    break;
+	case VAR_OBJECT:
+	    r = generate_PUSHOBJ(cctx);
+	    break;
 	case VAR_NUMBER:
 	case VAR_UNKNOWN:
 	case VAR_ANY:
@@ -2306,7 +2332,6 @@ push_default_value(
 	case VAR_VOID:
 	case VAR_INSTR:
 	case VAR_CLASS:
-	case VAR_OBJECT:
 	case VAR_SPECIAL:  // cannot happen
 	    // This is skipped for local variables, they are always
 	    // initialized to zero.  But in a "for" or "while" loop
@@ -2965,7 +2990,8 @@ get_compile_type(ufunc_T *ufunc)
 #ifdef FEAT_PROFILE
     if (do_profiling == PROF_YES)
     {
-	if (!ufunc->uf_profiling && has_profiling(FALSE, ufunc->uf_name, NULL))
+	if (!ufunc->uf_profiling && has_profiling(FALSE, ufunc->uf_name, NULL,
+							    &ufunc->uf_hash))
 	    func_do_profile(ufunc);
 	if (ufunc->uf_profiling)
 	    return CT_PROFILE;
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -2144,10 +2144,17 @@ execute_storeindex(isn_T *iptr, ectx_T *
     // Stack contains:
     // -3 value to be stored
     // -2 index
-    // -1 dict, list, blob or object
+    // -1 dict, list, blob, object or class
     tv = STACK_TV_BOT(-3);
     SOURCING_LNUM = iptr->isn_lnum;
-    if (dest_type == VAR_ANY)
+
+    // Make sure an object has been initialized
+    if (dest_type == VAR_OBJECT && tv_dest->vval.v_object == NULL)
+    {
+	emsg(_(e_using_null_object));
+	status = FAIL;
+    }
+    else if (dest_type == VAR_ANY)
     {
 	dest_type = tv_dest->v_type;
 	if (dest_type == VAR_DICT)
@@ -2299,14 +2306,25 @@ execute_storeindex(isn_T *iptr, ectx_T *
 	}
 	else if (dest_type == VAR_CLASS || dest_type == VAR_OBJECT)
 	{
-	    object_T	    *obj = tv_dest->vval.v_object;
-	    typval_T	    *otv = (typval_T *)(obj + 1);
-
-	    class_T	    *itf = iptr->isn_arg.storeindex.si_class;
-	    if (itf != NULL)
-		// convert interface member index to class member index
-		lidx = object_index_from_itf_index(itf, FALSE,
-							 lidx, obj->obj_class);
+	    typval_T	    *otv;
+
+	    if (dest_type == VAR_OBJECT)
+	    {
+		object_T	*obj = tv_dest->vval.v_object;
+
+		otv = (typval_T *)(obj + 1);
+		class_T	    *itf = iptr->isn_arg.storeindex.si_class;
+		if (itf != NULL)
+		    // convert interface member index to class member index
+		    lidx = object_index_from_itf_index(itf, FALSE, lidx,
+						       obj->obj_class, FALSE);
+	    }
+	    else
+	    {
+		// VAR_CLASS
+		class_T	*class = tv_dest->vval.v_class;
+		otv = class->class_members_tv;
+	    }
 
 	    clear_tv(&otv[lidx]);
 	    otv[lidx] = *tv;
@@ -3818,6 +3836,7 @@ exec_instructions(ectx_T *ectx)
 		    char_u	*tofree = NULL;
 
 		    --ectx->ec_stack.ga_len;
+		    SOURCING_LNUM = iptr->isn_lnum;
 		    tv = STACK_TV_BOT(0);
 		    if (tv->v_type == VAR_STRING)
 		    {
@@ -3827,7 +3846,6 @@ exec_instructions(ectx_T *ectx)
 		    }
 		    else if (iptr->isn_type == ISN_STOREFUNCOPT)
 		    {
-			SOURCING_LNUM = iptr->isn_lnum;
 			// If the option can be set to a function reference or
 			// a lambda and the passed value is a function
 			// reference, then convert it to the name (string) of
@@ -4243,7 +4261,8 @@ exec_instructions(ectx_T *ectx)
 
 		    // convert the interface index to the object index
 		    int idx = object_index_from_itf_index(mfunc->cmf_itf,
-						    TRUE, mfunc->cmf_idx, cl);
+						    TRUE, mfunc->cmf_idx, cl,
+						    FALSE);
 
 		    if (call_ufunc(cl->class_obj_methods[idx], NULL,
 				mfunc->cmf_argcount, ectx, NULL, NULL) == FAIL)
@@ -4392,7 +4411,8 @@ exec_instructions(ectx_T *ectx)
 
 			// convert the interface index to the object index
 			int idx = object_index_from_itf_index(extra->fre_class,
-					      TRUE, extra->fre_method_idx, cl);
+					      TRUE, extra->fre_method_idx, cl,
+					      FALSE);
 			ufunc = cl->class_obj_methods[idx];
 		    }
 		    else if (extra == NULL || extra->fre_func_name == NULL)
@@ -5371,20 +5391,25 @@ exec_instructions(ectx_T *ectx)
 			goto on_error;
 		    }
 
+		    int is_static = iptr->isn_arg.classmember.cm_static;
 		    int idx;
 		    if (iptr->isn_type == ISN_GET_OBJ_MEMBER)
-			idx = iptr->isn_arg.number;
+			idx = iptr->isn_arg.classmember.cm_idx;
 		    else
 		    {
 			idx = iptr->isn_arg.classmember.cm_idx;
 			// convert the interface index to the object index
 			idx = object_index_from_itf_index(
-					    iptr->isn_arg.classmember.cm_class,
-					    FALSE, idx, obj->obj_class);
+					iptr->isn_arg.classmember.cm_class,
+					FALSE, idx, obj->obj_class, is_static);
 		    }
 
-		    // the members are located right after the object struct
-		    typval_T *mtv = ((typval_T *)(obj + 1)) + idx;
+		    // The members are located right after the object struct.
+		    typval_T *mtv;
+		    if (is_static)
+			mtv = &obj->obj_class->class_members_tv[idx];
+		    else
+			mtv = ((typval_T *)(obj + 1)) + idx;
 		    copy_tv(mtv, tv);
 
 		    // Unreference the object after getting the member, it may
@@ -7131,12 +7156,17 @@ list_instructions(char *pfx, isn_T *inst
 	    case ISN_MEMBER: smsg("%s%4d MEMBER", pfx, current); break;
 	    case ISN_STRINGMEMBER: smsg("%s%4d MEMBER %s", pfx, current,
 						  iptr->isn_arg.string); break;
-	    case ISN_GET_OBJ_MEMBER: smsg("%s%4d OBJ_MEMBER %d", pfx, current,
-					     (int)iptr->isn_arg.number); break;
-	    case ISN_GET_ITF_MEMBER: smsg("%s%4d ITF_MEMBER %d on %s",
+	    case ISN_GET_OBJ_MEMBER: smsg("%s%4d OBJ_MEMBER %d%s", pfx, current,
+			     (int)iptr->isn_arg.classmember.cm_idx,
+			     iptr->isn_arg.classmember.cm_static
+							? " [STATIC]" : "");
+				     break;
+	    case ISN_GET_ITF_MEMBER: smsg("%s%4d ITF_MEMBER %d on %s%s",
 			     pfx, current,
 			     (int)iptr->isn_arg.classmember.cm_idx,
-			     iptr->isn_arg.classmember.cm_class->class_name);
+			     iptr->isn_arg.classmember.cm_class->class_name,
+			     iptr->isn_arg.classmember.cm_static
+							? " [STATIC]" : "");
 				     break;
 	    case ISN_STORE_THIS: smsg("%s%4d STORE_THIS %d", pfx, current,
 					     (int)iptr->isn_arg.number); break;
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -252,6 +252,30 @@ compile_member(int is_slice, int *keepin
 }
 
 /*
+ * Returns TRUE if the current function is inside the class "cl" or one of the
+ * parent classes.
+ */
+    static int
+inside_class_hierarchy(cctx_T *cctx_arg, class_T *cl)
+{
+    for (cctx_T *cctx = cctx_arg; cctx != NULL; cctx = cctx->ctx_outer)
+    {
+	if (cctx->ctx_ufunc != NULL && cctx->ctx_ufunc->uf_class != NULL)
+	{
+	    class_T	*clp = cctx->ctx_ufunc->uf_class;
+	    while (clp != NULL)
+	    {
+		if (clp == cl)
+		    return TRUE;
+		clp = clp->class_extends;
+	    }
+	}
+    }
+
+    return FALSE;
+}
+
+/*
  * Compile ".member" coming after an object or class.
  */
     static int
@@ -348,6 +372,12 @@ compile_class_object_index(cctx_T *cctx,
 	    return FAIL;
 	}
 
+	if (*ufunc->uf_name == '_' && !inside_class_hierarchy(cctx, cl))
+	{
+	    semsg(_(e_cannot_access_private_method_str), name);
+	    return FAIL;
+	}
+
 	// Compile the arguments and call the class function or object method.
 	// The object method will know that the object is on the stack, just
 	// before the arguments.
@@ -377,8 +407,27 @@ compile_class_object_index(cctx_T *cctx,
 
 		*arg = name_end;
 		if (cl->class_flags & (CLASS_INTERFACE | CLASS_EXTENDED))
-		    return generate_GET_ITF_MEMBER(cctx, cl, i, m->ocm_type);
-		return generate_GET_OBJ_MEMBER(cctx, i, m->ocm_type);
+		    return generate_GET_ITF_MEMBER(cctx, cl, i, m->ocm_type,
+									FALSE);
+		return generate_GET_OBJ_MEMBER(cctx, i, m->ocm_type, FALSE);
+	    }
+	}
+
+	for (int i = 0; i < cl->class_class_member_count; ++i)
+	{
+	    ocmember_T *m = &cl->class_class_members[i];
+	    if (STRNCMP(name, m->ocm_name, len) == 0 && m->ocm_name[len] == NUL)
+	    {
+		if (*name == '_' && !inside_class(cctx, cl))
+		{
+		    semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+		    return FAIL;
+		}
+		*arg = name_end;
+		if (cl->class_flags & (CLASS_INTERFACE | CLASS_EXTENDED))
+		    return generate_GET_ITF_MEMBER(cctx, cl, i, m->ocm_type,
+									TRUE);
+		return generate_GET_OBJ_MEMBER(cctx, i, m->ocm_type, TRUE);
 	    }
 	}
 
@@ -408,7 +457,21 @@ compile_class_object_index(cctx_T *cctx,
 	{
 	    ocmember_T *m = &cl->class_class_members[idx];
 	    if (STRNCMP(name, m->ocm_name, len) == 0 && m->ocm_name[len] == NUL)
+	    {
+		// Note: type->tt_type = VAR_CLASS
+		if ((cl->class_flags & CLASS_INTERFACE) != 0)
+		{
+		    semsg(_(e_interface_static_direct_access_str),
+						cl->class_name, m->ocm_name);
+		    return FAIL;
+		}
+		if (*name == '_' && !inside_class(cctx, cl))
+		{
+		    semsg(_(e_cannot_access_private_member_str), m->ocm_name);
+		    return FAIL;
+		}
 		break;
+	    }
 	}
 	if (idx < cl->class_class_member_count)
 	{
--- a/src/vim9instr.c
+++ b/src/vim9instr.c
@@ -136,7 +136,7 @@ generate_CONSTRUCT(cctx_T *cctx, class_T
  * index.
  */
     int
-generate_GET_OBJ_MEMBER(cctx_T *cctx, int idx, type_T *type)
+generate_GET_OBJ_MEMBER(cctx_T *cctx, int idx, type_T *type, int is_static)
 {
     RETURN_OK_IF_SKIP(cctx);
 
@@ -145,7 +145,9 @@ generate_GET_OBJ_MEMBER(cctx_T *cctx, in
     if (isn == NULL)
 	return FAIL;
 
-    isn->isn_arg.number = idx;
+    isn->isn_arg.classmember.cm_class = NULL;
+    isn->isn_arg.classmember.cm_idx = idx;
+    isn->isn_arg.classmember.cm_static = is_static;
     return push_type_stack2(cctx, type, &t_any);
 }
 
@@ -154,7 +156,8 @@ generate_GET_OBJ_MEMBER(cctx_T *cctx, in
  * by index.
  */
     int
-generate_GET_ITF_MEMBER(cctx_T *cctx, class_T *itf, int idx, type_T *type)
+generate_GET_ITF_MEMBER(cctx_T *cctx, class_T *itf, int idx, type_T *type,
+								int is_static)
 {
     RETURN_OK_IF_SKIP(cctx);
 
@@ -166,6 +169,7 @@ generate_GET_ITF_MEMBER(cctx_T *cctx, cl
     isn->isn_arg.classmember.cm_class = itf;
     ++itf->class_refcount;
     isn->isn_arg.classmember.cm_idx = idx;
+    isn->isn_arg.classmember.cm_static = is_static;
     return push_type_stack2(cctx, type, &t_any);
 }
 
@@ -662,11 +666,11 @@ generate_SETTYPE(
 /*
  * Generate an ISN_PUSHOBJ instruction.  Object is always NULL.
  */
-    static int
+    int
 generate_PUSHOBJ(cctx_T *cctx)
 {
     RETURN_OK_IF_SKIP(cctx);
-    if (generate_instr_type(cctx, ISN_PUSHOBJ, &t_any) == NULL)
+    if (generate_instr_type(cctx, ISN_PUSHOBJ, &t_object) == NULL)
 	return FAIL;
     return OK;
 }
@@ -1902,6 +1906,10 @@ generate_CALL(
     // drop the argument types
     cctx->ctx_type_stack.ga_len -= argcount;
 
+    // For an object or class method call, drop the object/class type
+    if (ufunc->uf_class != NULL)
+	cctx->ctx_type_stack.ga_len--;
+
     // add return type
     return push_type_stack(cctx, ufunc->uf_ret_type);
 }
--- a/src/vim9type.c
+++ b/src/vim9type.c
@@ -907,21 +907,10 @@ check_type_maybe(
 		return MAYBE;	// use runtime type check
 	    if (actual->tt_type != VAR_OBJECT)
 		return FAIL;	// don't use tt_class
+	    if (actual->tt_class == NULL)
+		return OK;	// A null object matches
 
-	    // check the class, base class or an implemented interface matches
-	    class_T *cl;
-	    for (cl = actual->tt_class; cl != NULL; cl = cl->class_extends)
-	    {
-		if (expected->tt_class == cl)
-		    break;
-		int i;
-		for (i = cl->class_interface_count - 1; i >= 0; --i)
-		    if (expected->tt_class == cl->class_interfaces_cl[i])
-			break;
-		if (i >= 0)
-		    break;
-	    }
-	    if (cl == NULL)
+	    if (class_instance_of(actual->tt_class, expected->tt_class) == FALSE)
 		ret = FAIL;
 	}
 
--- a/src/viminfo.c
+++ b/src/viminfo.c
@@ -1804,11 +1804,11 @@ handle_viminfo_register(garray_T *values
 	    y_ptr->y_array[i] = vp[i + 6].bv_string;
 	    vp[i + 6].bv_string = NULL;
 	}
-        else if (vp[i + 6].bv_type != BVAL_STRING)
-        {
-            free(y_ptr->y_array);
-            y_ptr->y_array = NULL;
-        }
+	else if (vp[i + 6].bv_type != BVAL_STRING)
+	{
+	    free(y_ptr->y_array);
+	    y_ptr->y_array = NULL;
+	}
 	else
 	    y_ptr->y_array[i] = vim_strsave(vp[i + 6].bv_string);
     }
--- a/src/window.c
+++ b/src/window.c
@@ -1733,6 +1733,11 @@ win_exchange(long Prenum)
 	beep_flush();
 	return;
     }
+    if (text_or_buf_locked())
+    {
+	beep_flush();
+	return;
+    }
 
 #ifdef FEAT_GUI
     need_mouse_correct = TRUE;
@@ -4158,6 +4163,13 @@ close_others(
 	if (wp == curwin)		// don't close current window
 	    continue;
 
+	// autoccommands messed this one up
+	if (!buf_valid(wp->w_buffer) && win_valid(wp))
+	{
+	    wp->w_buffer = NULL;
+	    win_close(wp, 0);
+	    continue;
+	}
 	// Check if it's allowed to abandon this window
 	r = can_abandon(wp->w_buffer, forceit);
 	if (!win_valid(wp))		// autocommands messed wp up
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -56,6 +56,7 @@
  * 04.02.2020  Add -d for decimal offsets by Aapo Rantalainen
  * 14.01.2022  Disable extra newlines with -c0 -p by Erik Auerswald.
  * 20.06.2022  Permit setting the variable names used by -i by David Gow
+ * 31.08.2023  -R never/auto/always prints colored output
  *
  * (c) 1990-1998 by Juergen Weigert (jnweiger@gmail.com)
  *
@@ -86,10 +87,10 @@
 #endif
 #if defined(WIN32) || defined(CYGWIN)
 # include <io.h>	/* for setmode() */
-#else
-# ifdef UNIX
-#  include <unistd.h>
-# endif
+# include <windows.h>
+#endif
+#ifdef UNIX
+# include <unistd.h>
 #endif
 #include <stdlib.h>
 #include <string.h>	/* for strncmp() */
@@ -134,7 +135,7 @@ extern void perror __P((char *));
 # endif
 #endif
 
-char version[] = "xxd 2022-01-14 by Juergen Weigert et al.";
+char version[] = "xxd 2023-09-04 by Juergen Weigert et al.";
 #ifdef WIN32
 char osver[] = " (Win32)";
 #else
@@ -206,6 +207,24 @@ char hexxa[] = "0123456789abcdef01234567
 
 #define CONDITIONAL_CAPITALIZE(c) (capitalize ? toupper((int)c) : c)
 
+#define COLOR_PROLOGUE \
+l[c++] = '\033'; \
+l[c++] = '['; \
+l[c++] = '1'; \
+l[c++] = ';'; \
+l[c++] = '3';
+
+#define COLOR_EPILOGUE \
+l[c++] = '\033'; \
+l[c++] = '['; \
+l[c++] = '0'; \
+l[c++] = 'm';
+#define COLOR_RED '1'
+#define COLOR_GREEN '2'
+#define COLOR_YELLOW '3'
+#define COLOR_BLUE '4'
+#define COLOR_WHITE '7'
+
 static char *pname;
 
   static void
@@ -237,6 +256,7 @@ exit_with_usage(void)
 	  "", "");
 #endif
   fprintf(stderr, "    -u          use upper case hex letters.\n");
+  fprintf(stderr, "    -R when     colorize the output; <when> can be 'always', 'auto' or 'never'. Default: 'auto'.\n"),
   fprintf(stderr, "    -v          show version: \"%s%s\".\n", version, osver);
   exit(1);
 }
@@ -482,11 +502,77 @@ static unsigned char etoa64[] =
     0070,0071,0372,0373,0374,0375,0376,0377
 };
 
+  static void
+begin_coloring_char (char *l, int *c, int e, int ebcdic)
+{
+  if (ebcdic)
+    {
+      if ((e >= 75 && e <= 80) || (e >= 90 && e <= 97) ||
+          (e >= 107 && e <= 111) || (e >= 121 && e <= 127) ||
+          (e >= 129 && e <= 137) || (e >= 145 && e <= 154) ||
+          (e >= 162 && e <= 169) || (e >= 192 && e <= 201) ||
+          (e >= 208 && e <= 217) || (e >= 226 && e <= 233) ||
+          (e >= 240 && e <= 249) || (e == 189) || (e == 64) ||
+          (e == 173) || (e == 224) )
+        l[(*c)++] = COLOR_GREEN;
+
+      else if (e == 37 || e == 13 || e == 5)
+        l[(*c)++] = COLOR_YELLOW;
+      else if (e == 0)
+        l[(*c)++] = COLOR_WHITE;
+      else if (e == 255)
+        l[(*c)++] = COLOR_BLUE;
+      else
+        l[(*c)++] = COLOR_RED;
+    }
+  else  /* ASCII */
+    {
+      #ifdef __MVS__
+      if (e >= 64)
+        l[(*c)++] = COLOR_GREEN;
+      #else
+      if (e > 31 && e < 127)
+        l[(*c)++] = COLOR_GREEN;
+      #endif
+
+      else if (e == 9 || e == 10 || e == 13)
+        l[(*c)++] = COLOR_YELLOW;
+      else if (e == 0)
+        l[(*c)++] = COLOR_WHITE;
+      else if (e == 255)
+        l[(*c)++] = COLOR_BLUE;
+      else
+        l[(*c)++] = COLOR_RED;
+    }
+  l[(*c)++] = 'm';
+}
+
+  static int
+enable_color(void)
+{
+#ifdef WIN32
+  DWORD   mode;
+  HANDLE  out;
+
+  if (!isatty(1))
+    return 0;
+
+  out = GetStdHandle(STD_OUTPUT_HANDLE);
+  GetConsoleMode(out, &mode);
+  mode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
+  return (int)SetConsoleMode(out, mode);
+#elif defined(UNIX)
+  return isatty(STDOUT_FILENO);
+#else
+  return 0;
+#endif
+}
+
   int
 main(int argc, char *argv[])
 {
   FILE *fp, *fpo;
-  int c, e, p = 0, relseek = 1, negseek = 0, revert = 0;
+  int c, e, p = 0, relseek = 1, negseek = 0, revert = 0, i, x;
   int cols = 0, colsgiven = 0, nonzero = 0, autoskip = 0, hextype = HEX_NORMAL;
   int capitalize = 0, decimal_offset = 0;
   int ebcdic = 0;
@@ -498,6 +584,12 @@ main(int argc, char *argv[])
   char *pp;
   char *varname = NULL;
   int addrlen = 9;
+  int color = 0;
+  char *no_color;
+
+  no_color = getenv("NO_COLOR");
+  if (no_color == NULL || no_color[0] == '\0')
+    color = enable_color();
 
 #ifdef AMIGA
   /* This program doesn't work when started from the Workbench */
@@ -648,6 +740,29 @@ main(int argc, char *argv[])
               argc--;
             }
         }
+      else if (!STRNCMP(pp, "-R", 2))
+        {
+	  char *pw = pp + 2;
+	  if (!pw[0])
+	    {
+	      pw = argv[2];
+	      argv++;
+	      argc--;
+	    }
+	  if (!pw)
+	    exit_with_usage();
+	  if (!STRNCMP(pw, "always", 6))
+	    {
+	      (void)enable_color();
+	      color = 1;
+	    }
+	  else if (!STRNCMP(pw, "never", 5))
+	    color = 0;
+	  else if (!STRNCMP(pw, "auto", 4))
+	    color = enable_color();
+	  else
+	    exit_with_usage();
+        }
       else if (!strcmp(pp, "--"))	/* end of options */
 	{
 	  argv++;
@@ -825,14 +940,16 @@ main(int argc, char *argv[])
   /* hextype: HEX_NORMAL or HEX_BITS or HEX_LITTLEENDIAN */
 
   if (hextype != HEX_BITS)
-    grplen = octspergrp + octspergrp + 1;	/* chars per octet group */
+    {
+      grplen = octspergrp + octspergrp + 1;	/* chars per octet group */
+      if (color)
+        grplen += 11 * octspergrp;  /* color-code needs 11 extra characters */
+    }
   else	/* hextype == HEX_BITS */
     grplen = 8 * octspergrp + 1;
 
   while ((length < 0 || n < length) && (e = getc_or_die(fp)) != EOF)
     {
-      int x;
-
       if (p == 0)
 	{
 	  addrlen = sprintf(l, decimal_offset ? "%08ld:" : "%08lx:",
@@ -844,47 +961,135 @@ main(int argc, char *argv[])
       c = addrlen + 1 + (grplen * x) / octspergrp;
       if (hextype == HEX_NORMAL || hextype == HEX_LITTLEENDIAN)
 	{
-	  l[c]   = hexx[(e >> 4) & 0xf];
-	  l[++c] = hexx[e & 0xf];
+          if (color)
+            {
+	      COLOR_PROLOGUE
+	      begin_coloring_char(l,&c,e,ebcdic);
+	      l[c++] = hexx[(e >> 4) & 0xf];
+	      l[c++] = hexx[e & 0xf];
+	      COLOR_EPILOGUE
+	    }
+          else /*No colors*/
+	    {
+	      l[c]   = hexx[(e >> 4) & 0xf];
+	      l[++c] = hexx[e & 0xf];
+	    }
 	}
       else /* hextype == HEX_BITS */
 	{
-	  int i;
 	  for (i = 7; i >= 0; i--)
 	    l[c++] = (e & (1 << i)) ? '1' : '0';
 	}
       if (e)
 	nonzero++;
-      if (ebcdic)
-	e = (e < 64) ? '.' : etoa64[e-64];
       /* When changing this update definition of LLEN above. */
       if (hextype == HEX_LITTLEENDIAN)
 	/* last group will be fully used, round up */
 	c = grplen * ((cols + octspergrp - 1) / octspergrp);
       else
 	c = (grplen * cols - 1) / octspergrp;
-      c += addrlen + 3 + p;
-      l[c++] =
+
+      if (color)
+        {
+          if (hextype == HEX_BITS)
+            c += addrlen + 3 + p*12;
+          else
+            c = addrlen + 3 + (grplen * cols - 1)/octspergrp + p*12;
+
+          if (hextype == HEX_LITTLEENDIAN)
+            c += 1;
+
+          COLOR_PROLOGUE
+          begin_coloring_char(l,&c,e,ebcdic);
 #ifdef __MVS__
-	  (e >= 64)
+          if (e >= 64)
+            l[c++] = e;
+          else
+            l[c++] = '.';
 #else
-	  (e > 31 && e < 127)
+          if (ebcdic)
+            e = (e < 64) ? '.' : etoa64[e-64];
+          l[c++] = (e > 31 && e < 127) ? e : '.';
 #endif
-	  ? e : '.';
-      n++;
-      if (++p == cols)
-	{
-	  l[c] = '\n';
-	  l[++c] = '\0';
-	  xxdline(fpo, l, autoskip ? nonzero : 1);
-	  nonzero = 0;
-	  p = 0;
-	}
+          COLOR_EPILOGUE
+          n++;
+          if (++p == cols)
+            {
+              l[c++] = '\n';
+              l[c++] = '\0';
+              xxdline(fpo, l, autoskip ? nonzero : 1);
+              nonzero = 0;
+              p = 0;
+            }
+        }
+      else /*no colors*/
+        {
+          if (ebcdic)
+            e = (e < 64) ? '.' : etoa64[e-64];
+
+          c += addrlen + 3 + p;
+          l[c++] =
+#ifdef __MVS__
+              (e >= 64)
+#else
+              (e > 31 && e < 127)
+#endif
+              ? e : '.';
+          n++;
+          if (++p == cols)
+            {
+              l[c++] = '\n';
+              l[c] = '\0';
+              xxdline(fpo, l, autoskip ? nonzero : 1);
+              nonzero = 0;
+              p = 0;
+            }
+        }
     }
   if (p)
     {
-      l[c] = '\n';
-      l[++c] = '\0';
+      l[c++] = '\n';
+      l[c] = '\0';
+      if (color)
+        {
+          c++;
+
+          x = p;
+          if (hextype == HEX_LITTLEENDIAN)
+            {
+              int fill = octspergrp - (p % octspergrp);
+              if (fill == octspergrp) fill = 0;
+
+              c = addrlen + 1 + (grplen * (x - (octspergrp-fill))) / octspergrp;
+
+              for (i = 0; i < fill;i++)
+                {
+                  COLOR_PROLOGUE
+                  l[c++] = COLOR_RED;
+                  l[c++] = 'm';
+                  l[c++] = ' '; /* empty space */
+                  COLOR_EPILOGUE
+                  x++;
+                  p++;
+                }
+            }
+
+          if (hextype != HEX_BITS)
+            {
+              c = addrlen + 1 + (grplen * x) / octspergrp;
+              c += cols - p;
+              c += (cols - p) / octspergrp;
+
+              for (i = cols - p; i > 0;i--)
+                {
+                  COLOR_PROLOGUE
+                  l[c++] = COLOR_RED;
+                  l[c++] = 'm';
+                  l[c++] = ' '; /* empty space */
+                  COLOR_EPILOGUE
+                }
+            }
+        }
       xxdline(fpo, l, 1);
     }
   else if (autoskip)