2012-03-26 13 views
8

मैं Emacs में स्वत: पूर्ण और yasnippet का उपयोग कर रहा हूं और मैं उनकी सेटिंग्स से उलझन में हूं। मैं अपने .emacs में निम्न कोड रखा:emacs में ऑटो पूर्ण और yasnippet के बारे में

(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet") 
(require 'yasnippet) 
(yas/global-mode 1) 
(global-set-key (kbd "C-i") 'yas/expand) 
(setq yas/also-auto-indent-first-line t) 

(add-to-list 'load-path "~/.emacs.d/plugins/autocomplete/") 
(require 'auto-complete-config) 
(add-to-list 'ac-dictionary-directories "~/.emacs.d/plugins/autocomplete/ac-dict") 
(ac-config-default) 
(setq ac-use-menu-map t) 
(define-key ac-menu-map "\C-n" 'ac-next) 
(define-key ac-menu-map "\C-p" 'ac-previous) 

(defun ac-js-mode() 
(setq ac-sources '(ac-source-yasnippet 
       ac-source-symbols 
       ac-source-words-in-buffer 
       ac-source-words-in-same-mode-buffers 
       ac-source-files-in-current-dir 
       ))) 
(add-hook 'js-mode-hook 'ac-js-mode) 

मैं yasnippet स्वत: पूर्ण पॉपअप मेनू में पहले उम्मीदवार के रूप में स्थापित करने के लिए कोशिश कर रहा हूँ। हालांकि, जैसा कि नीचे दिया गया उदाहरण दिखाता है, यह मेरी वर्तमान सेटिंग्स के साथ काम नहीं करता है: जब मैं for शब्द टाइप करता हूं, formatItem दूसरी स्थिति में और for दूसरे स्थान पर है। formatItem वर्तमान बफर में केवल एक स्थानीय फ़ंक्शन है।

for_____________ 
|formatItem  | 
|for   a| 
|for   s| 
|force   s| 
|foreachv  s| 
---------------- 

तो मेरा सवाल है: मैं ऑटो-पूर्ण में पहला उम्मीदवार यासिपिपेट कैसे बना सकता हूं? और क्या मेरे .emacs कॉन्फ़िगरेशन में कुछ याद आ रही है?

किसी भी मदद की सराहना की जाती है।

+0

मैं जवाब पता नहीं है, लेकिन स्वत: पूर्ण अंतर्निहित शिक्षा प्रणाली है, इसलिए अधिक बार आप के लिए एक उम्मीदवार का चयन अगली बार यह पूरा हो जाएगा। तो आपको केवल थोड़ी देर के लिए इसका उपयोग करना पड़ सकता है, और आपके सभी अक्सर इस्तेमाल किए गए स्निपेट स्वचालित रूप से शीर्ष पर तैर जाएंगे। – Tom

उत्तर

5

ac-config-default समझदार डिफ़ॉल्ट ac-sources मान सेट करने के लिए हुक इंस्टॉल करता है। ये हुक (विशेष रूप से ac-common-setup) आपकी सेटिंग्स में हस्तक्षेप कर सकते हैं।

आप को देखने के लिए अगर यह अपने कस्टम मूल्य की तुलना द्वारा संशोधित किया गया ac-sources (सी एच वीac-sources) एक js-mode बफर में के वास्तविक मूल्य को देखकर यह देख सकते हैं।

यदि यह मामला है, मैं दो समाधान देखें:

  • रोक ac-config-default का उपयोग कर और सभी autocomplete सेटिंग्स specifiy,
  • दोषपूर्ण हुक को सलाह ac-sources की शुरुआत में ac-source-yasnippet डाल करने के लिए चलने के बाद उसे। मान लिया जाये कि एसी-आम-सेटअप वास्तव में है उपद्रवी, इस प्रकार दिखाई देगा:
(defadvice ac-common-setup (after give-yasnippet-highest-priority activate) 
    (setq ac-sources (delq 'ac-source-yasnippet ac-sources)) 
    (add-to-list 'ac-sources 'ac-source-yasnippet)) 
+0

आपके उत्तर के लिए धन्यवाद। यह वही मामला है जैसा आपने वर्णन किया था। लेकिन मैं ऊपर दिए गए विधि 2 को स्पष्ट रूप से समझ नहीं रहा हूं। क्या आप मुझे इसके बारे में कुछ और बता सकते हैं? धन्यवाद। – Boris

+0

@Ryan मेरा संपादन देखें। – Francesco

+1

हाय, मेरे कोड को मेरे .emacs में रखने के बाद, एसी-स्रोतों का वास्तविक मान सही लगता है जहां एक जेएस फ़ाइल आउटपुट में Ch v: इसका मान (एसी-स्रोत-यास्निपेट एसी-स्रोत-फ़ाइलनाम एसी- स्रोत-प्रतीकों एसी-स्रोत-शब्द-इन-बफर एसी-स्रोत-शब्द-इन-समान-मोड-बफर एसी-स्रोत-फाइल-इन-वर्तमान-डीआईआर)। बफर set.js में। लेकिन जब मैं 'for' शब्द टाइप करता हूं, तो पॉपअप मेनू अभी भी ग्राफ को देता है जो मैंने प्रश्न में दिया था। मुझे इसके बारे में कोई जानकारी नहीं है। – Boris

संबंधित मुद्दे