gpt4 book ai didi

emacs - Clojure 史莱姆配置

转载 作者:行者123 更新时间:2023-12-01 11:52:27 25 4
gpt4 key购买 nike

我有带 swank 1.4 插件的 lein 1.7。然后,我从没有 emacs 配置开始,从 marmalade 安装 clojure-mode,用 lein 创建一个新项目,打开 project.clj,然后执行 M-x clojure-jack-in。史莱姆开始就好了。然后我输入这个

; SLIME 20100404
user> (defn x[x]
(let [y (* x 2)]
(when (= y 2)
(throw (Exception. "hey")))
y))
#'user/x
user> (x 2)
4
user> (x 1)

它让我进入调试器,但看起来还不完整:

hey
[Thrown class java.lang.Exception]

Restarts:
0: [QUIT] Quit to the SLIME top level

Backtrace:
0: NO_SOURCE_FILE:1 user/x
[No Locals]
1: NO_SOURCE_FILE:1 user/eval1854
[No Locals]
2: Compiler.java:6465 clojure.lang.Compiler.eval
3: Compiler.java:6431 clojure.lang.Compiler.eval
4: core.clj:2795 clojure.core/eval
5: core.clj:532 swank.core/eval690[fn]
6: MultiFn.java:163 clojure.lang.MultiFn.invoke
7: basic.clj:54 swank.commands.basic/eval-region
8: basic.clj:44 swank.commands.basic/eval-region
9: basic.clj:78 swank.commands.basic/eval880[fn]
--more--

不显示局部变量。没有继续的选项。我看了视频:http://vimeo.com/23932914如何获得与 slime/emacs/clojure 相同的配置。

最佳答案

如果我理解正确,你想在异常点看到局部变量,但是,我相信你的问题是异常被捕获的地方(在 x 函数退出之后) 您已经移出了定义局部变量的堆栈框架。

例如,如果你设置了一个断点......

user> (defn x [x]
(let [y (* x 2)]
(when (= 2 y)
(swank.core/break)
(throw (Exception. "hey")))))
user> (x 1)

然后当您到达断点并获取堆栈跟踪时,本地变量可用。

BREAK:
[Thrown class java.lang.Exception]

Restarts:
0: [QUIT] Quit to the SLIME top level
1: [CONTINUE] Continue from breakpoint

Backtrace:
0: NO_SOURCE_FILE:1 user/x
Locals:
x = 1
y = 2
1: NO_SOURCE_FILE:1 user/eval6821
2: Compiler.java:6465 clojure.lang.Compiler.eval
3: Compiler.java:6431 clojure.lang.Compiler.eval
4: core.clj:2795 clojure.core/eval
5: core.clj:532 swank.core/eval819[fn]
6: MultiFn.java:163 clojure.lang.MultiFn.invoke
7: basic.clj:54 swank.commands.basic/eval-region
8: basic.clj:44 swank.commands.basic/eval-region
9: basic.clj:78 swank.commands.basic/eval1009[fn]
--more--

深入了解 (swank.core/break) 的源代码,您实际上可以自己捕获这些本地绑定(bind)....

(defn x [x]
(let [y (* x 2)]
(when (= 2 y)
(swank.core/local-bindings)
(throw (Exception. "hey")))))

你将从“嘿”异常中获得与上面相同的堆栈跟踪...

更多详情 here

关于emacs - Clojure 史莱姆配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com