Comment modifier l'autorisation d'écriture sur le tampon actuel dans emacs?

17

Est-il possible de modifier les autorisations d'écriture sur un fichier depuis emacs, sans tuer / rouvrir le tampon?

Parfois, j'oublie de modifier les autorisations sur un fichier avant de l'ouvrir. Je peux modifier les autorisations depuis emacs ( M-! chmod u+w filename) mais cela ne met pas à jour le tampon qui reste protégé en écriture et refuse de modifier le fichier.

Existe-t-il un moyen de mettre à jour les autorisations à l'intérieur du tampon? Point bonus si je peux attribuer cela à un raccourci!

rahmu
la source

Réponses:

16

Après avoir changé le mode de fichier, et avant d'effectuer toute modification, exécutez M-x revert-bufferpour recharger le fichier. Si le fichier est désormais accessible en écriture, le tampon ne sera plus en lecture seule.

Sinon, tapez C-x C-q( read-only-mode). Cela rend le tampon n'est plus en lecture seule. Vous pouvez modifier et même enregistrer, mais vous obtiendrez une invite de confirmation vous demandant si vous souhaitez remplacer le fichier en lecture seule.

Gilles 'SO- arrête d'être méchant'
la source
Bien que Cx Cq fonctionne toujours, à partir d'emacs 24.3, il appelle désormais le mode lecture seule plutôt que basculer en lecture seule et basculer en lecture seule a été désactivé.
Paul Rubel
9

Pour modifier l'état en lecture seule d'un tampon, utilisez C-xC-q(bascule read-only-mode). Pour modifier les autorisations de fichier, vous pouvez exécuter diredsur le répertoire du fichier ( C-xd), rechercher le fichier par C-set utiliser Mpour changer son mode.

choroba
la source
3
Apparemment, vous avez raté dired-jump(normalement lié à C-x C-j). Il s'exécute diredet passe à la ligne du fichier que vous modifiez.
cjm
2
@cjm: Cela ne fonctionne pas pour moi sauf si je charge dired-x.
choroba
Désolé, j'avais oublié que j'avais mis en place un chargement automatique depuis dired-jumpenviron 20 ans. Je le recommande.
cjm
Ennuyeusement toggle-read-onlya été remplacé par read-only-mode, bien que la liaison soit la même.
Charlie Martin
2

Si le flux de travail nécessite de modifier à plusieurs reprises l'autorisation de fichier du tampon, alors avoir une fonction personnalisée aiderait comme suit.

Cela ne fonctionne que sur les machines Unix (exécute la commande système "chmod"

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