Je ne peux pas faire en sorte qu'Emacs se souvienne de l'historique des *ielm*
tampons entre les sessions. Pour autant que je sache, cet historique est enregistré dans la variable buffer-local comint-input-ring
. J'ai donc ajouté l'expression suivante à mon fichier init:
(setq desktop-locals-to-save
(append desktop-locals-to-save
'((comint-input-ring . 50))))
Ça ne marche pas. Je sais que le desktop
package fonctionne car Emacs se souvient des variables globales auxquelles j'ai ajouté desktop-globals-to-save
dans mon fichier init.
-
EDIT: savehist
ne fonctionne pas non plus. Je suppose que c'est parce que comint-input-ring
c'est une variable tampon locale.
savehist.el
et d'ajouter cette variable à la liste des variables à enregistrer.savehist
(désolé de ne pas l'avoir mentionné). Pour autant que je sache, c'était uniquement pour les variables globales, tandis que lecomint-input-ring
tampon est local. Maintenant, je l'ai essayé de toute façon, sans succès.comint.el
les deux lignes de code suivantes:(put 'comint-input-ring 'permanent-local t)
et(make-local-variable 'comint-input-ring)
. Ensuite, ajoutezcomint-input-ring
àdesktop-locals-to-save
. Enfin, recompilez les fichiers applicables, redémarrez Emacs et profitez pleinement de la vie.Réponses:
Vous pouvez enregistrer la valeur locale du tampon de
comint-input-ring
dans une variable globale lorsqu'un*ielm*
tampon est tué et le restaurer dansinferior-emacs-lisp-mode-hook
:Vous devriez maintenant pouvoir ajouter
ielm-comint-input-ring
àsavehist-additional-variables
pour obtenir le comportement que vous souhaitez. (J'ai testé cette approche; vous devriez cependant pouvoir l'utiliserdesktop-locals-to-save
également.)la source
LOCAL
argumentadd-hook
, plutôt que d' appeler manuellementmake-local-variable
surkill-buffer-hook
. Ce dernier pourrait provoquer des problèmes lors de la tentative ultérieure d'ajout de rappels au crochet globalement.inf-mongo
aussi bien (ou, probablement, tout autre mode qui utilisecomint
) C'est tellement utile, et m'a également appris un peu plus éloquent ... merci!