[Vim-latex-cvs] vimfiles/ftplugin/latex-suite folding.vim,1.14,1.15
Brought to you by:
srinathava,
tmaas
|
From: <sri...@us...> - 2003-11-29 09:53:53
|
Update of /cvsroot/vim-latex/vimfiles/ftplugin/latex-suite
In directory sc8-pr-cvs1:/tmp/cvs-serv20312
Modified Files:
folding.vim
Log Message:
New: Some cool new additions by Zhang Linbo:
+ add fold definitions for certain environments.
+ add fold description for fold markers, title, preamble etc which
were not there previously.
All these fold definitions are now customizable to a large degree by
using various global settings of the form
g:Tex_FoldedCommands
g:Tex_FoldedEnvironments
g:Tex_FoldedSections
g:Tex_FoldedMisc
Index: folding.vim
===================================================================
RCS file: /cvsroot/vim-latex/vimfiles/ftplugin/latex-suite/folding.vim,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** folding.vim 25 Nov 2003 06:56:42 -0000 1.14
--- folding.vim 29 Nov 2003 09:53:50 -0000 1.15
***************
*** 2,6 ****
" File: folding.vim
" Author: Srinath Avadhanula
! " Version: 1.0
" Created: Tue Apr 23 05:00 PM 2002 PST
"
--- 2,7 ----
" File: folding.vim
" Author: Srinath Avadhanula
! " modifications/additions by Zhang Linbo
! " CVS: $Id$
" Created: Tue Apr 23 05:00 PM 2002 PST
"
***************
*** 35,43 ****
endfunction " }}}
" MakeTexFolds: function to create fold items for latex. {{{
"
" used in conjunction with MakeSyntaxFolds().
" see ../plugin/syntaxFolds.vim for documentation
- "
function! MakeTexFolds(force)
if exists('g:Tex_Folding') && !g:Tex_Folding
--- 36,68 ----
endfunction " }}}
+ " FoldSections: creates section folds {{{
+ " Author: Zhang Linbo
+ " Description:
+ " This function takes a comma seperated list of "sections" and creates fold
+ " definitions for them. The first item is supposed to be the "shallowest" field
+ " and the last is the "deepest". See g:Tex_FoldedSections for the default
+ " definition of the lst input argument.
+ "
+ " **works recursively**
+ function! FoldSections(lst, endpat)
+ let i = match(a:lst, ',')
+ if i > 0
+ let s = strpart(a:lst, 0, i)
+ else
+ let s = a:lst
+ endif
+ let s = '^\s*\\' . s . '\W'
+ let endpat = s . '\|' . a:endpat
+ if i > 0
+ call FoldSections(strpart(a:lst,i+1), endpat)
+ endif
+ let endpat = '^\s*\\appendix\W\|' . endpat
+ call AddSyntaxFoldItem(s, endpat, 0, -1)
+ endfunction
+ " }}}
" MakeTexFolds: function to create fold items for latex. {{{
"
" used in conjunction with MakeSyntaxFolds().
" see ../plugin/syntaxFolds.vim for documentation
function! MakeTexFolds(force)
if exists('g:Tex_Folding') && !g:Tex_Folding
***************
*** 48,51 ****
--- 73,108 ----
end
+ " Folding items which are not caught in any of the standard commands,
+ " environments or sections.
+ TexLet g:Tex_FoldedMisc = 'comments,item,slide,'.
+ \ 'preamble,title,<<<'
+
+ " 1. Use default value if g:Tex_Foldedxxxxxx is not defined
+ " 2. prepend default value to g:Tex_Foldedxxxxxx if it starts with ','
+ " 3. append default value to g:Tex_Foldedxxxxxx if it ends with ','
+ let s = 'footnote,intertext'
+ if !exists('g:Tex_FoldedCommands')
+ let g:Tex_FoldedCommands = s
+ elseif g:Tex_FoldedCommands[0] == ','
+ let g:Tex_FoldedCommands = s . g:Tex_FoldedCommands[0]
+ elseif g:Tex_FoldedCommands =~ ',$'
+ let g:Tex_FoldedCommands = g:Tex_FoldedCommands[0] . s
+ endif
+
+ let s = 'verbatim,comment,eq,gather,align,figure,table,thebibliography,'
+ \. 'keywords,abstract,titlepage'
+ if !exists('g:Tex_FoldedEnvironments')
+ let g:Tex_FoldedEnvironments = s
+ elseif g:Tex_FoldedEnvironments[0] == ','
+ let g:Tex_FoldedEnvironments = s . g:Tex_FoldedEnvironments
+ elseif g:Tex_FoldedEnvironments =~ ',$'
+ let g:Tex_FoldedEnvironments = g:Tex_FoldedEnvironments . s
+ endif
+
+ if !exists('g:Tex_FoldedSections')
+ let g:Tex_FoldedSections = 'slide,part,chapter,section,%%fakesection,'
+ \. 'subsection,subsubsection,paragraph'
+ endif
+
" the order in which these calls are made decides the nestedness. in
" latex, a table environment will always be embedded in either an item or
***************
*** 144,286 ****
" }}}
" ========================================================================
! " {{{ footnote
! call AddSyntaxFoldItem (
! \ '^\s*\\footnote{',
! \ '^\s*}',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ intertext
! call AddSyntaxFoldItem (
! \ '^\s*\\intertext{',
! \ '^\s*}',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ abstract
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{abstract}',
! \ '^\s*\\end{abstract}',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ keywords
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{keywords}',
! \ '^\s*\\end{keywords}',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ thebibliography
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{thebibliography}',
! \ '^\s*\\end{thebibliography}',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ table
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{table}',
! \ '^\s*\\end{table}',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ figure
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{figure',
! \ '^\s*\\end{figure}',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ align/alignat
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{align',
! \ '^\s*\\end{align',
! \ 0,
! \ 0
! \ )
! " }}}
! " {{{ gather
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{gather',
! \ '^\s*\\end{gather',
! \ 0,
! \ 0
! \ )
" }}}
! " {{{ equation/eqnarray
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{eq',
! \ '^\s*\\end{eq',
! \ 0,
! \ 0
! \ )
" }}}
" {{{ items
! call AddSyntaxFoldItem (
! \ '^\s*\\item',
! \ '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
! \ 0,
! \ -1,
! \ '^\s*\\begin{\(enumerate\|itemize\|description\)}',
! \ '^\s*\\end{\(enumerate\|itemize\|description\)}'
! \ )
! " }}}
! " {{{ subsubsection
! call AddSyntaxFoldItem (
! \ '^\s*\\subsubsection\W',
! \ '^\s*\\appendix\W\|^\s*\\subsubsection\W\|^\s*\\subsection\W\|^\s*\\section\W\|^\s*%%fakesection\|^\s*\\chapter\W\|^\s*\\begin{slide\|^\s*\\end{document',
! \ 0,
! \ -1,
! \ )
! " }}}
! " {{{ subsection
! call AddSyntaxFoldItem (
! \ '^\s*\\subsection\W',
! \ '^\s*\\appendix\W\|^\s*\\subsection\W\|^\s*\\section\W\|^\s*%%fakesection\|^\s*\\bibliography\|^\s*\\chapter\W\|^\s*\\begin{slide\|^\s*\\begin{thebibliography\|^\s*\\end{document',
! \ 0,
! \ -1,
! \ )
" }}}
! " {{{ section
! call AddSyntaxFoldItem (
! \ '^\s*\\section\W',
! \ '^\s*\\appendix\W\|^\s*\\section\W\|^\s*\\bibliography\|^\s*%%fakesection\|^\s*\\chapter\W\|^\s*\\begin{slide\|^\s*\\begin{thebibliography\|^\s*\\end{document',
! \ 0,
! \ -1,
! \ )
" }}}
! " {{{ fakesection (for forcing a fold item manually)
! call AddSyntaxFoldItem (
! \ '^\s*%%fakesection',
! \ '^\s*\\appendix\W\|^\s*\\section\W\|^\s*%%fakesection\|^\s*\\bibliography\|^\s*\\chapter\W\|^\s*\\begin{slide\|^\s*\\begin{thebibliography\|^\s*\\end{document',
! \ 0,
! \ -1,
! \ )
" }}}
! " {{{ chapter
! call AddSyntaxFoldItem(
! \ '^\s*\\chapter\W',
! \ '^\s*\\appendix\W\|^\s*\\chapter\W\|^\s*\\bibliography\|^\s*\\begin{slide\|^\s*\\begin{thebibliography\|^\s*\\end{document',
! \ 0,
! \ -1
! \ )
" }}}
! " {{{ slide
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{slide',
! \ '^\s*\\appendix\W\|^\s*\\chapter\W\|^\s*\\end{slide\|^\s*\\end{document',
! \ 0,
! \ 0
! \ )
" }}}
!
call MakeSyntaxFolds(a:force)
normal! zv
--- 201,312 ----
" }}}
" ========================================================================
!
! " {{{ comment lines
! if g:Tex_FoldedMisc =~ '\<comments\>'
! call AddSyntaxFoldItem (
! \ '^%\([^%]\|[^f]\|[^a]\|[^k]\|[^e]\)',
! \ '^[^%]',
! \ 0,
! \ -1
! \ )
! endif
" }}}
!
! " Commands and Environments {{{
! " Fold the commands and environments in 2 passes.
! let pass = 0
! while pass < 2
! if pass == 0
! let lst = g:Tex_FoldedCommands
! else
! let lst = g:Tex_FoldedEnvironments
! endif
! while lst != ''
! let i = match(lst, ',')
! if i > 0
! let s = strpart(lst, 0, i)
! let lst = strpart(lst, i+1)
! else
! let s = lst
! let lst = ''
! endif
! if s != ''
! if pass == 0
! call AddSyntaxFoldItem('^\s*\\'.s.'{','^\s*}',0,0)
! else
! call AddSyntaxFoldItem('^\s*\\begin{'.s,'^\s*\\end{'.s,0,0)
! endif
! endif
! endwhile
! let pass = pass + 1
! endwhile
" }}}
+
" {{{ items
! if g:Tex_FoldedMisc =~ '\<item\>'
! call AddSyntaxFoldItem (
! \ '^\s*\\item',
! \ '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
! \ 0,
! \ -1,
! \ '^\s*\\begin{\(enumerate\|itemize\|description\)}',
! \ '^\s*\\end{\(enumerate\|itemize\|description\)}'
! \ )
! endif
" }}}
!
! " Sections {{{
! if g:Tex_FoldedSections != ''
! call FoldSections(g:Tex_FoldedSections,
! \ '^\s*\\frontmatter\|^\s*\\mainmatter\|^\s*\\backmatter\|'
! \. '^\s*\\begin{thebibliography\|>>>\|^\s*\\endinput\|'
! \. '^\s*\\end{document')
! endif
! " }}}
!
! " {{{ slide
! if g:Tex_FoldedMisc =~ '\<slide\>'
! call AddSyntaxFoldItem (
! \ '^\s*\\begin{slide',
! \ '^\s*\\appendix\W\|^\s*\\chapter\W\|^\s*\\end{slide\|^\s*\\end{document',
! \ 0,
! \ 0
! \ )
! endif
" }}}
!
! " {{{ preamble
! if g:Tex_FoldedMisc =~ '\<preamble\>'
! call AddSyntaxFoldItem (
! \ '^\s*\\document\(class\|style\).*{',
! \ '^\s*\\begin{document}',
! \ 0,
! \ -1
! \ )
! endif
" }}}
!
! " {{{ title
! if g:Tex_FoldedMisc =~ '\<title\>'
! call AddSyntaxFoldItem (
! \ '^\s*\\title\W',
! \ '\\maketitle',
! \ 0,
! \ 0
! \ )
! endif
" }}}
!
! " Manually folded regions {{{
! if g:Tex_FoldedMisc = '\(^\|,\)<<<\(,\|$\)'
! call AddSyntaxFoldItem (
! \ '<<<',
! \ '>>>',
! \ 0,
! \ 0
! \ )
! endif
" }}}
!
call MakeSyntaxFolds(a:force)
normal! zv
***************
*** 291,296 ****
function! TexFoldTextFunction()
if getline(v:foldstart) =~ '^\s*\\begin{'
! let header = matchstr(getline(v:foldstart), '^\s*\\begin{\zs\(figure\|sidewaysfigure\|table\|equation\|eqnarray\|gather\|align\|abstract\|keywords\|thebibliography\)[^}]*\ze}')
!
let caption = ''
let label = ''
--- 317,322 ----
function! TexFoldTextFunction()
if getline(v:foldstart) =~ '^\s*\\begin{'
! let header = matchstr(getline(v:foldstart),
! \ '^\s*\\begin{\zs\([:alpha:]*\)[^}]*\ze}')
let caption = ''
let label = ''
***************
*** 314,319 ****
end
! let retText = matchstr(ftxto, '^[^:]*').': '.header.' ('.label.') : '.caption
return retText
else
return foldtext()
--- 340,352 ----
end
! let retText = matchstr(ftxto, '^[^:]*').': "'.header
! \.'" ('.label.') : '.caption
return retText
+ elseif getline(v:foldstart) =~ '^%' && getline(v:foldstart) !~ '^%%fake'
+ let ftxto = foldtext()
+ return matchstr(ftxto, '^[^:]*').': Comments '
+ elseif getline(v:foldstart) =~ '^\s*\\document\(class\|style\).*{'
+ let ftxto = foldtext()
+ return matchstr(ftxto, '^[^:]*').': Preamble:'.matchstr(ftxto, '[^:]*$')
else
return foldtext()
|