How would I go about setting all .rb files or all .py files to open in emacs if I double-click them; say, from the desktop?
I’m on OS X 10.6.2.
I have the script:
on open of finderObjects
repeat with currFile in finderObjects
set unixPath to POSIX path of currFile
set base to do shell script "dirname " & unixPath
set fname to do shell script "basename " & unixPath
do shell script "cd '" & base & "';" & " emacs " & fname
end repeat
end open
But if I drag a file (text.py – just prints a line) on it, I get:
emacs: standard input is not a tty
And I’m unsure of how to solve this.
Thanks!
EDIT: Solved with link: http://www.macosxhints.com/article.php?story=20031027142625782
set filecount to 0
on open filelist
repeat with i in filelist
set filecount to 1
tell application "Terminal"
set filename to do shell script ¬
"perl -e \"print quotemeta ('" & POSIX path of i & "');\""
do script "emacs " & filename & "; exit"
end tell
end repeat
end open
if filecount < 1 then
tell application "Terminal"
do script "emacs; exit"
end tell
end if
For each type, select a file in the Finder, choose
Get Infofrom the File menu. In the Info window that opens, under theOpen withsection, choose the emacs app you are using (and it must be an app version), and then pressChange All...If you are using the traditional curses emacs from the command line, you could build a small AppleScript app in the ScriptEditor or Automator action that would receive the files from the finder and open emacs with them. Then use
Get Infoto associate the app with .rb and .py files.EDIT: See this recent answer for one way to create an AppleScript launcher app: just modify the shell command to call emacs instead.
FURTHER EDIT: Your script is almost there but you need to run the script under
Terminal.app. Try modifying it like so: