mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	@@ -50,11 +50,11 @@ function! man#open_page(count, count1, mods, ...) abort
 | 
			
		||||
    return
 | 
			
		||||
  endtry
 | 
			
		||||
  call s:push_tag()
 | 
			
		||||
  let bufname = fnameescape('man://'.name.(empty(sect)?'':'('.sect.')'))
 | 
			
		||||
  let bufname = 'man://'.name.(empty(sect)?'':'('.sect.')')
 | 
			
		||||
  if a:mods !~# 'tab' && s:find_man()
 | 
			
		||||
    noautocmd execute 'silent edit' bufname
 | 
			
		||||
    noautocmd execute 'silent edit' fnameescape(bufname)
 | 
			
		||||
  else
 | 
			
		||||
    noautocmd execute 'silent' a:mods 'split' bufname
 | 
			
		||||
    noautocmd execute 'silent' a:mods 'split' fnameescape(bufname)
 | 
			
		||||
  endif
 | 
			
		||||
  let b:man_sect = sect
 | 
			
		||||
  call s:read_page(path)
 | 
			
		||||
@@ -81,7 +81,7 @@ function! s:read_page(path) abort
 | 
			
		||||
  let cmd  = 'env MANPAGER=cat'.(empty($MANWIDTH) ? ' MANWIDTH='.winwidth(0) : '')
 | 
			
		||||
  let cmd .= ' '.s:man_cmd.' '.shellescape(a:path)
 | 
			
		||||
  silent put =system(cmd)
 | 
			
		||||
  " remove all the backspaced text
 | 
			
		||||
  " Remove all backspaced characters.
 | 
			
		||||
  execute 'silent keeppatterns keepjumps %substitute,.\b,,e'.(&gdefault?'':'g')
 | 
			
		||||
  while getline(1) =~# '^\s*$'
 | 
			
		||||
    silent keepjumps 1delete _
 | 
			
		||||
@@ -259,3 +259,22 @@ function! s:format_candidate(path, sect) abort
 | 
			
		||||
    return name.'('.sect.')'
 | 
			
		||||
  endif
 | 
			
		||||
endfunction
 | 
			
		||||
 | 
			
		||||
function! man#init_pager() abort
 | 
			
		||||
  " Remove all backspaced characters.
 | 
			
		||||
  execute 'silent keeppatterns keepjumps %substitute,.\b,,e'.(&gdefault?'':'g')
 | 
			
		||||
  if getline(1) =~# '^\s*$'
 | 
			
		||||
    silent keepjumps 1delete _
 | 
			
		||||
  else
 | 
			
		||||
    keepjumps 1
 | 
			
		||||
  endif
 | 
			
		||||
  " This is not perfect. See `man glDrawArraysInstanced`. Since the title is
 | 
			
		||||
  " all caps it is impossible to tell what the original capitilization was.
 | 
			
		||||
  let ref = tolower(matchstr(getline(1), '^\S\+'))
 | 
			
		||||
  try
 | 
			
		||||
    let b:man_sect = man#extract_sect_and_name_ref(ref)[0]
 | 
			
		||||
  catch
 | 
			
		||||
    let b:man_sect = ''
 | 
			
		||||
  endtry
 | 
			
		||||
  execute 'silent file man://'.fnameescape(ref)
 | 
			
		||||
endfunction
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +1,15 @@
 | 
			
		||||
" Maintainer:          Anmol Sethi <anmol@aubble.com>
 | 
			
		||||
" Previous Maintainer: SungHyun Nam <goweol@gmail.com>
 | 
			
		||||
 | 
			
		||||
if exists('b:did_ftplugin') || &filetype !=# 'man'
 | 
			
		||||
if exists('b:did_ftplugin')
 | 
			
		||||
  finish
 | 
			
		||||
endif
 | 
			
		||||
let b:did_ftplugin = 1
 | 
			
		||||
 | 
			
		||||
let s:pager = 0
 | 
			
		||||
let s:pager = !exists('b:man_sect')
 | 
			
		||||
 | 
			
		||||
if has('vim_starting')
 | 
			
		||||
  let s:pager = 1
 | 
			
		||||
  " remove all those backspaces
 | 
			
		||||
  execute 'silent keeppatterns keepjumps %substitute,.\b,,e'.(&gdefault?'':'g')
 | 
			
		||||
  if getline(1) =~# '^\s*$'
 | 
			
		||||
    silent keepjumps 1delete _
 | 
			
		||||
  else
 | 
			
		||||
    keepjumps 1
 | 
			
		||||
  endif
 | 
			
		||||
  " This is not perfect. See `man glDrawArraysInstanced`. Since the title is
 | 
			
		||||
  " all caps it is impossible to tell what the original capitilization was.
 | 
			
		||||
  let ref = tolower(matchstr(getline(1), '^\S\+'))
 | 
			
		||||
  try
 | 
			
		||||
    let b:man_sect = man#extract_sect_and_name_ref(ref)[0]
 | 
			
		||||
  catch
 | 
			
		||||
    let b:man_sect = ''
 | 
			
		||||
  endtry
 | 
			
		||||
  execute 'silent file man://'.fnameescape(ref)
 | 
			
		||||
if s:pager
 | 
			
		||||
  call man#init_pager()
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
setlocal buftype=nofile
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,9 @@ highlight default link manOptionDesc     Constant
 | 
			
		||||
highlight default link manReference      PreProc
 | 
			
		||||
highlight default link manSubHeading     Function
 | 
			
		||||
 | 
			
		||||
if !exists('b:man_sect')
 | 
			
		||||
  call man#init_pager()
 | 
			
		||||
endif
 | 
			
		||||
if b:man_sect =~# '^[23]'
 | 
			
		||||
  syntax include @c $VIMRUNTIME/syntax/c.vim
 | 
			
		||||
  syntax match manCFuncDefinition display '\<\h\w*\>\ze\(\s\|\n\)*(' contained
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user