首页 文章

Overtone和Vim(Repl似乎没有连接)

提问于
浏览
1

我尝试在ubuntu上使用泛音,但我不能在Vim中评估一些泛音的代码 .

:Eval适用于clojure代码;我在vim(lein项目目录中的clj文件)中尝试过它,例如:(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已启动
    li9 lein repl在lein项目中启动(deps是好的)

  • 在第一个有lein的终端我开始泛音(使用'overtone.live),这里是日志;我有2个错误:

user =>(使用'overtone.live) - >加载Overtone ... - >启动内部SuperCollider服务器... *** ERROR: dlsym load err '/home/axxon/workspace/overtone/tutorial/native/linux/x86_64/libscsynth.so: undefined symbol: load' Found 10 LADSPA plugins *** 错误:打开目录失败'/home/axxon/.local/share/SuperCollider/synthdefs' JackDriver:客户端名称为'SuperCollider' SC_AudioDriver:采样率= 44100,000000,驱动程序的块大小= 1024 - >连接到内部SuperCollider服务器... - > Build 连接JackDriver:最大输出延迟23,2 ms

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

  • 很好,但现在我想用Vim编写脚本,所以我在lein项目目录(/ overtone / tutorial)中创建了一个新文件(mytest.clj),我用Vim打开了它(在另一个窗口中)

  • 在这个空白文件中,我写了与之前说过的相同的东西,(demo(sin-osc))并尝试先用eval,: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'

编辑:我忘了使用正确的命名空间,在泛音的谷歌组中,我看到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

2 回答

  • 1

    我遇到了同样的问题 . 事实证明,vim壁炉插件没有连接到我的bash repl会话 . 我手动 Build 了连接,之后一切正常 .

    在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 .

  • -1

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

相关问题