On 2016-07-03 03:45, Eli Zaretskii wrote: > As a temporary measure, try calling your code from the function > update_end (you will have to modify the C sources for that). Thanks! Is there a trick to prevent code running in that section to cause a new redisplay cycle? Calling #'format from there causes a segfault: Program received signal SIGSEGV, Segmentation fault. 0x0000000000577874 in print_object (obj=, printcharfun=printcharfun@entry=0, escapeflag=escapeflag@entry=true) at print.c:1519 1519 if (p != end && (*p == '-' || *p == '+')) p++; (gdb) bt #0 0x0000000000577874 in print_object (obj=, printcharfun=printcharfun@entry=0, escapeflag=escapeflag@entry=true) at print.c:1519 #1 0x0000000000577a82 in print_object (obj=, obj@entry=60247395, printcharfun=printcharfun@entry=0, escapeflag=) at print.c:1662 #2 0x0000000000578e06 in print (obj=obj@entry=60247395, printcharfun=printcharfun@entry=0, escapeflag=) at print.c:1143 #3 0x0000000000579749 in Fprin1_to_string (object=60247395, noescape=0) at print.c:672 #4 0x0000000000555725 in styled_format (nargs=2, args=0x7fffffffc0c0, message=) at editfns.c:4088 #5 0x000000000055d1a5 in eval_sub (form=) at eval.c:2145 #6 0x000000000055d33d in Fprogn (body=44976) at eval.c:427 #7 0x000000000055d6b5 in funcall_lambda (fun=53999395, nargs=nargs@entry=1, arg_vector=arg_vector@entry=0x7fffffffc318) at eval.c:2922 #8 0x000000000055d8e3 in Ffuncall (nargs=2, args=0x7fffffffc310) at eval.c:2762 #9 0x000000000055db39 in funcall_nil (nargs=, args=) at eval.c:2340 #10 0x000000000055bd6c in run_hook_with_args (nargs=2, args=0x7fffffffc310, funcall=0x55db30 ) at eval.c:2517 #11 0x000000000055bf6a in run_hook_with_args (funcall=, args=, nargs=) at eval.c:2383 #12 Frun_hook_with_args (nargs=, args=) at eval.c:2382 #13 0x00000000004bd421 in x_update_end (f=) at xterm.c:1234 #14 0x0000000000421c9a in update_frame (f=f@entry=0x12bed60, force_p=, force_p@entry=false, inhibit_hairy_id_p=inhibit_hairy_id_p@entry=false) at dispnew.c:3109 #15 0x0000000000453b64 in redisplay_internal () at xdisp.c:14058 #16 0x00000000004557e5 in redisplay () at xdisp.c:13252 #17 0x00000000004f5e3b in read_char (commandflag=commandflag@entry=1, map=map@entry=60215251, prev_event=0, used_mouse_menu=used_mouse_menu@entry=0x7fffffffdc9b, end_time=end_time@entry=0x0) at keyboard.c:2477 #18 0x00000000004f86d3 in read_key_sequence (keybuf=keybuf@entry=0x7fffffffdd70, prompt=prompt@entry=0, dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, bufsize=30) at keyboard.c:9084 #19 0x00000000004fa1d6 in command_loop_1 () at keyboard.c:1365 #20 0x000000000055c2dd in internal_condition_case (bfun=bfun@entry=0x4f9fe0 , handlers=handlers@entry=19488, hfun=hfun@entry=0x4f0f90 ) at eval.c:1310 #21 0x00000000004ec6ac in command_loop_2 (ignore=ignore@entry=0) at keyboard.c:1107 #22 0x000000000055c28b in internal_catch (tag=tag@entry=46368, func=func@entry=0x4ec690 , arg=arg@entry=0) at eval.c:1075 #23 0x00000000004ec667 in command_loop () at keyboard.c:1086 #24 0x00000000004f0bc4 in recursive_edit_1 () at keyboard.c:692 #25 0x00000000004f0ee5 in Frecursive_edit () at keyboard.c:763 #26 0x00000000004198c8 in main (argc=1, argv=0x7fffffffe0e8) at emacs.c:1656 Lisp Backtrace: "format" (0xffffc0c0) "~/redisplay" (0xffffc318) "redisplay_internal (C function)" (0x0)