Emacsで現在のバッファの書き込み権限を変更するには?

Emacsで現在のバッファの書き込み権限を変更するには?

バッファを終了または再開せずにemacs内でファイルの書き込み権限を変更できますか?

場合によっては、ファイルを開く前にファイルの権限を変更することを忘れてしまうことがあります。 emacs() 内で権限を変更できますが、M-! chmod u+w filename書き込み禁止のままでファイルの変更を拒否するバッファは更新されません。

バッファ内で権限を更新する方法はありますか?ショートカットに割り当てられるとボーナスポイントになります!

答え1

ファイルモードを変更した後、編集する前にM-x revert-bufferファイルを再ロードするには実行してください。ファイルが書き込み可能になると、バッファは読み取り専用ではなくなります。

またはC-x C-qread-only-mode)を入力します。これにより、バッファは読み取り専用ではなくなります。編集して保存することもできますが、読み取り専用ファイルを上書きするように求められます。

答え2

バッファの読み取り専用状態を変更するには、C-xC-q(toggle read-only-mode)を使用します。ファイルのアクセス許可を変更するには、diredファイルのディレクトリ()C-xdで実行してファイルを検索し、を使用してそのモードを変更できます。C-sM

答え3

ワークフローでバッファのファイル権限を繰り返し変更する必要がある場合は、次のようにカスタム機能を使用すると便利です。

これはUnixシステムでのみ機能します(システムコマンド「chmod」を実行)

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

関連情報