আমি এখানে একটি "ভুল টাইপের আর্গুমেন্ট: কমান্ডপ, (ল্যাম্বডা নীল (ফরোয়ার্ড-লাইন 5))" পাচ্ছি।
(global-set-key [?\M-n] (lambda () (forward-line 5)))
ত্রুটি কী? আমি মোটামুটি নিশ্চিত যে এটি সহজ এবং আমি স্পষ্ট কিছু মিস করছি।
আমি এখানে একটি "ভুল টাইপের আর্গুমেন্ট: কমান্ডপ, (ল্যাম্বডা নীল (ফরোয়ার্ড-লাইন 5))" পাচ্ছি।
(global-set-key [?\M-n] (lambda () (forward-line 5)))
ত্রুটি কী? আমি মোটামুটি নিশ্চিত যে এটি সহজ এবং আমি স্পষ্ট কিছু মিস করছি।
উত্তর:
global-set-keyএকটি ইন্টারেক্টিভ কমান্ড আশা করে। (lambda () (interactive) (forward-line 5))কাজ করা উচিত।
যাইহোক, এর C-h f commandpমতো ত্রুটির জন্য একটি খুব ভাল সূচনা পয়েন্ট।
(commandp)ডকুমেন্টেশন অনুসারে , ল্যাম্বদা ফাংশনটি শীর্ষ স্তরের সাথে (interactive)কাজ করবে, তবে আমি কীভাবে একটি ফাংশনটি সংজ্ঞায়িত করতে পারি (defun)?
সঠিক ফর্মটি এটি হওয়া উচিত -
(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))
সমস্যাটি ছিল আপনি রাখা ভুলে গেছেন (interactive) (ব্রেন্ডন উল্লিখিত হিসাবে)।
যাইহোক, আপনি লক্ষ্য করবেন যে আমি (kbd)কী-বাঁধাই নির্দিষ্ট করার জন্য ফাংশনটি ব্যবহার করেছি। আপনি কী-বাইন্ডিংগুলি প্রায় আক্ষরিক অর্থে রাখতে পারেন যেহেতু এই ফাংশনটি অত্যন্ত কার্যকর।
আমি এই ত্রুটিটি একটি নতুন মেশিনেও দেখেছি যেখানে আমি আমার সাধারণ .emacsফাইলটি ব্যবহার করছি তবে আমার প্যাকেজগুলি ইনস্টল করা হয়নি এবং কার্যকর করার আদেশটি সেই প্যাকেজগুলির মধ্যে একটিতে রয়েছে। (কারণ যে আদেশটি কার্যকর করা যায় না তা অবশ্যই ইন্টারেক্টিভ হয় না!)