2012-06-26 23 views
8

Emacs ayarlamak istiyorum, böylece metin girerken bir daktilo sesleri yanı sıra girme isabet bir satırbaşı ses (Windows Q10 editörüne benzer) yazarak bir sesleri çalar. Bu konuda nasıl gidebileceğime dair bir önerisi var mı? Kullanabileceğim bir kanca var mı?Daktilo emacs için ses veriyor

Şu anda aquamacs ve emacs 22 kullanıyorum, ancak yükseltmeye karşı değilim.

DÜZENLEME: vaka kimse ilgileniyor, bu sorunun vim sürümü burada istendi: How can I make VIM play typewriter sound when I write a letter?

cevap

10

Önce ses çalma için bir yol kurmak gerekir:

(defun play-typewriter-sound() 
     (let ((data-directory "~/Dowloads/Sounds")) 
     (play-sound `(sound :file "key1.wav")))) 

... etmez Örneğin, ses desteği ile derlenmediği için Mac OSX Emacs'te çalışın. Ayrıca newline-and-indent tavsiyelerini almak Orada geçici çözümler olsa vardır Sonra

  • örneğin http://www.emacswiki.org/emacs/ErcSound için bkz herhangi Emacsen

    (defadvice self-insert-command (after play-a-sound activate) 
        (play-typewriter-sound)) 
    

    tavsiye kullanabilirsiniz. Birisi ise

    (add-hook 'post-command-hook #'play-typewriter-sound-maybe) 
    
    (defun play-typewriter-sound-maybe() 
        (if (eq this-command 'self-insert-command) 
         (play-typewriter-sound))) 
    
+0

Teşekkürler, bu harika bir cevap. Ben bir mac üzerinde ses çalmak için bir yol olduğunu anladım "start-process-shell-command" kullanarak 'afplay' yardımcı programı çağırmak oldu. –

+0

Bu kullanım durumu için, ses desteğiyle Emacs'i derlemeye değer gibi geliyor. Ardından daktilo sesinizi dize formatında (bkz. 'C-h C-i g (elisp) Ses Çıkışı') sağlayabilirsiniz ve her seferinde dosya sistemine ya da harici bir işleme erişmeye gerek kalmadan Emacs'in çalmasını sağlayabilirsiniz. – phils

1

: Eğer post-command-hook kullanabilir ve this-command orada ismini kontrol edebilirsiniz defadvice Eğer beğenmezseniz

Emacs24 On
  • şimdi post-self-insert-hook

    (add-hook 'post-self-insert-hook 'play-typewriter-sound) 
    
  • var afplay kullanarak buna ihtiyacım var

    'u ne kullanırım
    (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")