blob: 9ae2e7357f796e4996fc6cb3e2ea66c69b431504 [file] [log] [blame]
Bram Moolenaarb20545f2016-04-30 14:15:54 +02001" Vim plugin for using Vim as manpager.
2" Maintainer: Enno Nagel <ennonagel+vim@gmail.com>
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +01003" Last Change: 2017 November 07
Bram Moolenaarb20545f2016-04-30 14:15:54 +02004
5" $MAN_PN is supposed to be set by MANPAGER, see ":help manpager.vim".
6if empty($MAN_PN)
7 finish
8endif
9
10command! -nargs=0 MANPAGER call s:MANPAGER() | delcommand MANPAGER
11
12function! s:MANPAGER()
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +010013 let page_pattern = '\v\w[-_.:0-9A-Za-z]*'
Bram Moolenaarb20545f2016-04-30 14:15:54 +020014 let sec_pattern = '\v\w+%(\+\w+)*'
15 let pagesec_pattern = '\v(' . page_pattern . ')\((' . sec_pattern . ')\)'
16
17 if $MAN_PN is '1'
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +010018 let manpage = tolower(matchstr( getline(nextnonblank(1)), '^' . pagesec_pattern ))
Bram Moolenaarb20545f2016-04-30 14:15:54 +020019 else
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +010020 let manpage = expand($MAN_PN)
Bram Moolenaarb20545f2016-04-30 14:15:54 +020021 endif
22
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +010023 let page_sec = matchlist(manpage, '^' . pagesec_pattern . '$')
Bram Moolenaarb20545f2016-04-30 14:15:54 +020024
25 bwipe!
26
27 setlocal filetype=man
Bram Moolenaar06d2d382016-05-20 17:24:11 +020028 exe 'Man' page_sec[2] page_sec[1]
Bram Moolenaarb20545f2016-04-30 14:15:54 +020029endfunction