"সত্যই বাফার সম্পাদনা করুন" এ, ইমাকগুলি স্বয়ংক্রিয়ভাবে এডিফ-কারেন্ট-ফাইল চালায়?


12

প্রসঙ্গ

যখন ইমাসগুলি সনাক্ত করে যে কোনও ফাইল সম্পাদনা বাফারের বাইরে পরিবর্তন করা হয়েছিল।

পর্যবেক্ষণ করা হয়েছে

ইমাস জিজ্ঞাসা করবে:

ডিস্কে কিছু ফাইলের নাম পরিবর্তন করা হয়েছে; সত্যিই বাফার সম্পাদনা করবেন? (y, n, r বা Ch)

(ঘটনাক্রমে, কখনও কখনও এটি আসল পরিবর্তন না হওয়া সত্ত্বেও ঘটে থাকে, যেমন চালিত ঘড়ির সাথে কোনও সার্ভারে রিমোট ফাইল, তবে প্রশ্নটি সব ক্ষেত্রেই আকর্ষণীয়)

কাম্য

ইমাস জিজ্ঞাসা করবে:

ডিস্কে কিছু ফাইলের নাম পরিবর্তন করা হয়েছে; সত্যিই বাফার সম্পাদনা করবেন? (y, n, r, d বা Ch)

টিপলে dসংস্করণগুলির মধ্যে পার্থক্য দেখা যায়, উদাহরণস্বরূপ ediff-current-fileযা পার্থক্যগুলি ইন্টারেক্টিভভাবে চলতে দেয়।

অতিরিক্ত তথ্য

এটি দেবিয়ান প্যাকেজ পরিচালনার মতোই হবে যখন এটি সনাক্ত করে যে স্থানীয়ভাবে কাস্টমাইজ করা একটি কনফিগার ফাইল তার নিজস্ব প্যাকেজের নতুন সংস্করণে আপডেট হয়। উদাহরণস্বরূপ দেখুন কনফিগারেশন ফাইলের নতুন সংস্করণ / ইত্যাদি / ডিফল্ট / গ্রাব উপলব্ধ, তবে বর্তমানে ইনস্টল করা সংস্করণটি স্থানীয়ভাবে পরিবর্তিত হয়েছে - ইউনিক্স এবং লিনাক্স স্ট্যাক এক্সচেঞ্জ

জিজ্ঞাসার আগে অনুসন্ধান করুন

আমি সাধারণত সমাধানের জন্য আমার উপায় খুঁজে পাই (উদাহরণস্বরূপ emacsclient - একটি বাহ্যিক স্ক্রিপ্ট থেকে, ফাইলটি খুলুন এবং কিছু সাধারণ এক্সপ্রেশন চালাও যা ইমাস ইতিমধ্যে চলছে কিনা - ইমাস্যাক স্ট্যাক এক্সচেঞ্জ ) তবে এটি অনুসন্ধান করার পরে আমি কোনও প্রাক-বিদ্যমান সমাধান খুঁজে পাইনি।

আমি এটিকে নিজেই সামঞ্জস্য করে বিবেচনা করব তবে ইমাস-লিসপ এবং ইমাস ইন্টার্নালগুলিতে যথেষ্ট দক্ষ নই।

সমাধানের স্কেচ

  • টিপলে C-gতারপর 'Mx ediff বর্তমান-file` কিছু কীস্ট্রোকগুলির খরচে পেশা আছে।
  • এখানে লক্ষ্যটি ediff-current-fileহ'ল উপরের প্রম্পটে একটি কীতে চাপুন।


@ গিলস আপনাকে ধন্যবাদ। হ্যাঁ, সম্পর্কিত এবং ভিন্ন। আপনার লিঙ্কটি ফাইল খোলার সময় সম্পর্কে। এটি ফাইল সংরক্ষণের সময় সম্পর্কে।
স্টাফেন গৌরিচন

উত্তর:


2

ইম্যাক্স উত্সে "সত্যিকারের বাফার সম্পাদনা করুন" এর জন্য গ্রেপিং আমি ask-user-about-supersession-threatফাইলে ফাংশন পেয়েছি userlock.el

dকল করার জন্য কোনও পছন্দ যুক্ত করা সহজ বলে মনে হচ্ছে ediff-current-file। যদিও আমি এগুলি ব্যাপকভাবে পরীক্ষা করেছি না (সম্পাদনাগুলি ;;-মন্তব্য সহ চিহ্নিত করা হয়েছে )।

(defun ask-user-about-supersession-threat (fn)
  "Ask a user who is about to modify an obsolete buffer what to do.
This function has two choices: it can return, in which case the modification
of the buffer will proceed, or it can (signal 'file-supersession (file)),
in which case the proposed buffer modification will not be made.

You can rewrite this to use any criterion you like to choose which one to do.
The buffer in question is current when this function is called."
  (discard-input)
  (save-window-excursion
    (let ((prompt
       (format "%s changed on disk; \
really edit the buffer? (y, n, r, d or C-h) " ;;- changed
           (file-name-nondirectory fn)))
      (choices '(?y ?n ?r ?d ?? ?\C-h))       ;;- changed
      answer)
      (while (null answer)
    (setq answer (read-char-choice prompt choices))
    (cond ((memq answer '(?? ?\C-h))
           (ask-user-about-supersession-help)
           (setq answer nil))
          ((eq answer ?r)
           ;; Ask for confirmation if buffer modified
           (revert-buffer nil (not (buffer-modified-p)))
           (signal 'file-supersession
               (list "File reverted" fn)))
          ((eq answer ?d)                     ;;- added
           (ediff-current-file))              ;;- added
          ((eq answer ?n)
           (signal 'file-supersession
               (list "File changed on disk" fn)))))
      (message
       "File on disk now will become a backup file if you save these changes.")
      (setq buffer-backed-up nil))))

উবুন্টু 16.04 এ ইম্যাক্স 46.1 এ ভালভাবে কাজ করছে বলে মনে হচ্ছে। ধন্যবাদ!
স্টাফেন গ্যারিচন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.