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

3

如果我想让所有的 .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: standard input is not a 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

我认为这应该发布在superuser.com上。 - Noufal Ibrahim
我没有在那里发布它的原因是我认为它涉及到一个bash脚本 - 这对我来说似乎太SO了。但如果不适合,就移动它吧! - Isaac
在理想的世界中,它应该在那里。可悲的是,我还没有在一个开发者不需要自己设置emacs(或更可能是使用一些劣质的编辑器......并且喜欢它)的环境中工作过。 - T.E.D.
2个回答

3
对于每种类型,选择Finder中的一个文件,从“文件”菜单中选择“获取信息”。在打开的信息窗口中,在“使用以下应用程序打开”部分下,选择您正在使用的emacs应用程序(必须是应用程序版本),然后按“全部更改..”按钮。
如果您正在使用传统的终端emacs,您可以在ScriptEditor或Automator操作中构建一个小的AppleScript应用程序,该应用程序将从finder接收文件并用它们打开emacs。然后使用“获取信息”将应用程序与.rb和.py文件相关联。
编辑:参见此最近的答案以创建一个AppleScript启动器应用程序的方式之一:只需修改shell命令以调用emacs即可。
进一步编辑:您的脚本已经接近完成,但您需要在Terminal.app下运行该脚本。尝试像这样进行修改:
        launch application "Terminal"
        tell application "Terminal"
            do script "cd '" & base & "';" & " emacs  " & fname
        end tell

问题在于我正在使用终端 - 如果那么简单,我早就做了! - Isaac
@Isaac Copper。在你的问题中,你提到了点击文件来打开它。你是如何在终端中实现这个操作的? - chollida
正如我在问题中所说 - 我是从桌面双击打开的。 - Isaac
@Isaac:我已经添加了一个链接,里面有最近的SO回答,展示了你需要做的事情。 - Ned Deily
@Isaac:进一步编辑以显示通过Terminal.app运行脚本。 - Ned Deily

1

我不是一个OS X专家,但如果emacs在Unix和Windows上的使用方式与之相似,那么它应该有一个emacsclient实用程序,可以将新文件输入到已经运行的emacs会话中。

这个之前的SO问题提供了一些关于如何在多tty设置下进行操作的细节。也许其中的一些内容是适用的?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接