ইম্যাকস ফোকাস হারালে কীভাবে বাফারগুলিকে অটো-সেভ করবেন?


26

আমি সম্প্রতি একটি সাব্লাইম টেক্সট ব্যবহারকারী ইমামকে কিছুক্ষণ চেষ্টা করেছিলাম এবং তিনি ইমাক্সে একই স্ব-সংরক্ষণের আচরণ পেতে আগ্রহী ছিলেন।

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

অন্য অ্যাপ্লিকেশনটিতে স্যুইচ করার সময় ট্রিগার হওয়া কোনও ইভেন্ট আমি খুঁজে পেলাম না। এই জাতীয় ঘটনা আছে বা একই আচরণ অর্জনের অন্য উপায় আছে?

নোট করুন একটি সময় ভিত্তিক সমাধান সন্তোষজনক ছিল না, এবং তেমনি ডিফল্ট স্বয়ংক্রিয় ব্যাকআপ আচরণও ছিল না। তিনি বিশেষত চেয়েছিলেন যে বাফারগুলি save-bufferসমস্ত ফাইলের জন্য সংরক্ষণ করা হবে (যেমন রয়েছে )।

উত্তর:


29

দুর্ভাগ্যক্রমে, ইম্যাক্স <= 24.3 এ এই সঠিক আচরণটি সম্ভব নয়, তবে আপনি উইন্ডো / বাফার চেঞ্জ ব্যবহার করে defadvice( বাবাতসভের ব্লগে বিস্তারিত হিসাবে ) সংরক্ষণ করতে পারেন :

(defadvice switch-to-buffer (before save-buffer-now activate)
  (when (and buffer-file-name (buffer-modified-p)) (save-buffer)))
(defadvice other-window (before other-window-now activate)
  (when (and buffer-file-name (buffer-modified-p)) (save-buffer)))

ইমাস 24.4 এ, আপনি নতুন ফোকাস হুকগুলির জন্য ফ্রেম ফোকাস ক্ষতি হ্রাস করে সংরক্ষণ করতে সক্ষম হবেন : (add-hook 'focus-out-hook 'save-buffer)(সক্রিয় বাফার সংরক্ষণ করতে) বা (add-hook 'focus-out-hook (lambda () (save-some-buffers t)))(সমস্ত উন্মুক্ত বাফার সংরক্ষণ করতে)।


1
defadviceব্লগ পোস্টটি নীচে নেমে গেলে বা কিছু হলে আপনি সংস্করণে কিছুটা প্রসারিত করতে পারেন? ধন্যবাদ!
টিখন জেলভিস

দুর্ভাগ্যক্রমে, সেই সমাধানটি বর্তমানে দৃশ্যমান বাফারকে সংরক্ষণ করে, সমস্ত বাফারকে নয়।
বি

1
@ বি 4 হ্যান্ড: দুঃখিত, আপনি যা চেয়েছিলেন তা বুঝতে পারিনি। উত্তর আপডেট হয়েছে।
shosti

1
@ শোস্টি যাইহোক, আমার জন্য বিবাটসভের ব্লগের সেই লিঙ্কটি খুঁজে পাওয়ার জন্য ধন্যবাদ। আমি আসলে সমাধানটি আগে খুঁজে পেয়েছি, কিন্তু এটি আর খুঁজে পেলাম না। আমি এটিকে আমার প্রশ্নের অব্যবহিত সমাধান হিসাবে অন্তর্ভুক্ত করতে যাচ্ছি।
বি

2
মিনিবুফার ট্র্যাশ না করা (ফর্ম্যাটিংয়ের ক্ষমা) এড়াতে আমি এইভাবে এটি করতে পছন্দ করি: (add-hook 'focus-out-hook (lambda () (flet ((message (format &rest args) nil)) (save-some-buffers t))))
আন্দ্রেয়াস

6

নেই focus-autosave-modeএখন। এটি মেলপা মাধ্যমে উপলব্ধ। আপনার জন্য হ্যাকিং করার সুযোগ কেন দিচ্ছেন না‽


হাই, এটা কিভাবে কাজ করে? আমি এটি ইনস্টল করেছি তবে এটি কাজ করবে বলে মনে হয় না।
আসেম জাস্ট

@ অ্যাসেমজাস্ট, আমি এখনই ব্যবহার করি না, এখানে ইস্যু ট্র্যাকারটি জিজ্ঞাসা করার চেষ্টা করুন: github.com/vifon/focon-autosave-mode.el/issues
মার্ক কারপভ

আপনি বর্তমানে বিকল্প বা কিছু মত ব্যবহার করেন?
Asme ঠিক

না, আমি এখনই এরকম কিছু ব্যবহার করি না।
মার্ক কার্পভ

তবে আপনি এখনও ইমাস ব্যবহার করেন, তাই না?
অসমে ঠিক

3
(add-to-list 'focus-out-hook (lambda () (save-some-buffers t nil)))

এটি ইম্যাক্স 24.4-তে সমস্ত সংরক্ষিত বাফার ফাইল পরিদর্শন করবে save


2
add-to-listএকটি হুক ব্যবহার করবেন না , ব্যবহার করুন add-hook। shosti এর উত্তর ইতিমধ্যে এই স্নিপেটের সঠিক ফর্ম রয়েছে।
গিলস 23'17

1

এতে যে হোঁচট খাচ্ছে তাদের জন্য, আমি এই ফর্মটি ব্যবহার করি:

(eval-when-compile (require 'cl-lib))
;; [...]
(add-hook 'focus-out-hook
  (lambda ()
    (cl-letf (((symbol-function 'message) #'format))
      (save-some-buffers t))))

cl-letfবিরক্তিকর (No files need saving)বার্তাগুলির ব্যবহার আপনার প্রতিধ্বনি অঞ্চল আটকে রাখা থেকে বিরত রাখে ।

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