Emacs 更改LispBox中的默认保存文件夹

Emacs 更改LispBox中的默认保存文件夹,emacs,lisp-in-a-box,Emacs,Lisp In A Box,所以我最终决定学习Lisp。我在阅读,我在使用(不是书中推荐的那种——现在已经没有了,但似乎这仍然是合适的) 到目前为止,在我的职业生涯中,我设法避免与emacs搏斗,但我想我生命的一部分已经结束:-)事实上,我有点激动-这是一个全新的世界 保存.lisp文件时,开箱即用的安装程序会将这些文件转储到lispbox-0.7文件夹中(该文件夹也是lispbox\u HOME env.var)。我的数学老师教我,“如果你不知道你在做什么,至少要干净利落。”所以我想至少把我的作业放在一个整洁的文件夹里。

所以我最终决定学习Lisp。我在阅读,我在使用(不是书中推荐的那种——现在已经没有了,但似乎这仍然是合适的)

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

保存.lisp文件时,开箱即用的安装程序会将这些文件转储到
lispbox-0.7
文件夹中(该文件夹也是lispbox\u HOME env.var)。我的数学老师教我,“如果你不知道你在做什么,至少要干净利落。”所以我想至少把我的作业放在一个整洁的文件夹里。我可以在保存/加载时指定完整路径。但是我可以告诉(lispbox | emacs | which)默认情况下使用不同的文件夹吗

如果有关系的话:我可能会更频繁地使用Windows版本,但我在Ubuntu上也有设置

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

为了打开
.emacs
文件,我使用了C-xc-f
~/.emacs

如果我尝试更改LispBox快捷方式的“开始位置”属性,它将无法加载

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


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

我对Lisp Box一无所知,而且我也不清楚您描述的所有内容。但事情是这样的

听起来您正在寻找一种方法,在启动Emacs时将
c:/work/lisp
作为默认目录。为此,使用MS Windows快捷方式,将该文件夹放入
开始位置
字段确实可以实现这一点。但是你说的是一个
LispBox
快捷方式的
开始于
。如果你说的是Emacs快捷方式,那么它应该可以工作

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

这就是问题所在吗

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


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

c:\your\path\to\runemacs.exe "c:\work\lisp"
找到了

修改
.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/\"))"

现在我很高兴。

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

cd c:\work\lisp
path-to-bat-file\lispbox.bat
您还可以在listbox.bat执行Emacs之前将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))'

好建议,但不是这样。快捷方式将启动
lispbox.bat
文件,该文件将依次启动
runemacs.exe
我很确定我已翻转/到\但可能没有。即使正确,也不起作用,即
C:\work\lisp
。在这种情况下,如果init文件中的显式
(setq默认目录“C:/work/lisp”)
不起作用,请在Lispbox Emacs代码中查找钩子或用户选项(自定义变量)。在Lispbox应用程序启动Emacs之后,您需要以某种方式评估这样一个sexp。试着问一下。我相信这是一个共同的需要。甚至可能会有一个常见问题解答(或者应该有)。邮件列表的链接断开了(不是你的错,它在Lispbox主页上断开了)。现在我有了我的答案,也许我会看看他们的github上有什么,如果没有,我会添加我的发现。
#!/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))'