Bug#883422: debian.vim: maparg() invalid argument

Sergey Vlasov sergey at vlasov.me
Sun Dec 3 20:59:24 UTC 2017

Package: vim-common
Version: 2:8.0.0197-4+deb9u1
Severity: important

After upgrade to Stretch my <S-Insert> mapping in .vimrc stopped working.
In debian.vim there is a check for existing <S-Insert> mapping using maparg()
function. The second argument to this function is invalid. According to vim
documentation, {mode} argument can be either a single character string or an
empty string. Instead, a string with several characters is used, but the check
happens always against the first character only. Finally, as a result,
some existing mappings may become overridden.

Here is a proposed fix:

--- /usr/share/vim/vim80/debian.vim-orig    2017-12-03 22:29:53.939533583 +0200
+++ /usr/share/vim/vim80/debian.vim    2017-12-03 22:34:17.520734735 +0200
@@ -26,12 +26,21 @@ if &term =~ "xterm-debian" || &term =~ "
   set t_Sb= [4%dm

+function! <SID>MapExists(name, modes)
+  for mode in split(a:modes, '\zs')
+    if !empty(maparg(a:name, mode))
+      return 1
+    endif
+  endfor
+  return 0
 " Some Debian-specific things
 if has("autocmd")
   if has('gui')
     " Make shift-insert work like in Xterm
-    autocmd GUIEnter * if empty(maparg("<S-Insert>", "nvso")) |
execute "map <S-Insert> <MiddleMouse>" | endif
-    autocmd GUIEnter * if empty(maparg("<S-Insert>", "ic")) | execute
"map! <S-Insert> <MiddleMouse>" | endif
+    autocmd GUIEnter * if !<SID>MapExists("<S-Insert>", "nvso") |
execute "map <S-Insert> <MiddleMouse>" | endif
+    autocmd GUIEnter * if !<SID>MapExists("<S-Insert>", "ic") |
execute "map! <S-Insert> <MiddleMouse>" | endif

-- System Information:
Debian Release: 9.1
  APT prefers stable
  APT policy: (1000, 'stable'), (900, 'stable'), (750, 'testing'),
(500, 'stable-updates'), (500, 'unstable'), (500, 'oldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.9.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8),
LANGUAGE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages vim-common depends on:
ii  xxd  2:8.0.0197-4+deb9u1

Versions of packages vim-common recommends:
ii  vim-gtk [vim]  2:8.0.0197-4+deb9u1
ii  vim-tiny       2:8.0.0197-4+deb9u1

vim-common suggests no packages.

-- no debconf information

More information about the pkg-vim-maintainers mailing list