Hi, although the situation is *much* improved with upcoming TeXLive 2015, kpsewhich is quite slow for querying paths on Mac OS X:
texlive 2014: $ time kpsewhich article.cls /usr/local/texlive/2014/texmf-dist/tex/latex/base/article.cls real 0m0.568s user 0m0.544s sys 0m0.015s texlive 2015: $ time kpsewhich article.cls /---/TL2015/texmf-dist/tex/latex/base/article.cls real 0m0.099s user 0m0.085s sys 0m0.008s The situation is the same when one only attempts to get the installation repertories locations, (TL2014:) $ time kpsewhich --var-value TEXMFHOME /Users/---/Library/texmf real 0m0.516s user 0m0.499s sys 0m0.013s (It appears that kpsewhich parses completely various ls-R files even when used only as above to query the TEXMFHOME repertory.) During initial load, AUCTeX makes calls to kpsewhich. (nine such calls with my set-up) Would it be possible to get TeX-tree-expand in tex.el to make a single kpsewhich call, and not one for each passed 'var' of the list
(defun TeX-tree-expand (vars program &optional subdirs) "Return directories corresponding to the kpathsea variables VARS. This is done calling `kpsewhich --expand-path' for each variable.
My question is whether it is possible to arrange TeX-tree-expand to do rather a single kpsewhich call. This should be possible as seen from that example: kpsewhich --progname latex --expand-path '$SYSTEXMF:$TEXMFLOCAL:$TEXMFMAIN:$TEXMFDIST:$TEXMFHOME' returns /usr/local/texlive/2014/texmf-var:/usr/local/texlive/texmf-local-2014:/usr/local/texlive/2014/texmf-dist:/usr/local/texlive/texmf-local-2014:/usr/local/texlive/2014/texmf-dist:/usr/local/texlive/2014/texmf-dist:/Users/---/Library/texmf (notice that SYSTEXMF by itself by default already expands to the first three in the ouput as one finds SYSTEXMF = $TEXMFSYSVAR;$TEXMFLOCAL;$TEXMFDIST in the default texmf.cnf) I am putting quotes as I am testing this from command line and must avoid shell expansion of $ The kpsewhich manual is athttp://tug.org/texinfohtml/kpathsea.html :
5.5.3 Auxiliary tasks [...] ‘--expand-path=string’ outputs the complete expansion of string, with each element separated by the usual path separator on the current system (‘;’ on Windows, ‘:’ otherwise). [...]
I have no idea whether kpsewhich evolved on that point and assuming the current functionality would break old systems. Another issue is that during the loading of AUCTeX it appears that locations TEXMFLOCAL, TEXMFMAIN, TEXMFDIST, TEXMFHOME are each queried twice. Could this also be avoided ? A single kpsewhich call rather than 9 would almost divide by 9 the loading time of AUCTeX on Mac OS X systems (because it appears that most of this loading time is taken up by the calls to kpsewhich) Jean-François _______________________________________________ auctex mailing list [email protected] https://lists.gnu.org/mailman/listinfo/auctex
