所以我终于决定学习Lisp。我正在阅读Practical Common Lisp并且我正在使用Lispbox(不是本书推荐的那个 - 它已经不再可用了,但它似乎仍然适用)。< / p>
到目前为止,在我的职业生涯中,我设法避免与emacs搏斗,但我想我生命的一部分已经结束:-)实际上,我有点兴奋 - 这是一个崭新的世界。
保存.lisp文件时,开箱即用的设置会将这些文件转储到lispbox-0.7
文件夹(也是LISPBOX_HOME env.var)。我的数学老师教会了我,&#34;如果你不知道自己在做什么,至少要干净利落。&#34;所以我想至少把我的工作放在一个漂亮整洁的文件夹中。我可以指定保存/加载的完整路径。但是我可以告诉(lispbox | emacs | whatever)默认使用不同的文件夹吗?
如果重要:我可能会更频繁地使用Windows版本,但我也在Ubuntu上进行了设置。
我查看了this和this以及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/
。这并不是很糟糕,尤其是选项卡自动完成时。
答案 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))'