diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2013-09-13 17:28:18 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2013-09-13 17:28:18 +0200 | 
| commit | 303837b5be695ea56a45c9e508abf3dbaefa7ca0 (patch) | |
| tree | 1aa2b6583bcdd6531ec958a124929789c2dea40a /ftplugin/latex-suite/envmacros.vim | |
| parent | 3e9a36e388dc9850747c7ba8e1e247245dc0eec1 (diff) | |
| download | vim-polyglot-303837b5be695ea56a45c9e508abf3dbaefa7ca0.tar.gz vim-polyglot-303837b5be695ea56a45c9e508abf3dbaefa7ca0.zip  | |
Add latex support
Diffstat (limited to 'ftplugin/latex-suite/envmacros.vim')
| -rw-r--r-- | ftplugin/latex-suite/envmacros.vim | 1166 | 
1 files changed, 1166 insertions, 0 deletions
diff --git a/ftplugin/latex-suite/envmacros.vim b/ftplugin/latex-suite/envmacros.vim new file mode 100644 index 00000000..edf97f79 --- /dev/null +++ b/ftplugin/latex-suite/envmacros.vim @@ -0,0 +1,1166 @@ +"============================================================================= +" 	     File: envmacros.vim +"      Author: Mikolaj Machowski +"     Created: Tue Apr 23 08:00 PM 2002 PST +"  CVS Header: $Id: envmacros.vim 1101 2010-01-28 23:30:56Z tmaas $ +"  Description: mappings/menus for environments.  +"============================================================================= + +if !g:Tex_EnvironmentMaps && !g:Tex_EnvironmentMenus +	finish +endif + +exe 'so '.fnameescape(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>\\centering\<cr>\\psfig{figure=<+eps file+>}\<cr>\\caption{<+caption text+>}\<cr>\\label{fig:<+label+>}\<cr>\\end{figure}<++>" +let s:figure_graphicx =    "\\begin{figure}[<+htpb+>]\<cr>\\centering\<cr>\\includegraphics{<+file+>}\<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*}" + +" }}} +" 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('ESP', '&Structure.', 'sloppypar') +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>". +			\ "\\bibitem[<+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 name 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 +		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 = Tex_GetPos() +		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. +				call Tex_SetPos(pos) +				return Tex_package_from_line() +			else +				" we are after the preamble. insert an environment. +				call Tex_SetPos(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. + +			call Tex_SetPos(pos) +			return Tex_package_from_line() + +		else +			" no \documentclass, put an environment. + +			call Tex_SetPos(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, '', env_name =~ '\*$') +		elseif change_env == 'align' +			call <SID>Change('align', 1, '', env_name =~ '\*$') +		elseif change_env == 'eqnarray*' +			call <SID>Change('eqnarray*', 0, '\\nonumber', 0) +		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 = Tex_GetPos() +	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 +			call Tex_SetPos(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}') +				call Tex_SetPos(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 = '\bibitem[<+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 {{{ + +inoremap <script> <silent> <Plug>Tex_InsertItemOnThisLine <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_InsertItemOnThisLine", "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 = Tex_GetPos() + +		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" +			call Tex_SetPos(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 == '' +			call Tex_SetPos(pos_com) +			return 0 +		else +			call <SID>ChangeCommand(change_com) +			call Tex_SetPos(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  | 
