直接打开文件到emacs(通过双击)

时间:2010-02-02 18:20:41

标签: macos emacs applescript

如果我双击它们,我将如何设置所有.rb文件或所有.py文件在emacs中打开;说,从桌面?

我在OS X 10.6.2上。

我有脚本:

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

但是如果我拖动一个文件(text.py - 只是打印一行),我得到: emacs:标准输入不是tty

我不确定如何解决这个问题。

谢谢!

编辑:解决了链接: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

2 个答案:

答案 0 :(得分:3)

对于每种类型,在Finder中选择一个文件,从“文件”菜单中选择Get Info。在打开的信息窗口中,在Open with部分下,选择您正在使用的emacs应用(并且必须是应用版本),然后按Change All..

如果您使用命令行中的传统curses emacs,您可以在ScriptEditor或Automator操作中构建一个小AppleScript应用程序,该应用程序将从finder接收文件并打开emacs。然后使用Get Info将应用与.rb和.py文件相关联。

编辑:有关创建AppleScript启动器应用的一种方法,请参阅此recent answer:只需修改shell命令即可调用emacs。

进一步编辑:您的脚本几乎就在那里,但您需要在Terminal.app下运行脚本。尝试修改它:

        launch application "Terminal"
        tell application "Terminal"
            do script "cd '" & base & "';" & " emacs  " & fname
        end tell

答案 1 :(得分:1)

我不是OS X专家,但如果emacs就像在Unix和Windows上那样它应该有一个emacsclient实用程序,用于将新文件提供给已经运行的emacs会话。

This previous SO question有一些关于如何在多重设置上执行此操作的详细信息。也许其中一些适用?