Subject: Re: bug#25380: 25.1; save-window-excursion problem in batch mode

From: Philipp Stephani <[email-masked]>
Date: Sun, 08 Jan 2017 23:38:33 +0000

Glenn Morris <[email-masked]> schrieb am So., 8. Jan. 2017 um 19:37 Uhr:

> Philipp Stephani wrote:
>
> > Apparently, restoring a window configuration doesn't result in the same
> > window configuration in batch mode:
> >
> > $ emacs -Q -batch -eval '(print (equal (save-window-excursion
> (current-window-configuration)) (current-window-configuration)))'
> >
> > nil
>
> It works in 24.5 and earlier. Something to do with window-edges?
>
> emacs -Q -batch --eval '(progn (setq c (current-window-configuration))
> (print (window-edges))
> (set-window-configuration c)
> (print (window-edges)))'
>
> 24.5:
> (0 1 10 9)
> (0 1 10 9)
>
> 25.1:
> (0 0 10 9)
> (0 1 10 10)
>

According to 'git bisect' one of the following commits is the culprit:

768b24eb0e On GNU/Linux, use timerfd for asynchronous timers. * configure.ac
(toplevel): Check whether GNU/Linux-specific timerfd functions and macros
are available. * m4/clock_time.m4 (gl_CLOCK_TIME): Check for clock_getres
as well. * src/atimer.c (toplevel) [HAVE_TIMERFD]: Include sys/timerfd.h.
(toplevel): Rename alarm_timer_ok to special_timer_available.
[HAVE_TIMERFD]: Declare timerfd. [HAVE_CLOCK_GETRES]: Declare resolution.
(start_atimer) [HAVE_CLOCK_GETRES]: Round up timestamp to system timer
resolution. (set_alarm) [HAVE_TIMERFD]: Use timerfd_settime.
(timerfd_callback) [HAVE_TIMERFD]: New function. (atimer_result,
debug_timer_callback, Fdebug_timer_check) [ENABLE_CHECKING]: New function
for the sake of automated tests. (init_atimer) [HAVE_TIMERFD]: Setup
timerfd. [HAVE_CLOCK_GETRES]: Likewise for system timer resolution.
[ENABLE_CHECKING]: Defsubr test function. * src/atimer.h (timerfd_callback)
[HAVE_TIMERFD]: Add prototype. * src/lisp.h (add_timer_wait_descriptor)
[HAVE_TIMERFD]: Likewise. * src/process.c (add_timer_wait_descriptor)
[HAVE_TIMERFD]: New function. * test/automated/timer-tests.el
(timer-tests-debug-timer-check): New test.

7daa4ff121 Parse completion input in a iPython friendly way.

a7947cd874 Fix the GDB xsubchartable command.

34c6b847fb Fix --without-x build and pacify --enable-gcc-warnings. Problems
reported in Bug#18122 and Bug#18124. * frame.c (get_frame_param): Define
even if !HAVE_WINDOW_SYSTEM. (frame_windows_min_size): Now static. *
frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS) [!HAVE_WINDOW_SYSTEM]: Define as
no-op. (adjust_frame_size): Always declare prototype.

4256626a7a Prevent Python process shell buffer to pop twice. *
lisp/progmodes/python.el (python-shell-switch-to-shell): Do not call
pop-to-buffer.

414e1537ab Open doc text also if it's not saved to a file.

ca43b53625 * lisp/progmodes/python.el (python-shell-with-shell-buffer): New
macro. (python-shell-font-lock-get-or-create-buffer)
(python-shell-font-lock-kill-buffer)
(python-shell-font-lock-with-font-lock-buffer)
(python-shell-font-lock-cleanup-buffer) (python-shell-font-lock-toggle):
Use it. (python-shell-font-lock-turn-on) (python-shell-font-lock-turn-off):
Use it.  Make command.

da41ffdd08 Merge from emacs-24; up to 2014-06-26T06:55:[email-masked]

f5bed1021b Grab all Python process output before inferior-python-mode hooks.

168f8e732d * frame.c (x_set_frame_parameters): Don't use uninitialized
locals.

2daa203c3e Fix Gnus-related issues reported by David Kastrup <[email-masked]>
in <http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00370.html>. *
atimer.c (timerfd_callback): Always read expiration data. Add comment.
(turn_on_atimers) [HAVE_TIMERFD]: Disarm timerfd timer. * process.c
(add_timer_wait_descriptor): Add timer descriptor to input_wait_mask and
non_process_wait_mask as well.

5dc4b8ca3d Fix some issues with setting the frame height.

72c64ae95a More robust shell startup and code setup.

0f6bbc3da3 Support horizontal scrolling of bidirectional text.

81abec91ee * net/tramp-sh.el (tramp-get-remote-python): Also search for
executables named "python2" or "python3".
(tramp-get-remote-uid-with-python): Use parentheses around arguments to
`print' to make it compatible with Python 3.
(tramp-get-remote-gid-with-python): Ditto.

8862cff49c Fix Changelog typo, introduced by last commit.

96fa02baec Reinstate removed code.

3477e27021 Complete pixelwise frame/window resizing, add horizontal
scrollbar support.

6628be853e * lisp/progmodes/python.el (inferior-python-mode): Make input
prompts read-only.

8e3b4f58f1 In adjust_frame_size use FRAME_WINDOW_P instead of
FRAME_X_WINDOW (Bug#18138).

Unfortunately compilation fails with these commits (on macOS), so I can't
narrow it down any further.