2

Cask uses the built-in emacs on OSX which does not support the --script argument which Cask requires. Is there some way to tell Cask to use the Emacs.app version?

I tried the solutions here: How to start "emacsformacosx" in terminal but they did not help.

I finally just entered the command supplied at the bottom of the cask file:

/Applications/Emacs.app/Contents/MacOS/Emacs -Q --script ~/.cask/cask-cli.el

This is not very elegant.

4

1 回答 1

8

您可以cask通过导出环境变量来判断要运行哪个 Emacs 可执行文件$EMACS

$ export EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs
$ cask install

为避免在您想要使用的任何时候设置此变量的重复过程cask,您需要为 Emacs.app 创建一个命令行包装器。它本身必须是一个适当的可执行文件,而不仅仅是一个 shell 别名或函数,如How to start "emacsformacosx" in terminal中推荐的那样,因为别名和 shell 函数都不适用于 shell 的子进程。

这很容易通过创建一个文件来完成,文件/usr/local/bin/emacs内容如下

#!/bin/bash
exec /Applications/Emacs.app/Contents/MacOS/Emacs -nw "$@"

您将需要 root 权限来创建此文件,并且您必须在之后将其标记为可执行文件:

$ sudo chmod a+x /usr/local/bin/emacs

在此之后,您应该能够从命令行启动 Emacs.app 并使用emacs. 这足以让 Cask 在不设置$EMACS.

或者,您可能希望使用 Homebrew 安装 Emacs,通过

$ brew install emacs --cocoa --srgb --with-gnutls
$ brew linkapps

这会自动创建命令行包装器,并具有其他一些优点,例如使用一些额外的库进行构建。

我强烈推荐 Homebrew 方法。

于 2013-08-20T10:27:24.400 回答