問題タブ [swank]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - node.js-ライブプロセスへの評価
誰かが既存のnode.jsREPLを使用して自分のためにこのようなものを設定しましたか?私はそれを行うための迅速な方法を考えていませんでした。
私が今日それをする方法はemacsとこれを使うことです: https ://github.com/ivan4th/swank-js
このモジュールは次のもので構成されています。
emacsへのSLIME-jsアドオンは、js2-modeと組み合わせて、関数defの本体のどこかにCMxを発行するだけで、関数の文字列を.に送信します。
Node.jsで記述されたSwank-jsサーバー(はい、ローカルマシンからリモートプロセスに直接評価できます)-評価した関数の文字列を受け取り、実際に評価します
ブラウザを使用してそのサーバーの別のポートに接続し、そのブラウザでDOMを操作できるようにする全体(これは非常に素晴らしいですが、関連性はありません)
私のソリューションはemacs側でSLIME-jsを使用しており、app.jsファイルにrequire('swank-js')があります
今..私は私の解決策または他の可能なものに関していくつかの問題と質問があります:
Q1:これはやり過ぎですか?誰かがnanoから彼のライブプロセスにものを評価する秘密の方法を持っていますか?
Q2:swank-jsの評価方法を変更する必要がありました。次のような黒魔術を使用しました。
私が理解している限り、これはグローバル変数を新しいコンテキストにコピーするだけであり、evalを実行しても、元の関数定義は変更されません-SOOO..私は単純な「eval」とITWORKSを使用しています。
これについて何かコメントはありますか?
Q3:関数を再評価するには、それがGLOBAL関数である必要があります-すべての関数定義をグローバル(clojureのような)として持つのは悪い習慣ですか?これを行う別の方法があると思いますか?
emacs - leiningenとswank/slimeを使用してemacsでclojureテストを実行しているときに無限ループを停止する
特定の種類のコードでは、スタックを壊さずに無限ループを発生させるのは比較的簡単です。clojure-testを使用してこの種のコードをテストする場合、swankサーバーを再起動せずに現在実行中のテストを中止する方法はありますか?
現在、私のワークフローには
を使用してemacsでswankに接続しslime-connect
、テストに切り替えて、で実行しC-c C-,
、テストを無限ループまで実行してから、戻るだけですが、1つのCPUがまだテストで離れています。私が見つけたこれを止める唯一の方法は、lein swankを再起動することですが、これは比較的一般的な問題のように思われますか?誰かがより良い解決策を持っていますか?
clojure - SLIMEでエージェントのstdout/log出力をキャプチャする方法は?
タスクをエージェントに送信しましたが、関数に入力したprintステートメントの出力が表示されません。エージェントでのコード実行を追跡するにはどうすればよいですか?
編集:コンソールでは出力を取得しますが、SLIMEでは取得しません。ここでの問題は、SLIMEで出力を確認する方法です。
google-app-engine - jetty / appengine-magicとswankの起動を自動化する方法は?
私のClojure/appengine-magicプロジェクトでは、現在次のように起動しています。
tlog.coreには次のものがあります。
あるいは、ae / startの代わりに、次のように使用できます。
これらすべてを1つのコマンドの背後に置きたいと思います。
名前空間/パスの問題が原因で、leiningenプラグインの-main
使用または書き込みを介してこれを処理するすべての試みが失敗しました。lein run
では、どうすればそれを行うことができますか?
macros - マクロで作成した関数が新しいスライム セッションに表示されないのはなぜですか? (クロージュア)
私の clojure コードには、カスタム マクロの呼び出しで作成された関数がいくつかあります。通常、マクロは何らかのデータ構造を取り、そこからメソッドを作成します。
これは不自然な例です:
と呼ばれる新しい関数を作成しますview-data
。(私のデータベース クエリはデータ駆動型なので、特定のクエリを呼び出すわかりやすい名前の関数を作成できます)
私の問題は、mvn clojure:swank
ターゲットを実行して emacs からスライム セッションに接続すると、これらの関数が表示されないことです。C-c C-k
関数を作成するには、ファイルにアクセスして自分でコンパイルする必要があります。
maven の出力は、ファイル自体は正常にコンパイルされることを示唆していますが、スライム セッションは関数について認識していません。
なぜこれが起こっているのでしょうか?
lisp - #+# とは何ですか。とはどういう意味ですか?
ググることはほとんど不可能なので、私の理解は、スライムのソースコードを読んで文脈上の手がかりに限定されています: おそらくそれは Common Lisp のオブジェクトシステムの一部なのでしょうか? 「自分」みたいなもの?
スニペット:
おそらく、これによりググりやすくなるでしょう: ポンド プラス ポンド // ハッシュ プラス ハッシュ記号 // オクトソープ プラス オクトソープ
clojure - lein プロジェクトを clojure 1.2.1 から 1.3.0-beta1 にアップグレードする
Clojure 1.2.1 を使用する leiningen プロジェクトがあります。clojure 1.3.0-beta1 を必要とするパッケージに依存関係を追加したいと考えています。そこで、プロジェクトを新しいバージョンにアップグレードすることにしました。
正直なところ、それが何を意味するのかわかりませんでしたが、次のことを行いました..
私の project.clj で、依存関係を [org.clojure/clojure "1.2.1] から [org.clojure/clojure "1.3.0"] に変更しました
私は swank を使っているので、swank clojure の依存関係を [swank-clojure "1.3.2"] に変更しました。
それから走った
レイン・デプス
最後に、/usr/bin/lein ファイルを手動で編集して、CLOJURE_JAR 変数が新しい clojure jar を指すように変更しました。
「lein swank」でスワンクを始めると。正常に起動し、次のような警告メッセージが表示されます..
警告: default-javac-optionsは動的に宣言されていないため、動的に再バインドできませんが、その名前はそうではありません。^:dynamic default-javac-options を指定するか、名前を変更してください。
これは、clojure 1.3.0 と関係があると思います。
次に、Aquamacs を起動して、slime-connect を実行します。REPL は正常に開始されますが、「1.2.1」を取得した場合に clojure-version を呼び出すと。
; SLIME 20100404 ユーザー> (clojure-version) "1.2.1"
他に何かする必要がありますか?
emacs - Swankサーバーの出力をemacsバッファにリダイレクトする方法は?
swank サーバーの出力を emacs バッファーにリダイレクトしたいと考えています。これを ~/.swank.lisp に入れましたが、うまくいきません。
(setf swank:*globally-redirect-io* t)
Clojureボックスを使用しています。
ありがとう。