Bram Moolenaar | 60cce2f | 2015-10-13 23:21:27 +0200 | [diff] [blame] | 1 | " Vim filetype plugin file |
Bram Moolenaar | 2c7f8c5 | 2020-04-20 19:52:53 +0200 | [diff] [blame] | 2 | " Language: systemd.unit(5) |
| 3 | " Keyword Lookup Support: Enno Nagel <enno.nagel+vim@gmail.com> |
Enno | 1e33cd7 | 2023-10-08 19:14:07 +0200 | [diff] [blame] | 4 | " Latest Revision: 2023-10-07 |
Bram Moolenaar | 60cce2f | 2015-10-13 23:21:27 +0200 | [diff] [blame] | 5 | |
Enno | 5036e69 | 2023-10-18 11:38:19 +0200 | [diff] [blame] | 6 | if exists("b:did_ftplugin") |
| 7 | finish |
Bram Moolenaar | 60cce2f | 2015-10-13 23:21:27 +0200 | [diff] [blame] | 8 | endif |
Enno | 5036e69 | 2023-10-18 11:38:19 +0200 | [diff] [blame] | 9 | " Looks a lot like dosini files. |
| 10 | runtime! ftplugin/dosini.vim |
Bram Moolenaar | 2c7f8c5 | 2020-04-20 19:52:53 +0200 | [diff] [blame] | 11 | |
Enno | 2f25e40 | 2023-08-23 21:27:50 +0200 | [diff] [blame] | 12 | if has('unix') && executable('less') |
| 13 | if !has('gui_running') |
Enno | 1e33cd7 | 2023-10-08 19:14:07 +0200 | [diff] [blame] | 14 | command -buffer -nargs=1 SystemdKeywordPrg silent exe '!' . KeywordLookup_systemd(<q-args>) | redraw! |
Enno | 2f25e40 | 2023-08-23 21:27:50 +0200 | [diff] [blame] | 15 | elseif has('terminal') |
Enno | 1e33cd7 | 2023-10-08 19:14:07 +0200 | [diff] [blame] | 16 | command -buffer -nargs=1 SystemdKeywordPrg silent exe 'term ' . KeywordLookup_systemd(<q-args>) |
Enno | 2f25e40 | 2023-08-23 21:27:50 +0200 | [diff] [blame] | 17 | endif |
Enno | 1e33cd7 | 2023-10-08 19:14:07 +0200 | [diff] [blame] | 18 | if exists(':SystemdKeywordPrg') == 2 |
Enno | 2f25e40 | 2023-08-23 21:27:50 +0200 | [diff] [blame] | 19 | if !exists('*KeywordLookup_systemd') |
| 20 | function KeywordLookup_systemd(keyword) abort |
| 21 | let matches = matchlist(getline(search('\v^\s*\[\s*.+\s*\]\s*$', 'nbWz')), '\v^\s*\[\s*(\k+).*\]\s*$') |
| 22 | if len(matches) > 1 |
| 23 | let section = matches[1] |
| 24 | return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd.' . section |
| 25 | else |
| 26 | return 'LESS= MANPAGER="less --pattern=''(^|,)\s+' . a:keyword . '=$'' --hilite-search" man ' . 'systemd' |
| 27 | endif |
| 28 | endfunction |
Bram Moolenaar | 2c7f8c5 | 2020-04-20 19:52:53 +0200 | [diff] [blame] | 29 | endif |
Enno | 2f25e40 | 2023-08-23 21:27:50 +0200 | [diff] [blame] | 30 | setlocal iskeyword+=- |
Enno | 1e33cd7 | 2023-10-08 19:14:07 +0200 | [diff] [blame] | 31 | setlocal keywordprg=:SystemdKeywordPrg |
Enno | 2f25e40 | 2023-08-23 21:27:50 +0200 | [diff] [blame] | 32 | if !exists('b:undo_ftplugin') || empty(b:undo_ftplugin) |
| 33 | let b:undo_ftplugin = 'setlocal keywordprg< iskeyword<' |
| 34 | else |
Enno | 1e33cd7 | 2023-10-08 19:14:07 +0200 | [diff] [blame] | 35 | let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer SystemdKeywordPrg' |
Enno | 2f25e40 | 2023-08-23 21:27:50 +0200 | [diff] [blame] | 36 | endif |
| 37 | endif |
Bram Moolenaar | 2c7f8c5 | 2020-04-20 19:52:53 +0200 | [diff] [blame] | 38 | endif |