diff options
Diffstat (limited to '')
-rw-r--r-- | dot_vim/ftplugin/latex-suite/envmacros.vim | 1167 |
1 files changed, 0 insertions, 1167 deletions
diff --git a/dot_vim/ftplugin/latex-suite/envmacros.vim b/dot_vim/ftplugin/latex-suite/envmacros.vim deleted file mode 100644 index 2f41a27..0000000 --- a/dot_vim/ftplugin/latex-suite/envmacros.vim +++ /dev/null @@ -1,1167 +0,0 @@ -"============================================================================= -" File: envmacros.vim -" Author: Mikolaj Machowski -" Created: Tue Apr 23 08:00 PM 2002 PST -" CVS Header: $Id: envmacros.vim 997 2006-03-20 09:45:45Z srinathava $ -" Description: mappings/menus for environments. -"============================================================================= - -if !g:Tex_EnvironmentMaps && !g:Tex_EnvironmentMenus - finish -endif - -exe 'so '.expand('<sfile>:p:h').'/wizardfuncs.vim' - -nmap <silent> <script> <plug> i -imap <silent> <script> <C-o><plug> <Nop> - -" Define environments for IMAP evaluation " {{{ -let s:figure = "\\begin{figure}[<+htpb+>]\<cr>\\begin{center}\<cr>\\psfig{figure=<+eps file+>}\<cr>\\end{center}\<cr>\\caption{<+caption text+>}\<cr>\\label{fig:<+label+>}\<cr>\\end{figure}<++>" -let s:figure_graphicx = "\\begin{figure}[<+htpb+>]\<cr>\\begin{center}\<cr>\\includegraphics{<+file+>}\<cr>\\end{center}\<cr>\\caption{<+caption text+>}\<cr>\\label{fig:<+label+>}\<cr>\\end{figure}<++>" -let s:minipage = "\\begin{minipage}[<+tb+>]{<+width+>}\<cr><++>\<cr>\\end{minipage}<++>" -let s:picture = "\\begin{picture}(<+width+>, <+height+>)(<+xoff+>,<+yoff+>)\<cr>\\put(<+xoff+>,<+yoff+>){\\framebox(<++>,<++>){<++>}}\<cr>\\end{picture}<++>" -let s:list = "\\begin{list}{<+label+>}{<+spacing+>}\<cr>\\item <++>\<cr>\\end{list}<++>" -let s:table = "\\begin{table}\<cr>\\centering\<cr>\\begin{tabular}{<+dimensions+>}\<cr><++>\<cr>\\end{tabular}\<cr>\\caption{<+Caption text+>}\<cr>\\label{tab:<+label+>}\<cr>\\end{table}<++>" -let s:array = "\\left<++>\<cr>\\begin{array}{<+dimension+>}\<cr><+elements+>\<cr>\\end{array}\<cr>\\right<++>" -let s:description ="\\begin{description}\<cr>\\item[<+label+>]<++>\<cr>\\end{description}<++>" -let s:document = "\\documentclass[<+options+>]{<+class+>}\<cr>\<cr>\\begin{document}\<cr><++>\<cr>\\end{document}" -let s:tabular = "\\begin{tabular}[<+hbtp+>]{<+format+>}\<cr><++>\<cr>\\end{tabular}" -let s:tabular_star = "\\begin{tabular*}[<+hbtp+>]{<+format+>}\<cr><++>\<cr>\\end{tabular*}" -let s:frame = "\\begin{frame}{<+title>}\<cr><++>\<cr>\\end{frame}<++>" - -" }}} -" define environments with special behavior in line wise selection. {{{ -if !exists('s:vis_center_left') - let s:vis_center_left = '\centerline{' - let s:vis_center_right = '}' - - let s:vis_verbatim_left = '\verb\|' - let s:vis_verbatim_right = '\|' - - let s:vis_flushright_left = '{\raggedright ' - let s:vis_flushright_right = '}' - - let s:vis_fushleft_left = '{\raggedleft ' - let s:vis_fushleft_right = '}' - - let s:vis_lrbox_left = '\sbox{' - let s:vis_lrbox_right = '}' -endif -" }}} -" Tex_EnvMacros: sets up maps and menus for environments {{{ -" Description: -function! <SID>Tex_EnvMacros(lhs, submenu, name) - - let extra = '' - if a:submenu =~ 'Lists' - let extra = '\item ' - endif - - let vright = '' - let vleft = '' - if exists('s:vis_'.a:name.'_right') - let vright = s:vis_{a:name}_right - let vleft = s:vis_{a:name}_left - endif - let vrhs = "\<C-\\>\<C-N>:call VEnclose('".vleft."', '".vright."', '\\begin{".a:name."}', '\\end{".a:name."}')\<CR>" - let location = g:Tex_EnvMenuLocation.a:submenu.a:name.'<tab>' - - if a:lhs != '' - - let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '') - let location = location.a:lhs.'\ ('.vlhs.')' - - if g:Tex_EnvironmentMaps && !exists('s:doneOnce') - call IMAP(a:lhs, "\<C-r>=Tex_PutEnvironment('".a:name."')\<CR>", 'tex') - exec 'vnoremap <silent> '.vlhs.' '.vrhs - endif - - endif - - if g:Tex_Menus && g:Tex_EnvironmentMenus && has("gui_running") - exe 'amenu '.location.' <plug><C-r>=Tex_DoEnvironment("'.a:name.'")<CR>' - exe 'vmenu '.location.' '.vrhs - endif - -endfunction - -" }}} -" Tex_SpecialMacros: macros with special right hand sides {{{ -" Description: -function! <SID>Tex_SpecialMacros(lhs, submenu, name, irhs, ...) - - let wiz = 1 - if a:0 > 0 && a:1 == 0 - let wiz = 0 - endif - - let location = g:Tex_EnvMenuLocation.a:submenu.a:name - - let vright = '' - let vleft = '' - if exists('s:vis_'.a:name.'_right') - let vright = s:vis_{a:name}_right - let vleft = s:vis_{a:name}_left - endif - let vrhs = "\<C-\\>\<C-N>:call VEnclose('".vleft."', '".vright."', '\\begin{".a:name."}', '\\end{".a:name."}')\<CR>" - - if a:lhs != '' - - let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '') - let location = location.'<tab>'.a:lhs.'\ ('.vlhs.')' - - if g:Tex_EnvironmentMaps && !exists('s:doneOnce') - call IMAP(a:lhs, a:irhs, 'tex') - exec 'vnoremap '.vlhs.' '.vrhs - endif - - endif - - if g:Tex_Menus && g:Tex_EnvironmentMenus - if wiz - exe 'amenu '.location.' <plug><C-r>=Tex_DoEnvironment("'.a:name.'")<CR>' - else - exe 'amenu '.location." <plug><C-r>=IMAP_PutTextWithMovement('".a:irhs."')<CR>" - endif - exe 'vmenu '.location.' '.vrhs - endif - -endfunction " }}} -" Tex_SectionMacros: creates section maps and menus {{{ -" Description: -function! <SID>Tex_SectionMacros(lhs, name) - - let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '') - let vrhs = "\<C-\\>\<C-N>:call VEnclose('\\".a:name."{', '}', '', '')<CR>" - - if g:Tex_SectionMaps && !exists('s:doneOnce') - exe 'vnoremap '.vlhs.' '.vrhs - call IMAP (a:lhs, "\\".a:name.'{<++>}<++>', 'tex') - endif - - if g:Tex_Menus && g:Tex_SectionMenus - let location = g:Tex_EnvMenuLocation.'Sections.'.a:name.'<tab>'.a:lhs.'\ ('.vlhs.')' - let advlocation = g:Tex_EnvMenuLocation.'Sections.Advanced.'.a:name - - let irhs = "\<C-r>=IMAP_PutTextWithMovement('\\".a:name."{<++>}<++>')\<CR>" - - let advirhs = "\<C-r>=Tex_InsSecAdv('".a:name."')\<CR>" - let advvrhs = "\<C-\\>\<C-N>:call Tex_VisSecAdv('".a:name."')\<CR>" - - exe 'amenu '.advlocation.' <plug>'.advirhs - exe 'vnoremenu '.advlocation." ".advvrhs - - exe 'amenu '.location.' <plug>'.irhs - exe 'vnoremenu '.location." ".vrhs - endif -endfunction " }}} - -" NewEnvironments {{{ -call s:Tex_SpecialMacros('', '', 'newenvironment', '\newenvironment{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0) -call s:Tex_SpecialMacros('', '', 'newenvironment*', '\newenvironment*{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0) -call s:Tex_SpecialMacros('', '', 'renewenvironment', '\renewenvironment{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0) -call s:Tex_SpecialMacros('', '', 'renewenvironment*', '\renewenvironment*{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0) -call s:Tex_SpecialMacros('', '', '-sepenv0-', ' :', 0) -" }}} -" Environments specific commands {{{ -call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', '&item', '\item', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', 'i&tem[]', '\item[<++>]<++>', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', '&bibitem{}', '\bibitem{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&=', '\=', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&>', '\>', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&\\\\', '\\', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&+', '\+', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&-', '\-', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', "\\\'", "\\\'", 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&`', '\`', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&kill', '\kill', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&makron\ \\CHAR=', '\<++>=<++>', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', "&aigu\ \\CHAR\'", "\\<++>\'<++>", 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&grave\ \\CHAR`', '\<++>`<++>', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', 'p&ushtabs', '\pushtabs', 0) -call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', 'p&optabs', '\poptabs', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&hline', '\hline', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&cline', '\cline', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&\&', '&', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&\\\\', '\\', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&multicolumn{}{}{}', '\multicolumn{<++>}{<++>}{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&makelabels', '\makelabels', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&address', '\address', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&signature', '\signature', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&date', '\date', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '-sepenva4-', ' :', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&opening{}', '\opening{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&closing{}', '\closing{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&ps{}', '\ps{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', 'cc&{}', '\cc{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&onlyslides{}', '\onlyslides{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&onlynotes{}', '\onlynotes{<++>}<++>', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '-sepenva5-', ' :', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&invisible', '\invisible', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&visible', '\visible', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&settime', '\settime', 0) -call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&addtime', '\addtime', 0) -call s:Tex_SpecialMacros('', '', '-sepenv0-', ' :', 0) -" }}} -" Lists {{{ -call s:Tex_SpecialMacros('ELI', '&Lists.', 'list', s:list) -call s:Tex_SpecialMacros('EDE', '&Lists.', 'description', s:description) -call s:Tex_EnvMacros('EEN', '&Lists.', 'enumerate') -call s:Tex_EnvMacros('EIT', '&Lists.', 'itemize') -call s:Tex_EnvMacros('ETI', '&Lists.', 'theindex') -call s:Tex_EnvMacros('ETL', '&Lists.', 'trivlist') -" }}} -" Tables {{{ -call s:Tex_SpecialMacros('ETE', '&Tables.', 'table', s:table) -call s:Tex_EnvMacros('ETG', '&Tables.', 'tabbing') -call s:Tex_EnvMacros('', '&Tables.', 'table*') -call s:Tex_EnvMacros('', '&Tables.', 'table2') -call s:Tex_SpecialMacros('ETR', '&Tables.', 'tabular', s:tabular) -call s:Tex_SpecialMacros('', '&Tables.', 'tabular*', s:tabular_star) -" }}} -" Math {{{ -call s:Tex_EnvMacros('EAR', '&Math.', 'array') -call s:Tex_EnvMacros('EDM', '&Math.', 'displaymath') -call s:Tex_EnvMacros('EEA', '&Math.', 'eqnarray') -call s:Tex_EnvMacros('', '&Math.', 'eqnarray*') -call s:Tex_EnvMacros('EEQ', '&Math.', 'equation') -call s:Tex_EnvMacros('EMA', '&Math.', 'math') -" }}} -" Structure {{{ -call s:Tex_SpecialMacros('EAR', 'Math.', 'array', s:array) -call s:Tex_EnvMacros('EAB', '&Structure.', 'abstract') -call s:Tex_EnvMacros('EAP', '&Structure.', 'appendix') -call s:Tex_EnvMacros('ECE', '&Structure.', 'center') -call s:Tex_EnvMacros('EDO', '&Structure.', 'document') -call s:Tex_EnvMacros('EFC', '&Structure.', 'filecontents') -call s:Tex_EnvMacros('', '&Structure.', 'filecontents*') -call s:Tex_EnvMacros('EFL', '&Structure.', 'flushleft') -call s:Tex_EnvMacros('EFR', '&Structure.', 'flushright') -call s:Tex_EnvMacros('EQN', '&Structure.', 'quotation') -call s:Tex_EnvMacros('EQE', '&Structure.', 'quote') -call s:Tex_EnvMacros('ESB', '&Structure.', 'sloppybar') -call s:Tex_EnvMacros('ETI', '&Structure.', 'theindex') -call s:Tex_EnvMacros('ETP', '&Structure.', 'titlepage') -call s:Tex_EnvMacros('EVM', '&Structure.', 'verbatim') -call s:Tex_EnvMacros('', '&Structure.', 'verbatim*') -call s:Tex_EnvMacros('EVE', '&Structure.', 'verse') -call s:Tex_EnvMacros('ETB', '&Structure.', 'thebibliography') -call s:Tex_SpecialMacros('', '&Structure.', '-sepstruct0-', ':', 0) -call s:Tex_EnvMacros('ENO', '&Structure.', 'note') -call s:Tex_EnvMacros('EOV', '&Structure.', 'overlay') -call s:Tex_EnvMacros('ESL', '&Structure.', 'slide') -" }}} -" Sections {{{ -call s:Tex_SectionMacros('SPA', 'part') -call s:Tex_SectionMacros('SCH', 'chapter') -call s:Tex_SectionMacros('SSE', 'section') -call s:Tex_SectionMacros('SSS', 'subsection') -call s:Tex_SectionMacros('SS2', 'subsubsection') -call s:Tex_SectionMacros('SPG', 'paragraph') -call s:Tex_SectionMacros('SSP', 'subparagraph') -" }}} -" Miscellaneous {{{ -call s:Tex_SpecialMacros('', '', '-sepenv1-', ' :', 0) -call s:Tex_SpecialMacros('EFI', '', 'figure', "\<C-r>=Tex_PutEnvironment('figure')\<CR>") -call s:Tex_EnvMacros('', '', 'figure*') -call s:Tex_EnvMacros('ELR', '', 'lrbox') -call s:Tex_SpecialMacros('EMP', '', 'minipage', s:minipage) -call s:Tex_SpecialMacros('EPI', '', 'picture', s:picture) -" }}} - -if g:Tex_CatchVisMapErrors - exe 'vnoremap '.g:Tex_Leader2." :\<C-u>call ExecMap('".g:Tex_Leader2."', 'v')\<CR>" -endif - -" ============================================================================== -" Specialized functions for various environments -" -" All these functions are to be used as: -" -" inoremap <lhs> <C-r>=Tex_itemize('enumerate')<CR> -" nnoremap <lhs> i<C-r>=Tex_itemize('enumerate')<CR> -" -" and so on... -" ============================================================================== -" Tex_itemize: {{{ -function! Tex_itemize(env) - return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr>\\item <++>\<cr>\\end{".a:env."}<++>") -endfunction -" }}} -" Tex_description: {{{ -function! Tex_description(env) - if g:Tex_UseMenuWizard == 1 - let itlabel = input('(Optional) Item label? ') - if itlabel != '' - let itlabel = '['.itlabel.']' - endif - return IMAP_PutTextWithMovement("\\begin{description}\<cr>\\item".itlabel." <++>\<cr>\\end{description}<++>") - else - return IMAP_PutTextWithMovement(s:description) - endif -endfunction -" }}} -" Tex_figure: {{{ -function! Tex_figure(env) - if g:Tex_UseMenuWizard == 1 - let flto = input('Float to (htbp)? ') - let caption = input('Caption? ') - let center = input('Center ([y]/n)? ') - let label = input('Label (for use with \ref)? ') - " additional to AUC Tex since my pics are usually external files - let pic = input('Name of Pic-File? ') - if flto != '' - let flto = '['.flto."]\<cr>" - else - let flto = "\<cr>" - endif - if pic != '' - let pic = '\input{'.pic."}\<cr>" - else - let pic = "<++>\<cr>" - endif - if caption != '' - let caption = '\caption{'.caption."}\<cr>" - endif - if label != '' - let label = '\label{fig:'.label."}\<cr>" - endif - if center == 'y' - let centr = '\begin{center}' . "\<cr>" - let centr = centr . pic - let centr = centr . caption - let centr = centr . label - let centr = centr . '\end{center}' . "\<cr>" - else - let centr = pic - let centr = centr . caption - let centr = centr . label - endif - let figure = '\begin{'.a:env.'}'.flto - let figure = figure . centr - let figure = figure . '\end{'.a:env.'}' - return IMAP_PutTextWithMovement(figure) - else - if g:Tex_package_detected =~ '\<graphicx\>' - return IMAP_PutTextWithMovement(s:figure_graphicx) - else - return IMAP_PutTextWithMovement(s:figure) - endif - endif -endfunction -" }}} -" Tex_table: {{{ -function! Tex_table(env) - if g:Tex_UseMenuWizard == 1 - let flto = input('Float to (htbp)? ') - let caption = input('Caption? ') - let center = input('Center (y/n)? ') - let label = input('Label? ') - if flto != '' - let flto ='['.flto."]\<cr>" - else - let flto = '' - endif - let ret='\begin{table}'.flto - if center == 'y' - let ret=ret."\\begin{center}\<cr>" - endif - let foo = '\begin{tabular}' - let pos = input('(Optional) Position (t b)? ') - if pos != '' - let foo = foo.'['.pos.']' - else - let foo = foo."\<cr>" - endif - let format = input("Format ( l r c p{width} | @{text} )? ") - if format == '' - let format = '<++>' - endif - let ret = ret.foo.'{'.format."}\<cr><++>\<cr>\\end{tabular}<++>\<cr>" - if center == 'y' - let ret=ret."\\end{center}\<cr>" - endif - if caption != '' - let ret=ret.'\caption{'.caption."}\<cr>" - endif - if label != '' - let ret=ret.'\label{tab:'.label."}\<cr>" - endif - let ret=ret.'\end{table}<++>' - return IMAP_PutTextWithMovement(ret) - else - return IMAP_PutTextWithMovement(s:table) - endif -endfunction -" }}} -" Tex_tabular: {{{ -function! Tex_tabular(env) - if g:Tex_UseMenuWizard == 1 - let pos = input('(Optional) Position (t b)? ') - let format = input("Format ( l r c p{width} | @{text} )? ") - if pos != '' - let pos = '['.pos.']' - endif - if format != '' - let format = '{'.format.'}' - endif - return IMAP_PutTextWithMovement('\begin{'.a:env.'}'.pos.format."\<cr> \<cr>\\end{".a:env.'}<++>') - else - return IMAP_PutTextWithMovement('\begin{'.a:env.'}[<+position+>]{<+format+>}'."\<cr><++>\<cr>\\end{".a:env.'}<++>') - endif -endfunction -" }}} -" Tex_eqnarray: {{{ -function! Tex_eqnarray(env) - if g:Tex_UseMenuWizard == 1 - if a:env !~ '\*' - let label = input('Label? ') - if label != '' - let arrlabel = '\label{'.label."}\<cr>" - else - let arrlabel = '' - endif - else - let arrlabel = '' - endif - else - if a:env !~ '\*' - let arrlabel = "\\label{<++>}\<cr>" - else - let arrlabel = "" - endif - endif - return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr><++>\<cr>".arrlabel."\\end{".a:env."}<++>") -endfunction -" }}} -" Tex_list: {{{ -function! Tex_list(env) - if g:Tex_UseMenuWizard == 1 - let label = input('Label (for \item)? ') - if label != '' - let label = '{'.label.'}' - let addcmd = input('Additional commands? ') - if addcmd != '' - let label = label . '{'.addcmd.'}' - endif - else - let label = '' - endif - return IMAP_PutTextWithMovement('\begin{list}'.label."\<cr>\\item \<cr>\\end{list}<++>") - else - return IMAP_PutTextWithMovement(s:list) - endif -endfunction -" }}} -" Tex_document: {{{ -function! Tex_document(env) - if g:Tex_UseMenuWizard == 1 - let dstyle = input('Document style? ') - let opts = input('(Optional) Options? ') - let foo = '\documentclass' - if opts == '' - let foo = foo.'{'.dstyle.'}' - else - let foo = foo.'['.opts.']'.'{'.dstyle.'}' - endif - return IMAP_PutTextWithMovement(foo."\<cr>\<cr>\\begin{document}\<cr><++>\<cr>\\end{document}") - else - return IMAP_PutTextWithMovement(s:document) - endif -endfunction -" }}} -" Tex_minipage: {{{ -function! Tex_minipage(env) - if g:Tex_UseMenuWizard == 1 - let foo = '\begin{minipage}' - let pos = input('(Optional) Position (t b)? ') - let width = input('Width? ') - if pos == '' - let foo = foo.'{'.width.'}' - else - let foo = foo.'['.pos.']{'.width.'}' - endif - return IMAP_PutTextWithMovement(foo."\<cr><++>\<cr>\\end{minipage}<++>") - else - return IMAP_PutTextWithMovement(s:minipage) - endif -endfunction -" }}} -" Tex_thebibliography: {{{ -function! Tex_thebibliography(env) - if g:Tex_UseMenuWizard == 1 - " AUC Tex: "Label for BibItem: 99" - let indent = input('Indent for BibItem? ') - let foo = '{'.indent.'}' - let biblabel = input('(Optional) Bibitem label? ') - let key = input('Add key? ') - let bar = '\bibitem' - if biblabel != '' - let bar = bar.'['.biblabel.']' - endif - let bar = bar.'{'.key.'}' - return IMAP_PutTextWithMovement('\begin{thebibliography}'.foo."\<cr>".bar." \<cr>\\end{thebibliography}<++>\<Up>") - else - return IMAP_PutTextWithMovement( - \ "\\begin{thebibliography}\<CR>". - \ "\\item[<+biblabel+>]{<+bibkey+>} <++>\<CR>". - \ "<++>\<CR>". - \ "\\end{thebibliography}<++>") - endif -endfunction -" }}} - -" ============================================================================== -" Contributions / suggestions from Carl Mueller (auctex.vim) -" ============================================================================== -" PromptForEnvironment: prompts for an environment {{{ -" Description: -function! PromptForEnvironment(ask) - return Tex_ChooseFromPrompt( - \ a:ask."\n" . - \ Tex_CreatePrompt(g:Tex_PromptedEnvironments, 2, ",") . - \ "\nEnter nae or number of environment :", - \ g:Tex_PromptedEnvironments, ",") -endfunction " }}} -" Tex_DoEnvironment: fast insertion of environments {{{ -" Description: -" The menus call this function with an argument (the name of the environment -" to insert). The maps call this without any arguments. In this case, it -" prompts for an environment to enter if the current line is empty. If -" called without arguments and there is a word on the current line, then use -" that as the name of a new environment. -function! Tex_DoEnvironment(...) - if a:0 < 1 - let env = matchstr(getline('.'), '^\s*\zs\w*\*\=\ze\s*$') - " If in current line is more than one word or in visual mode - " ignore contents of line and prompt for environment - if env == '' || (exists('s:isvisual') && s:isvisual == 'yes') - let env = PromptForEnvironment('Choose which environment to insert: ') - if env != '' - return Tex_PutEnvironment(env) - else - return '' - endif - else - " delete the word on the line into the blackhole register. - normal! 0"_D - return Tex_PutEnvironment(env) - endif - else - return Tex_PutEnvironment(a:1) - endif -endfunction " }}} -" Tex_PutEnvironment: calls various specialized functions {{{ -" Description: -" Based on input argument, it calls various specialized functions. -function! Tex_PutEnvironment(env) - if exists("s:isvisual") && s:isvisual == "yes" - let s:isvisual = 'no' - if a:env == '\[' - return VEnclose('', '', '\[', '\]') - elseif a:env == '$$' - return VEnclose('', '', '$$', '$$') - endif - return VEnclose('\begin{'.a:env.'}', '\end{'.a:env.'}', '\begin{'.a:env.'}', '\end{'.a:env.'}') - else - " The user can define something like - " let g:Tex_Env_theorem = "\\begin{theorem}\<CR><++>\<CR>\\end{theorem}" - " This will effectively over-write the default definition of the - " theorem environment which uses a \label. - if exists("b:Tex_Env_{'".a:env."'}") - return IMAP_PutTextWithMovement(b:Tex_Env_{a:env}) - elseif exists("g:Tex_Env_{'".a:env."'}") - return IMAP_PutTextWithMovement(g:Tex_Env_{a:env}) - elseif a:env =~ 'equation*\|eqnarray*\|theorem\|lemma\|equation\|eqnarray\|align\*\|align\>\|multline' - let g:aa = a:env - return Tex_eqnarray(a:env) - elseif a:env =~ "enumerate\\|itemize\\|theindex\\|trivlist" - return Tex_itemize(a:env) - elseif a:env =~ "table\\|table*" - return Tex_table(a:env) - elseif a:env =~ "tabular\\|tabular*\\|array\\|array*" - return Tex_tabular(a:env) - elseif exists('*Tex_'.a:env) - exe 'return Tex_'.a:env.'(a:env)' - elseif a:env == '$$' - return IMAP_PutTextWithMovement('$$<++>$$') - elseif a:env == '\[' - return IMAP_PutTextWithMovement("\\[\<CR><++>\<CR>\\]<++>") - else - " Look in supported packages if exists template for environment - " given in the line - if exists('g:Tex_package_supported') && g:Tex_package_supported != '' - let i = 1 - while Tex_Strntok(g:Tex_package_supported, ',', i) != '' - let checkpack = Tex_Strntok(g:Tex_package_supported, ',', i) - if g:TeX_package_{checkpack} =~ 'e..:'.a:env - if a:env =~ '*' - " Don't allow * to be treated as wildcard - let aenv = substitute(a:env, '*', '\\*', '') - else - let aenv = a:env - endif - let envcommand = matchstr(g:TeX_package_{checkpack}, '\zse..:'.aenv.'[^,]\{-}\ze,') - return Tex_ProcessPackageCommand(envcommand) - endif - let i = i + 1 - endwhile - endif - " If nothing before us managed to create an environment, then just - " create a bare-bones environment from the name. - return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr><++>\<cr>\\end{".a:env."}<++>") - endif -endfunction " }}} -" Mapping the <F5> key to insert/prompt for an environment/package {{{ -" and <S-F5> to prompt/replace an environment -" -" g:Tex_PromptedEnvironments is a variable containing a comma seperated list -" of environments. This list defines the prompt which latex-suite sets up when -" the user presses <F5> on an empty line. -" -" Leaving this empty is equivalent to disabling the feature. -if g:Tex_PromptedEnvironments != '' - - let b:DoubleDollars = 0 - - " Provide only <plug>s here. main.vim will create the actual maps. - inoremap <silent> <Plug>Tex_FastEnvironmentInsert <C-r>=Tex_FastEnvironmentInsert("no")<cr> - nnoremap <silent> <Plug>Tex_FastEnvironmentInsert i<C-r>=Tex_FastEnvironmentInsert("no")<cr> - vnoremap <silent> <Plug>Tex_FastEnvironmentInsert <C-\><C-N>:call Tex_FastEnvironmentInsert("yes")<CR> - inoremap <silent> <Plug>Tex_FastEnvironmentChange <C-O>:call Tex_ChangeEnvironments()<CR> - nnoremap <silent> <Plug>Tex_FastEnvironmentChange :call Tex_ChangeEnvironments()<CR> - - " Tex_FastEnvironmentInsert: maps <F5> to prompt for env and insert it " {{{ - " Description: - " This function calculates whether we are in the preamble. If we are - " then inserts a \usepackage line by either reading in a word from the - " current line or prompting to type in one. If not in the preamble, then - " inserts a environment template either by reading in a word from the - " current line or prompting the user to choose one. - " - function! Tex_FastEnvironmentInsert(isvisual) - - let start_line = line('.') - let pos = line('.').' | normal! '.virtcol('.').'|' - let s:isvisual = a:isvisual - - " decide if we are in the preamble of the document. If we are then - " insert a package, otherwise insert an environment. - " - if search('\\documentclass', 'bW') && search('\\begin{document}') - - " If there is a \documentclass line and a \begin{document} line in - " the file, then a part of the file is the preamble. - - " search for where the document begins. - let begin_line = search('\\begin{document}') - " if the document begins after where we are presently, then we are - " in the preamble. - if start_line < begin_line - " return to our original location and insert a package - " statement. - exe pos - return Tex_package_from_line() - else - " we are after the preamble. insert an environment. - exe pos - return Tex_DoEnvironment() - endif - - elseif search('\\documentclass') - " if there is only a \documentclass but no \begin{document}, then - " the entire file is a preamble. Put a package. - - exe pos - return Tex_package_from_line() - - else - " no \documentclass, put an environment. - - exe pos - return Tex_DoEnvironment() - - endif - - endfunction - - " }}} - " Tex_package_from_line: puts a \usepackage line in the current line. " {{{ - " Description: - " - function! Tex_package_from_line() - " Function Tex_PutPackage is defined in packages.vim - " Ignores <F5> in Visual mode - if s:isvisual == "yes" - return 0 - else - let l = getline(".") - let pack = matchstr(l, '^\s*\zs.*') - normal! 0"_D - return Tex_pack_one(pack) - endif - endfunction - - " }}} - " Tex_ChangeEnvironments: calls Change() to change the environment {{{ - " Description: - " Finds out which environment the cursor is positioned in and changes - " that to the chosen new environment. This function knows the changes - " which need to be made to change one env to another and calls - " Change() with the info. - " - function! Tex_ChangeEnvironments() - - let env_line = searchpair('$$\|\\[\|begin{', '', '$$\|\\]\|end{', "bn") - - if env_line != 0 - if getline(env_line) !~ 'begin{' - let env_name = '[' - else - let env_name = matchstr(getline(env_line), 'begin{\zs.\{-}\ze}') - endif - endif - - if !exists('env_name') - echomsg "You are not inside environment" - return 0 - endif - - exe 'echomsg "You are within a '.env_name.' environment."' - let change_env = PromptForEnvironment('What do you want to change it to? ') - - if change_env == 'eqnarray' - call <SID>Change('eqnarray', 1, '', 1) - elseif change_env == 'eqnarray*' - call <SID>Change('eqnarray*', 0, '\\nonumber', 0) - elseif change_env == 'align' - call <SID>Change('align', 1, '', 1) - elseif change_env == 'align*' - call <SID>Change('align*', 0, '\\nonumber', 0) - elseif change_env == 'equation*' - call <SID>Change('equation*', 0, '&\|\\lefteqn{\|\\nonumber\|\\\\', 0) - elseif change_env == '' - return 0 - else - call <SID>Change(change_env, 0, '', '') - return 0 - endif - - endfunction - - " }}} - " Change: changes the current env to the new env {{{ - " Description: - " This function needs to know the changes which need to be made while - " going from an old environment to a new one. This info, it gets from - " Tex_ChangeEnvironments - " - " env : name of the new environment. - " label : if 1, then insert a \label at the end of the environment. - " otherwise, delete any \label line found. - " delete : a pattern which is to be deleted from the original environment. - " for example, going to a eqnarray* environment means we need to - " delete \label's. - " putInNonumber : whether we need to put a \nonumber before the end of the - " environment. - function! s:Change(env, label, delete, putInNonumber) - - let start_line = line('.') - let start_col = virtcol('.') - - if a:env == '[' - if b:DoubleDollars == 0 - let first = '\\[' - let second = '\\]' - else - let first = '$$' - let second = '$$' - endif - else - let first = '\\begin{' . a:env . '}' - let second = '\\end{' . a:env . '}' - endif - - if b:DoubleDollars == 0 - let bottom = searchpair('\\\[\|\\begin{','','\\\]\|\\end{','') - s/\\\]\|\\end{.\{-}}/\=second/ - let top = searchpair('\\\[\|\\begin{','','\\\]\|\\end{','b') - s/\\\[\|\\begin{.\{-}}/\=first/ - else - let bottom = search('\$\$\|\\end{') - s/\$\$\|\\end{.\{-}}/\=second/ - let top = search('\$\$\|\\begin{','b') - s/\$\$\|\\begin{.\{-}}/\=first/ - end - if a:delete != '' - exe 'silent '. top . "," . bottom . 's/' . a:delete . '//e' - endif - - if a:putInNonumber == 1 - exe top - call search('\\end\|\\\\') - if line('.') != bottom - exe '.+1,' . bottom . 's/\\\\/\\nonumber\\\\/e' - exe (bottom-1) . 's/\s*$/ \\nonumber/' - endif - endif - - if a:label == 1 - exe top - if search("\\label", "W") > bottom - exe top - let local_label = input('Label? ') - if local_label != '' - put = '\label{'.local_label.'}' - endif - normal $ - endif - else - exe 'silent '.top . ',' . bottom . ' g/\\label/delete' - endif - - if exists('local_label') && local_label != '' - exe start_line + 1.' | normal! '.start_col.'|' - else - exe start_line.' | normal! '.start_col.'|' - endif - endfunction " }}} - -endif - -" }}} -" Map <S-F1> through <S-F4> to insert environments {{{ -if g:Tex_HotKeyMappings != '' - - " SetUpHotKeys: maps <F1> through <F4> to insert environments - " Description: - function! <SID>SetUpHotKeys() - let i = 1 - let envname = Tex_Strntok(g:Tex_HotKeyMappings, ',', i) - while envname != '' - - exec 'inoremap <silent> <buffer> <S-F'.i.'> <C-r>=Tex_PutEnvironment("'.envname.'")<CR>' - - let i = i + 1 - let envname = Tex_Strntok(g:Tex_HotKeyMappings, ',', i) - - endwhile - - endfunction - -endif - -" }}} -" Tex_SetFastEnvironmentMaps: function for setting up the <F5> and <S-F1>-<S-F4> keys {{{ -" Description: This function is made public so it can be called by the -" SetTeXOptions() function in main.vim -function! Tex_SetFastEnvironmentMaps() - if g:Tex_PromptedEnvironments != '' - call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'i', '<silent> <buffer>') - call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'n', '<silent> <buffer>') - call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'v', '<silent> <buffer>') - call Tex_MakeMap("<S-F5>", "<Plug>Tex_FastEnvironmentChange", 'i', '<silent> <buffer>') - call Tex_MakeMap("<S-F5>", "<Plug>Tex_FastEnvironmentChange", 'n', '<silent> <buffer>') - endif - if g:Tex_HotKeyMappings != '' - call s:SetUpHotKeys() - endif -endfunction " }}} - -" ============================================================================== -" Contributions / Tex_InsertItem() from Johannes Tanzler -" ============================================================================== -" Tex_GetCurrentEnv: gets the current environment in which the cursor lies {{{ -" Description: handles cases such as: -" -" \begin{itemize} -" \item first item -" \item second item -" \begin{description} -" \item first desc -" \item second -" % Tex_GetCurrentEnv will return "description" when called from here -" \end{description} -" \item third item -" % Tex_GetCurrentEnv will return "itemize" when called from here -" \end{itemize} -" % Tex_GetCurrentEnv will return "" when called from here -" -" Author: Alan Schmitt -function! Tex_GetCurrentEnv() - let pos = line('.').' | normal! '.virtcol('.').'|' - let i = 0 - while 1 - let env_line = search('^[^%]*\\\%(begin\|end\){', 'bW') - if env_line == 0 - " we reached the beginning of the file, so we return the empty string - exe pos - return '' - endif - if match(getline(env_line), '^[^%]*\\begin{') == -1 - " we found a \\end, so we keep searching - let i = i + 1 - continue - else - " we found a \\begin which has not been \\end'ed. we are done. - if i == 0 - let env = matchstr(getline(env_line), '\\begin{\zs.\{-}\ze}') - exe pos - return env - else - " this \\begin closes a \\end, continue searching. - let i = i - 1 - continue - endif - endif - endwhile -endfunction -" }}} -" Tex_InsertItem: insert \item into a list {{{ -" Description: Find last \begin line, extract env name, return to the start -" position and insert proper \item, depending on env name. -" Env names are stored in g: variables it can be used by -" package files. - -TexLet g:Tex_ItemStyle_itemize = '\item ' -TexLet g:Tex_ItemStyle_enumerate = '\item ' -TexLet g:Tex_ItemStyle_theindex = '\item ' -TexLet g:Tex_ItemStyle_thebibliography = '\item[<+biblabel+>]{<+bibkey+>} <++>' -TexLet g:Tex_ItemStyle_description = '\item[<+label+>] <++>' - -function! Tex_InsertItem() - " Get current enclosing environment - let env = Tex_GetCurrentEnv() - - if exists('g:Tex_ItemStyle_'.env) - return IMAP_PutTextWithMovement(g:Tex_ItemStyle_{env}) - else - return '' - endif -endfunction -" }}} -" Tex_SetItemMaps: sets the \item inserting maps for current buffer {{{ -" Description: - -inoremap <script> <silent> <Plug>Tex_InsertItemOnThisLine <Esc>a<C-r>=Tex_InsertItem()<CR> -inoremap <script> <silent> <Plug>Tex_InsertItemOnNextLine <ESC>o<C-R>=Tex_InsertItem()<CR> - -function! Tex_SetItemMaps() - if !hasmapto("<Plug>Tex_InsertItem", "i") - imap <buffer> <M-i> <Plug>Tex_InsertItemOnThisLine - endif - if !hasmapto("<Plug>Tex_InsertItemOnNextLine", "i") - imap <buffer> <C-CR> <Plug>Tex_InsertItemOnNextLine - endif -endfunction " }}} - -" ============================================================================== -" Implementation of Fast Environment commands for LaTeX commands -" ============================================================================== -" Define certain commonly used command definitions {{{ - -TexLet g:Tex_Com_{'newtheorem'} = '\newtheorem{<+name+>}{<+caption+>}[<+within+>]' -TexLet g:Tex_Com_{'frac'} = '\frac{<+n+>}{<+d+>}<++>' - -" }}} -" PromptForCommand: prompts for a command {{{ -" Description: -function! PromptForCommand(ask) - let common_com_prompt = - \ Tex_CreatePrompt(g:Tex_PromptedCommands, 2, ',') . "\n" . - \ "Enter number or command name :" - - let inp = input(a:ask."\n".common_com_prompt) - if inp =~ '^[0-9]\+$' - let com = Tex_Strntok(g:Tex_PromptedCommands, ',', inp) - else - let com = inp - endif - - return com -endfunction " }}} -" Tex_DoCommand: fast insertion of commands {{{ -" Description: -" -function! Tex_DoCommand(isvisual) - " If the current line is empty or if a visual selection has been made, - " prompt for a new environment. - if getline('.') == '' || a:isvisual == 'yes' - let com = PromptForCommand('Choose a command to insert: ') - if com != '' - return Tex_PutCommand(com, a:isvisual) - else - return '' - endif - else - " We want to find out the word under the cursor without issuing - " any movement commands. - let presline = getline('.') - let c = col('.') - - let wordbef = matchstr(strpart(presline, 0, c-1), '\k\+\*\?$') - let wordaft = matchstr(strpart(presline, c-1), '^\k\+\*\?') - - let word = wordbef . wordaft - call Tex_Debug("Tex_DoCommand: wordbef = [".wordbef."], wordaft = [".wordaft."], word = [".word."]", 'env') - - " We use \<Del> instead of \<Bs> because \<Bs> does not work - " unless bs=2 - if word != '' - return substitute(wordbef, '.', "\<Left>", 'g') - \ . substitute(word, '.', "\<Del>", 'g') - \ . Tex_PutCommand(word, a:isvisual) - else - let cmd = PromptForCommand('Choose a command to insert: ') - if cmd != '' - return Tex_PutCommand(cmd, a:isvisual) - else - return '' - endif - endif - endif -endfunction " }}} -" Tex_PutCommand: calls various specialized functions {{{ -" Description: -" Based on input argument, it calls various specialized functions. -function! Tex_PutCommand(com, isvisual) - if a:isvisual == "yes" - if a:com == '$' - return VEnclose('$', '$', '$', '$') - elseif a:com == '\\(' - return VEnclose('\\(', '\\)', '\\(', '\\)') - else - return VEnclose("\\".a:com.'{', '}', "\\".a:com.'{', '}') - endif - else - if exists('b:Tex_Com_{"'.a:com.'"}') - return IMAP_PutTextWithMovement(b:Tex_Com_{a:com}) - elseif exists('g:Tex_Com_{"'.a:com.'"}') - return IMAP_PutTextWithMovement(g:Tex_Com_{a:com}) - elseif a:com == '$' - return IMAP_PutTextWithMovement('$<++>$') - else - return IMAP_PutTextWithMovement("\\".a:com.'{<++>}<++>') - endif - endif -endfunction " }}} -" Mapping the <F7> key to prompt/insert for command {{{ -" and <S-F7> to prompt/replace command -" -" g:Tex_PromptedCommands is a variable containing a comma seperated list -" of commands. -" -" Leaving this empty is equivalent to disabling the feature. -if g:Tex_PromptedCommands != '' - - let b:DoubleDollars = 0 - - inoremap <silent> <Plug>Tex_FastCommandInsert <C-r>=Tex_DoCommand('no')<cr> - nnoremap <silent> <Plug>Tex_FastCommandInsert i<C-r>=Tex_DoCommand('no')<cr> - vnoremap <silent> <Plug>Tex_FastCommandInsert <C-\><C-N>:call Tex_DoCommand('yes')<CR> - - inoremap <silent> <Plug>Tex_FastCommandChange <C-O>:call Tex_ChangeCommand('no')<CR> - nnoremap <silent> <Plug>Tex_FastCommandChange :call Tex_ChangeCommand('no')<CR> - - " Tex_ChangeCommand: calls ChangeCommand() to change the environment {{{ - " Description: - " Finds out which environment the cursor is positioned in and changes - " that to the chosen new environment. This function knows the changes - " which need to be made to change one env to another and calls - " ChangeCommand() with the info. - " - function! Tex_ChangeCommand(isvisual) - - let pos_com = line('.').' | normal! '.virtcol('.').'|' - - let com_line = searchpair('\\\k\{-}{', '', '}', 'b') - - if com_line != 0 - normal l - let com_name = expand('<cword>') - endif - - if !exists('com_name') - echomsg "You are not inside command" - exe pos_com - return 0 - endif - - exe 'echomsg "You are within a '.com_name.' command."' - let change_com = PromptForCommand('Do you want to change it to (number or name)? ') - - if change_com == '' - exe pos_com - return 0 - else - call <SID>ChangeCommand(change_com) - exe pos_com - return 0 - endif - - endfunction - - " }}} - " ChangeCommand: Changes current command according to prompt menu {{{ - " Description: - " - function! s:ChangeCommand(newcom) - - exe 'normal! ct{'.a:newcom."\<Esc>" - - endfunction - " }}} - -endif - -" }}} -" Tex_SetFastCommandMaps: function for setting up the <F7> keys {{{ -" Description: This function is made public so it can be called by the -" SetTeXOptions() function in main.vim -function! Tex_SetFastCommandMaps() - if g:Tex_PromptedCommands != '' - if !hasmapto('<Plug>Tex_FastCommandInsert', 'i') - imap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert - endif - if !hasmapto('<Plug>Tex_FastCommandInsert', 'n') - nmap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert - endif - if !hasmapto('<Plug>Tex_FastCommandChange', 'i') - imap <silent> <buffer> <S-F7> <Plug>Tex_FastCommandChange - endif - if !hasmapto('<Plug>Tex_FastCommandChange', 'n') - nmap <silent> <buffer> <S-F7> <Plug>Tex_FastCommandChange - endif - if !hasmapto('<Plug>Tex_FastCommandInsert', 'v') - vmap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert - endif - endif -endfunction " }}} - -" SetEnvMacrosOptions: sets mappings for buffers {{{ -" " Description: -function! <SID>SetEnvMacrosOptions() - if exists('b:doneTexEnvMaps') - return - endif - let b:doneTexEnvMaps = 1 - if g:Tex_PromptedEnvironments != '' || g:Tex_HotKeyMappings != '' - call Tex_SetFastEnvironmentMaps() - endif - if g:Tex_PromptedCommands != '' - call Tex_SetFastCommandMaps() - endif - call Tex_SetItemMaps() -endfunction " }}} -" Catch the Filetype event so we set maps for each buffer {{{ -augroup LatexSuite - au LatexSuite User LatexSuiteFileType - \ call Tex_Debug('envmacros.vim: Catching LatexSuiteFileType event', 'env') | - \ call s:SetEnvMacrosOptions() -augroup END -" }}} - -" this statement has to be at the end. -let s:doneOnce = 1 - -" vim:fdm=marker:nowrap:noet:ff=unix |