annotate runtime/ftplugin/pdf.vim @ 35507:1a7250350167 draft default tip

runtime(doc): In builtin overview use {buf} as param for appendbufline/setbufline (#15089) Commit: https://github.com/vim/vim/commit/f0837ba0b9dba9d30e3dc2626d4f690a2d51103e Author: errael <errael@raelity.com> Date: Mon Jun 24 12:27:01 2024 -0700 runtime(doc): In builtin overview use {buf} as param for appendbufline/setbufline (https://github.com/vim/vim/issues/15089) Signed-off-by: Ernie Rael <errael@raelity.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Mon, 24 Jun 2024 21:30:08 +0200
parents 7c7432a53a6c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1621
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
1 " Vim filetype plugin file
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
2 " Language: PDF
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
3 " Maintainer: Tim Pope <vimNOSPAM@tpope.info>
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
4 " Last Change: 2007 Dec 16
35324
7c7432a53a6c patch 9.1.0464: no whitespace padding in commentstring option in ftplugins
Christian Brabandt <cb@256bit.org>
parents: 1621
diff changeset
5 " 2024 May 23 by Riley Bruins <ribru17@gmail.com> ('commentstring')
1621
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
6
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
7 if exists("b:did_ftplugin")
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
8 finish
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
9 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
10 let b:did_ftplugin = 1
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
11
35324
7c7432a53a6c patch 9.1.0464: no whitespace padding in commentstring option in ftplugins
Christian Brabandt <cb@256bit.org>
parents: 1621
diff changeset
12 setlocal commentstring=%\ %s
1621
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
13 setlocal comments=:%
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
14 let b:undo_ftplugin = "setlocal cms< com< | unlet! b:match_words"
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
15
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
16 if exists("g:loaded_matchit")
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
17 let b:match_words = '\<\%(\d\+\s\+\d\+\s\+\)obj\>:\<endobj\>,\<stream$:\<endstream\>,\<xref\>:\<trailer\>,<<:>>'
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
18 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
19
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
20 if exists("g:no_plugin_maps") || exists("g:no_pdf_maps") || v:version < 700
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
21 finish
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
22 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
23
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
24 if !exists("b:pdf_tagstack")
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
25 let b:pdf_tagstack = []
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
26 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
27
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
28 let b:undo_ftplugin .= " | silent! nunmap <buffer> <C-]> | silent! nunmap <buffer> <C-T>"
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
29 nnoremap <silent><buffer> <C-]> :call <SID>Tag()<CR>
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
30 " Inline, so the error from an empty tag stack will be simple.
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
31 nnoremap <silent><buffer> <C-T> :if len(b:pdf_tagstack) > 0 <Bar> call setpos('.',remove(b:pdf_tagstack, -1)) <Bar> else <Bar> exe "norm! \<Lt>C-T>" <Bar> endif<CR>
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
32
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
33 function! s:Tag()
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
34 call add(b:pdf_tagstack,getpos('.'))
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
35 if getline('.') =~ '^\d\+$' && getline(line('.')-1) == 'startxref'
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
36 return s:dodigits(getline('.'))
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
37 elseif getline('.') =~ '/Prev\s\+\d\+\>\%(\s\+\d\)\@!' && expand("<cword>") =~ '^\d\+$'
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
38 return s:dodigits(expand("<cword>"))
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
39 elseif getline('.') =~ '^\d\{10\} \d\{5\} '
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
40 return s:dodigits(matchstr(getline('.'),'^\d\+'))
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
41 else
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
42 let line = getline(".")
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
43 let lastend = 0
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
44 let pat = '\<\d\+\s\+\d\+\s\+R\>'
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
45 while lastend >= 0
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
46 let beg = match(line,'\C'.pat,lastend)
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
47 let end = matchend(line,'\C'.pat,lastend)
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
48 if beg < col(".") && end >= col(".")
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
49 return s:doobject(matchstr(line,'\C'.pat,lastend))
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
50 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
51 let lastend = end
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
52 endwhile
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
53 return s:notag()
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
54 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
55 endfunction
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
56
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
57 function! s:doobject(string)
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
58 let first = matchstr(a:string,'^\s*\zs\d\+')
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
59 let second = matchstr(a:string,'^\s*\d\+\s\+\zs\d\+')
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
60 norm! m'
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
61 if first != '' && second != ''
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
62 let oldline = line('.')
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
63 let oldcol = col('.')
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
64 1
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
65 if !search('^\s*'.first.'\s\+'.second.'\s\+obj\>')
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
66 exe oldline
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
67 exe 'norm! '.oldcol.'|'
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
68 return s:notag()
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
69 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
70 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
71 endfunction
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
72
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
73 function! s:dodigits(digits)
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
74 let digits = 0 + substitute(a:digits,'^0*','','')
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
75 norm! m'
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
76 if digits <= 0
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
77 norm! 1go
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
78 else
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
79 " Go one character before the destination and advance. This method
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
80 " lands us after a newline rather than before, if that is our target.
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
81 exe "goto ".(digits)."|norm! 1 "
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
82 endif
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
83 endfunction
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
84
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
85 function! s:notag()
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
86 silent! call remove(b:pdf_tagstack,-1)
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
87 echohl ErrorMsg
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
88 echo "E426: tag not found"
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
89 echohl NONE
82b5078be2dd updated for version 7.2a
vimboss
parents:
diff changeset
90 endfunction