]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 7.4.1804 v7.4.1804
authorBram Moolenaar <Bram@vim.org>
Sat, 30 Apr 2016 12:15:54 +0000 (14:15 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 30 Apr 2016 12:15:54 +0000 (14:15 +0200)
Problem:    Can't use Vim as MANPAGER.
Solution:   Add manpager.vim. (Enno Nagel, closes #491)

runtime/plugin/manpager.vim [new file with mode: 0644]
src/version.c

diff --git a/runtime/plugin/manpager.vim b/runtime/plugin/manpager.vim
new file mode 100644 (file)
index 0000000..43b438c
--- /dev/null
@@ -0,0 +1,29 @@
+" Vim plugin for using Vim as manpager.
+" Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
+" Last Change: 2016 Apr 30
+
+" $MAN_PN is supposed to be set by MANPAGER, see ":help manpager.vim".
+if empty($MAN_PN)
+  finish
+endif
+
+command! -nargs=0 MANPAGER call s:MANPAGER() | delcommand MANPAGER
+
+function! s:MANPAGER()
+  let page_pattern = '\v\w+%([-_.]\w+)*'
+  let sec_pattern = '\v\w+%(\+\w+)*'
+  let pagesec_pattern = '\v(' . page_pattern . ')\((' . sec_pattern . ')\)'
+
+  if $MAN_PN is '1'
+    let manpage = matchstr( getline(1), '^' . pagesec_pattern )
+  else
+    let manpage = expand('$MAN_PN')
+  endif
+
+  let page_sec = matchlist( manpage, '^' . pagesec_pattern  . '$')
+
+  bwipe!
+
+  setlocal filetype=man
+  exe 'Man' page_sec[3] page_sec[1]
+endfunction
index ff275cf0b3688a6db21543ff7477fa1468200601..e891af900e88c8979fc0436b00e72639b7934726 100644 (file)
@@ -753,6 +753,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1804,
 /**/
     1803,
 /**/