bug#2401: 23.0.90; set-frame-width does not take effect immediately?

Alex Khesin <[email protected]>
Newsgroups gmane.emacs.bugs,gmane.emacs.pretest.bugs
Message-ID <20090220040553.77C342544F0@localhost>
Consider the following function

(defun test-split-window ()
  (interactive)
  (delete-other-windows)
  (set-frame-width (selected-frame) 80)
  (set-frame-width (selected-frame) 163)
  (split-window-horizontally -80))

Up to about a month ago, CVS emacs used to end up with a frame containing two 80-characters-wide windows after executing test-split-window.  I updated to the latest CVS earlier today, and I now get one of two behaviors: either the frame is made 80 wide but split in two, or the frame becomes 163 wide, but not split at all, with "Window width 0 (after splitting)" error message.  Adding short sleeps after set-frame-width fixes it:

(defun test-split-window ()
  (interactive)
  (delete-other-windows)
  (set-frame-width (selected-frame) 80)
  (sleep-for 0 500)
  (set-frame-width (selected-frame) 163)
  (sleep-for 0 500)
  (split-window-horizontally -80))

Executing the set-frame-window and split-window-horizontally by hand, one after another, also has the desirable effect.

It looks like set-frame-width does not take effect immediately anymore.


In GNU Emacs 23.0.90.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.12.9)
 of 2009-02-19 on alexk-warp.nyc.corp.google.com
Windowing system distributor `The X.Org Foundation', version 11.0.60900000
configured using `configure  '--with-x''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: C
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: C
  value of $LC_NUMERIC: C
  value of $LC_TIME: C
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Help

Minor modes in effect:
  googlemenu-mode: t
  which-function-mode: t
  desktop-save-mode: t
  recentf-mode: t
  cua-mode: t
  show-paren-mode: t
  savehist-mode: t
  shell-dirtrack-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  view-mode: t

Recent input:
<up> <up> <up> <S-down> <S-down> <S-down> <S-down> 
<S-down> C-c <timeout> C-x b <return> <S-up> <S-up> 
<S-up> <S-up> <S-up> <S-up> <S-down> C-√ C-v <S-up> 
<S-up> <S-up> <S-up> <S-up> M-x e v a k <backspace> 
l - r e g <tab> <return> M-x a k - d o <tab> <return> 
M-x a k - s i n <tab> <return> M-x <up> <up> <return> 
<help-echo> <down-mouse-5> <mouse-5> <double-down-mouse-5> 
<double-mouse-5> <triple-down-mouse-5> <triple-mouse-5> 
<triple-down-mouse-5> <triple-mouse-5> <triple-down-mouse-5> 
<triple-mouse-5> <triple-down-mouse-5> <triple-mouse-5> 
<down-mouse-4> <mouse-4> <double-down-mouse-4> <double-mouse-4> 
<up> <up> <down> <S-down> <S-down> <S-down> <S-down> 
<S-down> <S-down> C-c <timeout> M-x <help-echo> r e 
p o r t - e m a <tab> <return> a <return> <help-echo> 
<help-echo> <help-echo> <down-mouse-5> <mouse-5> <double-down-mouse-5> 
<double-mouse-5> <triple-down-mouse-5> <triple-mouse-5> 
<triple-down-mouse-5> <triple-mouse-5> <triple-down-mouse-5> 
<triple-mouse-5> <triple-down-mouse-5> <triple-mouse-5> 
<triple-down-mouse-5> <triple-mouse-5> <triple-down-mouse-5> 
<triple-mouse-5> <triple-down-mouse-5> <triple-mouse-5> 
<triple-down-mouse-5> <triple-mouse-5> <triple-down-mouse-5> 
<triple-mouse-5> <down-mouse-4> <mouse-4> <double-down-mouse-4> 
<double-mouse-4> <triple-down-mouse-4> <triple-mouse-4> 
<triple-down-mouse-4> <triple-mouse-4> <triple-down-mouse-4> 
<triple-mouse-4> <triple-down-mouse-4> <triple-mouse-4> 
<triple-down-mouse-4> <triple-mouse-4> <triple-down-mouse-4> 
<triple-mouse-4> <triple-down-mouse-4> <triple-mouse-4> 
<triple-down-mouse-4> <triple-mouse-4> <down-mouse-1> 
<mouse-1> M-x m a k e - f r <tab> <return> <switch-frame> 
C-x m n C-x m y a l e k <backspace> x k <backspace> 
@ k h e s i n . c o m <down> e s t <backspace> <backspace> 
<backspace> t e s t <down> <down> t e s t i n g <help-echo> 
C-c C-s C-x k <return> M-x a k - s i n <tab> <return> 
<help-echo> <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <help-echo> <help-echo> M-x 
a k - d o <tab> <return> M-x a k - d o <tab> <return> 
M-x a k - d <tab> <return> M-x a k - s i n <tab> <return> 
M-x a k - d o <tab> <return> M-x <up> <return> M-x 
a k s i n <tab> <backspace> <backspace> <backspace> 
<up> <up> <return> M-x <up> <up> <return> <switch-frame> 
M-x C-r b u g <return> <return>

Recent messages:
byte-code: Beginning of buffer
byte-code: End of buffer [5 times]
byte-code: Beginning of buffer [4 times]
Auto-saving...
Auto-saving *mail*: Opening output file: no such file or directory, /tmp/alexk/emacs_autosaves/home/alexk/#%*mail*#
Unsent message being composed; erase it? (y or n) 
sendmail-user-agent-compose: Message aborted
Unsent message being composed; erase it? (y or n) 
Sending...done
split-window-horizontally: Window width 0 too small (after splitting) [3 times]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.