在LispBox中更改默认保存文件夹

时间:2014-11-09 19:35:27

标签: emacs lisp-in-a-box

所以我终于决定学习Lisp。我正在阅读Practical Common Lisp并且我正在使用Lispbox(不是本书推荐的那个 - 它已经不再可用了,但它似乎仍然适用)。< / p>

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

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

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

我查看了thisthis以及this。我尝试将这些文件添加到.emacs文件中(一次一个):

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

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

如果我尝试更改LispBox快捷方式&#34;开始&#34;属性,它根本无法加载。

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

我在此期间做了什么:我在lisp文件夹旁边创建了一个单独的lispbox-0.7文件夹。这样我可以在任何文件名之前添加../lisp/。这并不是很糟糕,尤其是选项卡自动完成时。

3 个答案:

答案 0 :(得分:2)

发现它!

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

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

所以拿出了两个&#34;没有&#34;参数,留下这个...

%EMACS% --eval=%TO_EVAL%

......它有效。

但是,这让我很担心。为什么默认情况下不想加载.emacs文件?我想,一旦我理解了所有这一切,我就会有一个答案。在那之前,我恢复了以上,改变了这条线......

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

......对此...

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

现在我很高兴。

答案 1 :(得分:1)

我对Lisp Box一无所知,并不是我所描述的所有内容都清楚。但是这里有。

听起来您正在寻找一种方法,可以在启动Emacs时将c:/work/lisp设置为默认目录。为此,使用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"

答案 2 :(得分:0)

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

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

在执行Emacs之前,您也可以在listbox.bat中CD到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))'