* Trunk emacs infelicity with linum mode @ 2014-09-02 17:22 Manoj Srivastava 2014-09-02 18:03 ` Eli Zaretskii 2014-09-03 12:37 ` Herbert J. Skuhra 0 siblings, 2 replies; 48+ messages in thread From: Manoj Srivastava @ 2014-09-02 17:22 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 728 bytes --] Hi, To reproduce, on a graphical display: emacs -Q M-x load-library<RET> linum<RET> M-x linum-mode C-x 5 2 This results in an error, the contents of the *Messages* buffer is: --8<---------------cut here---------------start------------->8--- Loading linum...done Global-Linum mode enabled linum--face-height: Invalid face: linum [3 times] Mark set --8<---------------cut here---------------end--------------->8--- Is anyone else seeing this? manoj -- [The French Riviera is] a sunny place for shady people. Somerset Maugham Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-02 17:22 Trunk emacs infelicity with linum mode Manoj Srivastava @ 2014-09-02 18:03 ` Eli Zaretskii 2014-09-02 18:56 ` Manoj Srivastava 2014-09-03 12:37 ` Herbert J. Skuhra 1 sibling, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-02 18:03 UTC (permalink / raw) To: Manoj Srivastava; +Cc: emacs-devel > From: Manoj Srivastava <srivasta@ieee.org> > Date: Tue, 02 Sep 2014 10:22:35 -0700 > > To reproduce, on a graphical display: > emacs -Q > M-x load-library<RET> > linum<RET> > M-x linum-mode > C-x 5 2 > > This results in an error, the contents of the *Messages* buffer > is: > --8<---------------cut here---------------start------------->8--- > Loading linum...done > Global-Linum mode enabled > linum--face-height: Invalid face: linum [3 times] > Mark set > --8<---------------cut here---------------end--------------->8--- > > Is anyone else seeing this? I don't. Suggest that you set debug-on-error non-nil and show the backtrace. Also, are you sure you aren't using some version of linum that did not come with Emacs? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-02 18:03 ` Eli Zaretskii @ 2014-09-02 18:56 ` Manoj Srivastava 2014-09-02 19:11 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Manoj Srivastava @ 2014-09-02 18:56 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1800 bytes --] On Tue, Sep 02 2014, Eli Zaretskii wrote: >> From: Manoj Srivastava <srivasta@ieee.org> >> Date: Tue, 02 Sep 2014 10:22:35 -0700 >> >> To reproduce, on a graphical display: >> emacs -Q >> M-x load-library<RET> >> linum<RET> >> M-x linum-mode >> C-x 5 2 >> This results in an error, the contents of the *Messages* buffer >> is: >> --8<---------------cut here---------------start------------->8--- >> Loading linum...done >> Global-Linum mode enabled >> linum--face-height: Invalid face: linum [3 times] >> Mark set >> --8<---------------cut here---------------end--------------->8--- >> >> Is anyone else seeing this? > I don't. > Suggest that you set debug-on-error non-nil and show the backtrace. > Also, are you sure you aren't using some version of linum that did not > come with Emacs? M-x locate-library linum says: Library is file /usr/local/share/emacs/24.4.50/lisp/linum.elc Which is the one that comes with emacs. I removed that directory, recompiled and re-installed the latest emacs. There is no change in behaviour. This is Debian Sid, also updated very recently. I do not get any return from debug-on-error or debug-on-quit set to t, All I get is a beep, and the error message in the nodeline and the *Messages* buffer. I am also seeing the same behaviour on my laptop, also running Debian unstable. This might be related to the undated gcc tool chain that has hit Debian, or this could be mere coincidence. I'll continue looking (the strace output is pretty noisy,) manoj -- You have a message from the operator. Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-02 18:56 ` Manoj Srivastava @ 2014-09-02 19:11 ` Eli Zaretskii 2014-09-03 7:06 ` Manoj Srivastava 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-02 19:11 UTC (permalink / raw) To: Manoj Srivastava; +Cc: emacs-devel > From: Manoj Srivastava <srivasta@ieee.org> > Date: Tue, 02 Sep 2014 11:56:28 -0700 > > M-x locate-library linum says: > Library is file /usr/local/share/emacs/24.4.50/lisp/linum.elc > Which is the one that comes with emacs. I removed that directory, > recompiled and re-installed the latest emacs. There is no change in > behaviour. This is Debian Sid, also updated very recently. > > I do not get any return from debug-on-error or debug-on-quit set > to t, All I get is a beep, and the error message in the nodeline and > the *Messages* buffer. Try loading linum.el, not linum.elc. Also, after you load it, do you see the 'linum' face in the buffer popped up by "M-x list-faces-display"? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-02 19:11 ` Eli Zaretskii @ 2014-09-03 7:06 ` Manoj Srivastava 2014-09-03 15:50 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Manoj Srivastava @ 2014-09-03 7:06 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1342 bytes --] On Tue, Sep 02 2014, Eli Zaretskii wrote: >> From: Manoj Srivastava <srivasta@ieee.org> >> Date: Tue, 02 Sep 2014 11:56:28 -0700 >> >> M-x locate-library linum says: >> Library is file /usr/local/share/emacs/24.4.50/lisp/linum.elc >> Which is the one that comes with emacs. I removed that directory, >> recompiled and re-installed the latest emacs. There is no change in >> behaviour. This is Debian Sid, also updated very recently. >> >> I do not get any return from debug-on-error or debug-on-quit set >> to t, All I get is a beep, and the error message in the nodeline and >> the *Messages* buffer. > Try loading linum.el, not linum.elc. No difference. I still get no backtrace with debug-on-error set to t, but the error message is still there. > Also, after you load it, do you see the 'linum' face in the buffer > popped up by "M-x list-faces-display"? Yes, the face does exist. I can also see the same face in the line numbers on the left. In previous sessions, I had tried customizing the face, to no avail (I have since removed the customization). manoj -- Oh, by the way, which one's Pink? Pink Floyd Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-03 7:06 ` Manoj Srivastava @ 2014-09-03 15:50 ` Eli Zaretskii 2014-09-03 16:28 ` Manoj Srivastava 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-03 15:50 UTC (permalink / raw) To: Manoj Srivastava; +Cc: emacs-devel > From: Manoj Srivastava <srivasta@ieee.org> > Date: Wed, 03 Sep 2014 00:06:11 -0700 > > > Also, after you load it, do you see the 'linum' face in the buffer > > popped up by "M-x list-faces-display"? > > Yes, the face does exist. I can also see the same face in the > line numbers on the left. In previous sessions, I had tried > customizing the face, to no avail (I have since removed the > customization). I don't understand how is this possible. I can only suggest to run Emacs under GDB, put a breakpoint on the line in xfaces.c marked below: static Lisp_Object lface_from_face_name_no_resolve (struct frame *f, Lisp_Object face_name, int signal_p) { Lisp_Object lface; if (f) lface = assq_no_quit (face_name, f->face_alist); else lface = assq_no_quit (face_name, Vface_new_frame_defaults); if (CONSP (lface)) lface = XCDR (lface); else if (signal_p) signal_error ("Invalid face", face_name); <<<<<<<<<<<<<<<<<<<<<< check_lface (lface); return lface; } and then post the backtrace when the breakpoint breaks. (Please make sure GDB reads the .gdbinit file when you start it, so that the backtrace includes the Lisp level.) ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-03 15:50 ` Eli Zaretskii @ 2014-09-03 16:28 ` Manoj Srivastava 2014-09-04 15:29 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Manoj Srivastava @ 2014-09-03 16:28 UTC (permalink / raw) To: emacs-devel On Wed, Sep 03 2014, Eli Zaretskii wrote: F>> From: Manoj Srivastava <srivasta@ieee.org> >> Date: Wed, 03 Sep 2014 00:06:11 -0700 >> > Also, after you load it, do you see the 'linum' face in the buffer >> > popped up by "M-x list-faces-display"? >> Yes, the face does exist. I can also see the same face in the >> line numbers on the left. In previous sessions, I had tried >> customizing the face, to no avail (I have since removed the >> customization). > I don't understand how is this possible. I can only suggest to run > Emacs under GDB, put a breakpoint on the line in xfaces.c marked below: > and then post the backtrace when the breakpoint breaks. > (Please make sure GDB reads the .gdbinit file when you start it, so > that the backtrace includes the Lisp level.) --8<---------------cut here---------------start------------->8--- (gdb) list lface_from_face_name_no_resolve 1951 signal an error if FACE_NAME is not a valid face name. If SIGNAL_P 1952 is zero, value is nil if FACE_NAME is not a valid face name. */ 1953 static Lisp_Object 1954 lface_from_face_name_no_resolve (struct frame *f, Lisp_Object face_name, 1955 int signal_p) 1956 { 1957 Lisp_Object lface; 1958 1959 if (f) 1960 lface = assq_no_quit (face_name, f->face_alist); (gdb) list 1961 else 1962 lface = assq_no_quit (face_name, Vface_new_frame_defaults); 1963 1964 if (CONSP (lface)) 1965 lface = XCDR (lface); 1966 else if (signal_p) 1967 signal_error ("Invalid face", face_name); 1968 1969 check_lface (lface); 1970 (gdb) break 1967 Breakpoint 3 at 0x4b0429: file xfaces.c, line 1967. (gdb) run -Q Starting program: /usr/local/src/emacs/src/emacs -Q [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffe794b700 (LWP 2199)] [New Thread 0x7fffe6d32700 (LWP 2200)] [New Thread 0x7fffe6531700 (LWP 2201)] Breakpoint 3, lface_from_face_name_no_resolve (f=f@entry=0x120f6d0, face_name=face_name@entry=17204162, signal_p=signal_p@entry=1) at xfaces.c:1967 1967 signal_error ("Invalid face", face_name); --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- #0 lface_from_face_name_no_resolve (f=f@entry=0x120f6d0, face_name=face_name@entry=17204162, signal_p=signal_p@entry=1) at xfaces.c:1967 #1 0x00000000004b047b in get_lface_attributes_no_remap (f=f@entry=0x120f6d0, face_name=face_name@entry=17204162, attrs=attrs@entry=0x7fffffffc2c0, signal_p=signal_p@entry=1) at xfaces.c:2003 #2 0x00000000004b160f in get_lface_attributes (f=f@entry=0x120f6d0, face_name=17204162, attrs=attrs@entry=0x7fffffffc2c0, signal_p=1, named_merge_points=named_merge_points@entry=0x0) at xfaces.c:2050 #3 0x00000000004b7569 in lookup_named_face (f=f@entry=0x120f6d0, symbol=symbol@entry=17204162, signal_p=signal_p@entry=1) at xfaces.c:4503 #4 0x00000000004b760e in Fface_font (face=17204162, frame=<optimized out>, character=12672242) at xfaces.c:3844 #5 0x0000000000554fd2 in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffc438) at eval.c:2815 #6 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=16288805, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fffffffc438) at bytecode.c:920 #7 0x0000000000554b47 in funcall_lambda (fun=22295153, nargs=nargs@entry=1, arg_vector=0x7fffffffc438, arg_vector@entry=0x7fffffffc5a8) at eval.c:2976 #8 0x0000000000554e0b in Ffuncall (nargs=2, args=args@entry=0x7fffffffc5a0) at eval.c:2869 #9 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=19151957, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fffffffc5a0) at bytecode.c:920 #10 0x0000000000554b47 in funcall_lambda (fun=22294961, nargs=nargs@entry=1, arg_vector=0x7fffffffc5a0, arg_vector@entry=0x7fffffffc6e8) at eval.c:2976 #11 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffc6e0) at eval.c:2869 #12 0x00000000005551ca in call1 (fn=fn@entry=22953634, arg1=<optimized out>) at eval.c:2607 #13 0x000000000055c7f2 in mapcar1 (leni=1, vals=vals@entry=0x0, fn=fn@entry=22953634, seq=seq@entry=17119974) at fns.c:2591 #14 0x000000000055ca32 in Fmapc (function=22953634, sequence=17119974) at fns.c:2680 #15 0x0000000000554fe2 in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffc7d0) at eval.c:2811 #16 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=16288725, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fffffffc7d0) at bytecode.c:920 #17 0x0000000000554b47 in funcall_lambda (fun=22295569, nargs=nargs@entry=1, arg_vector=0x7fffffffc7d0, arg_vector@entry=0x7fffffffc910) at eval.c:2976 #18 0x0000000000554e0b in Ffuncall (nargs=2, args=args@entry=0x7fffffffc908) at eval.c:2869 #19 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=16289461, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=0, args=<optimized out>, args@entry=0x7fffffffc908) at bytecode.c:920 #20 0x0000000000554b47 in funcall_lambda (fun=22296849, nargs=nargs@entry=0, arg_vector=0x7fffffffc908, arg_vector@entry=0x7fffffffca30) at eval.c:2976 #21 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=1, args=args@entry=0x7fffffffca28) at eval.c:2869 #22 0x00000000005551e8 in call0 (fn=22958818) at eval.c:2592 #23 0x000000000046bda6 in run_funs (funs=17204162) at window.c:3315 #24 0x000000000047188d in run_window_configuration_change_hook (f=f@entry=0x120f6d0) at window.c:3369 #25 0x0000000000420db1 in adjust_frame_size (f=0x120f6d0, new_width=<optimized out>, new_height=<optimized out>, inhibit=<optimized out>, pretend=<optimized out>) at frame.c:582 #26 0x000000000041e4ce in change_frame_size (pixelwise=<optimized out>, safe=<optimized out>, delay=<optimized out>, pretend=<optimized out>, new_height=<optimized out>, new_width=<optimized out>, f=<optimized out>) at dispnew.c:5560 #27 do_pending_window_change (safe=false) at dispnew.c:5487 #28 0x0000000000420e27 in adjust_frame_size (f=0x120f6d0, new_width=<optimized out>, new_height=<optimized out>, inhibit=0, pretend=<optimized out>) at frame.c:484 #29 0x00000000004cfd62 in Fx_create_frame (parms=17204162) at xfns.c:3244 #30 0x0000000000554fee in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffccf8) at eval.c:2808 #31 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=9233173, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=0, args=<optimized out>, args@entry=0x0) at bytecode.c:920 #32 0x0000000000554aaf in funcall_lambda (fun=9233077, nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffcea0) at eval.c:3042 #33 0x0000000000554e0b in Ffuncall (nargs=2, args=args@entry=0x7fffffffce98) at eval.c:2869 #34 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=9882037, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=0, args=<optimized out>, args@entry=0x0) at bytecode.c:920 #35 0x0000000000554aaf in funcall_lambda (fun=9881949, nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffd040) at eval.c:3042 #36 0x0000000000554e0b in Ffuncall (nargs=1, args=args@entry=0x7fffffffd038) at eval.c:2869 #37 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=9881709, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=0, args=<optimized out>, args@entry=0x0) at bytecode.c:920 #38 0x0000000000554aaf in funcall_lambda (fun=9881621, nargs=nargs@entry=0, arg_vector=arg_vector@entry=0x7fffffffd350) at eval.c:3042 #39 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=1, args=args@entry=0x7fffffffd348) at eval.c:2869 #40 0x000000000055078a in Ffuncall_interactively (nargs=1, args=0x7fffffffd348) at callint.c:270 #41 0x0000000000554ee1 in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffd340) at eval.c:2789 #42 0x0000000000555c4c in Fapply (nargs=nargs@entry=3, args=args@entry=0x7fffffffd340) at eval.c:2290 #43 0x0000000000550d5c in Fcall_interactively (function=20495666, record_flag=12672242, keys=12707029) at callint.c:419 #44 0x0000000000554fd2 in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffd428) at eval.c:2815 #45 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=9622181, maxdepth=<optimized out>, args_template=<optimized out>, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fffffffd428) at bytecode.c:920 #46 0x0000000000554b47 in funcall_lambda (fun=9622145, nargs=nargs@entry=1, arg_vector=0x7fffffffd428, arg_vector@entry=0x7fffffffd568) at eval.c:2976 #47 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffd560) at eval.c:2869 #48 0x00000000005551ca in call1 (fn=<optimized out>, arg1=<optimized out>) at eval.c:2607 #49 0x00000000004eff4d in command_loop_1 () at keyboard.c:1569 #50 0x0000000000553367 in internal_condition_case (bfun=bfun@entry=0x4efbc0 <command_loop_1>, handlers=<optimized out>, hfun=hfun@entry=0x4e6e00 <cmd_error>) at eval.c:1347 #51 0x00000000004e256e in command_loop_2 (ignore=ignore@entry=12672242) at keyboard.c:1193 #52 0x000000000055324b in internal_catch (tag=12720194, func=func@entry=0x4e2550 <command_loop_2>, arg=12672242) at eval.c:1111 #53 0x00000000004e252b in command_loop () at keyboard.c:1172 #54 0x00000000004e69ef in recursive_edit_1 () at keyboard.c:782 #55 0x00000000004e6d30 in Frecursive_edit () at keyboard.c:853 #56 0x0000000000414791 in main (argc=0, argv=0x7fffffffd908) at emacs.c:1642 Lisp Backtrace: "face-font" (0xffffc440) "linum--face-height" (0xffffc5a8) "linum-update-window" (0xffffc6e8) "mapc" (0xffffc7d8) "linum-update" (0xffffc910) "linum-update-current" (0xffffca30) "x-create-frame" (0xffffcd00) "x-create-frame-with-faces" (0xffffcea0) "make-frame" (0xffffd040) "make-frame-command" (0xffffd350) "funcall-interactively" (0xffffd348) "call-interactively" (0xffffd430) "command-execute" (0xffffd568) --8<---------------cut here---------------end--------------->8--- Thanks for looking into this manoj -- You have a tendency to feel you are superior to most computers. Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-03 16:28 ` Manoj Srivastava @ 2014-09-04 15:29 ` Eli Zaretskii 2014-09-04 15:56 ` Stefan Monnier 2014-09-05 18:48 ` Manoj Srivastava 0 siblings, 2 replies; 48+ messages in thread From: Eli Zaretskii @ 2014-09-04 15:29 UTC (permalink / raw) To: Manoj Srivastava; +Cc: emacs-devel > From: Manoj Srivastava <srivasta@ieee.org> > Date: Wed, 03 Sep 2014 09:28:20 -0700 > > Breakpoint 3, lface_from_face_name_no_resolve (f=f@entry=0x120f6d0, face_name=face_name@entry=17204162, signal_p=signal_p@entry=1) > at xfaces.c:1967 > 1967 signal_error ("Invalid face", face_name); > --8<---------------cut here---------------end--------------->8--- > > --8<---------------cut here---------------start------------->8--- > #0 lface_from_face_name_no_resolve (f=f@entry=0x120f6d0, face_name=face_name@entry=17204162, signal_p=signal_p@entry=1) > at xfaces.c:1967 > #1 0x00000000004b047b in get_lface_attributes_no_remap (f=f@entry=0x120f6d0, face_name=face_name@entry=17204162, > attrs=attrs@entry=0x7fffffffc2c0, signal_p=signal_p@entry=1) at xfaces.c:2003 > #2 0x00000000004b160f in get_lface_attributes (f=f@entry=0x120f6d0, face_name=17204162, attrs=attrs@entry=0x7fffffffc2c0, signal_p=1, > named_merge_points=named_merge_points@entry=0x0) at xfaces.c:2050 > #3 0x00000000004b7569 in lookup_named_face (f=f@entry=0x120f6d0, symbol=symbol@entry=17204162, signal_p=signal_p@entry=1) > at xfaces.c:4503 > #4 0x00000000004b760e in Fface_font (face=17204162, frame=<optimized out>, character=12672242) at xfaces.c:3844 > #5 0x0000000000554fd2 in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffc438) at eval.c:2815 > #6 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=16288805, maxdepth=<optimized out>, > args_template=<optimized out>, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fffffffc438) at bytecode.c:920 > #7 0x0000000000554b47 in funcall_lambda (fun=22295153, nargs=nargs@entry=1, arg_vector=0x7fffffffc438, > arg_vector@entry=0x7fffffffc5a8) at eval.c:2976 > #8 0x0000000000554e0b in Ffuncall (nargs=2, args=args@entry=0x7fffffffc5a0) at eval.c:2869 > #9 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=19151957, maxdepth=<optimized out>, > args_template=<optimized out>, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fffffffc5a0) at bytecode.c:920 > #10 0x0000000000554b47 in funcall_lambda (fun=22294961, nargs=nargs@entry=1, arg_vector=0x7fffffffc5a0, > arg_vector@entry=0x7fffffffc6e8) at eval.c:2976 > #11 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffc6e0) at eval.c:2869 > #12 0x00000000005551ca in call1 (fn=fn@entry=22953634, arg1=<optimized out>) at eval.c:2607 > #13 0x000000000055c7f2 in mapcar1 (leni=1, vals=vals@entry=0x0, fn=fn@entry=22953634, seq=seq@entry=17119974) at fns.c:2591 > #14 0x000000000055ca32 in Fmapc (function=22953634, sequence=17119974) at fns.c:2680 > #15 0x0000000000554fe2 in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffc7d0) at eval.c:2811 > #16 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=16288725, maxdepth=<optimized out>, > args_template=<optimized out>, nargs=nargs@entry=1, args=<optimized out>, args@entry=0x7fffffffc7d0) at bytecode.c:920 > #17 0x0000000000554b47 in funcall_lambda (fun=22295569, nargs=nargs@entry=1, arg_vector=0x7fffffffc7d0, > arg_vector@entry=0x7fffffffc910) at eval.c:2976 > #18 0x0000000000554e0b in Ffuncall (nargs=2, args=args@entry=0x7fffffffc908) at eval.c:2869 > #19 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, vector=16289461, maxdepth=<optimized out>, > args_template=<optimized out>, nargs=nargs@entry=0, args=<optimized out>, args@entry=0x7fffffffc908) at bytecode.c:920 > #20 0x0000000000554b47 in funcall_lambda (fun=22296849, nargs=nargs@entry=0, arg_vector=0x7fffffffc908, > arg_vector@entry=0x7fffffffca30) at eval.c:2976 > #21 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=1, args=args@entry=0x7fffffffca28) at eval.c:2869 > #22 0x00000000005551e8 in call0 (fn=22958818) at eval.c:2592 > #23 0x000000000046bda6 in run_funs (funs=17204162) at window.c:3315 > #24 0x000000000047188d in run_window_configuration_change_hook (f=f@entry=0x120f6d0) at window.c:3369 > #25 0x0000000000420db1 in adjust_frame_size (f=0x120f6d0, new_width=<optimized out>, new_height=<optimized out>, > inhibit=<optimized out>, pretend=<optimized out>) at frame.c:582 > #26 0x000000000041e4ce in change_frame_size (pixelwise=<optimized out>, safe=<optimized out>, delay=<optimized out>, > pretend=<optimized out>, new_height=<optimized out>, new_width=<optimized out>, f=<optimized out>) at dispnew.c:5560 > #27 do_pending_window_change (safe=false) at dispnew.c:5487 > #28 0x0000000000420e27 in adjust_frame_size (f=0x120f6d0, new_width=<optimized out>, new_height=<optimized out>, inhibit=0, > pretend=<optimized out>) at frame.c:484 > #29 0x00000000004cfd62 in Fx_create_frame (parms=17204162) at xfns.c:3244 When I follow this recipe on my machine, I see no call to run_window_configuration_change_hook, because adjust_frame_size returns before that, having discovered (around line 500) that the new and the old dimensions are identical, and therefore no resize is needed. Can you see why this is not so in your case? Perhaps the calculations of frame dimensions in the case of Lucid are to blame? Also, I think linum-update-window should do nothing if 'linum' is not a valid face on the selected frame, because functions in window-configuration-change-hook can be called in many situations on which linum has no control. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-04 15:29 ` Eli Zaretskii @ 2014-09-04 15:56 ` Stefan Monnier 2014-09-04 18:37 ` Eli Zaretskii 2014-09-05 18:48 ` Manoj Srivastava 1 sibling, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2014-09-04 15:56 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Manoj Srivastava, emacs-devel > Also, I think linum-update-window should do nothing if 'linum' is not > a valid face on the selected frame, because functions in > window-configuration-change-hook can be called in many situations on > which linum has no control. This brings a new concept to me: how can a face be invalid in a specific frame? I thought a face either existed (globally) or not. It can have different "values" in different frames, but this is the first time I hear mention of a face being *invalid* in a particular frame while existing in other frames. I think it would be better if we can get rid of this subtlety. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-04 15:56 ` Stefan Monnier @ 2014-09-04 18:37 ` Eli Zaretskii 2014-09-04 20:25 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-04 18:37 UTC (permalink / raw) To: Stefan Monnier; +Cc: srivasta, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Manoj Srivastava <srivasta@ieee.org>, emacs-devel@gnu.org > Date: Thu, 04 Sep 2014 11:56:09 -0400 > > > Also, I think linum-update-window should do nothing if 'linum' is not > > a valid face on the selected frame, because functions in > > window-configuration-change-hook can be called in many situations on > > which linum has no control. > > This brings a new concept to me: how can a face be invalid in a specific > frame? I think it's because the face was not yet realized for that frame. Before we create a new frame, we realize its basic faces, but not the rest. I think. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-04 18:37 ` Eli Zaretskii @ 2014-09-04 20:25 ` Stefan Monnier 2014-09-05 6:58 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2014-09-04 20:25 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel >> This brings a new concept to me: how can a face be invalid in a specific >> frame? > I think it's because the face was not yet realized for that frame. > Before we create a new frame, we realize its basic faces, but not the > rest. I think. Yes, I kind of guessed this part, but it would be good to try and not expose those details to Elisp. IOW I think it's a bug that Elisp gets to know about "not yet realized faces". I guess in the present case, the underlying problem is that we run window-configuration-change-hook too early. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-04 20:25 ` Stefan Monnier @ 2014-09-05 6:58 ` Eli Zaretskii 2014-09-05 15:23 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-05 6:58 UTC (permalink / raw) To: Stefan Monnier; +Cc: srivasta, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: srivasta@ieee.org, emacs-devel@gnu.org > Date: Thu, 04 Sep 2014 16:25:09 -0400 > > I guess in the present case, the underlying problem is that we run > window-configuration-change-hook too early. Yes, I think so. But then not many packages (ab)use that hook like linum does. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-05 6:58 ` Eli Zaretskii @ 2014-09-05 15:23 ` Stefan Monnier 2014-09-05 15:32 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2014-09-05 15:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > Yes, I think so. But then not many packages (ab)use that hook like > linum does. I'd be happy to use some other mechanism in (n)linum to setup the margin, but window-configuration-change-hook is the best I found so far. Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-05 15:23 ` Stefan Monnier @ 2014-09-05 15:32 ` Eli Zaretskii 2014-09-05 16:23 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-05 15:32 UTC (permalink / raw) To: Stefan Monnier; +Cc: srivasta, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: srivasta@ieee.org, emacs-devel@gnu.org > Date: Fri, 05 Sep 2014 11:23:52 -0400 > > > Yes, I think so. But then not many packages (ab)use that hook like > > linum does. > > I'd be happy to use some other mechanism in (n)linum to setup the > margin, but window-configuration-change-hook is the best I found so far. Setting up the margins is not the problem. Redrawing the display using the special face is. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-05 15:32 ` Eli Zaretskii @ 2014-09-05 16:23 ` Stefan Monnier 2014-09-05 17:49 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2014-09-05 16:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel >> I'd be happy to use some other mechanism in (n)linum to setup the >> margin, but window-configuration-change-hook is the best I found so far. > Setting up the margins is not the problem. Redrawing the display > using the special face is. Hmm... so you're saying on linum.el is problematic, whereas nlinum.el is fine? Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-05 16:23 ` Stefan Monnier @ 2014-09-05 17:49 ` Eli Zaretskii 2014-09-06 1:19 ` Manoj Srivastava 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-05 17:49 UTC (permalink / raw) To: Stefan Monnier; +Cc: srivasta, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: srivasta@ieee.org, emacs-devel@gnu.org > Date: Fri, 05 Sep 2014 12:23:11 -0400 > > >> I'd be happy to use some other mechanism in (n)linum to setup the > >> margin, but window-configuration-change-hook is the best I found so far. > > Setting up the margins is not the problem. Redrawing the display > > using the special face is. > > Hmm... so you're saying on linum.el is problematic, whereas nlinum.el > is fine? Most probably, although I didn't try. Perhaps Manoj could try in his setup. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-05 17:49 ` Eli Zaretskii @ 2014-09-06 1:19 ` Manoj Srivastava 2014-09-06 7:43 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Manoj Srivastava @ 2014-09-06 1:19 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 954 bytes --] On Fri, Sep 05 2014, Eli Zaretskii wrote: >> From: Stefan Monnier <monnier@iro.umontreal.ca> >> Cc: srivasta@ieee.org, emacs-devel@gnu.org >> Date: Fri, 05 Sep 2014 12:23:11 -0400 >> >> >> I'd be happy to use some other mechanism in (n)linum to setup the >> >> margin, but window-configuration-change-hook is the best I found so far. >> > Setting up the margins is not the problem. Redrawing the display >> > using the special face is. >> >> Hmm... so you're saying on linum.el is problematic, whereas nlinum.el >> is fine? > > Most probably, although I didn't try. Perhaps Manoj could try in his > setup. I am willing to give this a try. Where do I find nlinum.el? manoj -- In Nature there are neither rewards nor punishments, there are consequences. R.G. Ingersoll Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-06 1:19 ` Manoj Srivastava @ 2014-09-06 7:43 ` Eli Zaretskii 2014-09-06 15:23 ` Manoj Srivastava 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-06 7:43 UTC (permalink / raw) To: Manoj Srivastava; +Cc: emacs-devel > From: Manoj Srivastava <srivasta@ieee.org> > Date: Fri, 05 Sep 2014 18:19:45 -0700 > > On Fri, Sep 05 2014, Eli Zaretskii wrote: > > >> From: Stefan Monnier <monnier@iro.umontreal.ca> > >> Cc: srivasta@ieee.org, emacs-devel@gnu.org > >> Date: Fri, 05 Sep 2014 12:23:11 -0400 > >> > >> >> I'd be happy to use some other mechanism in (n)linum to setup the > >> >> margin, but window-configuration-change-hook is the best I found so far. > >> > Setting up the margins is not the problem. Redrawing the display > >> > using the special face is. > >> > >> Hmm... so you're saying on linum.el is problematic, whereas nlinum.el > >> is fine? > > > > Most probably, although I didn't try. Perhaps Manoj could try in his > > setup. > > I am willing to give this a try. Where do I find nlinum.el? On ELPA. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-06 7:43 ` Eli Zaretskii @ 2014-09-06 15:23 ` Manoj Srivastava 2014-09-06 20:27 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Manoj Srivastava @ 2014-09-06 15:23 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1405 bytes --] On Sat, Sep 06 2014, Eli Zaretskii wrote: >> From: Manoj Srivastava <srivasta@ieee.org> >> Date: Fri, 05 Sep 2014 18:19:45 -0700 >> >> On Fri, Sep 05 2014, Eli Zaretskii wrote: >> >> >> From: Stefan Monnier <monnier@iro.umontreal.ca> >> >> Cc: srivasta@ieee.org, emacs-devel@gnu.org >> >> Date: Fri, 05 Sep 2014 12:23:11 -0400 >> >> >> >> >> I'd be happy to use some other mechanism in (n)linum to setup the >> >> >> margin, but window-configuration-change-hook is the best I found so far. >> >> > Setting up the margins is not the problem. Redrawing the display >> >> > using the special face is. >> >> >> >> Hmm... so you're saying on linum.el is problematic, whereas nlinum.el >> >> is fine? >> > >> > Most probably, although I didn't try. Perhaps Manoj could try in his >> > setup. >> >> I am willing to give this a try. Where do I find nlinum.el? > > On ELPA. For the record, nliunum.el does not work (it requires linum.el, and I think Martin is on the right track). I will be traveling this weekend and next week, so I might not be able to test out any fixes until next weekend. Thanks for the help, manoj -- He that teaches himself has a fool for a master. Benjamin Franklin Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-06 15:23 ` Manoj Srivastava @ 2014-09-06 20:27 ` Stefan Monnier 2014-09-07 5:07 ` Manoj Srivastava 0 siblings, 1 reply; 48+ messages in thread From: Stefan Monnier @ 2014-09-06 20:27 UTC (permalink / raw) To: emacs-devel > For the record, nliunum.el does not work As stated, that is simply untrue. So please clarify, Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-06 20:27 ` Stefan Monnier @ 2014-09-07 5:07 ` Manoj Srivastava 2014-09-08 0:28 ` Stefan Monnier 0 siblings, 1 reply; 48+ messages in thread From: Manoj Srivastava @ 2014-09-07 5:07 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 655 bytes --] On Sat, Sep 06 2014, Stefan Monnier wrote: >> For the record, nliunum.el does not work > > As stated, that is simply untrue. So please clarify, Untrue? Strong words. You conveniently elided the context. It does not work in the context that linum..el was also not working. If you are interested in the details, read the context you excluded. I am not all that interested in providing proof that I am speaking the truth. manoj -- Slow day. Practice crawling. Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-07 5:07 ` Manoj Srivastava @ 2014-09-08 0:28 ` Stefan Monnier 0 siblings, 0 replies; 48+ messages in thread From: Stefan Monnier @ 2014-09-08 0:28 UTC (permalink / raw) To: emacs-devel > You conveniently elided the context. It does not work in the > context that linum..el was also not working. So you're saying it gives the same error? OK, thanks for testing, Stefan ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-04 15:29 ` Eli Zaretskii 2014-09-04 15:56 ` Stefan Monnier @ 2014-09-05 18:48 ` Manoj Srivastava 2014-09-05 19:53 ` Eli Zaretskii 1 sibling, 1 reply; 48+ messages in thread From: Manoj Srivastava @ 2014-09-05 18:48 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 12948 bytes --] On Thu, Sep 04 2014, Eli Zaretskii wrote: >> From: Manoj Srivastava <srivasta@ieee.org> >> Date: Wed, 03 Sep 2014 09:28:20 -0700 >> >> Breakpoint 3, lface_from_face_name_no_resolve (f=f@entry=0x120f6d0, >> face_name=face_name@entry=17204162, signal_p=signal_p@entry=1) >> at xfaces.c:1967 >> 1967 signal_error ("Invalid face", face_name); >> --8<---------------cut here---------------end--------------->8--- >> >> --8<---------------cut here---------------start------------->8--- >> #0 lface_from_face_name_no_resolve (f=f@entry=0x120f6d0, >> face_name=face_name@entry=17204162, signal_p=signal_p@entry=1) >> at xfaces.c:1967 >> #1 0x00000000004b047b in get_lface_attributes_no_remap >> (f=f@entry=0x120f6d0, face_name=face_name@entry=17204162, >> attrs=attrs@entry=0x7fffffffc2c0, signal_p=signal_p@entry=1) at xfaces.c:2003 >> #2 0x00000000004b160f in get_lface_attributes (f=f@entry=0x120f6d0, >> face_name=17204162, attrs=attrs@entry=0x7fffffffc2c0, signal_p=1, >> named_merge_points=named_merge_points@entry=0x0) at xfaces.c:2050 >> #3 0x00000000004b7569 in lookup_named_face (f=f@entry=0x120f6d0, >> symbol=symbol@entry=17204162, signal_p=signal_p@entry=1) >> at xfaces.c:4503 >> #4 0x00000000004b760e in Fface_font (face=17204162, frame=<optimized >> out>, character=12672242) at xfaces.c:3844 >> #5 0x0000000000554fd2 in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffc438) at eval.c:2815 >> #6 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, >> vector=16288805, maxdepth=<optimized out>, >> args_template=<optimized out>, nargs=nargs@entry=1, >> args=<optimized out>, args@entry=0x7fffffffc438) at bytecode.c:920 >> #7 0x0000000000554b47 in funcall_lambda (fun=22295153, nargs=nargs@entry=1, arg_vector=0x7fffffffc438, >> arg_vector@entry=0x7fffffffc5a8) at eval.c:2976 >> #8 0x0000000000554e0b in Ffuncall (nargs=2, args=args@entry=0x7fffffffc5a0) at eval.c:2869 >> #9 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, >> vector=19151957, maxdepth=<optimized out>, >> args_template=<optimized out>, nargs=nargs@entry=1, >> args=<optimized out>, args@entry=0x7fffffffc5a0) at bytecode.c:920 >> #10 0x0000000000554b47 in funcall_lambda (fun=22294961, nargs=nargs@entry=1, arg_vector=0x7fffffffc5a0, >> arg_vector@entry=0x7fffffffc6e8) at eval.c:2976 >> #11 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7fffffffc6e0) at eval.c:2869 >> #12 0x00000000005551ca in call1 (fn=fn@entry=22953634, arg1=<optimized out>) at eval.c:2607 >> #13 0x000000000055c7f2 in mapcar1 (leni=1, vals=vals@entry=0x0, >> fn=fn@entry=22953634, seq=seq@entry=17119974) at fns.c:2591 >> #14 0x000000000055ca32 in Fmapc (function=22953634, sequence=17119974) at fns.c:2680 >> #15 0x0000000000554fe2 in Ffuncall (nargs=<optimized out>, args=args@entry=0x7fffffffc7d0) at eval.c:2811 >> #16 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, >> vector=16288725, maxdepth=<optimized out>, >> args_template=<optimized out>, nargs=nargs@entry=1, >> args=<optimized out>, args@entry=0x7fffffffc7d0) at bytecode.c:920 >> #17 0x0000000000554b47 in funcall_lambda (fun=22295569, nargs=nargs@entry=1, arg_vector=0x7fffffffc7d0, >> arg_vector@entry=0x7fffffffc910) at eval.c:2976 >> #18 0x0000000000554e0b in Ffuncall (nargs=2, args=args@entry=0x7fffffffc908) at eval.c:2869 >> #19 0x0000000000589bf3 in exec_byte_code (bytestr=<optimized out>, >> vector=16289461, maxdepth=<optimized out>, >> args_template=<optimized out>, nargs=nargs@entry=0, >> args=<optimized out>, args@entry=0x7fffffffc908) at bytecode.c:920 >> #20 0x0000000000554b47 in funcall_lambda (fun=22296849, nargs=nargs@entry=0, arg_vector=0x7fffffffc908, >> arg_vector@entry=0x7fffffffca30) at eval.c:2976 >> #21 0x0000000000554e0b in Ffuncall (nargs=nargs@entry=1, args=args@entry=0x7fffffffca28) at eval.c:2869 >> #22 0x00000000005551e8 in call0 (fn=22958818) at eval.c:2592 >> #23 0x000000000046bda6 in run_funs (funs=17204162) at window.c:3315 >> #24 0x000000000047188d in run_window_configuration_change_hook (f=f@entry=0x120f6d0) at window.c:3369 >> #25 0x0000000000420db1 in adjust_frame_size (f=0x120f6d0, >> new_width=<optimized out>, new_height=<optimized out>, >> inhibit=<optimized out>, pretend=<optimized out>) at frame.c:582 >> #26 0x000000000041e4ce in change_frame_size (pixelwise=<optimized >> out>, safe=<optimized out>, delay=<optimized out>, >> pretend=<optimized out>, new_height=<optimized out>, >> new_width=<optimized out>, f=<optimized out>) at dispnew.c:5560 >> #27 do_pending_window_change (safe=false) at dispnew.c:5487 >> #28 0x0000000000420e27 in adjust_frame_size (f=0x120f6d0, >> new_width=<optimized out>, new_height=<optimized out>, inhibit=0, >> pretend=<optimized out>) at frame.c:484 >> #29 0x00000000004cfd62 in Fx_create_frame (parms=17204162) at xfns.c:3244 > > When I follow this recipe on my machine, I see no call to > run_window_configuration_change_hook, because adjust_frame_size > returns before that, having discovered (around line 500) that the new > and the old dimensions are identical, and therefore no resize is > needed. > > Can you see why this is not so in your case? Perhaps the calculations > of frame dimensions in the case of Lucid are to blame? > > Also, I think linum-update-window should do nothing if 'linum' is not > a valid face on the selected frame, because functions in > window-configuration-change-hook can be called in many situations on > which linum has no control. Here is an gdb session with more breakpoints. --8<---------------cut here---------------start------------->8--- (gdb) list 484 x_set_window_size (f, 0, new_text_width, new_text_height, 1); 485 f->resized_p = true; 486 487 return; 488 } 489 #endif 490 491 if (new_text_width == old_text_width 492 && new_text_height == old_text_height 493 && new_windows_width == old_windows_width (gdb) list 494 && new_windows_height == old_windows_height 495 && new_pixel_width == old_pixel_width 496 && new_pixel_height == old_pixel_height) 497 /* No change. Sanitize window sizes and return. */ 498 { 499 sanitize_window_sizes (frame, Qt); 500 sanitize_window_sizes (frame, Qnil); 501 502 return; 503 } (gdb) list 504 505 block_input (); 506 507 #ifdef MSDOS 508 /* We only can set screen dimensions to certain values supported 509 by our video hardware. Try to find the smallest size greater 510 or equal to the requested dimensions. */ 511 dos_set_window_size (&new_lines, &new_cols); 512 #endif 513 (gdb) list 514 if (new_windows_width != old_windows_width) 515 { 516 resize_frame_windows (f, new_windows_width, 1, 1); 517 518 /* MSDOS frames cannot PRETEND, as they change frame size by 519 manipulating video hardware. */ 520 if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f)) 521 FrameCols (FRAME_TTY (f)) = new_cols; 522 523 #if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) (gdb) list 524 if (WINDOWP (f->tool_bar_window)) 525 { 526 XWINDOW (f->tool_bar_window)->pixel_width = new_windows_width; 527 XWINDOW (f->tool_bar_window)->total_cols 528 = new_windows_width / unit_width; 529 } 530 #endif 531 } 532 --8<---------------cut here---------------end--------------->8--- For some reason, all the values for the old window are set to 10. Here is the session: --8<---------------cut here---------------start------------->8--- Breakpoint 4, adjust_frame_size (f=0x11db380, new_width=<optimized out>, new_height=<optimized out>, inhibit=5, pretend=<optimized out>) at frame.c:514 514 if (new_windows_width != old_windows_width) (gdb) list 509 by our video hardware. Try to find the smallest size greater 510 or equal to the requested dimensions. */ 511 dos_set_window_size (&new_lines, &new_cols); 512 #endif 513 514 if (new_windows_width != old_windows_width) 515 { 516 resize_frame_windows (f, new_windows_width, 1, 1); 517 518 /* MSDOS frames cannot PRETEND, as they change frame size by (gdb) print new_windows_width $1 = 106 (gdb) print old_windows_width $2 = 10 ... *(gdb) print new_text_width $4 = 90 *(gdb) print old_text_width $5 = 10 (gdb) print new_windows_width $6 = 106 *(gdb) print old_windows_width $7 = 10 (gdb) print new_windows_height $8 = 230 *(gdb) print old_windows_height $9 = 10 (gdb) print new_pixel_width $10 = 108 *(gdb) print old_pixel_width $11 = 10 --8<---------------cut here---------------end--------------->8--- Here are the inputs to the function adjust_frame_seze: --8<---------------cut here---------------start------------->8--- (gdb) print *f $12 = { header = { size = 4611686018477899797 }, name = 16103377, icon_name = 12672242, title = 12672242, focus_frame = 12672242, root_window = 19015685, selected_window = 19015685, minibuffer_window = 19019797, param_alist = 17180166, scroll_bars = 12672242, condemned_scroll_bars = 12672242, menu_bar_items = 12672242, face_alist = 17323366, menu_bar_vector = 12672242, buffer_predicate = 12672242, buffer_list = 17066726, buried_buffer_list = 12672242, tool_bar_window = 12672242, desired_tool_bar_string = 12672242, current_tool_bar_string = 12672242, tool_bar_items = 12672242, font_data = 12672242, face_cache = 0xc84ae0, last_tool_bar_item = -1, menu_bar_items_used = 0, namebuf = 0x0, shell_position = 0x0, current_pool = 0x0, desired_pool = 0x0, desired_matrix = 0x0, current_matrix = 0x0, glyphs_initialized_p = true, resized_p = false, default_face_done_p = true, already_hscrolled_p = false, updated_p = false, minimize_tool_bar_window_p = false, fonts_changed = false, cursor_type_changed = false, redisplay = true, external_menu_bar = false, visible = 0, iconified = false, garbaged = true, wants_modeline = true, auto_raise = false, auto_lower = false, no_split = false, explicit_name = false, window_sizes_changed = false, mouse_moved = false, pointer_invisible = false, frozen_window_starts = false, output_method = output_x_window, want_fullscreen = FULLSCREEN_NONE, vertical_scroll_bar_type = vertical_scroll_bar_left, horizontal_scroll_bars = false, new_pixelwise = false, official = false, tool_bar_lines = 0, tool_bar_height = 0, n_tool_bar_rows = 0, n_tool_bar_items = 0, decode_mode_spec_buffer = 0xd17040 "\220\263T\001", insert_line_cost = 0x0, delete_line_cost = 0x0, insert_n_lines_cost = 0x0, delete_n_lines_cost = 0x0, text_cols = 10, text_lines = 10, total_cols = 10, total_lines = 10, text_width = 10, text_height = 10, new_width = 0, new_height = 0, left_pos = 0, top_pos = 0, pixel_width = 10, pixel_height = 10, x_pixels_diff = 0, y_pixels_diff = 0, win_gravity = 0, size_hint_flags = 0, border_width = 0, internal_border_width = 1, right_divider_width = 0, bottom_divider_width = 0, left_fringe_width = 8, right_fringe_width = 8, fringe_cols = 2, menu_bar_lines = 0, menu_bar_height = 0, column_width = 9, line_height = 23, terminal = 0xfedbd8, output_data = { tty = 0xd0f750, x = 0xd0f750, w32 = 0xd0f750, ns = 0xd0f750, nothing = 13694800 }, font_driver_list = 0x13e4040, wait_event_type = 0, desired_cursor = FILLED_BOX_CURSOR, cursor_width = 0, blink_off_cursor = FILLED_BOX_CURSOR, blink_off_cursor_width = 0, config_scroll_bar_width = 0, config_scroll_bar_cols = 2, config_scroll_bar_height = 0, config_scroll_bar_lines = 0, cost_calculation_baud_rate = 0, alpha = {0, 0}, gamma = 0, extra_line_spacing = 0, background_pixel = 16777215, foreground_pixel = 0 } (gdb) print new_height $14 = <optimized out> (gdb) print new_width $15 = <optimized out> (gdb) print inhibit $16 = 5 *(gdb) print pretend $17 = <optimized out> --8<---------------cut here---------------end--------------->8--- manoj -- A pencil with no point needs no eraser. Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-05 18:48 ` Manoj Srivastava @ 2014-09-05 19:53 ` Eli Zaretskii 2014-09-06 8:52 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-05 19:53 UTC (permalink / raw) To: Manoj Srivastava, martin rudalics; +Cc: emacs-devel > From: Manoj Srivastava <srivasta@ieee.org> > Date: Fri, 05 Sep 2014 11:48:09 -0700 > > For some reason, all the values for the old window are set to > 10. Here is the session: > --8<---------------cut here---------------start------------->8--- > Breakpoint 4, adjust_frame_size (f=0x11db380, new_width=<optimized out>, new_height=<optimized out>, inhibit=5, > pretend=<optimized out>) at frame.c:514 > 514 if (new_windows_width != old_windows_width) > (gdb) list > 509 by our video hardware. Try to find the smallest size greater > 510 or equal to the requested dimensions. */ > 511 dos_set_window_size (&new_lines, &new_cols); > 512 #endif > 513 > 514 if (new_windows_width != old_windows_width) > 515 { > 516 resize_frame_windows (f, new_windows_width, 1, 1); > 517 > 518 /* MSDOS frames cannot PRETEND, as they change frame size by > (gdb) print new_windows_width > $1 = 106 > (gdb) print old_windows_width > $2 = 10 > ... > *(gdb) print new_text_width > $4 = 90 > *(gdb) print old_text_width > $5 = 10 > (gdb) print new_windows_width > $6 = 106 > *(gdb) print old_windows_width > $7 = 10 > (gdb) print new_windows_height > $8 = 230 > *(gdb) print old_windows_height > $9 = 10 > (gdb) print new_pixel_width > $10 = 108 > *(gdb) print old_pixel_width > $11 = 10 Thanks. Martin, could you take a look at this? The 10x10 are the dimensiuons used when there's nothing to use initially, AFAIR. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-05 19:53 ` Eli Zaretskii @ 2014-09-06 8:52 ` martin rudalics 2014-09-06 11:18 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-06 8:52 UTC (permalink / raw) To: Eli Zaretskii, Manoj Srivastava; +Cc: emacs-devel >> $1 = 106 >> (gdb) print old_windows_width >> $2 = 10 >> ... >> *(gdb) print new_text_width >> $4 = 90 >> *(gdb) print old_text_width >> $5 = 10 >> (gdb) print new_windows_width >> $6 = 106 >> *(gdb) print old_windows_width >> $7 = 10 >> (gdb) print new_windows_height >> $8 = 230 >> *(gdb) print old_windows_height >> $9 = 10 >> (gdb) print new_pixel_width >> $10 = 108 >> *(gdb) print old_pixel_width >> $11 = 10 > > Thanks. > > Martin, could you take a look at this? The 10x10 are the dimensiuons > used when there's nothing to use initially, AFAIR. These are the old dimensions that should be replaced with new dimensions here. There's nothing strange in this adjust_frame_size call if it happens on line 3163 of xfns.c. However, that call should neither provoke a subsequent x_set_window_size call nor should it run any `window-configuration-change-hook'. It would be strange if the values above were printed after the call on line 3238 of xfns.c, though. At that time the old dimensions should have been replaced already. I'll try to look into this. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-06 8:52 ` martin rudalics @ 2014-09-06 11:18 ` martin rudalics 2014-09-07 15:24 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-06 11:18 UTC (permalink / raw) To: Eli Zaretskii, Manoj Srivastava; +Cc: emacs-devel From the frame creation code everything is normal AFAICT. The problem is with `linum--face-height' added on 2014-07-08 to the linum.el code: (defun linum--face-height (face) (aref (font-info (face-font face)) 2)) ... (when (display-graphic-p) (setq width (ceiling ;; We'd really want to check the widths rather than the ;; heights, but it's a start. (/ (* width 1.0 (linum--face-height 'linum)) (frame-char-height))))) If you take these out, the frame is created as usual. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-06 11:18 ` martin rudalics @ 2014-09-07 15:24 ` Eli Zaretskii 2014-09-07 18:03 ` martin rudalics 2014-09-07 18:09 ` martin rudalics 0 siblings, 2 replies; 48+ messages in thread From: Eli Zaretskii @ 2014-09-07 15:24 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Sat, 06 Sep 2014 13:18:34 +0200 > From: martin rudalics <rudalics@gmx.at> > Cc: emacs-devel@gnu.org > > From the frame creation code everything is normal AFAICT. The problem > is with `linum--face-height' added on 2014-07-08 to the linum.el code: > > (defun linum--face-height (face) > (aref (font-info (face-font face)) 2)) > > ... > > (when (display-graphic-p) > (setq width (ceiling > ;; We'd really want to check the widths rather than the > ;; heights, but it's a start. > (/ (* width 1.0 (linum--face-height 'linum)) > (frame-char-height))))) > > If you take these out, the frame is created as usual. Yes, but how does that help us resolve this problem? There's nothing wrong in general with calling face-font, so linum-mode doesn't do anything blatantly incorrect here. It's just that this function is called "too early" in the frame creation process. How about adding some simple flag that would avoid calling window-configuration-change-hook when adjust_frame_size is called from x-create-frame? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-07 15:24 ` Eli Zaretskii @ 2014-09-07 18:03 ` martin rudalics 2014-09-07 19:28 ` Eli Zaretskii 2014-09-07 18:09 ` martin rudalics 1 sibling, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-07 18:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > Yes, but how does that help us resolve this problem? There's nothing > wrong in general with calling face-font, so linum-mode doesn't do > anything blatantly incorrect here. It's just that this function is > called "too early" in the frame creation process. At the time `window-configuration-change-hook' is called, the frame is considered "official" already. Do you really want to wait calling it until redisplay has passed over the frame at least once? > How about adding some simple flag that would avoid calling > window-configuration-change-hook when adjust_frame_size is called from > x-create-frame? There is such a flag: f->official. It does exactly that for all adjust_frame_size calls before the last one that causes trouble. But if we don't run `window-configuration-change-hook' here, we might not run it at all when creating a new frame. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-07 18:03 ` martin rudalics @ 2014-09-07 19:28 ` Eli Zaretskii 2014-09-08 9:31 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-07 19:28 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Sun, 07 Sep 2014 20:03:27 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: srivasta@ieee.org, emacs-devel@gnu.org > > > Yes, but how does that help us resolve this problem? There's nothing > > wrong in general with calling face-font, so linum-mode doesn't do > > anything blatantly incorrect here. It's just that this function is > > called "too early" in the frame creation process. > > At the time `window-configuration-change-hook' is called, the frame is > considered "official" already. Do you really want to wait calling it > until redisplay has passed over the frame at least once? Redisplay is not the issue here; non-basic faces are. See below. > > How about adding some simple flag that would avoid calling > > window-configuration-change-hook when adjust_frame_size is called from > > x-create-frame? > > There is such a flag: f->official. It does exactly that for all > adjust_frame_size calls before the last one that causes trouble. But if > we don't run `window-configuration-change-hook' here, we might not run > it at all when creating a new frame. f->official only means that the basic faces were realized; all the other faces are not realized yet. So if you want that flag to be it, we will have to make sure all the faces are realized before we set that flag. I believe the faces are realized in face-set-after-frame-default. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-07 19:28 ` Eli Zaretskii @ 2014-09-08 9:31 ` martin rudalics 0 siblings, 0 replies; 48+ messages in thread From: martin rudalics @ 2014-09-08 9:31 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > f->official only means that the basic faces were realized; all the > other faces are not realized yet. So if you want that flag to be it, > we will have to make sure all the faces are realized before we set > that flag. I believe the faces are realized in > face-set-after-frame-default. OK. I can offer a number of ways to approach this problem: (1) Do not run `window-configuration-change-hook' while creating a frame. (2) Run `window-configuration-change-hook' from `tty-create-frame-with-faces' and `x-create-frame-with-faces' if `success' is non-nil in the unwindform. (3) Like (2) but in addition set f->official t if `success' is non-nil in the unwindform. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-07 15:24 ` Eli Zaretskii 2014-09-07 18:03 ` martin rudalics @ 2014-09-07 18:09 ` martin rudalics 2014-09-07 19:34 ` Eli Zaretskii 1 sibling, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-07 18:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > Yes, but how does that help us resolve this problem? There's nothing > wrong in general with calling face-font, so linum-mode doesn't do > anything blatantly incorrect here. It's just that this function is > called "too early" in the frame creation process. Ahh, I forgot: Any clues why the bug doesn't trigger on Gtk and Windows builds? martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-07 18:09 ` martin rudalics @ 2014-09-07 19:34 ` Eli Zaretskii 2014-09-08 9:32 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-07 19:34 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Sun, 07 Sep 2014 20:09:58 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: srivasta@ieee.org, emacs-devel@gnu.org > > > Yes, but how does that help us resolve this problem? There's nothing > > wrong in general with calling face-font, so linum-mode doesn't do > > anything blatantly incorrect here. It's just that this function is > > called "too early" in the frame creation process. > > Ahh, I forgot: Any clues why the bug doesn't trigger on Gtk and Windows > builds? On Windows it's because the new frame's dimensions are already correct (not 10x10) when adjust_frame_size is called. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-07 19:34 ` Eli Zaretskii @ 2014-09-08 9:32 ` martin rudalics 2014-09-09 13:13 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-08 9:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > On Windows it's because the new frame's dimensions are already correct > (not 10x10) when adjust_frame_size is called. The only way to change the coordinates from 10x10 to something else is via adjust_frame_size. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-08 9:32 ` martin rudalics @ 2014-09-09 13:13 ` Eli Zaretskii 2014-09-10 8:03 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-09 13:13 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Mon, 08 Sep 2014 11:32:03 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: srivasta@ieee.org, emacs-devel@gnu.org > > > On Windows it's because the new frame's dimensions are already correct > > (not 10x10) when adjust_frame_size is called. > > The only way to change the coordinates from 10x10 to something else is > via adjust_frame_size. You are welcome to step through x_create_frame on Windows, after typing "C-x 5 2", and see how it avoids that. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-09 13:13 ` Eli Zaretskii @ 2014-09-10 8:03 ` martin rudalics 2014-09-10 17:39 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-10 8:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel >> The only way to change the coordinates from 10x10 to something else is >> via adjust_frame_size. > > You are welcome to step through x_create_frame on Windows, after > typing "C-x 5 2", and see how it avoids that. Here, I get (gdb) bt #0 adjust_frame_size (f=0x49b98a8, new_width=80, new_height=160, inhibit=5, pretend=true) at frame.c:390 #1 0x0120420c in Fx_create_frame (parameters=...) at w32fns.c:4609 [...] and (gdb) p FRAME_TEXT_HEIGHT (f) $1 = 10 (gdb) p FRAME_TEXT_WIDTH (f) $2 = 10 Stepping through adjust_frame_size now gets me on line 550 of frame.c (gdb) p FRAME_TEXT_WIDTH (f) $8 = 80 (gdb) p FRAME_TEXT_HEIGHT (f) $9 = 160 (gdb) Or what did you mean? martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-10 8:03 ` martin rudalics @ 2014-09-10 17:39 ` Eli Zaretskii 2014-09-10 19:02 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-10 17:39 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Wed, 10 Sep 2014 10:03:40 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: srivasta@ieee.org, emacs-devel@gnu.org > > >> The only way to change the coordinates from 10x10 to something else is > >> via adjust_frame_size. > > > > You are welcome to step through x_create_frame on Windows, after > > typing "C-x 5 2", and see how it avoids that. > > Here, I get > > (gdb) bt > #0 adjust_frame_size (f=0x49b98a8, new_width=80, new_height=160, inhibit=5, pretend=true) at frame.c:390 > #1 0x0120420c in Fx_create_frame (parameters=...) at w32fns.c:4609 Is that in Fx_create_frame called because of "C-x 5 2"? If so, it is very strange, because I see something very different with the trunk from a few days ago. Please find below a GDB session stepping through the code that should hopefully be self-explanatory. ====================================================================== (gdb) break Fx_create_frame Breakpoint 3 at 0x120132f: file w32fns.c, line 4414. (gdb) disable 3 (gdb) break Fredraw_display Breakpoint 4 at 0x100805d: file dispnew.c, line 3023. (gdb) r -Q Starting program: d:\usr\eli\emacs\emacs-trunk_2014-09-01\src\emacs.exe -Q Breakpoint 4, Fredraw_display () at dispnew.c:3023 3023 FOR_EACH_FRAME (tail, frame) (gdb) enable 3 (gdb) c Continuing. Breakpoint 3, Fx_create_frame (parameters=117344758) at w32fns.c:4414 4414 int minibuffer_only = 0; (gdb) until 4678 Fx_create_frame (parameters=117344750) at w32fns.c:4678 4678 adjust_frame_size (f, FRAME_TEXT_WIDTH (f), FRAME_TEXT_HEIGHT (f), 0, 1); (gdb) s adjust_frame_size (f=0x6feff78, new_width=640, new_height=560, inhibit=0, pretend=true) at frame.c:390 390 int unit_width = FRAME_COLUMN_WIDTH (f); (gdb) n 391 int unit_height = FRAME_LINE_HEIGHT (f); (gdb) 392 int old_pixel_width = FRAME_PIXEL_WIDTH (f); (gdb) n 393 int old_pixel_height = FRAME_PIXEL_HEIGHT (f); (gdb) 399 int windows_width = FRAME_WINDOWS_WIDTH (f); (gdb) 400 int windows_height = FRAME_WINDOWS_HEIGHT (f); (gdb) 403 struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f)); (gdb) 404 int old_windows_width = WINDOW_PIXEL_WIDTH (r); (gdb) 406 = (WINDOW_PIXEL_HEIGHT (r) (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) n 409 : 0)); (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) 408 ? WINDOW_PIXEL_HEIGHT (XWINDOW (FRAME_MINIBUF_WINDOW (f))) (gdb) 409 : 0)); (gdb) 405 int old_windows_height (gdb) 411 int old_text_width = FRAME_TEXT_WIDTH (f); (gdb) p old_windows_height $1 = 577 (gdb) n 412 int old_text_height = FRAME_TEXT_HEIGHT (f); (gdb) 414 int new_text_width = (new_width >= 0) ? new_width : old_text_width; (gdb) p old_windows_width $2 = 673 (gdb) n 415 int new_text_height = (new_height >= 0) ? new_height : old_text_height; (gdb) 420 XSETFRAME (frame, f); (gdb) p new_text_width $3 = 640 (gdb) p new_text_height $4 = 560 (gdb) p old_text_width $5 = 640 (gdb) p old_text_height $6 = 560 (gdb) n 424 min_windows_width = frame_windows_min_size (frame, Qt, Qt); (gdb) 425 min_windows_height = frame_windows_min_size (frame, Qnil, Qt); (gdb) 427 if (inhibit >= 2 && inhibit <= 4) (gdb) p min_windows_width $7 = 80 (gdb) p min_windows_height $8 = 80 (gdb) n 441 inhibit_horizontal = inhibit_vertical = inhibit == 5; (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) n 445 : max (FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width), (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 448 new_windows_width = new_pixel_width - 2 * FRAME_INTERNAL_BORDER_WIDTH (f); (gdb) p new_pixel_width $9 = 673 (gdb) n 449 new_text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, new_pixel_width); (gdb) 450 new_cols = new_text_width / unit_width; (gdb) p new_text_width $10 = 640 (gdb) n 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) p new_cols $11 = 80 (gdb) n 454 : max (FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_hei ght), (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 459 - FRAME_TOP_MARGIN_HEIGHT (f) (gdb) 460 - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)); (gdb) 458 new_windows_height = (new_pixel_height (gdb) 461 new_text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, new_pixel_height); (gdb) 462 new_lines = new_text_height / unit_height; (gdb) 465 if (FRAME_WINDOW_P (f) (gdb) p new_pixel_height $12 = 611 (gdb) p new_windows_height $13 = 577 (gdb) p new_text_height $14 = 560 (gdb) p new_lines $15 = 35 (gdb) p old_lines $16 = (struct row_entry **) 0x6f9b550 (gdb) n 466 && f->official (gdb) 467 && ((!inhibit_horizontal (gdb) 468 && (new_pixel_width != old_pixel_width (gdb) 469 || inhibit == 0 || inhibit == 2)) (gdb) n 479 if (inhibit_horizontal) (gdb) 481 else if (inhibit_vertical) (gdb) 484 x_set_window_size (f, 0, new_text_width, new_text_height, 1); (gdb) s x_set_window_size (f=0x6feff78, change_gravity=0, width=640, height=560, pixelwise=true) at w32term.c:6092 6092 block_input (); (gdb) n 6094 if (pixelwise) (gdb) 6096 pixelwidth = FRAME_TEXT_TO_PIXEL_WIDTH (f, width); (gdb) 6097 pixelheight = FRAME_TEXT_TO_PIXEL_HEIGHT (f, height); (gdb) 6105 f->win_gravity = NorthWestGravity; (gdb) p pixelwidth $17 = 673 (gdb) p pixelheight $18 = 611 (gdb) n 6106 x_wm_set_size_hint (f, (long) 0, 0); (gdb) n 6108 f->want_fullscreen = FULLSCREEN_NONE; (gdb) 6109 w32fullscreen_hook (f); (gdb) 6111 rect.left = rect.top = 0; (gdb) 6112 rect.right = pixelwidth; (gdb) 6113 rect.bottom = pixelheight; (gdb) 6116 FRAME_EXTERNAL_MENU_BAR (f)); (gdb) 6115 AdjustWindowRect (&rect, f->output_data.w32->dwStyle, (gdb) 6122 rect.bottom - rect.top, (gdb) 6121 rect.right - rect.left, (gdb) 6118 my_set_window_pos (FRAME_W32_WINDOW (f), (gdb) 6152 if (w32_enable_frame_resize_hack) (gdb) 6156 FRAME_PIXEL_TO_TEXT_HEIGHT (f, pixelheight), (gdb) 6155 change_frame_size (f, FRAME_PIXEL_TO_TEXT_WIDTH (f, pixelwidth), (gdb) s change_frame_size (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5559 5559 change_frame_size_1 (f, new_width, new_height, pretend, delay, safe, (gdb) s change_frame_size_1 (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5498 5498 if (delay || (redisplaying_p && !safe)) (gdb) n 5500 f->new_width = new_width; (gdb) 5501 f->new_height = new_height; (gdb) 5502 f->new_pixelwise = pixelwise; (gdb) 5503 delayed_size_change = 1; (gdb) 5530 } (gdb) n change_frame_size (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=true, safe=false, pixelwise=true) at dispnew.c:5561 5561 } (gdb) x_set_window_size (f=0x6feff78, change_gravity=0, width=640, height=560, pixelwise=true) at w32term.c:6158 6158 SET_FRAME_GARBAGED (f); (gdb) 6161 mark_window_cursors_off (XWINDOW (f->root_window)); (gdb) 6168 cancel_mouse_face (f); (gdb) 6171 unblock_input (); (gdb) 6173 do_pending_window_change (0); (gdb) s do_pending_window_change (safe=false) at dispnew.c:5472 5472 if (redisplaying_p && !safe) (gdb) p redisplaying_p $19 = false (gdb) n 5475 while (delayed_size_change) (gdb) p delayed_size_change $20 = true (gdb) n 5479 delayed_size_change = 0; (gdb) 5481 FOR_EACH_FRAME (tail, frame) (gdb) 5483 struct frame *f = XFRAME (frame); (gdb) 5485 if (f->new_height != 0 || f->new_width != 0) (gdb) p f->new_height $21 = 560 (gdb) p f->new_width $22 = 640 (gdb) n 5487 0, 0, safe, f->new_pixelwise); (gdb) s 5486 change_frame_size (f, f->new_width, f->new_height, (gdb) s change_frame_size (f=0x6feff78, new_width=640, new_height=560, pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5559 5559 change_frame_size_1 (f, new_width, new_height, pretend, delay, safe, (gdb) s change_frame_size_1 (f=0x5703b60, new_width=640, new_height=560, pretend=false, delay=false, safe=false, pixelwise=true) at dispnew.c:5498 5498 if (delay || (redisplaying_p && !safe)) (gdb) n 5508 f->new_height = 0; (gdb) 5509 f->new_width = 0; (gdb) 5510 f->new_pixelwise = 0; (gdb) 5513 if (pixelwise) (gdb) 5515 new_width = (new_width <= 0) ? FRAME_TEXT_WIDTH (f) : new_width; (gdb) 5516 new_height = (new_height <= 0) ? FRAME_TEXT_HEIGHT (f) : new_height; (gdb) 5528 adjust_frame_size (f, new_width, new_height, 5, pretend); (gdb) p new_width $1 = 640 (gdb) p new_height $2 = 560 (gdb) s adjust_frame_size (f=0x5703b60, new_width=640, new_height=560, inhibit=5, pretend=false) at frame.c:390 390 int unit_width = FRAME_COLUMN_WIDTH (f); (gdb) n 391 int unit_height = FRAME_LINE_HEIGHT (f); (gdb) 392 int old_pixel_width = FRAME_PIXEL_WIDTH (f); (gdb) 393 int old_pixel_height = FRAME_PIXEL_HEIGHT (f); (gdb) 399 int windows_width = FRAME_WINDOWS_WIDTH (f); (gdb) 400 int windows_height = FRAME_WINDOWS_HEIGHT (f); (gdb) 403 struct window *r = XWINDOW (FRAME_ROOT_WINDOW (f)); (gdb) 404 int old_windows_width = WINDOW_PIXEL_WIDTH (r); (gdb) 406 = (WINDOW_PIXEL_HEIGHT (r) (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) 409 : 0)); (gdb) 407 + (FRAME_HAS_MINIBUF_P (f) (gdb) 408 ? WINDOW_PIXEL_HEIGHT (XWINDOW (FRAME_MINIBUF_WINDOW (f))) (gdb) 409 : 0)); (gdb) 405 int old_windows_height (gdb) 411 int old_text_width = FRAME_TEXT_WIDTH (f); (gdb) 412 int old_text_height = FRAME_TEXT_HEIGHT (f); (gdb) 414 int new_text_width = (new_width >= 0) ? new_width : old_text_width; (gdb) 415 int new_text_height = (new_height >= 0) ? new_height : old_text_height; (gdb) 420 XSETFRAME (frame, f); (gdb) 424 min_windows_width = frame_windows_min_size (frame, Qt, Qt); (gdb) 425 min_windows_height = frame_windows_min_size (frame, Qnil, Qt); (gdb) 427 if (inhibit >= 2 && inhibit <= 4) (gdb) 441 inhibit_horizontal = inhibit_vertical = inhibit == 5; (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 445 : max (FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width), (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 445 : max (FRAME_TEXT_TO_PIXEL_WIDTH (f, new_text_width), (gdb) 443 new_pixel_width = ((inhibit_horizontal && (inhibit < 5)) (gdb) 448 new_windows_width = new_pixel_width - 2 * FRAME_INTERNAL_BORDER_WIDTH (f); (gdb) 449 new_text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, new_pixel_width); (gdb) 450 new_cols = new_text_width / unit_width; (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 454 : max (FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height), (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 454 : max (FRAME_TEXT_TO_PIXEL_HEIGHT (f, new_text_height), (gdb) 452 new_pixel_height = ((inhibit_vertical && (inhibit < 5)) (gdb) 459 - FRAME_TOP_MARGIN_HEIGHT (f) (gdb) 460 - 2 * FRAME_INTERNAL_BORDER_WIDTH (f)); (gdb) 458 new_windows_height = (new_pixel_height (gdb) 461 new_text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, new_pixel_height); (gdb) 462 new_lines = new_text_height / unit_height; (gdb) 465 if (FRAME_WINDOW_P (f) (gdb) 466 && f->official (gdb) 467 && ((!inhibit_horizontal (gdb) 470 || (!inhibit_vertical (gdb) 491 if (new_text_width == old_text_width (gdb) 492 && new_text_height == old_text_height (gdb) 493 && new_windows_width == old_windows_width (gdb) 494 && new_windows_height == old_windows_height (gdb) 495 && new_pixel_width == old_pixel_width (gdb) 496 && new_pixel_height == old_pixel_height) (gdb) 499 sanitize_window_sizes (frame, Qt); (gdb) p new_text_height $3 = 560 (gdb) p old_text_height $4 = 560 (gdb) p new_text_width $5 = 640 (gdb) p old_text_width $6 = 640 (gdb) n 500 sanitize_window_sizes (frame, Qnil); (gdb) 502 return; (gdb) do_pending_window_change (safe=false) at dispnew.c:5481 5481 FOR_EACH_FRAME (tail, frame) (gdb) 5483 struct frame *f = XFRAME (frame); (gdb) 5485 if (f->new_height != 0 || f->new_width != 0) (gdb) p f->new_height $23 = 0 (gdb) p f->new_width $24 = 0 (gdb) n 5481 FOR_EACH_FRAME (tail, frame) (gdb) 5475 while (delayed_size_change) (gdb) 5490 } (gdb) n x_set_window_size (f=0x6feff78, change_gravity=0, width=640, height=560, pixelwise=true) at w32term.c:6174 6174 } (gdb) adjust_frame_size (f=0x6feff78, new_width=640, new_height=560, inhibit=0, pretend=true) at frame.c:485 485 f->resized_p = true; (gdb) 487 return; (gdb) 583 } (gdb) Fx_create_frame (parameters=117344750) at w32fns.c:4683 4683 block_input (); (gdb) 4684 x_wm_set_size_hint (f, window_prompting, 0); (gdb) c Continuing. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-10 17:39 ` Eli Zaretskii @ 2014-09-10 19:02 ` martin rudalics 2014-09-10 19:15 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-10 19:02 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > (gdb) break Fx_create_frame > Breakpoint 3 at 0x120132f: file w32fns.c, line 4414. > (gdb) disable 3 > (gdb) break Fredraw_display > Breakpoint 4 at 0x100805d: file dispnew.c, line 3023. > (gdb) r -Q > Starting program: d:\usr\eli\emacs\emacs-trunk_2014-09-01\src\emacs.exe -Q > Breakpoint 4, Fredraw_display () at dispnew.c:3023 > 3023 FOR_EACH_FRAME (tail, frame) > (gdb) enable 3 > (gdb) c > Continuing. > Breakpoint 3, Fx_create_frame (parameters=117344758) at w32fns.c:4414 > 4414 int minibuffer_only = 0; > (gdb) until 4678 Why "until 4678"? The call where this happens is on line 4609 of w32fns.c adjust_frame_size (f, FRAME_COLS (f) * FRAME_COLUMN_WIDTH (f), FRAME_LINES (f) * FRAME_LINE_HEIGHT (f), 5, 1); > Fx_create_frame (parameters=117344750) at w32fns.c:4678 > 4678 adjust_frame_size (f, FRAME_TEXT_WIDTH (f), FRAME_TEXT_HEIGHT (f), 0, 1); > (gdb) s > adjust_frame_size (f=0x6feff78, new_width=640, new_height=560, inhibit=0, > pretend=true) at frame.c:390 martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-10 19:02 ` martin rudalics @ 2014-09-10 19:15 ` Eli Zaretskii 2014-09-10 19:25 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-10 19:15 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Wed, 10 Sep 2014 21:02:49 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: srivasta@ieee.org, emacs-devel@gnu.org > > > (gdb) break Fx_create_frame > > Breakpoint 3 at 0x120132f: file w32fns.c, line 4414. > > (gdb) disable 3 > > (gdb) break Fredraw_display > > Breakpoint 4 at 0x100805d: file dispnew.c, line 3023. > > (gdb) r -Q > > Starting program: d:\usr\eli\emacs\emacs-trunk_2014-09-01\src\emacs.exe -Q > > Breakpoint 4, Fredraw_display () at dispnew.c:3023 > > 3023 FOR_EACH_FRAME (tail, frame) > > (gdb) enable 3 > > (gdb) c > > Continuing. > > Breakpoint 3, Fx_create_frame (parameters=117344758) at w32fns.c:4414 > > 4414 int minibuffer_only = 0; > > (gdb) until 4678 > > Why "until 4678"? That's where the call to adjust_frame_size was on Sep 1, which was the date I took the trunk snapshot where I investigated this. When I do the same with today's trunk, I indeed see that adjust_frame_size is called with the 10x10 frame size. So something has changed during the last 10 days that caused this difference in behavior. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-10 19:15 ` Eli Zaretskii @ 2014-09-10 19:25 ` Eli Zaretskii 2014-09-11 9:26 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-10 19:25 UTC (permalink / raw) To: rudalics; +Cc: srivasta, emacs-devel > Date: Wed, 10 Sep 2014 22:15:26 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: srivasta@ieee.org, emacs-devel@gnu.org > > > Why "until 4678"? > > That's where the call to adjust_frame_size was on Sep 1, which was the > date I took the trunk snapshot where I investigated this. Err... scratch that. I entered the wrong call to adjust_frame_size. Inside the first call to adjust_frame_size, the one from line 4609, we do call run_window_configuration_change_hook. But it doesn't abort here. If I set a breakpoint in Fface_font, which is what barfed in the OP's case, the breakpoint doesn't break inside the call to adjust_frame_size or Fx_create_frame, it breaks after Fx_create_frame already returned. I don't know why the difference. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-10 19:25 ` Eli Zaretskii @ 2014-09-11 9:26 ` martin rudalics 2014-09-11 15:14 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-11 9:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > Inside the first call to adjust_frame_size, the one from line 4609, we > do call run_window_configuration_change_hook. But it doesn't abort > here. Because the frame is not official yet so if (NILP (Vrun_hooks) || !(f->official)) return; will return immediately. > If I set a breakpoint in Fface_font, which is what barfed in the OP's > case, the breakpoint doesn't break inside the call to > adjust_frame_size or Fx_create_frame, it breaks after Fx_create_frame > already returned. I don't know why the difference. I suppose the OP confused two calls of adjust_frame_size - the one at line 4609 and the one at line 4678. The latter indeed does run the functions on `window-configuration-change-hook' and breaks in Fface_font. It doesn't break on Windows or Gtk because there apparently the sizes do not change any more. I still don't know why the sizes change on Motif/Lucid. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-11 9:26 ` martin rudalics @ 2014-09-11 15:14 ` Eli Zaretskii 2014-09-11 16:40 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-11 15:14 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Thu, 11 Sep 2014 11:26:00 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: srivasta@ieee.org, emacs-devel@gnu.org > > > Inside the first call to adjust_frame_size, the one from line 4609, we > > do call run_window_configuration_change_hook. But it doesn't abort > > here. > > Because the frame is not official yet so > > if (NILP (Vrun_hooks) || !(f->official)) > return; > > will return immediately. Right. Which in retrospect is the _real_ answer to your 'Why "until 4678"?' question: I was trying to reproduce what happened on Manoj's machine, guided by the backtrace he posted. > > If I set a breakpoint in Fface_font, which is what barfed in the OP's > > case, the breakpoint doesn't break inside the call to > > adjust_frame_size or Fx_create_frame, it breaks after Fx_create_frame > > already returned. I don't know why the difference. > > I suppose the OP confused two calls of adjust_frame_size - the one at > line 4609 and the one at line 4678. Or maybe we confused that. > The latter indeed does run the functions on > `window-configuration-change-hook' and breaks in Fface_font. It > doesn't break on Windows or Gtk because there apparently the sizes > do not change any more. I still don't know why the sizes change on > Motif/Lucid. Probably because of the tool bar or the scroll bars -- these are the only differences between the builds, AFAIR. What will break if we set f->official true only _after_ the second adjust_frame_size returns? ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-11 15:14 ` Eli Zaretskii @ 2014-09-11 16:40 ` martin rudalics 2014-09-11 16:53 ` Eli Zaretskii 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-11 16:40 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel >> > If I set a breakpoint in Fface_font, which is what barfed in the OP's >> > case, the breakpoint doesn't break inside the call to >> > adjust_frame_size or Fx_create_frame, it breaks after Fx_create_frame >> > already returned. I don't know why the difference. >> >> I suppose the OP confused two calls of adjust_frame_size - the one at >> line 4609 and the one at line 4678. > > Or maybe we confused that. We won't be able to tell but among the values he posted we have an old_text_width of 10 which is inherently incompatible with a call from line 4678 and a frame column width of 9. > Probably because of the tool bar or the scroll bars -- these are the > only differences between the builds, AFAIR. The tool bar is set before calling x_figure_window_size so I suspect it's the scroll bar height call which in adjust_frame_size already sets all values just as the change_frame_size callback triggered by the call on line 4678 wants them. This would explain that the hook is _not_ triggered by the call on line 4678. It doesn't explain why it's triggered on Motif/Lucid where I basically "do the same thing" (though apparently I don't). > What will break if we set f->official true only _after_ the second > adjust_frame_size returns? Nothing, I presume. More so, because the fact that the hook is not triggered on Windows and Gtk, already constitutes a bug which makes the use of the hook during frame setup impractical on these systems. Note, however, that the hook might still trigger any time in between setting f->official and executing (face-set-after-frame-default frame parameters) though currently I can't see how that could happen. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-11 16:40 ` martin rudalics @ 2014-09-11 16:53 ` Eli Zaretskii 2014-09-11 17:59 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: Eli Zaretskii @ 2014-09-11 16:53 UTC (permalink / raw) To: martin rudalics; +Cc: srivasta, emacs-devel > Date: Thu, 11 Sep 2014 18:40:09 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: srivasta@ieee.org, emacs-devel@gnu.org > > > What will break if we set f->official true only _after_ the second > > adjust_frame_size returns? > > Nothing, I presume. More so, because the fact that the hook is not > triggered on Windows and Gtk, already constitutes a bug which makes the > use of the hook during frame setup impractical on these systems. Note, > however, that the hook might still trigger any time in between setting > f->official and executing > > (face-set-after-frame-default frame parameters) > > though currently I can't see how that could happen. So I suggest that Manoj tries that, and if that solves that problem, let's install this change on the trunk. ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-11 16:53 ` Eli Zaretskii @ 2014-09-11 17:59 ` martin rudalics 2014-09-11 18:09 ` martin rudalics 0 siblings, 1 reply; 48+ messages in thread From: martin rudalics @ 2014-09-11 17:59 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel >> > What will break if we set f->official true only _after_ the second >> > adjust_frame_size returns? >> >> Nothing, I presume. More so, because the fact that the hook is not >> triggered on Windows and Gtk, already constitutes a bug which makes the >> use of the hook during frame setup impractical on these systems. Note, >> however, that the hook might still trigger any time in between setting >> f->official and executing >> >> (face-set-after-frame-default frame parameters) >> >> though currently I can't see how that could happen. > > So I suggest that Manoj tries that, and if that solves that problem, > let's install this change on the trunk. I just tried and it neither works on Lucid nor on Motif. Apparently, the change_frame_size call arrives after exiting Fx_create_frame but before `face-set-after-frame-default' gets executed. When I make the frame official at the end of `x-create-frame-with-faces' it works. Now the problem is that making the frame official in `x-create-frame-with-faces' means that if someone calls Fx_create_frame from somewhere else, the frame never gets official. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-11 17:59 ` martin rudalics @ 2014-09-11 18:09 ` martin rudalics 0 siblings, 0 replies; 48+ messages in thread From: martin rudalics @ 2014-09-11 18:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: srivasta, emacs-devel > Now > the problem is that making the frame official in > `x-create-frame-with-faces' means that if someone calls Fx_create_frame > from somewhere else, the frame never gets official. ... so I probably have to make the frame official in `make-frame' around the time we run `after-make-frame-functions'. martin ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-02 17:22 Trunk emacs infelicity with linum mode Manoj Srivastava 2014-09-02 18:03 ` Eli Zaretskii @ 2014-09-03 12:37 ` Herbert J. Skuhra 2014-09-03 15:31 ` Manoj Srivastava 2015-01-04 18:09 ` martin rudalics 1 sibling, 2 replies; 48+ messages in thread From: Herbert J. Skuhra @ 2014-09-03 12:37 UTC (permalink / raw) To: emacs-devel On Tue, 02 Sep 2014 10:22:35 -0700 Manoj Srivastava wrote: > Hi, > > To reproduce, on a graphical display: > emacs -Q > M-x load-library<RET> > linum<RET> > M-x linum-mode > C-x 5 2 > > This results in an error, the contents of the *Messages* buffer > is: > --8<---------------cut here---------------start------------->8--- > Loading linum...done > Global-Linum mode enabled > linum--face-height: Invalid face: linum [3 times] > Mark set > --8<---------------cut here---------------end--------------->8--- > > Is anyone else seeing this? Yes, I do. Obviously, this error only occurs if Emacs is built with '--with-x-toolkit=lucid'. I don't get this error with GTK2/GTK3. No backtrace. -- Herbert ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-03 12:37 ` Herbert J. Skuhra @ 2014-09-03 15:31 ` Manoj Srivastava 2015-01-04 18:09 ` martin rudalics 1 sibling, 0 replies; 48+ messages in thread From: Manoj Srivastava @ 2014-09-03 15:31 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1410 bytes --] On Wed, Sep 03 2014, Herbert J. Skuhra wrote: > On Tue, 02 Sep 2014 10:22:35 -0700 > Manoj Srivastava wrote: >> To reproduce, on a graphical display: >> emacs -Q >> M-x load-library<RET> >> linum<RET> >> M-x linum-mode >> C-x 5 2 >> This results in an error, the contents of the *Messages* buffer >> is: >> --8<---------------cut here---------------start------------->8--- >> Loading linum...done >> Global-Linum mode enabled >> linum--face-height: Invalid face: linum [3 times] >> Mark set >> --8<---------------cut here---------------end--------------->8--- >> Is anyone else seeing this? > Yes, I do. > Obviously, this error only occurs if Emacs is built with > '--with-x-toolkit=lucid'. I don't get this error with GTK2/GTK3. > No backtrace. An additional data point: Merely loading linum,el(c) does tno trigger this. You need to have linum mode active in at least one buffer, Turning linum mode off make everything work again. The reason I am using lucid mode is that a long time ago I read that it worked better when emacs starts as a daemon. If that is not the case any more, I will happily stop using that option manoj -- Look ere ye leap. John Heywood Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/> 4096R/C5779A1C E37E 5EC5 2A01 DA25 AD20 05B6 CF48 9438 C577 9A1C [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 582 bytes --] ^ permalink raw reply [flat|nested] 48+ messages in thread
* Re: Trunk emacs infelicity with linum mode 2014-09-03 12:37 ` Herbert J. Skuhra 2014-09-03 15:31 ` Manoj Srivastava @ 2015-01-04 18:09 ` martin rudalics 1 sibling, 0 replies; 48+ messages in thread From: martin rudalics @ 2015-01-04 18:09 UTC (permalink / raw) To: Herbert J. Skuhra, emacs-devel > Manoj Srivastava wrote: > >> Hi, >> >> To reproduce, on a graphical display: >> emacs -Q >> M-x load-library<RET> >> linum<RET> >> M-x linum-mode >> C-x 5 2 >> >> This results in an error, the contents of the *Messages* buffer >> is: >> --8<---------------cut here---------------start------------->8--- >> Loading linum...done >> Global-Linum mode enabled >> linum--face-height: Invalid face: linum [3 times] >> Mark set >> --8<---------------cut here---------------end--------------->8--- >> >> Is anyone else seeing this? > > Yes, I do. > > Obviously, this error only occurs if Emacs is built with > '--with-x-toolkit=lucid'. I don't get this error with GTK2/GTK3. Please try again with latest trunk/master. This should have been fixed now. Thanks, martin ^ permalink raw reply [flat|nested] 48+ messages in thread
end of thread, other threads:[~2015-01-04 18:09 UTC | newest] Thread overview: 48+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-09-02 17:22 Trunk emacs infelicity with linum mode Manoj Srivastava 2014-09-02 18:03 ` Eli Zaretskii 2014-09-02 18:56 ` Manoj Srivastava 2014-09-02 19:11 ` Eli Zaretskii 2014-09-03 7:06 ` Manoj Srivastava 2014-09-03 15:50 ` Eli Zaretskii 2014-09-03 16:28 ` Manoj Srivastava 2014-09-04 15:29 ` Eli Zaretskii 2014-09-04 15:56 ` Stefan Monnier 2014-09-04 18:37 ` Eli Zaretskii 2014-09-04 20:25 ` Stefan Monnier 2014-09-05 6:58 ` Eli Zaretskii 2014-09-05 15:23 ` Stefan Monnier 2014-09-05 15:32 ` Eli Zaretskii 2014-09-05 16:23 ` Stefan Monnier 2014-09-05 17:49 ` Eli Zaretskii 2014-09-06 1:19 ` Manoj Srivastava 2014-09-06 7:43 ` Eli Zaretskii 2014-09-06 15:23 ` Manoj Srivastava 2014-09-06 20:27 ` Stefan Monnier 2014-09-07 5:07 ` Manoj Srivastava 2014-09-08 0:28 ` Stefan Monnier 2014-09-05 18:48 ` Manoj Srivastava 2014-09-05 19:53 ` Eli Zaretskii 2014-09-06 8:52 ` martin rudalics 2014-09-06 11:18 ` martin rudalics 2014-09-07 15:24 ` Eli Zaretskii 2014-09-07 18:03 ` martin rudalics 2014-09-07 19:28 ` Eli Zaretskii 2014-09-08 9:31 ` martin rudalics 2014-09-07 18:09 ` martin rudalics 2014-09-07 19:34 ` Eli Zaretskii 2014-09-08 9:32 ` martin rudalics 2014-09-09 13:13 ` Eli Zaretskii 2014-09-10 8:03 ` martin rudalics 2014-09-10 17:39 ` Eli Zaretskii 2014-09-10 19:02 ` martin rudalics 2014-09-10 19:15 ` Eli Zaretskii 2014-09-10 19:25 ` Eli Zaretskii 2014-09-11 9:26 ` martin rudalics 2014-09-11 15:14 ` Eli Zaretskii 2014-09-11 16:40 ` martin rudalics 2014-09-11 16:53 ` Eli Zaretskii 2014-09-11 17:59 ` martin rudalics 2014-09-11 18:09 ` martin rudalics 2014-09-03 12:37 ` Herbert J. Skuhra 2014-09-03 15:31 ` Manoj Srivastava 2015-01-04 18:09 ` martin rudalics
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).