আপনি লিস্প কোড থেকে এইভাবে বাছাই করতে পারেন । "সাজানোর" কেন? কারণ মেসেজ একটি আদিম, সি-তে সংজ্ঞায়িত হয়েছে, একটি লিস্প ফাংশনের পরিবর্তে এবং ইমাস লিস্প রেফারেন্স ম্যানুয়াল অনুসারে সি কোড থেকে আদিমদের কাছে কলকে পরামর্শ উপেক্ষা করে।
সুতরাং, আপনার ইচ্ছা মতো কার্যকারিতা বাস্তবায়নের জন্য যথাযথভাবে কাজ করার জন্য আপনাকে বার্তাটি আদিমতার একটি লিপ ফাংশন হিসাবে পুনরায় সংজ্ঞায়িত করতে হবে; একবার আপনি এটি সম্পন্ন করার পরে, আপনি তারপরে কোডটি দিয়ে পরামর্শ দিতে পারেন যা মেসেজটি স্ট্রিংটি মিনিপুফারের সাথে প্রতিধ্বনিত হয়, এটি আপনি দেখতে চান না এমন বার্তাগুলির একটি তালিকার সাথে তুলনা করে এবং তারপরে কল করে বা মেসেজকে কল করে না ফলাফলের উপর তাত্ত্বিকভাবে, এটি উদাহরণস্বরূপ দ্বারা সম্পন্ন হতে পারে (defvar *message-prim* (symbol-function 'message))
, এবং তারপরে (defun message (format &rest args) ... (funcall *message-prim* format args))
- তবে সিমবোল-ফাংশন প্রদত্ত একটি আদিম যুক্তি এমন কিছু প্রত্যাবর্তন করে যা আসলে কলযোগ্য নয়, তাই ফুনাল একটি শূণ্য-ফাংশন শর্তকে সংকেত দেয়।
তবে, যদি এটি কাজ করে, তবুও এটি সত্যই কৌশলটি করতে পারে না, কারণ আদিমকে নতুনভাবে সংজ্ঞায়িত করা কেবল গ্যারান্টি দেয় যে লিস্প কোড থেকে ফাংশনটি কল করা হলে পুনরায় সংজ্ঞাটি ব্যবহৃত হবে; সি কোডে কলগুলি এখনও আদিম সংজ্ঞাটি ব্যবহার করতে পারে । (সি কোডের পক্ষে ইমাস লিস্পে কল করা সম্ভব, এবং এই জাতীয় কেসগুলি পুনরায় সংজ্ঞা দেখতে পাবে; অবশ্যই, সি কোডের পক্ষে সি কোড কল করা সম্ভব ছিল এবং এই জাতীয় কেসগুলি মূল সংজ্ঞাটি দেখতে পাবে।)
আমি অস্পষ্টভাবে সি কোড প্যাচিংয়ের বিষয়ে চিন্তা করছি এবং সঠিক বার্তা দমন কার্যকারিতা সরবরাহ করতে ইম্যাক্স পুনরায় সংশ্লেষ করছি; আমার আসলে সেই কার্যকারিতাটির দরকার নেই, তবে এটি একটি আকর্ষণীয় অনুশীলন প্রমাণ করতে পারে, বিশেষত যেহেতু আমি সি হ্যাকার নই। এরই মধ্যে, আমি এখানে কিছুটা বেত্রাঘাত করেছি যা কোনও ফাইলের মধ্যে ফেলে দেওয়া হয়, যখন আপনার কোনও ডিআইডি ফাইল থেকে অন্তর্ভুক্ত করা হয় এবং আপনার স্বাদ অনুসারে কাস্টমাইজ করা হয়, লিসপ কোড থেকে প্রাপ্ত বার্তাগুলি দমন করবে যা দমন করার জন্য আপনার তালিকার সাথে তালিকার সাথে মেলে। যতক্ষণ দমন সক্ষম করা থাকে, এই বার্তাগুলি কখনই মিনিবাসে প্রদর্শিত হবে না; আপনার *Messages*
পাশাপাশি বাফার থেকে সেগুলি দমন করার বিকল্প রয়েছে ।
;; message-suppression.el
;; a quick hack by Aaron (me@aaron-miller.me), 2013-11-12
;; half a solution for http://superuser.com/questions/669701/emacs-disable-some-minibuffer-messages
;; NB this does nothing until you
;; M-x customize-group RET message-suppression RET
;; and adjust to taste
(defgroup message-suppression nil
"Customization options for selective message suppression."
:prefix "message-suppression")
(defcustom message-suppression-enabled nil
"Whether or not to suppress messages listed in
`message-suppress-these'."
:group 'message-suppression
:tag "Suppress some messages?"
:type '(choice (const :tag "No" nil)
(const :tag "Yes" t)))
(defcustom message-suppression-to-messages-buffer t
"Whether or not to insert messages suppressed from the
minibuffer into the *Messages* buffer."
:group 'message-suppression
:tag "Insert suppressed messages into *Messages* buffer?"
:type '(choice (const :tag "No" nil)
(const :tag "Yes" t)))
(defcustom message-suppression-these nil
"A list of messages which the `message-except-these' advice
should suppress from being echoed in the minibuffer. Messages
are matched by `member', i.e., only exact strings match.
NB! Per the Emacs manual, calls from C code to primitives (such
as `message') ignore advice entirely, which means some messages
cannot be suppressed by this mechanism. ('Advising
Functions' in the Emacs Lisp Reference Manual, q.v.)"
:group 'message-suppression
:tag "Messages to suppress"
:type '(repeat (string))
:link '(info-link "(elisp)Advising Functions"))
(defadvice message (around message-suppress-advice)
"Suppress messages listed in `message-suppress-these' from being
echoed in the minibuffer."
(let ((message-string nil)
(current-buffer nil))
(if (and message-suppression-enabled
(length (ad-get-args 0))
(stringp (car (ad-get-args 0)))
;; message-string doesn't get set until here because `format'
;; will complain if its first argument isn't a string
(setq message-string (apply 'format (ad-get-args 0)))
(member message-string
message-suppression-these))
;; we won't call `message', but we might echo to *Messages*
(and message-suppression-to-messages-buffer
(progn
(setq current-buffer (current-buffer))
(switch-to-buffer (get-buffer-create "*Messages*"))
(goto-char (point-max))
(insert (make-string 1 10))
(insert message-string)
(switch-to-buffer current-buffer)))
ad-do-it)))
(ad-activate 'message)
আমি লিস্প কোড থেকে উত্পন্ন উত্পন্ন বার্তাগুলির সাথে কাজ করতে এটি পরীক্ষা করেছি, উদাহরণস্বরূপ, যখন আপনি একটি খালি স্ট্রিং আর্গুমেন্ট দেবেন তখন ডিজাইন-ফাংশন দ্বারা প্রতিধ্বনিত "আপনি কোনও ফাংশন নির্দিষ্ট করেননি" complaint দুর্ভাগ্যক্রমে, আপনি যে বার্তাগুলিকে দমন করতে চান বলে উল্লেখ করেছেন, যেমন "বাফারের শুরু", "বাফারের সমাপ্তি", এবং "পাঠ্য কেবল পঠনযোগ্য", সমস্ত কোড সি কোড থেকে উত্পন্ন হয়েছে, যার অর্থ আপনি সক্ষম হবেন না এই পদ্ধতি দ্বারা তাদের দমন।
যদি আমি কখনও সোর্স প্যাচটি ঘুরে দেখি তবে এটি (সম্ভবত) ইমাস 24.3 এর বিপরীতে হবে এবং আমি কীভাবে এটি ব্যবহার করব সে সম্পর্কে তথ্যের সাথে এই উত্তরটি আপডেট করব।