我想设置emacs,以便在向缓冲区中输入文本时播放打字机的声音,以及按下回车时的回车声音(类似于Windows上的Q10编辑器)。有没有人有任何建议,我可以如何去做这件事?有没有可以使用的钩子?emacs的打字机声音
我目前使用aquamacs和emacs 22,但我不反对升级。
编辑:如果有人有兴趣,这个问题的vim的版本是在这里问:How can I make VIM play typewriter sound when I write a letter?
我想设置emacs,以便在向缓冲区中输入文本时播放打字机的声音,以及按下回车时的回车声音(类似于Windows上的Q10编辑器)。有没有人有任何建议,我可以如何去做这件事?有没有可以使用的钩子?emacs的打字机声音
我目前使用aquamacs和emacs 22,但我不反对升级。
编辑:如果有人有兴趣,这个问题的vim的版本是在这里问:How can I make VIM play typewriter sound when I write a letter?
首先,你必须建立某种方式来播放声音:
(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")
谢谢,这是一个很好的答案。我想出了一种在Mac上播放声音的方法,就是使用'start-process-shell-command'调用'afplay'工具。 –
对于这个用例,这听起来像编译Emacs的声音支持值得研究。然后,您可以以字符串格式提供您的打字机噪音(请参阅'C-h C-i g(elisp)声音输出),并让Emacs播放它,而无需每次访问文件系统或外部程序。 – phils