ইমা্যাক্সের উত্স ফাইলগুলি কেবলমাত্র ডিফল্টরূপে পঠনযোগ্য করতে আপনি ডিরেক্টরি-স্থানীয় ভেরিয়েবলগুলি ব্যবহার করতে পারেন । (আরও দেখুন C-hig (emacs) Directory Variables RET)
.dir-locals.elনীচের বিষয়বস্তু সহ আপনি যে ডিরেক্টরি ডিরেক্টরী ট্রিটি সুরক্ষিত করতে চান তার মূলে একটি ফাইল তৈরি করুন :
((nil . ((eval . (view-mode 1)))))
সম্পাদনা: মাইখা পলিটোভস্কি মন্তব্যগুলিতে উল্লেখ করেছেন যে এইভাবে সক্ষম view-modeকরা সমস্যাযুক্ত কারণ আপনি যখন qএটি দিয়ে বাফারটি বরখাস্ত করেন তখন মোডটি অক্ষম করে দেয়, এর অর্থাত পরবর্তী সময় আপনি যখন এই বাফারটি পরিদর্শন view-modeকরবেন তখন সক্ষম হবে না।
সম্পাদনা 2: কনস্ট্যান্টাইন নীচের মন্তব্যে সেই সমস্যার সমাধান দিয়েছে:
((nil . ((eval . (when buffer-file-name (view-mode-enter nil #'kill-buffer))))))
এটি বাফারটি ইতিমধ্যে একটি ফাইল পরিদর্শন করেছে কিনা তা নিশ্চিত করার জন্য এটি কার্যকরভাবে একটি পরীক্ষা যুক্ত করে তবে মূল পরিবর্তনটি view-mode-enterপরিবর্তে এর ব্যবহার হ'ল view-modeপ্রাক্তন একটি EXIT-ACTIONযুক্তি গ্রহণ করে যা qটাইপ করার সময় কী করা উচিত তা নির্ধারণ করে । এই ক্ষেত্রে প্রস্থান ক্রিয়াটি বাফারটিকে হত্যা করা হয়, পরবর্তী সময় ফাইলটি পরিদর্শন করার পরে এটি আবার শেষ হবে তা নিশ্চিত করে view-mode।
3 সম্পাদনা করুন: সেই পথ অনুসরণ করে, আমরা আরও দেখতে পারি যে নির্দিষ্টটি EXIT-ACTIONশেষ পর্যন্ত view-mode-exitফাংশনে প্রেরণ করা হয় এবং এর ডক্টরসিং আমাদের একটি বিকল্প সমাধান দেয়:
view-no-disable-on-exit is a variable defined in `view.el'.
Its value is nil
Documentation:
If non-nil, View mode "exit" commands don't actually disable View mode.
Instead, these commands just switch buffers or windows.
This is set in certain buffers by specialized features such as help commands
that use View mode automatically.
সুতরাং আমরা নিম্নলিখিত ব্যবহার করতে পারেন:
((nil . ((eval . (when buffer-file-name
(setq-local view-no-disable-on-exit t)
(view-mode-enter))))))
আমি বিকল্প পদ্ধতির ব্যবহার করি যা আপনি আপনার init ফাইলটিতে সম্পূর্ণরূপে নির্দিষ্ট করতে পারেন (কোনও .dir-locals.elফাইল তৈরির বিপরীতে ) এবং আমি কেবল ফাইলগুলি কেবল ব্যবহারের পরিবর্তে পঠনযোগ্য করে তুলি view-mode। আমার কনফিগারেশনটি দেখতে এমন দেখাচ্ছে:
;; Emacs
(dir-locals-set-class-variables
'emacs
'((nil . ((buffer-read-only . t)
(show-trailing-whitespace . nil)
(tab-width . 8)
(eval . (whitespace-mode -1))))))
(dir-locals-set-directory-class "/usr/local/src/emacs" 'emacs)
(dir-locals-set-directory-class "/usr/local/share/emacs" 'emacs)
(dir-locals-set-directory-class "/usr/share/emacs" 'emacs)
স্পষ্টতই আপনি আপনার এলপা ডিরেক্টরি এবং অন্য কোনও ডিরেক্টরিতে তৃতীয় পক্ষের উত্স কোড সহ একই কাজ করতে পারেন।
emacs-lisp-modeএবংC-x C-qযদি আমি উত্স কোডটি সম্পাদনা করতে চাই তবে আমি তা করি।(defun set-buffer-read-only () (setq buffer-read-only t)) (add-hook 'emacs-lisp-mode-hook 'set-buffer-read-only)