Como tornar um buffer específico somente leitura gravável?
On Dezembro 1, 2020 by admin O status somente leitura do buffer atual pode ser alternado com (read-only-mode)
ou pressionando C-x C-q
mas pretendo fazer um buffer que não seja atual, gravável. A seguir está o que estou usando
(with-current-buffer (get-buffer-create "*some*") (read-only-mode nil))
na esperança de remover o status somente leitura aplicado no buffer “* algum *”, no entanto, ele apenas define o status somente leitura status novamente para o buffer. Visitar o buffer e pressionar C-x C-q
funciona, mas não é o que pretendo fazer, preciso fazer isso remotamente.
Resposta
Use (read-only-mode -1)
, não (read-only-mode nil)
.
Veja o doc string da macro define-minor-mode
(C-h f define-minor-mode
) para obter mais informações sobre o argumento para uma função de modo menor.
E consulte a sequência de documentos de read-only-mode
para obter algumas informações úteis sobre seu uso:
read-only-mode
é uma função Lisp compilada interativa emsimple.el
.Ele está vinculado a
C-x C-q
.
(read-only-mode &optional ARG)
Altere se o buffer atual é somente leitura.
Com o argumento de prefixo
ARG
, torne o buffer somente leitura seARG
é positivo, caso contrário, torne-o gravável. Se o buffer for somente leitura eview-read-only
não fornil
, entre no modo de visualização.Não chame isso a partir de um programa Lisp, a menos que você realmente pretenda fazer a mesma coisa que o comando
C-x C-q
, incluindo a possibilidade de ativar ou desativar o modo Visualização. Além disso, observe que este comando funciona definindo a variávelbuffer-read-only
, que não afeta as regiões somente leitura causadas por propriedades de texto. Para ignorar o status somente leitura em um programa Lisp (seja devido às propriedades do texto ou ao estado do buffer), vinculeinhibit-read-only
temporariamente a umnil
valor.
Deixe uma resposta