ちょっとしたサービスを開発するために emacs と slime を使い始めました。
変更後にコードをリロードする方法を見つけましたが、これをより便利で高速にしたいと考えています。
これは私が今それを行う方法です:
1) emacs を起動し、slime を起動してから、slime で:
2) (load "init.lisp") ; 変更されない初期化コードをロードする
3) ("myseervice.lisp" をロード); これには、私が取り組んでいるコードが含まれています
4) (マイサービス:開始)
5) この時点で seeervice が実行されており、テストできます。次に、myseervice.lisp を変更して修正します。コードを新しいバージョンに交換するには、次のようにします。
6) (マイサービス:ストップ)
7) ("myservice.lisp" をロード)
8) 4) に進み、もう一度開始します...
これはこれまでのところ機能します。しかし、手動で停止、再ロード、開始するのは面白くありません。また、呼び出しの間にスライムに大量の出力があるため、以前に入力したコマンドを再利用するのは容易ではありません 4)-7)。
解決策を得るために、1つのコマンドだけでこれを行うdevhelperパッケージを開始しましたが、機能しません:
(defpackage :devhelper
(:use :common-lisp :myservice)
(:export :start :reload))
(in-package :devhelper)
(defun start ()
(myservice:start))
(defun reload ()
(myservice:stop)
(load "myservice.lisp") ;I think it is not possible to load it here,
;because this module is using the file that it is just loading
;But it does not have to work this way,
;I just like any good solution
(myservice:start))
そして、私は今このようにできると思いました:
1) emacs を起動し、slime を起動してから、slime で:
2) (load "init.lisp") ; 変更されない初期化コードをロードする
3a) (「myseervice.lisp」をロード); これには、私が取り組んでいるコードが含まれています
3b) (「devhelper.lisp」をロード)
4) (devhelper:開始)
5) この時点で seeervice が実行されており、テストできます。次に、myseervice.lisp を変更して修正します。コードを新しいバージョンに交換するには、次のことができると夢見ていました。
6) (devhelper:リロード)
しかし、この時点でフリーズします。
そして、私はこの開発ヘルパーのアイデアに固執しているわけではなく、よりスムーズな開発サイクルが欲しいだけです。
本当のリスパーはどうやってそれをするでしょうか? 私はこれらすべてに非常に慣れておらず、従来のプログラミングのバックグラウンドから来ています;) IDEとインポートを使用しています。