Bagaimana cara mengubah izin menulis pada buffer saat ini di emacs?

17

Apakah mungkin untuk mengubah izin penulisan pada file dari dalam emacs, tanpa membunuh / membuka kembali buffer?

Terkadang saya lupa untuk memodifikasi izin pada file sebelum membukanya. Saya dapat memodifikasi izin dari dalam emacs ( M-! chmod u+w filename) tetapi ini tidak memperbarui buffer yang tetap dilindungi tulis dan menolak untuk memodifikasi file.

Apakah ada cara untuk memperbarui izin di dalam buffer? Poin bonus jika saya dapat menetapkan ini sebagai jalan pintas!

rahmu
sumber

Jawaban:

16

Setelah mengubah mode file, dan sebelum melakukan pengeditan, jalankan M-x revert-bufferuntuk memuat ulang file. Jika file sekarang dapat ditulisi, buffer tidak akan lagi menjadi read-only.

Atau, ketik C-x C-q( read-only-mode). Ini membuat buffer tidak lagi hanya-baca. Anda dapat mengedit dan bahkan menyimpan, tetapi Anda akan mendapatkan konfirmasi yang menanyakan apakah Anda ingin menimpa file read-only.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Sementara Cx Cq masih berfungsi, pada emacs 24.3 ia sekarang memanggil mode read-only-only daripada toggle-read-only dan toggle-read-only telah dinonaktifkan.
Paul Rubel
9

Untuk mengubah status read-only dari buffer, gunakan C-xC-q(toggle read-only-mode). Untuk mengubah izin file, Anda dapat berjalan direddi direktori file ( C-xd), mencari file dengan C-sdan gunakan Muntuk mengubah modenya.

choroba
sumber
3
Rupanya, Anda telah terjawab dired-jump(biasanya terikat C-x C-j). Ini berjalan direddan melompat ke baris untuk file yang sedang Anda edit.
cjm
2
@ cjm: Ini tidak berfungsi untuk saya kecuali saya memuat dired-x.
choroba
Maaf, saya lupa bahwa saya membuat autoload dired-jumpsekitar 20 tahun yang lalu. Saya merekomendasikannya.
cjm
Mengganggu toggle-read-onlytelah diganti dengan read-only-mode, meskipun ikatannya sama.
Charlie Martin
2

Jika alur kerja mengharuskan untuk mengubah izin file buffer berulang kali, maka memiliki fungsi kustom akan membantu seperti berikut ini.

Ini hanya berfungsi pada mesin unix (menjalankan perintah sistem "chmod"

(defun chmod-plus-w ()
  (interactive)
  (shell-command-to-string (concat "chmod +w " (buffer-file-name (current-buffer))))
  (revert-buffer))
Talespin_Kit
sumber