আমি আমার ইমাস কনফিগারটি অনুকূলকরণের জন্য কাজ করছি যেখানে আমি তালিকায় থাকা সমস্ত থিমের জন্য গতিশীল ইন্টারেক্টিভ ফাংশন তৈরি করতে পারি।
নীচে আমি কাজটি করার চেষ্টা করছি এমন নির্মাণের একটি সরলীকৃত সংস্করণ।
;; List containing names of functions that I want to create
(setq my/defun-list '(zz-abc
zz-def
zz-ghi))
;; Elisp macro to create an interactive defun whose name
;; is passed as the macro argument
(defmacro my/create-defun (defun-name)
`(defun ,defun-name ()
(interactive)
(let ((fn-name (symbol-name ',defun-name)))
(message "Testing creation of function %s" fn-name))))
;; Loop to call the above macro for each element in the list
;; DOES *NOT* WORK
(dolist (name my/defun-list)
(my/create-defun name))
তবে যদি আমি নিজে লুপটি আনরোল করি তবে এটি কাজ করে:
;; WORKS
(my/create-defun zz-abc)
(my/create-defun zz-def)
(my/create-defun zz-ghi)
তবে নীচে কাজ করা হয় না যেখানে আমি প্রতীকী নামগুলিতে পাস করি (যা সম্ভবত লুপটি নিজেই আনরোল হয়ে যাওয়ার পরে ঘটে)। ম্যাক্রোর যুক্তিগুলির আগে উদ্ধৃতিগুলি নোট করুন।
;; DOES *NOT* WORK
(my/create-defun 'zz-abc)
(my/create-defun 'zz-def)
(my/create-defun 'zz-ghi)
হালনাগাদ
@Wvxvw এর সহায়তায় ধন্যবাদ , অবশেষে আমি এই কাজটি পেয়েছি !
@Wvxvw এর পরামর্শ অনুসারে, আমি কোনও এবং প্রতিটি ব্যবহারের ক্ষেত্রে ব্যাচ-জেনারেটিং সংশোধন করব না। এটি একটি বিশেষ ব্যবহারের XYZ
ক্ষেত্র ছিল যেখানে নামের থিমের জন্য , আমি একটি ডিফুন জেনারেট করতে চাই load-theme/XYZ
যা এর কাজটি করে
- সক্রিয় হতে পারে এমন অন্যান্য সমস্ত থিম অক্ষম করা হচ্ছে
- কলিং
load-theme
জন্যXYZ
- থিম সম্পর্কিত আরও কিছু কাস্টম স্টাফ করা; আমি তালিকার প্রতিটি থিমের জন্য কাস্টম সেটিংসে পাস করি
my/themes
।
cons
তালিকার তালিকায় কেবল এস এস রয়েছে তবে আমি প্রতিটি থিমের জন্য কাস্টম বৈশিষ্ট্যযুক্ত তালিকায় সেগুলিকে রূপান্তর করার পরিকল্পনা করছি।
(my/create-defun name)
3 বার কল করেছেন, সুতরাং আপনি name
3 বার বলা একটি ফাংশন সংজ্ঞায়িত করা উচিত ।
defuns
ভিতরে রাখুন কprogn
।progn
একটি শীর্ষ-স্তরের ফর্ম হতে দেওয়া হয় (এই অর্থে যে শীর্ষ-স্তরের ফর্মগুলিতে প্রযোজ্য প্রতিটি জিনিসই এর বিষয়বস্তুতে প্রযোজ্যprogn
)। তবে আমি এইভাবে ফাংশন তৈরির যৌক্তিকতা সম্পর্কে প্রশ্ন করব: লাম্বদাসের সাথে মান হিসাবে একটি টেবিল কেন নেই?