2012-06-26 15 views
8

मैं emacs सेट अप करना चाहता हूं ताकि यह बफर में पाठ टाइप करते समय एक टाइपराइटर ध्वनियों को चलाए, साथ ही साथ प्रवेश करने पर कैरिज रिटर्न ध्वनि (विंडोज़ पर क्यू 10 संपादक के समान)। क्या किसी के पास कोई सुझाव है कि मैं इसके बारे में कैसे जा सकता हूं? क्या कोई हुक है जिसका मैं उपयोग कर सकता हूं?टाइपराइटर emacs के लिए लगता है

मैं वर्तमान में एक्वामाक्स और emacs 22 का उपयोग करता हूं, लेकिन अपग्रेड करने के विपरीत नहीं हूं।

संपादित करें: में मामला किसी को दिलचस्पी है, इस सवाल का vim संस्करण यहाँ कहा गया था: How can I make VIM play typewriter sound when I write a letter?

उत्तर

10

सबसे पहले आप किसी तरह से ध्वनि चलाने के लिए स्थापित करना होगा:

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

... नहीं करता है उदाहरण के लिए मैक ओएसएक्स 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))) 
    
+0

धन्यवाद, यह एक अच्छा जवाब है। मैंने एक मैक पर ध्वनि चलाने के लिए एक तरीका निकाला था 'स्टार्ट-प्रोसेस-शेल-कमांड' का उपयोग करके 'afplay' उपयोगिता को कॉल करना था। –

+0

इस उपयोग के मामले में, ऐसा लगता है कि ध्वनि समर्थन के साथ Emacs संकलित करने के लायक होगा। फिर आप स्ट्रिंग प्रारूप में अपना टाइपराइटर शोर प्रदान कर सकते हैं ('सी-एच सी-आई जी (एलिस्प) ध्वनि आउटपुट' देखें) और प्रत्येक बार फ़ाइल सिस्टम या बाहरी प्रक्रिया तक पहुंचने के बिना Emacs इसे चलाते हैं। – phils

1

कोई तो 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") 
संबंधित मुद्दे