Subject: bug#76585: closed (Re: bug#76585: ielm clobbers history on C-c C-c, C-d)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 01 Mar 2025 08:29:03 +0000

Your bug report

#76585: ielm clobbers history on C-c C-c, C-d

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
76585: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76585
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#76585: ielm clobbers history on C-c C-c, C-d
From: Eli Zaretskii <[email-masked]>
To: Daniel Colascione <[email-masked]>
Cc: [email-masked]
Date: Sat, 01 Mar 2025 10:28:43 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Daniel Colascione <[email-masked]>
> Cc: [email-masked]
> Date: Fri, 28 Feb 2025 16:27:04 -0500
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > Thanks.  Does the below give good results?
> >
> > diff --git a/lisp/ielm.el b/lisp/ielm.el
> > index b3cd02b..c651612 100644
> > --- a/lisp/ielm.el
> > +++ b/lisp/ielm.el
> > @@ -521,6 +521,12 @@ ielm--input-history-writer
> >      (with-current-buffer buf
> >        (comint-write-input-ring))))
> >  
> > +(defun ielm--write-history-on-interrupt (_proc _group)
> > +  "Save the IELM input history when the process is interrupted."
> > +  (funcall (ielm--input-history-writer (current-buffer)))
> > +  ;; Let the rest of the hook functions run as well.
> > +  nil)
> > +
> >  ;;; Major mode
> >  
> >  (define-derived-mode inferior-emacs-lisp-mode comint-mode "IELM"
> > @@ -658,7 +664,9 @@ inferior-emacs-lisp-mode
> >           '(rear-nonsticky t field output inhibit-line-move-field-capture t))))
> >      (comint-output-filter (ielm-process) ielm-prompt-internal)
> >      (set-marker comint-last-input-start (ielm-pm))
> > -    (set-process-filter (get-buffer-process (current-buffer)) 'comint-output-filter)))
> > +    (set-process-filter (get-buffer-process (current-buffer)) 'comint-output-filter)
> > +    (add-hook 'interrupt-process-functions
> > +              #'ielm--write-history-on-interrupt -1 t)))
> >  
> >  (defun ielm-get-old-input nil
> >    ;; Return the previous input surrounding point
> 
> This works. Thanks

Thanks, installed on the master branch, and closing the bug.

Subject: ielm clobbers history on C-c C-c, C-d
From: Daniel Colascione <[email-masked]>
To: [email-masked]
Date: Wed, 26 Feb 2025 07:44:54 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

When the ielm inferior dummy process exits, we don't save its history:
when we next start ielm, we reload its history from the save file,
losing any entries between last history save and the present.