[OS X TeX] Tex.mdimporter problem
Peter Dyballa
Peter_Dyballa at Web.DE
Sun Feb 20 17:18:20 EST 2011
Am 19.02.2011 um 11:10 schrieb Eric van der Oord:
> Is that a known issue ? Any help ?
Yes, this is rather normal. The problem is that many file types are
attributed with some anonymous or "dynamic" Content Type. So
presumingly they're not "org.tug.tex".
To check whether TeXShop's mdimporter is known, run on the command line:
mdimport -L
What you can do is run – maybe some thousand times – on the command line
mdls <some TeX related non-binary file from the TeX Live/MacTeX
distribution | grep -w kMDItemContentType | grep -v org.tug.tex
It will happen that from to file you might get a line like
kMDItemContentType = "dyn.ah62d4rv4ge81g7d3"
This one of these "dynamic" content type identifiers. There can be a
few of them, so improve your mdls command to:
mdls <some TeX related non-binary file from the TeX Live/MacTeX
distribution | grep -w kMDItemContentType | egrep -v 'org.tug.tex|
ah62d4rv4ge81g7d3'
and add another dynamic identifier, when it's found, to your command.
(I certainly prefer the "dynamic duo".)
When you want, you can ease your life a bit and pass to mdls a set of
files, like in this:
apply 'mdls %1 | grep -w kMDItemContentType | egrep -v "org.tug.tex\|
ah62d4rv4ge81g7d3"' <some directory with TeX related non-binary file
from the TeX Live/MacTeX distribution>/*
Then you might receive a list like this:
kMDItemContentType = "dyn.ah62d4rv4ge80g3xh"
kMDItemContentType = "dyn.ah62d4rv4ge81g7d3"
kMDItemContentType = "dyn.ah62d4rv4ge81g7d3"
Shabby duplicates! Let's optimise once more:
apply 'mdls %1 | grep -w kMDItemContentType | egrep -v "org.tug.tex\|
ah62d4rv4ge81g7d3"' <some directory with TeX related non-binary file
from the TeX Live/MacTeX distribution>/* | sort -u
This will still make a lot of work, since TeX Live consists of 6.776
directories. We can handle this! No problem.
find /usr/local/texlive/2010 -type d -exec apply 'mdls %1 | grep -w
kMDItemContentType | egrep -v "org.tug.tex\|ah62d4rv4ge81g7d3\|folder\|
unix"' {}/* \; | sort -u
The "folder" is inserted that TeX distribution directories are not
tested. The find command searches all directories of the TeX
distribution up to the outermost leaf and passes all these
directories' contents to apply which the mdls to each element. the
first grep grabs for all occurrences of the word kMDItemContentType in
the output of mdls. The egrep throws away all occurrences of the well-
known kMDItemContentType's.
After, say, one hour you'll have a sorted list of unique TeX related
kMDItemContentType's like that one above. Save it plus the two known
types dyn.ah62d4rv4ge81g7d3 and org.tug.tex. They might be useful for
Spotlight searches, they are useful for this command:
apply 'mdfind -count kMDItemContentType = %1' <the list of found
kMDItemContentType's>
After a shorter period of time you'll have the number of files of the
corresponding kMDItemContentType.
*** I did not test the find command! I'm pretty sure that it will
fail, that "{}/*" construct can't really work. It would work with an
*executable* shell script MyScript.sh (its last line has to be empty)
and that contents:
#!/bin/sh
pushd $1 > /dev/null
apply 'mdls %1 | grep -w kMDItemContentType' *
popd > /dev/null
And the find command would become:
find /usr/local/texlive/2010 -type d -exec /path/to/MyScipt.sh {} \;
| egrep -v 'org.tug.tex|ah62d4rv4ge81g7d3|folder|unix' | sort -u
TeX and Spotlight might be more efficient if Spotlight would know all
the TeX related file types before TeX is installed. Than nothing would
need to be "dynamic" or purely by chance.
--
Greetings
Pete
Sending unsolicited commercial eMail to this account incurs a fee of €
500 per message and acknowledges the legality of this contract.
More information about the MacOSX-TeX
mailing list