我有一个问题:
当我使用带有clojure和elein(leiningen扩展名)的emacs时,我将我的代码写入文件中,然后我需要连接到swang,我输入"elein swank"并打开conexion ... 2步)我打开一个repl ... 3)我输入slime-connect(并按y两次)4)这一步真的很烦人:我需要使用我的文件或更改命名空间...
到目前为止一直这么好..问题是如果我的文件里面有一点错误(也许是一个括号)现在我侮辱我的代码,我重复所有步骤......再次!
对我来说,这真的很烦人,我真的很喜欢emacs,我已经使用了很长时间并且是最好的编辑器,但是将它与netbeans(今天我试试......这很好但是它的重复...)与netbeans相比较我只需要点击一下即可完成所有这些步骤......
我可以按"加载文件",这将加载我的文件在repl ....严重!! 如果我按下NS中的别名/文件,它会打开repl并更改命名空间......太好了
现在..我的问题是,是否有可能在emacs内创建一个命令,而不是make everything..maybe,这将是非常好的..一个命令,而不是打开一个repl并加载我的文件或我的ns ...将是伟大的...这有可能吗?...有人这样做吗??谢谢
非常感谢有一个美好的一天!
是否存在针对Clojure库进行黑客攻击的典型工作流程?
假设我的应用程序"Foo"依赖于第三方库"Bar",它是从存储库中获取的,并包含在项目Foo via中lein deps.
然后,说我想破解库"Bar",所以我从github克隆它.
现在,我想破解我的本地克隆"Bar",同时处理取决于它的应用程序"Foo".我希望使用swank的一个实例,在"Eoo"中打开所有"Bar"的源文件以及"Foo"中的所有源文件.
是否有捷径可寻?
我想改变我的环境而不是项目.因此,我不想为"Foo"编辑project.clj以实现此目的.
这是否需要在启动之前设置类路径lein swank,还是有更好的方法?
我目前处于模式:Cx 2
通常,我不太关心垂直拆分。但是,我在 13" 显示器上编码,这使得垂直空间相当宝贵。
我想要一些设置,当我执行 Cx 2 时,我的窗口不是 50/50,而是 70/30 [这样我就可以将 repl 发送到屏幕的底部,并且会看到很多代码.]
垂直分割
提出:
垂直拆分窗口,垂直拆分表
但是,我怀疑有一些参数会改变/控制分流比。
什么 emacs 选项告诉我的计算机拆分 70/30 而不是 50/50?
谢谢!
我开始使用emacs和slime来开发一些小服务.
我找到了一种在更改后重新加载代码的方法,但我希望这更方便,更快捷.
这就是我现在的做法:
1)启动emacs,启动粘液,然后在粘液中:
2)(加载"init.lisp"); 加载一些不会改变的初始化代码
3)(加载"myseervice.lisp"); 这包含了我正在处理的代码
4)(myservice:start)
5)此时看门人正在运行,我可以测试它.然后我对myseervice.lisp进行了修改,以修改它.要将代码交换到新版本,我执行此操作:
6)(myservice:停止)
7)(加载"myservice.lisp")
8)转到4)重新开始...
这项工作到目前为止.但手动停止,重新加载和启动并不好玩.并且在调用之间的粘液中有很多输出,因此重用以前键入的命令并不容易4)-7).
为了得到一个解决方案,我启动了一个devhelper包,它应该只在一个命令中为我做这个,但它不起作用:
(defpackage :devhelper
(:use :common-lisp :myservice)
(:export :start :reload))
(in-package :devhelper)
(defun start ()
(myservice:start))
(defun reload ()
(myservice:stop)
(load "myservice.lisp") ;I think it is not possible to load it here,
;because this module is using the file that it is just loading
;But it does not have to work this way,
;I just like any good solution
(myservice:start))
Run Code Online (Sandbox Code Playgroud)
我想我现在可以这样做:
1)启动emacs,启动粘液,然后在粘液中:
2)(加载"init.lisp"); 加载一些不会改变的初始化代码
3a)(加载"myseervice.lisp"); 这包含了我正在处理的代码
3b)(加载"devhelper.lisp") …
我正试图在Windows 7机器上安装SLIME,但是运行M-x slime会给我错误
Spawning child process: invalid argument
Run Code Online (Sandbox Code Playgroud)
我inferior-lisp-program设置为"C:\\Program Files\\ccl\\wx86cl.exe"(事实上是正确的,并且运行(comint-run inferior-lisp-program)给了我一个工作的CCL提示),并且slime目录已添加到我的'load-path.
我究竟做错了什么?
编辑:尝试通过Windows版本的lispbox加载相同的环境,它运行SLIME罚款.我宁愿不使用那个,因为它包装了比我想要的旧Emacs,CCL和SLIME.
在python解释器中,可以简单地键入help("name")以访问文档name.
提前致谢.
从连接Slime的Clack/Hunchentoot提供大文件时,我有时会看到错误消息,如SB-IMPL :: SIMPLE-STREAM-PERROR"无法写入~s"......这些是由浏览器过早掉线造成的(这完全可以).问题是,每次发生时,SLDB都会弹出.这很烦人.
有没有办法可以抑制SLDB中的某些错误,如上所述?我仍然希望在错误日志中看到它们,但绝对不是在SLDB中.
使用Emacs Slime,如何访问REPL中最后一个表达式返回的对象或值?
在ipython中,_如果返回值是我所期望的,我可以将它保存在变量中.
Slime有类似的东西吗?
鉴于这种情况:
(defmacro mac1 ...)
(defun func1 ()
(mac1 ...))
Run Code Online (Sandbox Code Playgroud)
mac1在实时环境中重新定义在func1其自身重新编译之前不会受到影响.
有没有办法让emacs或lisp在重新编译func1时自动重新mac1编译?
在源代码中这样的东西是可以接受的:
(watch
(defmacro mac1 ...))
(on-signal (mac1)
(defun func1 ...))
Run Code Online (Sandbox Code Playgroud)
这并不难实现,但我宁愿避免重新发明.
目标
我想有我的Common Lisp(SBCL + GNU Emacs的+煤泥)环境是有点像一个Smalltalk的形象,我想有一个大泥球的包,最好的项目举办的所有我的代码。换句话说,我save-lisp-and-die在 Emacs 中设置了 Lisp 以显示保存的图像。我迷路的地方是让它与 Swank 一起工作的合适方法。
问题
我相信在save-lisp-and-die. 但是它似乎有点脆弱,因为在更改我的 SBCL 版本或 Slime 版本时,它似乎会引发版本不匹配。
题
我错过了什么吗?人们是以这种方式工作还是倾向于将更独立的项目作为 ASDF 下的一组可加载的包?
我真的很怀念 Smalltalk 的方式,感觉每个项目的 ASDF 有点笨重,而且更植根于文件系统。相比之下,它让我想起了其他所有语言及其应用程序/项目方向。OTOH 依赖包的重新版本似乎更稳定一些。好吧,跨语言的整个版本控制地狱是另一回事。
任何提示如何做我想做的事或为什么这不是一个好主意将不胜感激。