Nie mogę zmusić Emacsa do zapamiętania historii *ielm*
buforów między sesjami. O ile wiem, taka historia jest zapisywana w zmiennej lokalnej bufora comint-input-ring
. Dlatego dodałem następujące wyrażenie do mojego pliku init:
(setq desktop-locals-to-save
(append desktop-locals-to-save
'((comint-input-ring . 50))))
To nie działa Wiem, że desktop
pakiet działa, ponieważ Emacs pamięta zmienne globalne, które dodałem desktop-globals-to-save
w moim pliku init.
-
EDYCJA: savehist
też nie działa. Przypuszczam, że to dlatego, że jest comint-input-ring
zmienną lokalną dla bufora.
comint
desktop
history-variables
Elena
źródło
źródło
savehist.el
tej zmiennej i dodać ją do listy zmiennych, aby zapisać.savehist
już o tym myślałem (przepraszam, że o tym nie wspominałem). O ile mogłem zobaczyć, dotyczyło to tylko zmiennych globalnych, podczas gdycomint-input-ring
jest to bufor lokalny. Teraz i tak spróbowałem, bez powodzenia.comint.el
następujących dwóch wierszy kodu:(put 'comint-input-ring 'permanent-local t)
i(make-local-variable 'comint-input-ring)
. Następnie dodajcomint-input-ring
dodesktop-locals-to-save
. Na koniec ponownie skompiluj odpowiednie pliki, uruchom ponownie Emacsa i ciesz się pełnią życia.Odpowiedzi:
Możesz zapisać lokalną wartość bufora
comint-input-ring
w zmiennej globalnej po*ielm*
zabiciu bufora i przywrócić go winferior-emacs-lisp-mode-hook
:Teraz powinieneś być w stanie dodać
ielm-comint-input-ring
dosavehist-additional-variables
uzyskać żądane zachowanie. (Przetestowałem to podejście; jednak powinieneś być w stanie również użyćdesktop-locals-to-save
.)źródło
LOCAL
argumentuadd-hook
, zamiast ręcznie dzwoniącmake-local-variable
nakill-buffer-hook
. Ten ostatni może powodować problemy przy późniejszej globalnej próbie dodawania wywołań zwrotnych.inf-mongo
(lub, prawdopodobnie, jakikolwiek inny tryb, który używacomint
) Jest to bardzo pomocne, a także nauczyło mnie trochę więcej elisp ... dzięki!