Emacs geçerli arabellek yazma izni nasıl değiştirilir?


17

Arabellek öldürmeden / yeniden açılmadan bir dosyadaki yazma izinlerini emacs içinden değiştirmek mümkün müdür?

Bazen bir dosyayı açmadan önce izinleri değiştirmeyi unuturum. İçindeki emacs ( M-! chmod u+w filename) izinlerini değiştirebilirsiniz ama bu yazma korumalı kalır ve dosyayı değiştirmeyi reddeden arabellek güncelleştirmez.

Arabellek içindeki izinleri güncellemenin bir yolu var mı? Bunu bir kısayola atayabilirsem bonus puanı!

Yanıtlar:


16

Dosya modunu değiştirdikten sonra ve herhangi bir düzenleme yapmadan önce M-x revert-bufferdosyayı yeniden yüklemek için çalıştırın . Dosya şimdi yazılabilirse, arabellek artık salt okunur olmayacaktır.

Alternatif olarak, C-x C-q( read-only-mode) yazın. Bu, arabellek artık salt okunur değildir. Düzenleyebilir ve hatta kaydedebilirsiniz, ancak salt okunur dosyanın üzerine yazmak isteyip istemediğinizi soran bir onay istemi alırsınız.


Cx Cq hala çalışıyor olsa da, emacs 24.3'ten itibaren artık salt okunur geçiş yerine salt okunur modu çağırıyor ve salt okunur geçiş devre dışı bırakıldı.
Paul Rubel

9

Bir ara belleğin salt okunur durumunu değiştirmek için C-xC-q(geçiş read-only-mode) tuşunu kullanın . Dosya izinlerini değiştirmek dirediçin dosyanın dizininde çalıştırabilirsiniz (C-xd ) arayabilir ve modunu değiştirmek için C-skullanabilirsiniz M.


3
Görünüşe göre, kaçırdınız dired-jump(normalde bağlı C-x C-j). Çalıştırır diredve düzenlediğiniz dosyanın satırına atlar.
cjm

2
@cjm: Yüklemedikçe benim için çalışmıyor dired-x.
choroba

Üzgünüm, dired-jumpyaklaşık 20 yıl önce otomatik yük ayarlayacağımı unutmuştum . Bunu öneririm.
cjm

Bağlanma aynı olmasına rağmen can sıkıcı bir toggle-read-onlyşekilde değiştirildi read-only-mode.
Charlie Martin

2

İş akışı, arabellek dosya iznini tekrar tekrar değiştirmeyi gerektiriyorsa, özel bir işleve sahip olmak aşağıdaki gibi yardımcı olacaktır.

Bu yalnızca unix makinelerde çalışır ("chmod" sistem komutunu çalıştırır)

(defun chmod-plus-w ()
  (interactive)
  (shell-command-to-string (concat "chmod +w " (buffer-file-name (current-buffer))))
  (revert-buffer))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.