1

所以我最终决定学习 Lisp。我正在阅读Practical Common Lisp并且我正在使用Lispbox(不是书中推荐的那个 - 它不再可用,但似乎这仍然是合适的)。

到目前为止,在我的职业生涯中,我设法避免与 emacs 搏斗,但我想我的那部分生活已经结束了 :-) 实际上,我有点兴奋——这是一个全新的世界。

保存 .lisp 文件时,开箱即用的设置会将这些文件转储到lispbox-0.7文件夹中(这也是 LISPBOX_HOME env.var)。我的数学老师教我,“如果你不知道自己在做什么,至少要做到整洁。” 所以我想至少把我的工作放在一个整洁的文件夹里。我可以指定保存/加载的完整路径。但是我可以告诉 (lispbox|emacs|whatever) 默认使用不同的文件夹吗?

如果重要的话:我可能会更频繁地使用 Windows 版本,但我也在 Ubuntu 上进行了设置。

我看过这个这个这个。我尝试将这些添加到.emacs文件中(一次一个):

(setq default-directory "C:/Work/lisp/")    
(cd "C:/Work/lisp/")

打开.emacs我使用的文件C-x C-f~/.emacs

如果我尝试更改 LispBox 快捷方式的“开始于”属性,它根本无法加载。

M-xcd c:/work/lisp确实有效,但我每次启动 LispBox 时都必须这样做

同时我在做什么:我在lisp文件夹旁边创建了一个单独的文件lispbox-0.7夹。这样我就可以../lisp/在任何文件名之前添加。这还不错,尤其是在选项卡自动完成的情况下。

4

3 回答 3

2

找到了!

修改.emacs不起作用的原因是因为lispbox.bat文件。它有这一行:

%EMACS% --no-init-file --no-site-file --eval=%TO_EVAL%

于是取出了两个“否”参数,留下这个……

%EMACS% --eval=%TO_EVAL%

......它奏效了。

不过,这让我很担心。为什么默认不想加载.emacs文件?我想一旦我更好地理解了这一切,我就会有答案。在那之前,我恢复了上面,改变了这一行......

set TO_EVAL="(progn (load \"lispbox\") (slime))"

……到这……

set TO_EVAL="(progn (load \"lispbox\") (slime) (cd \"C:/work/lisp/\"))"

现在我很高兴。

于 2014-11-09T22:23:04.933 回答
1

我对 Lisp Box 一无所知,而且你所描述的并不是我都清楚。但是这里。

听起来您正在寻找一种c:/work/lisp在启动 Emacs 时创建默认目录的方法。为此,使用 MS Windows 快捷方式,将该文件夹放在Start in字段中确实可以做到这一点。但是你说的是LispBox快捷方式Start in。如果您只是指 Emacs 快捷方式,那么它应该可以工作。

但当然,您需要对文件夹使用 Windows 语法- 不是c:/work/lisp,而是c:\work\lisp.

这就是问题所在吗?

Windows 快捷方式是 Windows 的东西。Emacs 不同:它接受/作为文件夹分隔符。


提示:如果这解决了您的问题,您可能还想在同一个文件夹上以 Dired 模式启动 Emacs,也就是说,如果该文件夹是您将经常使用的文件夹。为此,请在命令行末尾添加该文件夹 - 再次使用 Windows 语法,但在双引号之间:

c:\your\path\to\runemacs.exe "c:\work\lisp"
于 2014-11-09T22:22:33.577 回答
0

尝试从要保存文件的目录启动 lispbox.bat。例如,在操作系统命令提示符下:

cd c:\work\lisp
path-to-bat-file\lispbox.bat

您也可以在执行 Emacs 之前 cd 到 listbox.bat 中的 c:\work\lisp。对于 Linux,它在 lispbox.sh 中看起来像这样:

#!/bin/bash
if [ "${0:0:2}" = "./" ]; then
    export LISPBOX_HOME=`pwd`/../../..
else
    export LISPBOX_HOME=`dirname $0`/../../..
fi
cd ~/work/lisp
export SBCL_HOME=${LISPBOX_HOME}/sbcl-1.0.42/lib/sbcl
exec ${LISPBOX_HOME}/Emacs.app/Contents/MacOS/Emacs --no-init-file --no-site-file --eval='(progn (load "lispbox") (slime))'
于 2019-02-17T22:54:48.863 回答