"বাফার কেবলমাত্র পঠনযোগ্য" সতর্কতাটি অক্ষম করার কোনও উপায় আছে?


9

আমি এই সতর্কতাটিকে বিশেষভাবে সহায়ক এবং চমকপ্রদ বিভ্রান্তিকর বলে মনে করি না কারণ এটি একটি ক্ষুদ্র মুহুর্তের জন্য প্রতিধ্বনি অঞ্চলে বর্তমান পাঠ্যটিকে আড়াল করে। এটিও অপ্রয়োজনীয় বলে মনে হচ্ছে, কারণ আমি যেভাবেই খেয়াল করব যে আমি কেবল পঠনযোগ্য অঞ্চলে লিখতে পারি না। এটি নিষ্ক্রিয় করার কোনও উপায় আছে?

উত্তর:


9

হ্যাঁ, আপনি সংকেত command-error-functionউপেক্ষা করে এমন কোনও ফাংশনে সেট করে আপনি এই বার্তাগুলি অক্ষম করতে পারেন buffer-read-only।

(defun my-command-error-function (data context caller)
  "Ignore the buffer-read-only signal; pass the rest to the default handler."
  (when (not (eq (car data) 'buffer-read-only))
    (command-error-default-function data context caller)))

(setq command-error-function #'my-command-error-function)

(জিএনইউ ইম্যাক্স 24.5.1 ব্যবহার করে পরীক্ষিত))


কৌতূহলের বাইরে, ওভাররাইড করা command-error-functionসমস্ত ত্রুটিগুলিকে প্রভাবিত করে না, এবং কেবল "বাফার পঠনযোগ্য কেবল" ত্রুটিগুলি নয়? উত্স কোড থেকে এই সমস্ত পরিবর্তন কী প্রভাব ফেলবে তা আমি ঠিক বুঝতে পারি না।
— কুশল মোদী

1
হ্যাঁ এটা হবে. ঠিক এই কারণেই আমার কাছে (when ...)কোড স্নিপেটে ফর্মটি রয়েছে: এইভাবে আমরা সংকেতগুলি যত্ন করি না সেগুলি ডিফল্ট হ্যান্ডলারের কাছে প্রেরণ করা হয় এবং buffer-read-onlyএড়ানো হবে।
— কনস্টান্টাইন

আহ ঠিক আছে, আমি এই কলটি পুরোপুরি মিস করেছি command-error-default-function।
— কুশল মোদী

1
মিষ্টি, আমি "মিনি পাঠ্য কেবল পঠনযোগ্য" আবর্জনাটি কেবল মিনিবাসে ফেলে দেওয়ার জন্য একটি সহজ উপায় সন্ধান করছি এবং এটি কৌশলটি কার্যকর করে does
— ওয়াচকা

1
@ এমসিবি: আমি যতদূর জানি ইকো অঞ্চল এবং মিনি-বাফার পৃথক করা সম্ভব নয়। আমি বিশ্বাস করি যে আপনি যে উত্তরটি philsসংযুক্ত করেছেন সেটির উত্তর সঠিক, অর্থাত্ এর জন্য আমাদের নতুন সি কোডের প্রয়োজন হবে।
— কনস্টান্টাইন

3

'বাফার কেবল পঠনযোগ্য' ত্রুটির উত্স

আমি বিশ্বাস করি যে ত্রুটির উত্স: Buffer is read-only: <#BUFFER-NAME>সি উত্স কোডে রয়েছে।

তাই এই সমাধান বের মন্তব্য করে স্থানীয়ভাবে সোর্স কোড এবং বিল্ড Emacs খামচি হবে এই নির্দিষ্ট লাইন ।

রেফারেন্সের জন্য, এখানে সেই কোড স্নিপেট যা ত্রুটিটি ছুড়ে ফেলেছে:

if (!NILP (BVAR (current_buffer, read_only))
    && NILP (Vinhibit_read_only)
    && NILP (Fget_text_property (pos, Qinhibit_read_only, Qnil)))
  xsignal1 (Qbuffer_read_only, Fcurrent_buffer ());
return Qnil;

.. এবং এই xsignalলাইনটি মন্তব্য করার কৌশলটি করা উচিত।


প্রস্তাবিত পদ্ধতির

আপনি কেবলমাত্র পঠনযোগ্য বাফারে কাজ করার সময়কালের জন্য এই বিরক্তি এড়াতে খুব সহজ উপায় আছে .. আপনি অস্থায়ীভাবে এটিকে কেবল পঠনযোগ্য করে তুলতে পারবেন না।

  • করা M-x read-only-mode(ডিফল্ট দ্বারা আবদ্ধ C-x C-q) করণ কেবল পঠনযোগ্য মোড এবং সম্পাদনযোগ্য মোডের মধ্যে যে কোনও বাফারকে টগল করে।

সুতরাং আপনি যদি এই ত্রুটিগুলি অনেক পেয়ে থাকেন তবে কেবল বাফারটিকে আঘাত করে সাময়িকভাবে সম্পাদনাযোগ্য করে তুলুন C-x C-q।


সতর্কতার একটি নোট: সি উত্স হ্যাক করা ভবিষ্যতে বিভ্রান্তির একটি প্রধান উত্স হতে পারে। তাই আমি এটা করব না।


1
যতদূর আমি বলতে পারি কলটি (defun barf-if-buffer-read-only () nil)আউট করা xsignal1এবং পুনরায় বিল্ডিং ইম্যাক্সের মতো একই প্রভাব রয়েছে । :-)
— কনস্টান্টাইন

@ কনস্ট্যান্টাইন টিআইএল যে আমরা সি ফাংশনে ওভাররাইড করতে পারি। ধন্যবাদ!
— কুশল মোদী

এলিজপ ব্যবহার করে জিনিসগুলি সংশোধন করার বিষয়ে: এটি আমাকে এই পুরানো প্রশ্নের সম্পর্কে মনে করিয়ে দেয় nil: emacs.stackexchange.com/questions/2935/how-can-i-bring-back-nil
— কনস্টান্টাইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.