Não consigo fazer o Emacs lembrar a história dos *ielm*
buffers entre as sessões. Tanto quanto posso dizer, esse histórico é registrado na variável buffer-local comint-input-ring
. Portanto, eu adicionei a seguinte expressão ao meu arquivo init:
(setq desktop-locals-to-save
(append desktop-locals-to-save
'((comint-input-ring . 50))))
Isso não funciona. Eu sei que o desktop
pacote está funcionando porque o Emacs se lembra das variáveis globais às quais eu adicionei desktop-globals-to-save
no meu arquivo init.
-
EDIT: savehist
também não funciona. Suponho que seja porque comint-input-ring
é uma variável local de buffer.
comint
desktop
history-variables
Elena
fonte
fonte
savehist.el
e adicionar essa variável à lista de vars para salvar.savehist
(desculpe por não ter mencionado). Tanto quanto pude ver, era apenas para variáveis globais, enquantocomint-input-ring
é local de buffer. Agora, eu tentei de qualquer maneira, sem sucesso.comint.el
as duas linhas de código a seguir:(put 'comint-input-ring 'permanent-local t)
e(make-local-variable 'comint-input-ring)
. Em seguida, adicionecomint-input-ring
adesktop-locals-to-save
. Por fim, recompile novamente os arquivos aplicáveis, reinicie o Emacs e aproveite a vida ao máximo.Respostas:
Você pode salvar o valor local do buffer
comint-input-ring
em uma variável global quando um*ielm*
buffer é eliminado e restaurá-lo eminferior-emacs-lisp-mode-hook
:Agora você deve ser capaz de adicionar
ielm-comint-input-ring
parasavehist-additional-variables
obter o comportamento desejado. (Eu testei essa abordagem; você também deve poder usá-ladesktop-locals-to-save
.)fonte
LOCAL
argumento paraadd-hook
, ao invés de chamar manualmentemake-local-variable
emkill-buffer-hook
. O último pode causar problemas ao tentar adicionar retornos de chamada ao gancho globalmente.inf-mongo
(ou, presumivelmente, qualquer outro modo que usecomint
). Isso é muito útil e também me ensinou um pouco mais sobre elisp ... obrigado!