1

ubuntu で倍音をいじってみましたが、Vim で一部の倍音のコードを評価できません。

:Eval は clojure コードに対して機能します。vim(leinプロジェクトディレクトリのcljファイル)で試してみたところ、ex: (+ 1 2 3) => :Eval => vimウィンドウの下部に表示された => 6なのでOKです。

しかし、たとえば、私は試しました:

(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)

だからここに私がすることがあります:

  • ジャック始めました
  • lein プロジェクトで lein repl が開始されます (deps は問題ありません)。
  • lein がある最初のターミナルで、倍音を開始します ('overtone.live を使用します)。ログは次のとおりです。2 つのエラーがあります。

    user=> (use 'overtone.live) --> Overtone をロード中... --> 内部 SuperCollider サーバーを起動中... * エラー: dlsym load err '/home/axxon/workspace/overtone/tutorial/native/linux/ x86_64/libscsynth.so: undefined symbol: load' Found 10 LADSPA plugins *エラー: open directory failed '/home/axxon/.local/share/SuperCollider/synthdefs' JackDriver: client name is 'SuperCollider' SC_AudioDriver: sample rate = 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
4

2 に答える 2

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 を最初からロードする必要がないため、コードの評価が大幅に高速化されることに気付くはずです。

于 2013-11-11T16:03:30.980 に答える
-1

vim で編集しているファイルの名前空間宣言で overtone.live を使用していること、および REPL が別の端末インスタンスで実行されていることを確認してください。vim からファイル (:w) を保存し、カーソルを ns 宣言に移動します。次に、gf を押して名前空間のファイルを開きます。cpR または :Require! と入力します。次に、実行しようとしていた関数を cpp または :Eval します。うまくいけば、これはあなたのために働くでしょう! 幸運を祈ります。

于 2013-09-22T05:37:11.370 に答える