Emacs'ın kaynak dosyalarını varsayılan olarak salt okunur yapmak için dizin-yerel değişkenleri kullanabilirsiniz. (Ayrıca bakınız C-hig (emacs) Directory Variables
RET).
.dir-locals.el
Aşağıdaki içeriklerle korumak istediğiniz dizin ağacının kökünde adlı bir dosya oluşturun :
((nil . ((eval . (view-mode 1)))))
Düzenleme: Michał Politowski view-mode
, bu şekilde etkinleştirmenin sorunlu olduğunu belirtiyor , çünkü arabelleği kapattığınızda qmodu da devre dışı bırakıyor, yani bir sonraki ziyaretinizde bu tampon view-mode
etkinleştirilmeyecek.
Edit 2: Constantine, aşağıdaki yorumlarda bu soruna bir çözüm sundu:
((nil . ((eval . (when buffer-file-name (view-mode-enter nil #'kill-buffer))))))
Bu, ara belleğin zaten bir dosyayı ziyaret ettiğinden emin olmak için bir test ekler, ancak anahtar değişikliği, view-mode-enter
yerine yazıldığında ne yapılacağını belirleyen view-mode
bir EXIT-ACTION
argüman aldığından bunun yerine kullanımıdır q. Bu durumda, çıkış eylemi arabelleği öldürmek ve dosyanın bir sonraki ziyaretinde dosyanın tekrar sonuçlanmasını sağlamaktır view-mode
.
Düzenleme 3: Bu yolu takip ederek, belirtilenin EXIT-ACTION
sonuçta view-mode-exit
işleve geçtiğini ve doktrinin bize alternatif bir çözüm sunduğunu da görebiliriz :
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.
Bu nedenle aşağıdakileri kullanabiliriz:
((nil . ((eval . (when buffer-file-name
(setq-local view-no-disable-on-exit t)
(view-mode-enter))))))
Tamamen init dosyanızda (dosya oluşturmanın aksine) belirtebileceğiniz alternatif yaklaşımı kullanıyorum ve .dir-locals.el
dosyaları kullanmak yerine salt okunur hale getiriyorum view-mode
. Benim yapılandırma şöyle görünür:
;; 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)
Aynı şeyi elpa dizininiz ve üçüncü taraf kaynak kodu içeren diğer dizinler için de yapabilirsiniz.
emacs-lisp-mode
ve sadeceC-x C-q
kaynak kodunu düzenlemek istersem yapacağım.(defun set-buffer-read-only () (setq buffer-read-only t)) (add-hook 'emacs-lisp-mode-hook 'set-buffer-read-only)