[Vim-latex-cvs] SF.net SVN: vim-latex: [999] trunk/vimfiles/ftplugin/latex-suite
Brought to you by:
srinathava,
tmaas
From: <sri...@us...> - 2006-03-21 05:32:41
|
Revision: 999 Author: srinathava Date: 2006-03-20 21:32:37 -0800 (Mon, 20 Mar 2006) ViewCVS: http://svn.sourceforge.net/vim-latex/?rev=999&view=rev Log Message: ----------- Bug: \cite completion does not work when the bib file is included as \bibliography{db.bib} instead of \bibliography{db} (Javier Rojas) Why: We used 'silent! find '.fname.'.bib' Fix: Add '.bib' to 'suffixesadd' and use 'silent! find '.fname instead Created a new function Tex_FindFile() to make such things easier in the future. Modified Paths: -------------- trunk/vimfiles/ftplugin/latex-suite/main.vim trunk/vimfiles/ftplugin/latex-suite/texviewer.vim trunk/vimfiles/ftplugin/latex-suite/version.vim Modified: trunk/vimfiles/ftplugin/latex-suite/main.vim =================================================================== --- trunk/vimfiles/ftplugin/latex-suite/main.vim 2006-03-20 09:52:12 UTC (rev 998) +++ trunk/vimfiles/ftplugin/latex-suite/main.vim 2006-03-21 05:32:37 UTC (rev 999) @@ -611,6 +611,34 @@ function! Tex_EscapeSpaces(path) return substitute(a:path, '[^\\]\(\\\\\)*\zs ', '\\ ', 'g') endfunction " }}} +" Tex_FindFile: finds a file in the vim's 'path' {{{ +" Description: finds a file in vim's 'path' +function! Tex_FindFile(fname, path, suffixesadd) + if exists('*findfile') + let _suffixesadd = &suffixesadd + let &suffixesadd = a:suffixesadd + let retval = findfile(a:fname, a:path) + let &suffixesadd = _suffixesadd + else + " split a new window so we do not screw with the current buffer. We + " want to use the same filename each time so that multiple scratch + " buffers are not created. + let retval = '' + silent! split __HOPEFULLY_THIS_FILE_DOES_NOT_EXIST__ + let _suffixesadd = &suffixesadd + let _path = &path + let &suffixesadd = a:suffixesadd + let &path = a:path + exec 'silent! find '.a:fname + if bufname('%') != '__HOPEFULLY_THIS_FILE_DOES_NOT_EXIST__' + let retval = expand('%:p') + end + silent! bdelete! + let &suffixesadd = _suffixesadd + let &path = _path + endif + return retval +endfunction " }}} " ============================================================================== " Smart key-mappings Modified: trunk/vimfiles/ftplugin/latex-suite/texviewer.vim =================================================================== --- trunk/vimfiles/ftplugin/latex-suite/texviewer.vim 2006-03-20 09:52:12 UTC (rev 998) +++ trunk/vimfiles/ftplugin/latex-suite/texviewer.vim 2006-03-21 05:32:37 UTC (rev 999) @@ -504,7 +504,7 @@ if mainfname == expand('%:p') split else - exec 'split '.mainfname + exec 'split '.Tex_EscapeSpaces(mainfname) endif let pos = line('.').'| normal! '.virtcol('.').'|' @@ -560,35 +560,32 @@ let &path = '.,'.g:Tex_BIBINPUTS let i = 1 - while Tex_Strntok(bibnames, ',', i) != '' + while 1 + let bibname = Tex_Strntok(bibnames, ',', i) + if bibname == '' + break + endif + " first try to find if a .bib file exists. If so do not search in " the corresponding .bbl file. (because the .bbl file will most " probly be generated automatically from the .bib file with " bibtex). - " split a new window so we do not screw with the current buffer. - split - let thisbufnum = bufnr('%') - call Tex_Debug('silent! find '.Tex_Strntok(bibnames, ',', i).'.bib', 'view') - exec 'silent! find '.Tex_Strntok(bibnames, ',', i).'.bib' - if bufnr('%') != thisbufnum + let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bib') + if fname != '' call Tex_Debug('finding .bib file ['.bufname('%').']', 'view') - call Tex_Debug('using pattern '.Tex_EscapeForGrep('@.*{'.a:prefix), 'view') - lcd %:p:h - " use the appropriate syntax for the .bib file. + exec 'split '.Tex_EscapeSpaces(fname) call Tex_Grepadd('@.*{'.a:prefix, "%") + q else - let thisbufnum = bufnr('%') - exec 'silent! find '.Tex_Strntok(bibnames, ',', i).'.bbl' - call Tex_Debug('now in bufnum#'.bufnr('%'), 'view') - if bufnr('%') != thisbufnum + let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bbl') + if fname != '' + exec 'split '.Tex_EscapeSpaces(fname) call Tex_Debug('finding .bbl file ['.bufname('.').']', 'view') - lcd %:p:h call Tex_Grepadd('\\bibitem{'.a:prefix, "%") + q endif endif - " close the newly opened window - q let i = i + 1 endwhile @@ -618,8 +615,6 @@ " If we have not found any \bibliography or \thebibliography environment " in this file, search for these environments in all the files which this " file includes. - let &path = '.,'.g:Tex_TEXINPUTS - let &suffixesadd = '.tex' exec 0 let wrap = 'w' @@ -628,16 +623,13 @@ let filename = matchstr(getline('.'), '\\\(input\|include\){\zs.\{-}\ze}') - split - let thisbufnum = bufnr('%') - - exec 'silent! find '.filename - if bufnr('%') != thisbufnum - " DANGER! recursive call. - call Tex_Debug('scanning recursively in ['.bufname('%').']', 'view') + let foundfile = Tex_FindFile(filename, '.,'.g:Tex_TEXINPUTS, '.tex') + if foundfile != '' + exec 'split '.Tex_EscapeSpaces(foundfile) + call Tex_Debug('scanning recursively in ['.foundfile.']', 'view') let foundCiteFile = Tex_ScanFileForCite(a:prefix) + q endif - q if foundCiteFile return 1 @@ -659,28 +651,21 @@ call Tex_Grepadd('\\label{'.a:prefix, "%") " Then recursively grep for all \include'd or \input'ed files. - let &suffixesadd = '.tex' - let &path = '.,'.g:Tex_TEXINPUTS exec 0 let wrap = 'w' while search('^\s*\\\(input\|include\)', wrap) let wrap = 'W' let filename = matchstr(getline('.'), '\\\(input\|include\){\zs.\{-}\ze}') - - let thisbufnum = bufnr('%') - - split - exec 'silent! find '.filename - - if bufnr('%') != thisbufnum - call Tex_Debug('Tex_ScanFileForLabels: scanning recursively in ['.bufname('%').']', 'view') + let foundfile = Tex_FindFile(filename, '.,'.Tex_TEXINPUTS, '.tex') + if foundfile != '' + exec 'split '.Tex_EscapeSpaces(foundfile) + call Tex_Debug('Tex_ScanFileForLabels: scanning recursively in ['.foundfile.']', 'view') call Tex_ScanFileForLabels(a:prefix) + q endif - - q - endwhile + endfunction " }}} " ============================================================================== @@ -840,7 +825,7 @@ let mainfname = Tex_GetMainFileName(':p') wincmd n - exec ':e '.mainfname + exec 'silent! e '.mainfname if search('\\\(no\)\?bibliography{', 'w') @@ -852,31 +837,21 @@ call Tex_Debug(':Tex_FindBibFiles: trying to search through ['.bibnames.']', 'view') - let _path = &path - let &path = '.,'.g:Tex_BIBINPUTS - let bibfiles = '' let i = 1 - while Tex_Strntok(bibnames, ',', i) != '' - " split a new window so we do not screw with the current buffer. - split - let thisbufnum = bufnr('%') - - call Tex_Debug(':Tex_FindBibFiles: silent! find '.Tex_Strntok(bibnames, ',', i).'.bib', 'view') - exec 'silent! find '.Tex_Strntok(bibnames, ',', i).'.bib' - if bufnr('%') != thisbufnum - call Tex_Debug(':Tex_FindBibFiles: finding .bib file ['.bufname('%').']', 'view') - " use the appropriate syntax for the .bib file. - let bibfiles = bibfiles.expand('%:p')."\n" + while 1 + let bibname = Tex_Strntok(bibnames, ',', i) + if bibname == '' + break endif - - q - + let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bib') + if fname != '' + let bibfiles = bibfiles.fname."\n" + endif let i = i + 1 endwhile call Tex_Debug(":Tex_FindBibFiles: returning [".bibfiles."]", "view") - let &path = _path q return bibfiles Modified: trunk/vimfiles/ftplugin/latex-suite/version.vim =================================================================== --- trunk/vimfiles/ftplugin/latex-suite/version.vim 2006-03-20 09:52:12 UTC (rev 998) +++ trunk/vimfiles/ftplugin/latex-suite/version.vim 2006-03-21 05:32:37 UTC (rev 999) @@ -24,7 +24,7 @@ " "stabilize" that version by releasing a few pre-releases and then " keep that as a stable point. function! Tex_Version() - return "Latex-Suite: version 1.8.07" + return "Latex-Suite: version 1.8.11" endfunction com! -nargs=0 TVersion echo Tex_Version() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |