web-dev-qa-db-ja.com

emacsの現在のバッファーの書き込み権限を変更するにはどうすればよいですか?

バッファを強制終了したり再度開いたりせずに、emacs内からファイルの書き込み権限を変更することはできますか?

ファイルを開く前に、ファイルのアクセス許可を変更するのを忘れることがあります。 emacs(M-! chmod u+w filename)しかし、これは書き込み保護されたままで、ファイルの変更を拒否するバッファを更新しません。

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

19
rahmu

ファイルモードを変更した後、編集を行う前に、M-x revert-bufferファイルをリロードします。ファイルが書き込み可能になった場合、バッファは読み取り専用ではなくなります。

または、C-x C-qread-only-mode)。これにより、バッファは読み取り専用ではなくなります。編集も保存もできますが、読み取り専用ファイルを上書きするかどうかを確認するプロンプトが表示されます。

バッファの読み取り専用ステータスを変更するには、次を使用します C-xC-q (トグルread-only-mode)。ファイルの権限を変更するには、ファイルのディレクトリでdiredを実行します(C-xd)、次の方法でファイルを検索します C-s そして使う M モードを変更します。

10
choroba

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

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

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