9

我想设置emacs,以便在将文本输入缓冲区时播放打字机声音,并在按Enter键时播放回车声音(类似于Windows上的Q10编辑器)。有人对我如何解决这个问题有任何建议吗?有没有我可以使用的钩子?

我目前使用 aquamacs 和 emacs 22,但不反对升级。

编辑:如果有人感兴趣,这里问了这个问题的 vim 版本:我写信时如何让 VIM 播放打字机声音?

4

2 回答 2

11

首先,您必须建立一些播放声音的方式:

    (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)))
    
于 2012-06-26T18:53:12.437 回答
2

如果有人需要这个使用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")
于 2015-05-16T16:27:33.663 回答