--Applescript direct
-- Script to invoke TeXCount <http://folk.uio.no/einarro/Comp/texwordcount.html>
-- Ramon Figueroa-Centeno (March 11, 2009)

-- History:
-- 1.1: Removed the reporting of the number of paragraphs as it is mostly useless and 
-- confusing. Useless because two documents with the same number of paragraphs can have 
-- exactly the same output. Confusing because the user might think that the number of 
-- paragraphs refers to the number of paragraphs in the ouput, not what it actually is, the 
-- number of lines in the TeX code.

tell application "TeXShop"
	
	set the front_document to the front document
	
	-- If the front document is not saved dump its 
	-- content to a temporary file and use that
	if the front_document is modified then
		-- The whole text of the document
		set whole_document to (the text of the front_document) as string
		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 whole_document to TMP
			close access TMP
		end tell
	else
		-- If the front document is saved then make a symbolic
		-- link to it in the /tmp directory. This way we avoid
		-- the "bug" (feature) in texcount that takes a file with
		-- spaces in its name name and takes it as a list of files
		-- even in quoted form or with escaped spaces.
		set texpath to the path of the front_document
		set symlinkpath to do shell script "mktemp /tmp/XXXXXXXX"
		do shell script "rm " & symlinkpath
		do shell script "ln -s " & (quoted form of texpath) & " " & symlinkpath
		set texpath to symlinkpath
		set TMP to texpath
	end if
	
	set command to "/usr/texbin/texcount " & texpath & " | tail -n +2"
	
	tell me to set TeXcount to do shell script command
	
	-- If a temporary file or symbolic link was created delete it.
	try
		do shell script "rm " & POSIX path of TMP
	end try
	
	--set count_pars to count the paragraphs of the text of the front_document
	--display dialog TeXcount & "Paragraphs: " & count_pars buttons {"Ok"} default button "Ok"
	
	display dialog TeXcount buttons {"Ok"} default button "Ok"
	
end tell