我正在和Clojure一起开发一个宠物项目,但是我想知道我是否可以加快我的工作流程.
我目前的工作流程(使用Compojure)是:
lein swank.M-x slime-connect.C-c C-c)吧.它有很多烦恼:
C-c C-k重启Swank后逐个加载所有源文件().我怀疑我做错了.我正在寻找改善上述要点和整个工作流程的方法,所以如果你愿意分享你的话,我会很感激.
PS
我之前也使用过Vimclojure,因此也欢迎基于Vimclojure的工作流程.
Mic*_*zyk 19
不完整的工作流程描述,只是一些想法:
可以使用该ns-unmap函数从命名空间中删除Var .为了增加便利性,undef可以在其上构建宏,例如:
(defmacro undef [& syms]
`(do ~@(map (fn [s] `(ns-unmap *ns* '~s)) syms)))
Run Code Online (Sandbox Code Playgroud)
ns-unalias 也可能是有意义的.
没有理由C-c C-k在每个文件夹中查看包含命名空间的文件; 您可以require在REPL中找到所需的命名空间.
此外,如果您在SLIME REPL中键入几个字符然后使用M-p/ M-n浏览历史记录,则只会显示与您手动输入的文本的初始位匹配的条目.这与Paredit兼容(尾随的结束支架不会有问题).所以,如果你在开始时建立一个巨大的需求(require '[foo :as f] '[bar :as b] '[clojure.contrib.sql :as sql] ...)- 那么在重新启动Swank之后,你需要做的就是键入类似的内容(require '[f并按下M-p以将该表单再次提交到REPL提示符.
不可否认,这可以通过多种方式实现自动化(例如,使用Swank REPL搜索配置文件,或者将一个简单的宏扩展为适当的require形式,可以在从项目中引入一个实用程序命名空间后使用 - 尤其是后一个想法很容易实现),但我觉得它在烦恼因素上足够低,到目前为止我还没有任何改进.
C-c C-z当您处于启用SLIME的缓冲区时,可以使用弹出SLIME REPL的窗口.此外,ido如果您还没有,请尝试使用.我倾向于使用在屏幕左侧的窗口中打开的代码缓冲区和右侧的REPL缓冲区; 与windmove-left和windmove-right绑定到一些方便的按键,我往往会很高兴.如果我需要经常查看其他缓冲区,我会使用额外的Emacs帧.
顺便说一句,我没有lein swank正常使用,我更喜欢我的自定义clojure-project功能(Phil Hagelberg原创的调整版).有时,我觉得有必要改进它......也许我会在下次发生时处理每个项目import/ require自动化.;-)
我不确定Lein,但是在Maven中你可以指定repl脚本的名称(replScript config param),它允许指定在REPL和Swank的启动时将执行哪些命令...如果你有单独的命名空间你的项目,你可以使用clojure.contrib.find-namespaces中的函数来查找你的命名空间并加载它们....