ユーザーがキーをタップするとループが停止するように、一連のコマンド ライン コマンドを emacs 内のループで実行したいと考えています。
これは、Emacs で ascii 'video' が表示され、キーを押すと停止するのを見るためです。
画像からASCIIへのテキストをコメントとして持つのは楽しいだろうと思いました(画像は私のMacのカメラからのものです)。
imagesnap を使用してカメラ画像を取得し、jp2a を使用して ascii に変換します。imagesnapはMacのみだと思います。これまでのコードは次のとおりです。
(defun ascii-video-comment ()
"Makes video comment, requires imagemagick, jp2a, imagesnap"
(interactive)
(shell-command "imagesnap -q ~/Desktop/emacs-snap.jpg")
(insert (shell-command-to-string "jp2a --width=48 ~/Desktop/emacs-snap.jpg"))
(shell-command "rm ~/Desktop/emacs-snap.jpg")
)
これは、カメラからスナップを取得し、ASCII に変換し、それをファイルに挿入して、カーソルを配置するだけです。
私が言うように、キーをタップして現在の「フレーム」を選択するまで、ループを続けて、遅いASCIIビデオのように見せたいと思います。
これは可能ですか?
編集
これは私の現在のコードで、かなり満足しています。20回ループし、キャンセル(Cg)で現在の画像を選択できます。ただし、2回目にするとうまくいかないようです。
(defun ascii-video-comment ()
"Makes video comment, requires imagemagick, jp2a, imagesnap"
(interactive)
(cl-loop repeat 20 do
(shell-command "imagesnap -q ~/Desktop/ascii-video-comment.jpg")
(cua-set-mark)
(insert (shell-command-to-string "jp2a --width=120 ~/Desktop/ascii-video-comment.jpg"))
(shell-command "rm ~/Desktop/ascii-video-comment.jpg")
(comment-region (mark) (point))
(cua-set-mark)
(pop-global-mark)
(sit-for 0.1)
(undo)
)
)