on GNU EMACS's python-mode, loading entire buffer
Stephen Berman
stephen.berman at gmx.net
Thu Sep 29 07:06:25 EDT 2022
On Sun, 04 Sep 2022 16:47:07 -0300 Meredith Montgomery <mmontgomery at levado.to> wrote:
> Meredith Montgomery <mmontgomery at levado.to> writes:
>
>> Meredith Montgomery <mmontgomery at levado.to> writes:
>>
>> [...]
>>
>>> I would also be interested in a command that restarts the REPL afresh
>>> and reloads my buffer --- sort of like keyboard's [F5] of the IDLE.
>>
>> A partial solution for this is the following procedure.
>>
>> (defun python-revert-and-send-buffer-to-repl ()
>> "Revert current buffer and sends it to the Python REPL."
>> (interactive)
>> (revert-buffer "ignore-auto-no" "no-confirm")
>> (python-shell-send-buffer))
>>
>> We can map this to the F5-key and that improves things. But a restart
>> of the REPL would be the ideal. (Sometimes we really want to start
>> afresh. Sometimes. Most often we don't want that.)
>
> It's not easy to restart the REPL. You can send "quit()" to it and
> invoke run-python again interactively by typing out one command after
> another, but if you write a procedure such as this one below, it doesn't
> work: it gives me the impression that there's a timing issue, that is,
> perhaps the procedure is too fast and something happens before it
> should.
>
> (defun python-save-send-buffer-to-repl ()
> (interactive)
> (save-buffer)
> (python-shell-send-string "quit()")
> (run-python)
> (python-shell-send-buffer)
> (python-shell-switch-to-shell))
It does seem like a timing issue. This works for me:
(defun python-save-send-buffer-to-repl ()
(interactive)
(save-buffer)
(python-shell-send-string "quit()")
(sit-for 0.1)
(run-python)
(python-shell-send-buffer)
(python-shell-switch-to-shell))
But if I decrease the wait to 0.05 it doesn't work.
Steve Berman
More information about the Python-list
mailing list