.dir-locals.el
यह संभव होने पर मेरा पसंदीदा तरीका है, विशेष रूप से यह उस परियोजना पर काम करने वाले सभी Emacs उपयोगकर्ताओं पर लागू होता है।
उन परियोजनाओं के लिए जो Emacs उपयोगकर्ताओं के लिए शत्रुतापूर्ण हैं या अन्यथा .dir-locals.el
फाइलें नहीं चाहते हैं , या यदि आप व्यक्तिगत प्राथमिकताएं (संभवतः इंडेंटेशन नहीं) चाहते हैं, जो अन्य लोगों पर लागू नहीं होनी चाहिए, यदि आप एक वितरित संस्करण नियंत्रण प्रणाली का उपयोग करते हैं, तो एक विकल्प है हमेशा उन व्यक्तिगत शाखाओं पर काम करने के लिए जो आपके पास हैं .dir-locals.el
। मैं एक डीसीवीएस का उपयोग करने का तरीका नहीं जानता, जो इस दर्द रहित बनाता है।
एक अन्य विकल्प .dir-locals.el
फाइलों में जांच नहीं करना है। उदाहरण के लिए, गिट के साथ, इसे जोड़ें .git/info/exclude
। यह दर्दनाक है जब आपके पास किसी परियोजना के कई चेकआउट होते हैं, निश्चित रूप से।
मैंने जो किया है .dir-locals.el
वह एक विकल्प नहीं था एक हुक जोड़ने के लिए जो buffer-file-name
ज्ञात मूल्यों के खिलाफ दिखता है ।
(defvar guessed-project nil)
(make-variable-buffer-local 'guessed-project)
(defun guess-project-from-file-name ()
(save-match-data
(setq guessed-project
(cond
((string-match "/linux-kernel/" buffer-file-name)
'linux-kernel)
((string-match "/gnu/" buffer-file-name)
'gnu)
; etc.
))))
(defun c-my-project-hook ()
(guess-project-from-file-name)
(case guessed-project
((gnu) (c-sty-style 'gnu))
((linux-kernel) (c-sty-style 'linux))
))
(add-hook 'c-mode-hook 'c-my-project-hook)
(चेतावनी: कोड मेरे ब्राउज़र में सीधे टाइप किया जाता है क्योंकि मेरे पास अभी अपने वास्तविक कोड तक पहुंच नहीं है।)
.dir-locals.el
। क्या सहकर्मी इस विचार को पसंद कर सकते हैं?