Emacs和Slime启动脚本

7
每次我开始工作的时候,我都会打开Emacs,M-x cd到工作目录,M-x启动Slime,然后在Slime的repl中运行run (ql:quickload 'myproject) (或者,load-system myproject),然后输入 +p myproject 在repl中切换当前包。最后,在repl中运行一个(start-server)获取我的Web服务器启动。
我希望这一切都能成为单个Emacs按键或命令。很尴尬,因为这都是LISP,但我并不能完全理解Emacs和Slime之间的相互作用。但是作为一个程序员,我觉得应该自动化所有的繁琐过程,并且我预测还会增加几步。
我想棘手的部分是发送slime命令,然后等待quicklisp完成,然后再发送下一个命令。
任何提示都将不胜感激!
编辑:感谢Svante给出的C-c ~提示,这对我来说是新闻。

1
我不使用ql:quickload来加载我的项目,而是使用, open-system(我想是来自slime-asdf)。使用helm或类似的工具进行类型提示非常有用。然后从项目文件缓冲区中使用C-c ~切换工作目录和包。你也可以将slime放在F键上,例如。我目前已经决定不为单个项目编写整个序列(我通常会同时处理多个项目),因为对我来说速度已经足够快了。 - Svante
1个回答

2
在 Emacs 方面,您可以将一个键绑定到调用 slime 带有附加参数的命令上:
(defun my-lisp ()
  (interactive)
  (slime (concat "sbcl --load " <path-to-your-lisp-script>)))

例如,在您的Lisp脚本中:

(ql:quickload :my-system)
(in-package :my-package)
(start-server)

这是一个好主意,但按照原文并没有起作用。然而,通过执行(setq slime-lisp-implementations '((sbcl ("/usr/local/bin/sbcl" "--load" "start.lisp")))),我成功让它考虑--load参数。现在唯一缺失的部分是在Lisp脚本和加载Swank完成后让Emacs运行一些命令。我相信有一些钩子或类似的东西可以实现? - Javelinapps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接