【问题标题】:Overtone & Vim (Repl doesn't seems to be connected)Overtone & Vim(Repl 似乎没有连接)
【发布时间】:2013-09-24 22:35:50
【问题描述】:

我尝试在 ubuntu 上玩泛音,但我无法在 Vim 中评估泛音的一些代码。

:Eval 适用于 clojure 代码;我在vim中试了一下(lein项目目录下的一个clj文件),ex: (+ 1 2 3) => :Eval => 出现在vim窗口底部=> 6,所以没问题。

但是,例如,我尝试过:

(demo(sin-osc)) => :Eval ;(:Require don't change nothing)

它返回:

java.lang.RuntimeException: Unable to resolve symbol: demo in this context, comp
iling:(NO_SOURCE_PATH:1:1)

这就是我要做的:

  • jack 已启动
  • lein repl在lein项目中启动(deps没问题)
  • 在有 lein 的第一个终端中,我开始泛音(使用 'overtone.live),这是日志;我有 2 个错误:

    user=> (使用'overtone.live) --> 加载泛音... --> 正在启动内部 SuperCollider 服务器... * 错误:dlsym load err '/home/axxon/workspace/overtone/tutorial/native/linux/x86_64/libscsynth.so:未定义符号:加载' 找到 10 个 LADSPA 插件 * 错误:打开目录失败 '/home/axxon/.local/share/SuperCollider/synthdefs' JackDriver:客户端名称是“SuperCollider” SC_AudioDriver:采样率 = 44100,000000,驱动程序块大小 = 1024 --> 连接到内部 SuperCollider 服务器... --> 连接建立 JackDriver:最大输出延迟 23.2 毫秒

  • 在这里,我在这个窗口中尝试过 (demo(sin-osc))。有用;我能听到。

  • 很好,但是现在我想用 Vim 编写脚本,所以我在 lein 项目目录 (/overtone/tutorial) 中创建了一个新文件 (mytest.clj),我用 Vim 打开它(在另一个窗口中)
  • 在这个空白文件中,我写了和我之前说的一样的东西,(demo(sin-osc)) 并尝试先评估,:Require,它返回了这个:

    (clojure.core/require 'user :reload)

    java.io.FileNotFoundException: Could not locate user__init.class or user.clj on 
    classpath: 
    
  • 使用 Eval,它也不起作用。

感谢你的帮助,因为我真的很想用泛音!

Ps:我的 vim 包:

捆绑 'guns/vim-clojure-static'
捆绑 'tpope/vim-fireplace'
捆绑'tpope/vim-classpath'

编辑:我忘记使用正确的命名空间,在 overtone 的 google 组中,我看到 mytest.clj 必须在项目的 src 目录中。我用 :Require 尝试了这段代码(我在开始 lein 的第一个窗口中停止了泛音):

(ns tutorial.foo
  (:use [overtone.live]))
(definst saw-wave [freq 440 attack 0.01 sustain 0.4 release 0.1 vol 0.4]
      (* (env-gen (lin-env attack sustain release) 1 1 0 1 FREE) (saw freq) vol))
(saw-wave)

,但它返回了:

(clojure.core/require 'tutorial.foo :reload)
Erreur détectée en traitant function <SNR>17_Require..fireplace#session_eval..<S
NR>17_eval..7 :
ligne   38 :
E605: Exception non interceptée : Error running Clojure: *** ERROR: open directo
ry failed '/usr/java/packages/lib/amd64'^@*** ERROR: dlsym load err '/usr/lib/jn
i/libswt-gtk-3836.so: undefined symbol: load'^@*** ERROR: dlsym load err '/usr/l
ib/jni/libswt-glx-gtk-3836.so: undefined symbol: load'^@*** ERROR: dlsym load er
r '/usr/lib/jni/libswt-webkit-gtk-3836.so: undefined symbol: load'^@*** ERROR: d
lsym load err '/usr/lib/jni/libswt-atk-gtk-3836.so: undefined symbol: load'^@***
 ERROR: dlsym load err '/usr/lib/jni/libswt-pi-gtk-3836.so: undefined symbol: lo
ad'^@*** ERROR: dlsym load err '/usr/lib/jni/libswt-cairo-gtk-3836.so: undefined
 symbol: load'^@*** ERROR: dlsym load err '/usr/lib/jni/libswt-awt-gtk-3836.so: 
undefined symbol: load'^@*** ERROR: dlsym load err '/usr/lib/jni/libswt-gnome-gt
k-3836.so: undefined symbol: load'^@#^@# A fatal error has been detected by the 
Java Runtime Environment:^@#^@#  SIGSEGV (0xb) at pc=0x00007f5d261db671, pid=693
1, tid=140036632291072^@#^@# JRE version: 7.0_25-b30^@# Java VM: OpenJDK 64-Bi

【问题讨论】:

  • 你试过使用真正的编辑器吗?
  • :D 你说 Emacs 吗?

标签: vim clojure read-eval-print-loop


【解决方案1】:

我遇到了同样的问题。原来 vim 壁炉插件没有连接到我的 bash repl 会话。我手动建立了连接,之后一切正常。

在您的 lein 会话的顶部,您应该看到有关 repl 会话在哪个端口上运行的详细信息

nREPL server started on port 35182 on host 127.0.0.1

那么你可以使用

将 vim-fireplace 连接到该 repl 会话

:Connect nrepl://localhost:35182

即使 vim-fireplace 未连接到远程 repl 会话,您仍然可以评估 (+ 1 2 3) 之类的代码的原因是因为 vim-classpath 会使其退回到仅生成一个新的 clojure 运行时实例来评估该代码.一旦壁炉 repl 连接正常工作,您应该注意到评估代码变得更快,因为它不需要从头开始加载 clojure。

【讨论】:

    【解决方案2】:

    确保在 vim 中编辑的文件的命名空间声明中使用 overtone.live,并且 REPL 在单独的终端实例中运行。在 vim 中,保存文件 (:w) 并将光标移动到 ns 声明中。然后点击 gf 打开命名空间的文件。输入 cpR 或 :Require!然后 cpp 或 :Eval 您尝试运行的功能。希望这对你有用!祝你好运。

    【讨论】:

    • 非常感谢!我尝试在 /tutorial/src/tutorial/foo.clj 中使用 gf 在我的命名空间中打开 overtone.live 但没有成功:(ns tutorial.foo (:use [overtone.live])。它返回,'不能查找文件'。出了什么问题?(lein deps 没问题,正常...)
    • 这很不寻常。仔细检查 clojure 和 overtone 是否在 /tutorial 文件夹中的 project.clj 文件中列为依赖项。如果是,请尝试从 /tutorial 文件夹再次运行 lein deps 并再次运行 REPL。当您再次在 vim 中打开 foo.clj 时,请确保您的光标在您点击 gf 时位于 WORD tutorial.foo 中。再次,祝你好运。故障排除很困难。
    猜你喜欢
    • 2015-08-26
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多