[OS X TeX] TIP: How to write a Unix filter for TeXShop
Ramón Figueroa-Centeno
ramonf at hawaii.edu
Thu Apr 1 10:00:50 CEST 2010
Aloha,
Here is a complete example of how to build a Unix filter for TeXShop via
Applescript for TeXShop's Macro menu (this one sorts the lines in the
selection):
--Applescript direct
-- Example script to invoke a Unix filter.
-- In this example we sort the lines in the selection, without repeats,
ignoring the case
-- and leading and trailing blanks.
-- Ramon Figueroa-Centeno (March 31, 2010)
-- We use the command "sort -f | sed 's/[ \t]*$//' | uniq -i"; however, note
that
-- we must escape '\' by writing '\\' and '"' by writing '\"' (the single
quotations
-- are not part of the command).
property UNIXfilter : "sed 's/^[ \\t]*//' | sed 's/[ \\t]*$//' | sort -f |
uniq -i"
tell application "TeXShop"
set the front_document to the front document
set the_selection to (the content of the selection of the front_document)
-- the Applescript command "do shell script" chokes if given a large amount
of data
-- the workaround is to dump the data into a temporary file
if the_selection is not "" then
tell me
set texpath to do shell script "mktemp /tmp/XXXXXXXX"
set TMP to POSIX file texpath
open for access TMP with write permission
write the_selection to TMP
close access TMP
end tell
-- Convert the line endings to Unix ones, as is expected by most command
line programs
-- (we use flip which is part of the standard TeXShop distribution)
tell me to do shell script "~/Library/TeXShop/bin/flip -u " & texpath
-- Note: you may need to tweak this line according to the syntax of your
filter
set command to "cat " & texpath & " | " & UNIXfilter
tell me to set filtered to do shell script command
set the content of the selection of the front_document to filtered
try -- to delete the temporary file
tell me to do shell script "rm -f " & POSIX path of TMP
end try
end if
end tell
---------------------------
Now, bells and whistles could be added:
1. Have the result be selected in TeXShop.
2. Have it present a list of filters to choose from a list of filters in a
filters folder (like in BBEdit).
I probably can add these features, if there is interest. However, it would
not be a short example anymore :)
Enjoy!
Ramón
--
View this message in context: http://n2.nabble.com/TIP-How-to-write-a-Unix-filter-for-TeXShop-tp4835743p4835743.html
Sent from the MacOSX-TeX mailing list archive at Nabble.com.
More information about the macostex-archives
mailing list