Se fechei acidentalmente o buffer de arranhões no Emacs, como faço para criar um novo buffer de arranhões?
Se fechei acidentalmente o buffer de arranhões no Emacs, como faço para criar um novo buffer de arranhões?
Respostas:
Apenas recriar o tampão mudando para isso: C-x b *scratch* RET
. Desde o Emacs 21.2, se você criar um buffer chamado *scratch*
, ele será automaticamente colocado no modo Lisp Interaction .
*scratch*
e depois voltar para ele, ele será definido automaticamente para o modo de interação lisp.
.emacs
).
É indiscutivelmente melhor recriar o *scratch*
buffer automaticamente sempre que ele for excluído e evitar a necessidade de redigitar seu nome.
(defun prepare-scratch-for-kill ()
(save-excursion
(set-buffer (get-buffer-create "*scratch*"))
(add-hook 'kill-buffer-query-functions 'kill-scratch-buffer t)))
(defun kill-scratch-buffer ()
(let (kill-buffer-query-functions)
(kill-buffer (current-buffer)))
;; no way, *scratch* shall live
(prepare-scratch-for-kill)
;; Since we "killed" it, don't let caller try too
nil)
(prepare-scratch-for-kill)
Ligações padrão do GNU Emacs:
C-xb*scratch*
ou, mais detalhadamente
switch-to-buffer
*scratch*
O *scratch*
buffer é o buffer selecionado na inicialização e possui o modo principal Lisp Interaction . Nota: o modo para o *scratch*
buffer é controlado pela variável initial-major-mode
.
Em geral, você pode criar quantos buffers "zero" quiser e nomeá-los como quiser.
C-x bNAME
muda para buffer NAME
, criando-o se não existir. Um novo buffer não está associado a um arquivo no disco até você usar C-xC-w(ou M-xwrite-file
) para escolher um arquivo onde ele deve ser salvo.
M-xtext-mode
altera o modo principal do buffer atual para modo de texto.
Para encontrar todos os modos disponíveis (ou seja, sem exigir novos pacotes), você pode obter uma lista digitando:
apropos-command
-mode$
Eu gosto de usar buffers de arranhão para coisas descartáveis. Ter apenas um é um pouco limitador, portanto, eu tenho scratch
como um comando interativo para abrir um novo buffer temporário (não importa quantos já existam):
(defun scratch ()
"create a new scratch buffer to work in. (could be *scratch* - *scratchX*)"
(interactive)
(let ((n 0)
bufname)
(while (progn
(setq bufname (concat "*scratch"
(if (= n 0) "" (int-to-string n))
"*"))
(setq n (1+ n))
(get-buffer bufname)))
(switch-to-buffer (get-buffer-create bufname))
(if (= n 1) initial-major-mode))) ; 1, because n was incremented
adotado em: http://everything2.com/index.pl?node_id=1038451
M-x recover-session
não os recupera. Alguém modificou isso para usar algo parecido make-temp-file
?
Posso sugerir criar um buffer vazio? O interessante é que você cria o buffer primeiro e o salva depois, se realmente quiser.
(defun my-empty-buffer ()
"Open a new empty buffer."
(interactive)
(let ((buf (generate-new-buffer "untitled")))
(switch-to-buffer buf)
(funcall (and initial-major-mode))
(setq buffer-offer-save t)))
Você precisará definir o modo principal principal como lisp no seu arquivo init e vincular o buffer my-empty-buffer a um atalho como C-n
.
Cortesia de ergoemacs