我想在emacs中循环运行一组命令行命令,当用户点击一个键时循环停止。
这是为了在 Emacs 中看到一个 ascii“视频”,当你按下一个键时它会停止。
我认为将图像到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)选择当前图像。但是,当您第二次执行此操作时,事情似乎出错了。
(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)
)
)