Como modificar a permissão de escrita no buffer atual no emacs?

15

É possível alterar as permissões de gravação em um arquivo dentro do emacs, sem matar / reabrir o buffer?

Às vezes, esqueço de modificar as permissões em um arquivo antes de abri-lo. Eu posso modificar as permissões de dentro do emacs ( M-! chmod u+w filename ), mas isso não atualiza o buffer que permanece protegido contra gravação e se recusa a modificar o arquivo.

Existe uma maneira de atualizar as permissões dentro do buffer? Ponto de bônus se eu puder atribuir isso a um atalho!

    
por rahmu 10.09.2012 / 18:04

3 respostas

13

Depois de alterar o modo de arquivo e antes de fazer qualquer edição, execute M-x revert-buffer para recarregar o arquivo. Se o arquivo for agora gravável, o buffer não será mais somente leitura.

Como alternativa, digite C-x C-q ( read-only-mode ). Isso faz com que o buffer não seja mais somente leitura. Você pode editar e até mesmo salvar, mas você receberá um prompt de confirmação perguntando se deseja substituir o arquivo somente leitura.

    
por 11.09.2012 / 00:45
9

Para alterar o status somente leitura de um buffer, use C-x C-q (alternar read-only-mode ). Para alterar as permissões de arquivo, você pode executar dired no diretório do arquivo ( Cx d ), procurar o arquivo por Cs e usar < kbd> M para mudar seu modo.

    
por 10.09.2012 / 18:23
0

Se o fluxo de trabalho precisar alterar a permissão de arquivo do buffer repetidamente, ter uma função personalizada ajudará como o seguinte.

Isso funciona somente em máquinas unix (executa o comando do sistema "chmod"

(defun chmod-plus-w ()
  (interactive)
  (shell-command-to-string (concat "chmod +w " (buffer-file-name (current-buffer))))
  (revert-buffer))
    
por 27.07.2018 / 11:07