बस इसे अभी देख रहा है, लेकिन यहां मैंने जो किया है। अंतिम परिणाम यह है कि मैं निम्नलिखित करना चाहता हूं: (hook-up-modes my-lisps 'standard-lisp-environment)
।
ऐसा करने के लिए, मैं निम्नलिखित defvar
एस को परिभाषित करता हूं।
(defun append-suffix (suffix phrases)
"take SUFFIX and append it to each of the PHRASES."
(mapcar #'(lambda (phrase) (concat phrase suffix)) phrases))
ताकि ("clojure" "तुतलाना") => ("clojure:
(defvar my-lisps "clojure lisp emacs-lisp cider-repl")
(defun standard-lisp-environment()
(paredit-mode 1)
(rainbow-delimiters-mode 1)
(eldoc-mode 1))
मैं lisps मैं उपयोग करने के लिए तुतलाना संलग्न मोड हुक करने के लिए तो मैं निम्नलिखित है चाहता हूँ -मोड-हुक "" लिस्प-मोड-हुक ")।
(defun multiple-mode-add-hook (modes hook)
"Given a list of x-mode-hook symbols in MODE, add the HOOK to them."
(mapc (lambda (mode) (add-hook mode hook)) modes))
ये सब:
अब हम आसानी से इन हो सकता है, हम अपने पाठक प्रतीकों, जो हम आसानी से से
(defun symbols-from-strings (strings)
"Given a list of strings, get their symbol values"
(mapcar #'intern strings))
पाने और फिर अंत में हम समान रूप से ऊपर पोस्ट की जरूरत है उस प्रकार पर काम करें जो उनके लिए समझ में आता है, तारों की सूची, प्रतीकों की सूची 'ब्लाह-मोड-हुक इत्यादि। इसलिए अब हमें एक अच्छे उपयोगकर्ता के साथ काम करने की आवश्यकता है जिसका हम काम कर सकते हैं।
(defun hook-up-modes (strings hook)
(let ((modes (symbols-from-strings
(append-suffix "-mode-hook" (split-string strings)))))
(multiple-mode-add-hook modes hook)))
अब यह बहुत सुपाठ्य होना चाहिए: हम तार के एक अंतरिक्ष सीमांकित सूची से हमारे मोड बना सकते हैं और इसे करने के लिए हुक लागू होते हैं।इसके अलावा, चूंकि मैंने मानक-लिस्प-पर्यावरण को परिभाषित किया है, इसलिए मेरे सभी लिस्प्स समान व्यवहार करते हैं, और अगर मुझे पसंद है तो मैं आसानी से हुक को हटा सकता हूं। फिर कोड जो वास्तव में काम करता है वह सुपर सरल वाक्यांश (hook-up-modes my-lisps 'standard-lisp-environment)
है।
बिल्कुल सही, धन्यवाद! एक स्पर्शरेखा के रूप में, मैं प्रमुख तरीकों के बारे में उलझन में था - उनमें से प्रत्येक क्लिक पर एक अलग "संदर्भ मेनू" पॉप करता है। किसी भी तरह से, आपका समाधान पूरी तरह से काम करता है। –
मैं हुक के लिए 'लैम्ब्डा' अभिव्यक्ति जोड़ने के खिलाफ दृढ़ता से सलाह दूंगा। एक कारण यह है कि यह देखना मुश्किल है कि इसकी सामग्री का अध्ययन करते समय एक हुक क्या होता है। एक अन्य कारण यह है कि जब आप अपने हुक को संशोधित कर रहे होते हैं, तो नए और हर पुराने संस्करण मौजूद होते हैं (जब तक कि आप पुराने संस्करण को ध्यान से हटा नहीं देते), जिससे दिलचस्प प्रभाव हो सकते हैं। – Lindydancer
@ लिंडिडांसर मैं पूरी तरह से सहमत हूं, लेकिन यह सिर्फ प्रदर्शन उद्देश्य के लिए था। वैसे भी, अलग समारोह में बदल दिया। –