Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim filetype plugin file |
| 2 | " Language: man |
Bram Moolenaar | 7ceefb3 | 2020-05-01 16:07:38 +0200 | [diff] [blame] | 3 | " Maintainer: Jason Franklin <vim@justemail.net> |
Bram Moolenaar | 2cfb4a2 | 2020-05-07 18:56:00 +0200 | [diff] [blame] | 4 | " Maintainer: SungHyun Nam <goweol@gmail.com> |
Bram Moolenaar | d799daa | 2022-06-20 11:17:32 +0100 | [diff] [blame] | 5 | " Autoload Split: Bram Moolenaar |
Christian Brabandt | 6dcd7f1 | 2024-06-06 19:06:38 +0200 | [diff] [blame] | 6 | " Last Change: 2024 Jun 06 (disabled the q mapping, #8210) |
Ivan Shapovalov | 84ca138 | 2024-07-06 16:56:02 +0200 | [diff] [blame] | 7 | " 2024 Jul 06 (use nnoremap, #15130) |
John M Devin | 5d1c551 | 2024-08-23 18:34:41 +0200 | [diff] [blame] | 8 | " 2024 Aug 23 (improve the <Plug>ManBS mapping, #15547, #15556) |
David Mandelberg | c262382 | 2025-03-10 21:26:50 +0100 | [diff] [blame] | 9 | " 2025 Mar 09 (improve :Man completion for man-db, #16843) |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 10 | |
| 11 | " To make the ":Man" command available before editing a manual page, source |
| 12 | " this script from your startup vimrc file. |
| 13 | |
Bram Moolenaar | d799daa | 2022-06-20 11:17:32 +0100 | [diff] [blame] | 14 | " If 'filetype' isn't "man", we must have been called to define ":Man" and not |
| 15 | " to do the filetype plugin stuff. |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 16 | if &filetype == "man" |
| 17 | |
| 18 | " Only do this when not done yet for this buffer |
| 19 | if exists("b:did_ftplugin") |
| 20 | finish |
| 21 | endif |
| 22 | let b:did_ftplugin = 1 |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 23 | endif |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 24 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 25 | let s:cpo_save = &cpo |
| 26 | set cpo-=C |
| 27 | |
David Mandelberg | c262382 | 2025-03-10 21:26:50 +0100 | [diff] [blame] | 28 | if !exists('g:ft_man_implementation') |
| 29 | if executable('mandb') > 0 |
| 30 | let g:ft_man_implementation = 'man-db' |
| 31 | else |
| 32 | let g:ft_man_implementation = '' |
| 33 | endif |
| 34 | endif |
| 35 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 36 | if &filetype == "man" |
Bram Moolenaar | f269eab | 2022-10-03 18:04:35 +0100 | [diff] [blame] | 37 | " Allow hyphen, plus, colon, dot, and commercial at in manual page name. |
Bram Moolenaar | 71badf9 | 2023-04-22 22:40:14 +0100 | [diff] [blame] | 38 | " Parentheses are not here but in dist#man#PreGetPage() |
| 39 | setlocal iskeyword=48-57,_,a-z,A-Z,-,+,:,.,@-@ |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 40 | let b:undo_ftplugin = "setlocal iskeyword<" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 41 | |
| 42 | " Add mappings, unless the user didn't want this. |
| 43 | if !exists("no_plugin_maps") && !exists("no_man_maps") |
| 44 | if !hasmapto('<Plug>ManBS') |
| 45 | nmap <buffer> <LocalLeader>h <Plug>ManBS |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 46 | let b:undo_ftplugin = b:undo_ftplugin |
| 47 | \ . '|silent! nunmap <buffer> <LocalLeader>h' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 48 | endif |
John M Devin | 5d1c551 | 2024-08-23 18:34:41 +0200 | [diff] [blame] | 49 | |
| 50 | nnoremap <buffer> <silent> <Plug>ManBS :setl ma<Bar>%s/.\b//g |
| 51 | \ <Bar>setl noma<CR>`' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 52 | |
Bram Moolenaar | d799daa | 2022-06-20 11:17:32 +0100 | [diff] [blame] | 53 | nnoremap <buffer> <silent> <c-]> :call dist#man#PreGetPage(v:count)<CR> |
| 54 | nnoremap <buffer> <silent> <c-t> :call dist#man#PopPage()<CR> |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 55 | |
| 56 | " Add undo commands for the maps |
| 57 | let b:undo_ftplugin = b:undo_ftplugin |
| 58 | \ . '|silent! nunmap <buffer> <Plug>ManBS' |
| 59 | \ . '|silent! nunmap <buffer> <c-]>' |
| 60 | \ . '|silent! nunmap <buffer> <c-t>' |
Bram Moolenaar | d042dc8 | 2015-11-24 19:18:36 +0100 | [diff] [blame] | 61 | endif |
| 62 | |
| 63 | if exists('g:ft_man_folding_enable') && (g:ft_man_folding_enable == 1) |
| 64 | setlocal foldmethod=indent foldnestmax=1 foldenable |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 65 | let b:undo_ftplugin = b:undo_ftplugin |
| 66 | \ . '|silent! setl fdm< fdn< fen<' |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 67 | endif |
| 68 | |
| 69 | endif |
| 70 | |
| 71 | if exists(":Man") != 2 |
David Mandelberg | c262382 | 2025-03-10 21:26:50 +0100 | [diff] [blame] | 72 | if g:ft_man_implementation ==# 'man-db' |
| 73 | com -nargs=+ -complete=customlist,dist#man#ManDbComplete Man call dist#man#GetPage(<q-mods>, <f-args>) |
| 74 | else |
| 75 | com -nargs=+ -complete=shellcmd Man call dist#man#GetPage(<q-mods>, <f-args>) |
| 76 | endif |
Ivan Shapovalov | f21ca6d | 2024-07-06 16:16:40 +0200 | [diff] [blame] | 77 | nnoremap <Leader>K :call dist#man#PreGetPage(0)<CR> |
| 78 | nnoremap <Plug>ManPreGetPage :call dist#man#PreGetPage(0)<CR> |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 79 | endif |
| 80 | |
David Mandelberg | c262382 | 2025-03-10 21:26:50 +0100 | [diff] [blame] | 81 | if exists(":ManReload") != 2 |
| 82 | com ManReload call dist#man#Reload() |
| 83 | endif |
| 84 | |
Bram Moolenaar | 91f84f6 | 2018-07-29 15:07:52 +0200 | [diff] [blame] | 85 | let &cpo = s:cpo_save |
| 86 | unlet s:cpo_save |
| 87 | |
Bram Moolenaar | ddf8d1c | 2016-06-20 11:22:54 +0200 | [diff] [blame] | 88 | " vim: set sw=2 ts=8 noet: |