我想设置emacs,以便在将文本输入缓冲区时播放打字机声音,并在按Enter键时播放回车声音(类似于Windows上的Q10编辑器)。有人对我如何解决这个问题有任何建议吗?有没有我可以使用的钩子?
我目前使用 aquamacs 和 emacs 22,但不反对升级。
编辑:如果有人感兴趣,这里问了这个问题的 vim 版本:我写信时如何让 VIM 播放打字机声音?
我想设置emacs,以便在将文本输入缓冲区时播放打字机声音,并在按Enter键时播放回车声音(类似于Windows上的Q10编辑器)。有人对我如何解决这个问题有任何建议吗?有没有我可以使用的钩子?
我目前使用 aquamacs 和 emacs 22,但不反对升级。
编辑:如果有人感兴趣,这里问了这个问题的 vim 版本:我写信时如何让 VIM 播放打字机声音?
首先,您必须建立一些播放声音的方式:
(defun play-typewriter-sound ()
(let ((data-directory "~/Dowloads/Sounds"))
(play-sound `(sound :file "key1.wav"))))
...例如在 Mac OSX Emacs 上不起作用,因为它没有在编译时提供声音支持。但是有一些解决方法,例如参见http://www.emacswiki.org/emacs/ErcSound
然后,您可以在任何 Emacsen 上使用建议
(defadvice self-insert-command (after play-a-sound activate)
(play-typewriter-sound))
你也可以建议newline-and-indent
。
在 Emacs24 上,您现在拥有post-self-insert-hook
(add-hook 'post-self-insert-hook 'play-typewriter-sound)
如果您不喜欢defadvice
,可以使用post-command-hook
并检查this-command
那里的名称:
(add-hook 'post-command-hook #'play-typewriter-sound-maybe)
(defun play-typewriter-sound-maybe ()
(if (eq this-command 'self-insert-command)
(play-typewriter-sound)))
如果有人需要这个使用afplay
这里我用什么
(defun play (audio-name)
(interactive)
(let* (buf (get-buffer-create "playnoise"))
(start-process-shell-command
"play" buf (concat (format "afplay /Users/foo/audios/%s" audio-name) ".mp3"))))
(play "wrong")