Como restaurar as janelas e buffers do Emacs da última sessão?

3

Como restaurar as janelas e buffers do Emacs da última sessão?

O comportamento que eu quero é como no navegador da web que você pode restaurar todas as abas da última sessão.

qazwsx
fonte
1
Veja a resposta a esta pergunta .
Tom

Respostas:

1

Além de automaticamente restaurando seu última sessão do Emacs Nesse estado, você também pode salvar qualquer número de estados de sessão e restaurá-los sob demanda em qualquer outra sessão, qualquer número de vezes. IOW, você pode alternar facilmente entre desktops diferentes .

A maneira mais fácil de fazer isso é carregar biblioteca Bookmark + e use a chave C-x r K para salvar o estado da sessão atual como um marcador da área de trabalho. Você pode restaurar qualquer indicador de desktop em qualquer sessão usando a chave C-x j K.

Drew
fonte
2

vá para o seu arquivo .emacs e digite (desktop-save-mode 1), isso salvará todos os buffers atuais em um arquivo "desktop", ele não salvará o layout real dos seus quadros, mas você pode procurar em "registros" para isso.

Shantanu
fonte
1

Aqui está algum código para fazer isso. Para o código funcionar, você precisa da biblioteca Lisp "tapeçaria" instalada. Se você usar o mensageiro da VM, já terá a biblioteca instalada. Caso contrário, você pode baixe daqui .

Coloque o seguinte código no seu arquivo .emacs. Quando você quiser restaurar a configuração de sua janela e quadro da sua última sessão do Emacs, digite M-x load-my-tapestry RET.

(require 'tapestry)

(defvar my-tapestry-file "~/.tapestry")

(defun load-my-tapestry ()
  (interactive)
  (let ((b (find-file-noselect my-tapestry-file)))
    (sit-for 0)
    (set-tapestry (read b))
    (kill-buffer b)))

(defun save-my-tapestry ()
  (interactive)
  (let ((tap (tapestry)))
    (with-temp-buffer
      (let ((standard-output (current-buffer)))
        (setcar tap (make-list (length (car tap)) nil))
        (print tap)
        (write-region (point-min) (point-max) my-tapestry-file)))))

(add-hook 'kill-emacs-hook 'save-my-tapestry)
Kyle Jones
fonte
Quando eu faço M-x load-my-tapestry RETEu só tenho (New file) set-tapestry: End of file during parsing em mini-buffer e nada carregado na janela do Emacs.
qazwsx
Corre M-x save-my-tapestry uma vez e o processo deve ser inicializado.
Kyle Jones
Fez; então gaves let: Wrong type argument: listp, config erro no mini-buffer agora.
qazwsx
Hmmm, não há config variável no meu código de resposta ou em tapestry.el. (setq debug-on-error t) e obtenha um stacktrace. Isso deve indicar onde o erro está acontecendo.
Kyle Jones
Na verdade, quando eu re-executá-lo, recebo set-tapestry: End of file during parsing erro novamente. Eu abri uma sessão do Emacs, abri dois quadros e carreguei dois arquivos diferentes em cada um deles, então M-x save-my-tapestryentão feche. Reabra o Emacs, então faça M-x load-my-tapestry RET, deu set-tapestry: End of file during parsing.
qazwsx