Thread: [Vim-latex-cvs] vimfiles/ftplugin/latex-suite packages.vim,1.16,1.16.2.1
Brought to you by:
srinathava,
tmaas
From: <sri...@us...> - 2002-12-22 11:02:11
|
Update of /cvsroot/vim-latex/vimfiles/ftplugin/latex-suite In directory sc8-pr-cvs1:/tmp/cvs-serv11026 Modified Files: Tag: b-newpackages packages.vim Log Message: . This is a reworking of most of packages.vim in an attempt to simplify it. I noticed that there was a lot of duplicated effort in a lot of functions adn that the placeholder settings were not respected in a lot of places by using things such as normal! 'i\usepackage{... instead of return IMAP_PutText... . Created a new function Tex_MakeSubMenu which takes a comma seperated list and creates a 'bunched' menu, i.e breaks up the items into groups of 20. . made Tex_pack_supp_menu and another function use this function. NOTE: This commit is on a new branch called b-newpackages rooted at the head of the main branch as of tonight, not the main branch. The main branch packages.vim has not changed. Index: packages.vim =================================================================== RCS file: /cvsroot/vim-latex/vimfiles/ftplugin/latex-suite/packages.vim,v retrieving revision 1.16 retrieving revision 1.16.2.1 diff -C2 -d -r1.16 -r1.16.2.1 *** packages.vim 22 Dec 2002 03:00:47 -0000 1.16 --- packages.vim 22 Dec 2002 11:02:05 -0000 1.16.2.1 *************** *** 3,7 **** " Author: Mikolaj Machowski " Created: Tue Apr 23 06:00 PM 2002 PST ! " Last Change: Thu Dec 19 03:00 AM 2002 PST " " Description: handling packages from within vim --- 3,7 ---- " Author: Mikolaj Machowski " Created: Tue Apr 23 06:00 PM 2002 PST ! " Last Change: Sun Dec 22 02:00 AM 2002 PST " " Description: handling packages from within vim *************** *** 9,16 **** " avoid reinclusion. ! if !g:Tex_PackagesMenu || exists('s:doneOnce') ! finish ! endif ! let s:doneOnce = 1 " Level of Packages menu: --- 9,18 ---- " avoid reinclusion. ! " TODO: This is no longer true. A package does more things than just make ! " menus. ! " if !g:Tex_PackagesMenu || exists('s:doneOnce') ! " finish ! " endif ! " let s:doneOnce = 1 " Level of Packages menu: *************** *** 24,27 **** --- 26,32 ---- com! -nargs=0 TPackageUpdateAll :silent! call Tex_pack_updateall() + imap <silent> <plug> <Nop> + nmap <silent> <plug> i + let g:Tex_package_supported = '' let g:Tex_package_detected = '' *************** *** 33,36 **** --- 38,42 ---- exe 'source ' . s:path . '/packages/' . a:package if has("gui_running") + " TODO: Didn't we hav an option for the menus here... call Tex_pack(a:package) endif *************** *** 41,44 **** --- 47,52 ---- if !has("gui_running") && filereadable(s:path.'/dictionaries/'.a:package) let g:Tex_package_supported = g:Tex_package_supported.','.a:package + " TODO: This means that the list contains dupes if the package and + " the dictionary both exist... endif endif *************** *** 94,97 **** --- 102,109 ---- endif else + " TODO: What does this while loop do? + " Are we actually searching for things like + " s:path/packages/1 + " etc?!! let i = a:0 let omega = 1 *************** *** 117,120 **** --- 129,134 ---- let cwd = getcwd() let fname = Tex_GetMainFileName() + " TODO: Change Tex_GetMainFileName to return file name with extension. + " (maybe in the presence of an optional argument) if glob(fname.'.tex') != '' let fname = fname.'.tex' *************** *** 178,204 **** " groups the packages thus found into groups of 20... function! Tex_pack_supp_menu() ! let g:suplist = glob(s:path."/packages/*") ! let g:suplist = substitute(g:suplist, "\n", ',', 'g') ! let nu_s_list = GetListCount(g:suplist) ! if nu_s_list <= s:menu_div ! let SupMenu = '' ! let NotSupMenu = 1 ! endif ! let basic_nu_s_list = 0 ! let OptMenu = '' ! while basic_nu_s_list < nu_s_list ! let s_item = GetListItem(g:suplist, basic_nu_s_list) ! let fptr = fnamemodify(s_item, ':p:t:r') ! let fpt = fnamemodify(s_item, ':p:t') ! if !exists('NotSupMenu') && basic_nu_s_list % s:menu_div == 0 ! let s_index = strpart(fptr, 0, 5) ! if strlen(s_item) > 5 ! let OptMenu = '.'.s_index.'\.\.\.\ -' ! else ! let OptMenu = '.'.s_index.'\ -' ! endif endif ! exe 'amenu '.s:p_menu_lev.'&Supported'.OptMenu.'.&'.fptr." :call Tex_pack_supp('".fpt."')<CR>" ! let basic_nu_s_list = basic_nu_s_list + 1 endwhile endfunction --- 192,256 ---- " groups the packages thus found into groups of 20... function! Tex_pack_supp_menu() ! ! let pwd = getcwd() ! exec 'cd '.s:path.'/packages' ! let suplist = glob("*") ! exec 'cd '.pwd ! ! let suplist = substitute(suplist, "\n", ',', 'g').',' ! ! call Tex_MakeSubmenu(suplist, g:Tex_PackagesMenuLocation.'Supported.', ! \ '<plug><C-r>=Tex_pack_supp("', '")<CR>') ! endfunction ! ! " }}} ! ! " Tex_MakeSubmenu: makes a submenu given a list of items {{{ ! " Description: ! function! Tex_MakeSubmenu(menuList, MainMenuName, HandlerFuncLHS, HandlerFuncRHS, ...) ! ! let extractPattern = '' ! if a:0 > 0 ! let extractPattern = a:1 ! endif ! let menuList = a:menuList ! if menuList !~ ',$' ! let menuList = menuList.',' ! endif ! let doneMenuSubmenu = 0 ! ! while menuList != '' ! ! " Extract upto s:menu_div menus at once. ! let menuBunch = matchstr(menuList, '\v(.{-},){,'.s:menu_div.'}') ! " echomsg 'bunch = '.menuBunch ! ! " The remaining menus go into the list. ! let menuList = strpart(menuList, strlen(menuBunch)) ! ! let submenu = '' ! " If there is something remaining, then we got s:menu_div items. ! " therefore put these menu items into a submenu. ! if strlen(menuList) || doneMenuSubmenu ! let firstMenu = matchstr(menuBunch, '\v^.{-}\ze,') ! let lastMenu = matchstr(menuBunch, '\v[^,]{-}\ze,$') ! ! let submenu = substitute(firstMenu, extractPattern, '\1', ''). ! \ '\ -\ '.substitute(lastMenu, extractPattern, '\1', '').'.' ! ! let doneMenuSubmenu = 1 endif ! ! " Now for each menu create a menu under the submenu ! let i = 1 ! let menuName = Tex_Strntok(menuBunch, ',', i) ! while menuName != '' ! let menuItem = substitute(menuName, extractPattern, '\1', '') ! execute 'amenu '.a:MainMenuName.submenu.menuItem ! \ ' '.a:HandlerFuncLHS.menuName.a:HandlerFuncRHS ! ! let i = i + 1 ! let menuName = Tex_Strntok(menuBunch, ',', i) ! endwhile endwhile endfunction *************** *** 209,353 **** let basic_nu_p_list = '' let nu_p_list = '' - let g:p_file = s:path . '/packages/' . a:pack - if filereadable(g:p_file) - "exe 'source ' . g:p_file - exe 'let g:p_list = g:TeX_package_' . a:pack - exe 'let g:p_o_list = g:TeX_package_option_' . a:pack ! " Creating package.Option menu {{{ ! if exists('g:p_o_list') && g:p_o_list != '' ! let nu_p_o_list = GetListCount(g:p_o_list) ! if nu_p_o_list <= s:menu_div ! let OptMenu = '' ! let NotOptMenu = 1 ! endif ! if nu_p_o_list == 1 ! let p_o_delimiter = '' ! else ! let p_o_delimiter = ',' ! endif ! let basic_nu_p_o_list = 0 ! let o_loop_nu = 0 ! while basic_nu_p_o_list < nu_p_o_list ! let p_o_item = GetListItem(g:p_o_list, basic_nu_p_o_list) ! let p_o_item_def = strpart(p_o_item, 0, 3) ! let p_o_item_name = substitute(p_o_item, '^...:', '', '') ! if !exists('NotOptMenu') && (o_loop_nu % s:menu_div == 0 || p_o_item_def == 'sbr') ! if p_o_item_def == 'sbr' ! let OptMenu = '.&'.p_o_item_name ! let o_loop_nu = 1 ! let basic_nu_p_o_list = basic_nu_p_o_list + 1 ! let p_o_item = GetListItem(g:p_o_list, basic_nu_p_o_list) ! else ! let ost_index = strpart(p_o_item_name, 0, 4) ! if strlen(p_o_item_name) > 5 ! let OptMenu = '.'.ost_index.'\.\.\.\ -' ! else ! let OptMenu = '.'.ost_index.'\ -' ! endif ! endif ! endif ! let l_m_p_o_item = '&'.substitute(p_o_item, '<++>', '', '') ! let p_o_end = p_o_item[strlen(p_o_item) - 1] ! if p_o_end !~ "[a-zA-Z}]" ! let r_m_p_o_item = "<plug><C-r>=IMAP_PutTextWithMovement('".p_o_item.'<++>'.p_o_delimiter."<++>')<cr>" ! elseif p_o_end == '}' ! let r_m_p_o_item = "<plug><C-r>=IMAP_PutTextWithMovement('".p_o_item.p_o_delimiter."<++>')<cr>" ! else ! let r_m_p_o_item = '<plug>'.p_o_item.p_o_delimiter ! endif ! exe 'amenu '.s:p_menu_lev.'&'.a:pack.'.&Options'.OptMenu.'.'.l_m_p_o_item.' '.r_m_p_o_item ! let basic_nu_p_o_list = basic_nu_p_o_list + 1 ! let o_loop_nu = o_loop_nu + 1 ! endwhile ! endif " }}} ! " Creating package.Command menu {{{ ! let nu_p_list = GetListCount(g:p_list) ! if nu_p_list <= s:menu_div ! let ComMenu = '' ! let NotComMenu = 1 endif ! let basic_nu_p_list = 0 ! let loop_nu = 0 ! while basic_nu_p_list < nu_p_list ! let p_item = GetListItem(g:p_list, basic_nu_p_list) ! let p_item_def = strpart(p_item, 0, 3) ! let p_item_name = substitute(p_item, '^...:', '', '') ! if !exists('NotComMenu') && p_item_def == 'sbr' ! let ComMenu = '.&'.p_item_name ! let loop_nu = 1 ! let basic_nu_p_list = basic_nu_p_list + 1 ! let p_item = GetListItem(g:p_list, basic_nu_p_list) ! let p_item_def = strpart(p_item, 0, 3) ! let p_item_name = substitute(p_item, '^...:', '', '') ! endif ! " testing command type {{{ ! if p_item_def == 'bra' ! let com_type = '{}' ! let l_m_item = '\\&'.p_item_name.'{}' ! let r_m_item = "<plug><C-r>=IMAP_PutTextWithMovement('\\".p_item_name."{<++>}<++>')<cr>" ! elseif p_item_def == 'brs' ! let com_type = '{}' ! let l_m_item = '\\&'.substitute(p_item_name, "[<++><++>]", '', 'g') ! let r_m_item = "<plug><C-r>=IMAP_PutTextWithMovement('\\".p_item_name."<++>')<cr>" ! elseif p_item_def == 'brd' ! let com_type = '{}{}' ! let l_m_item = '\\&'.p_item_name.'{}{}' ! let r_m_item = "<plug><C-r>=IMAP_PutTextWithMovement('\\".p_item_name."{<++>}{<++>}<++>')<cr>" ! elseif p_item_def == 'sep' ! let com_type = '' ! let l_m_item = '-packsep'.basic_nu_p_list.'-' ! let r_m_item = ':' ! elseif p_item_def == 'env' ! let com_type = '(E)' ! let l_m_item = '&'.p_item_name.'(E)' ! let r_m_item = '<plug>\begin{'.p_item_name.'}<cr> <cr>\end{'.p_item_name.'}<++><Up><Left>' ! elseif p_item_def == 'ens' ! let com_type = '(E)' ! let p_env_spec = substitute(p_item_name, '.*:', '', '') ! let p_env_name = matchstr(p_item_name, '^[^:]*') ! let l_m_item = '&'.p_env_name.'(E)' ! let r_m_item = '<plug>\begin{'.p_env_name.'}'.p_env_spec.'<cr><++><cr>\end{'.p_env_name.'}<++><Up><Up><C-j>' ! elseif p_item_def == 'eno' ! let com_type = '(E)' ! let l_m_item = '&'.p_item_name.'(E)' ! let r_m_item = '<plug>\begin[<++>]{'.p_item_name.'}<cr><++><cr>\end{'.p_item_name.'}<++><Up><Up><C-j>' ! elseif p_item_def == 'nor' ! let com_type = "\\\\'" ! let l_m_item = '\\&'.p_item_name."'" ! let r_m_item = "<plug>\\".p_item_name.' ' ! elseif p_item_def == 'noo' ! let com_type = '\\[]' ! let l_m_item = '\\&'.p_item_name.'[]' ! let r_m_item = "<plug><C-r>=IMAP_PutTextWithMovement('\\".p_item_name."[<++>]<++>')<cr>" ! elseif p_item_def == 'nob' ! let com_type = '[]{}' ! let l_m_item = '\\&'.p_item_name.'[]{}' ! let r_m_item = "<plug><C-r>=IMAP_PutTextWithMovement('\\".p_item_name."[<++>]{<++>}<++>')<cr>" ! elseif p_item_def == 'pla' ! let com_type = '(p)' ! let l_m_item = '&'.p_item_name."'" ! let r_m_item = '<plug>'.p_item_name.' ' ! elseif p_item_def == 'spe' ! let com_type = '(s)' ! let l_m_item = '&'.p_item_name ! let r_m_item = '<plug>'.p_item_name else ! let com_type = '\\' ! let l_m_item = '\\&'.p_item_name ! let r_m_item = "<plug>\\".p_item_name ! endif " }}} ! if !exists('NotComMenu') && loop_nu % s:menu_div == 0 ! let st_index = strpart(p_item_name, 0, 4) ! if strlen(p_item_name) > 4 ! let ComMenu = '.'.com_type.'&'.st_index.'\.\.\.\ -' ! else ! let ComMenu = '.'.com_type.'&'.st_index.'\ -' ! endif endif ! exe 'amenu '.s:p_menu_lev.'&'.a:pack.ComMenu.'.'.l_m_item.' '.r_m_item ! let basic_nu_p_list = basic_nu_p_list + 1 ! let loop_nu = loop_nu + 1 ! endwhile " }}} endif --- 261,304 ---- let basic_nu_p_list = '' let nu_p_list = '' ! if exists('g:TeX_package_'.a:pack) ! ! let g:p_list = g:TeX_package_{a:pack} ! let g:p_o_list = g:TeX_package_option_{a:pack} ! ! let optionList = g:TeX_package_option_{a:pack}.',' ! let doneOptionSubmenu = 0 ! ! if optionList != '' ! ! let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'.Options.' ! call Tex_MakeSubmenu(optionList, mainMenuName, ! \ '<plug><C-r>=IMAP_PutTextWithMovement("', ',")<CR>') ! endif ! ! let commandList = g:TeX_package_{a:pack} ! ! while matchstr(commandList, 'sbr:') != '' ! ! call Tex_Debug('command list = '.commandList) ! ! let groupName = matchstr(commandList, '\v^sbr:\zs.{-}\ze,') ! let commandList = strpart(commandList, strlen('sbr:'.groupName) + 1) ! if matchstr(commandList, 'sbr:') != '' ! let commandGroup = matchstr(commandList, '\v^.{-},\zesbr:') else ! let commandGroup = commandList endif ! ! let menuName = g:Tex_PackagesMenuLocation.a:pack.'.Commands.' ! let menuName = menuName.groupName.'.' ! call Tex_MakeSubmenu(commandGroup, menuName, "<plug><C-r>=Tex_ProcessPackageCommand('", "')<CR>", '\w\+:\(\w\+\).*') ! ! let commandList = strpart(commandList, strlen(commandGroup)) ! endwhile ! ! call Tex_MakeSubmenu(commandList, g:Tex_PackagesMenuLocation.a:pack.'.Commands.', ! \ '<plug><C-r>=IMAP_PutTextWithMovement("', ',")<CR>', '\w\+:\(\w\+\).*') endif *************** *** 355,358 **** --- 306,333 ---- " }}} + " Definition of what to do for various package commands {{{ + let s:CommandSpec_bra = '\<+replace+>{<++>}<++>' + let s:CommandSpec_brs = '\<+replace+><++>' + let s:CommandSpec_brd = '\<+replace+>{<++>}{<++>}<++>' + let s:CommandSpec_env = '\begin{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}<++>' + let s:CommandSpec_ens = '\begin{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}<++>' + let s:CommandSpec_eno = '\begin[<++>]{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}' + let s:CommandSpec_nor = '\<+replace+>' + let s:CommandSpec_noo = '\<+replace+>[<++>]' + let s:CommandSpec_nob = '\<+replace+>[<++>]{<++>}{<++>}<++>' + let s:CommandSpec_spe = '<+replace+>' + let s:CommandSpec_ = '\<+replace+>' + + " }}} + " Tex_ProcessPackageCommand: processes a command from the package menu {{{ + " Description: + function! Tex_ProcessPackageCommand(command) + let commandType = matchstr(a:command, '^\w\+\ze:') + let commandName = strpart(a:command, strlen(commandType.':')) + + return IMAP_PutTextWithMovement( + \ substitute(s:CommandSpec_{commandType}, '<+replace+>', commandName, 'g')) + endfunction + " }}} " Tex_pack_supp: "supports" the package... {{{ function! Tex_pack_supp(supp_pack) *************** *** 360,367 **** exe 'let g:s_p_o = g:TeX_package_option_'.a:supp_pack if exists('g:s_p_o') && g:s_p_o != '' ! exe 'normal i\usepackage{'.a:supp_pack.'}<++>' ! exe 'normal F{i[]'."\<Right>" else ! exe 'normal i\usepackage{'.a:supp_pack."}\<cr>" endif if g:Tex_package_supported == '' --- 335,341 ---- exe 'let g:s_p_o = g:TeX_package_option_'.a:supp_pack if exists('g:s_p_o') && g:s_p_o != '' ! return IMAP_PutTextWithMovement('\usepackage[<++>]{'.a:supp_pack.'}<++>', '<+', '+>') else ! return IMAP_PutTextWithMovement('\usepackage{'.a:supp_pack.'}<++>', '<+', '+>') endif if g:Tex_package_supported == '' *************** *** 377,385 **** function! Tex_PutPackage(package) if filereadable(s:path.'/packages/'.a:package) ! call Tex_pack_supp(a:package) else ! exe 'normal i\usepackage{'.a:package."}\<Esc>$" endif ! call Tex_pack_updateall() endfunction " }}} --- 351,359 ---- function! Tex_PutPackage(package) if filereadable(s:path.'/packages/'.a:package) ! return Tex_pack_supp(a:package) else ! return IMAP_PutTextWithMovement('\usepackage{'.a:package.'}') endif ! call Tex_pack_updateall() endfunction " }}} *************** *** 389,394 **** exe 'amenu '.s:p_menu_lev.'&UpdateAll :call Tex_pack_updateall()<cr>' ! call Tex_pack_supp_menu() ! call Tex_pack_all() endif --- 363,368 ---- exe 'amenu '.s:p_menu_lev.'&UpdateAll :call Tex_pack_updateall()<cr>' ! call Tex_pack_supp_menu() ! call Tex_pack_all() endif |
From: Srinath A. <sr...@fa...> - 2002-12-22 11:08:12
|
Hello Mikolaj, Sorry for starting a branch on packages.vim before consulting you first. Note that this is on a side branch, so if you want, I am willing to completeley ignore this branch and never get it into the main trunk. Having said that, I would like it if packages.vim was simplified in places and cleaned up. As of now, whenever I look at packages.vim, I can hardly understand it. There are many places which look like we are doing the wrong thing, but I am not sure since its not commented... In any case, let me know what you think. If you want, we can give up on this branch. Srinath On Sun, 22 Dec 2002 sri...@us... wrote: > Update of /cvsroot/vim-latex/vimfiles/ftplugin/latex-suite > In directory sc8-pr-cvs1:/tmp/cvs-serv11026 > > Modified Files: > Tag: b-newpackages > packages.vim > Log Message: > . This is a reworking of most of packages.vim in an attempt to simplify it. > I noticed that there was a lot of duplicated effort in a lot of functions > adn that the placeholder settings were not respected in a lot of places > by using things such as > normal! 'i\usepackage{... > instead of > return IMAP_PutText... > |