Mercurial > vim
annotate runtime/plugin/manpager.vim @ 9037:d07035f84f0d v7.4.1804
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 30 14:15:54 2016 +0200
patch 7.4.1804
Problem: Can't use Vim as MANPAGER.
Solution: Add manpager.vim. (Enno Nagel, closes https://github.com/vim/vim/issues/491)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 30 Apr 2016 14:30:05 +0200 |
parents | |
children | 9305a1251e51 |
rev | line source |
---|---|
9037
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
1 " Vim plugin for using Vim as manpager. |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
2 " Maintainer: Enno Nagel <ennonagel+vim@gmail.com> |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
3 " Last Change: 2016 Apr 30 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
4 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
5 " $MAN_PN is supposed to be set by MANPAGER, see ":help manpager.vim". |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
6 if empty($MAN_PN) |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
7 finish |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
8 endif |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
9 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
10 command! -nargs=0 MANPAGER call s:MANPAGER() | delcommand MANPAGER |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
11 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
12 function! s:MANPAGER() |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
13 let page_pattern = '\v\w+%([-_.]\w+)*' |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
14 let sec_pattern = '\v\w+%(\+\w+)*' |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
15 let pagesec_pattern = '\v(' . page_pattern . ')\((' . sec_pattern . ')\)' |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
16 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
17 if $MAN_PN is '1' |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
18 let manpage = matchstr( getline(1), '^' . pagesec_pattern ) |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
19 else |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
20 let manpage = expand('$MAN_PN') |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
21 endif |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
22 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
23 let page_sec = matchlist( manpage, '^' . pagesec_pattern . '$') |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
24 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
25 bwipe! |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
26 |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
27 setlocal filetype=man |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
28 exe 'Man' page_sec[3] page_sec[1] |
d07035f84f0d
commit https://github.com/vim/vim/commit/b20545f2a718d4f19c3f609fd11c0ca4eff450ce
Christian Brabandt <cb@256bit.org>
parents:
diff
changeset
|
29 endfunction |