[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 23.0.60; Crash on w32 related to invisible text
From: |
Lennart Borgman (gmail) |
Subject: |
Re: 23.0.60; Crash on w32 related to invisible text |
Date: |
Mon, 24 Mar 2008 02:29:33 +0100 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666 |
Stefan Monnier wrote:
I get crashes in org-mode when I do things in a region with invisible
text. I have not made any simple test case, but from my testing I can see
this:
- There is something strange with the display in org-mode an items content
is hidden. You can position point after the three dots ... If you do that
and check (current-column) you get 0.
- In code if you in org-mode do
(while (my-invisible-p (point))
(forward-line 1))
until point is on a visible char and there insert an overlay with an
after-string it crashes.
Please make the "insert an overlay with an
after-string" more precise, e.g. actual Elisp code.
It looks similar to this, I have not tested if propertize is involved:
(setq ovl-str (concat "before"
(propertize "txt" 'face 'highlight-popup)
"after"))
(overlay-put ovl 'after-string ovl-str)
(overlay-put ovl 'display "")
See also the attached file. The crash happens in tabkey2-overlay-message if
you let it take the path avoided right under the comment:
;; Fix-me: Emacs bug workaround
(if nil ;;(tabkey2-invisible-p (1- (point)))
Also, does it happen with any Org-mode buffer, or is the
contents/setup important?
It does not seem to be dependent on the buffers content.
Finally, please provide a backtrace.
Sorry, it is compiled with debug info, but there is no backtrace.
You need to run it under a debugger, of course, in order to get
a backtrace. Please read etc/DEBUG for more info about it.
My memory is short. Jason and Eli told me this a while ago. Here is the
traceback:
(gdb) bt
#0 0x0103ab55 in next_element_from_display_vector (it=0x82e600)
at xdisp.c:6210
#1 0x01039b3b in get_next_display_element (it=0x82e600) at xdisp.c:5734
#2 0x0104ff1b in display_line (it=0x82e600) at xdisp.c:16252
#3 0x0104d64e in try_window_id (w=0x25b7a00) at xdisp.c:14984
#4 0x01048e25 in redisplay_window (window=39549444, just_this_one_p=1)
at xdisp.c:13389
#5 0x01045435 in redisplay_window_1 (window=39549444) at xdisp.c:12051
#6 0x01020ad5 in internal_condition_case_1 (
bfun=0x1045403 <redisplay_window_1>, arg=39549444, handlers=24208661,
hfun=0x10453a9 <redisplay_window_error>) at eval.c:1542
#7 0x010447ab in redisplay_internal (preserve_echo_area=0) at xdisp.c:11664
#8 0x01042d2d in redisplay () at xdisp.c:10809
#9 0x01008d00 in read_char (commandflag=1, nmaps=16, maps=0x82f9c0,
prev_event=24225793, used_mouse_menu=0x82fb1c, end_time=0x0)
at keyboard.c:2722
#10 0x0101269d in read_key_sequence (keybuf=0x82fc60, bufsize=30,
prompt=24225793, dont_downcase_last=0, can_return_switch_frame=1,
fix_current_buffer=1) at keyboard.c:9458
#11 0x01006351 in command_loop_1 () at keyboard.c:1653
#12 0x010209c5 in internal_condition_case (bfun=0x1006032 <command_loop_1>,
handlers=24292473, hfun=0x1005a32 <cmd_error>) at eval.c:1494
#13 0x01005d9b in command_loop_2 () at keyboard.c:1370
---Type <return> to continue, or q <return> to quit---
#14 0x010204b6 in internal_catch (tag=24285497,
func=0x1005d78 <command_loop_2>, arg=24225793) at eval.c:1230
#15 0x01005d51 in command_loop () at keyboard.c:1349
#16 0x0100564e in recursive_edit_1 () at keyboard.c:958
#17 0x010057b2 in Frecursive_edit () at keyboard.c:1020
#18 0x0100279f in main (argc=1, argv=0xa82720) at emacs.c:1784
#19 0x0100124b in __mingw_CRTStartup ()
#20 0x01001298 in mainCRTStartup ()
(gdb)
I'm sorry, but you presume I'm much more intelligent than I am.
I do not understand what tabkey2.el has to do with it all and how to
create an Org-mode buffer that will trigger the crash.
Forgive my stupidness. With tabkey2.el there is a convenient way to get
the crash, but I forgot to add it:
- Change the line I pointed to above ("Emacs bug workaround")
- Bring up any org-mode file.
- Make sure you are on a line with its contents hidden. This is what I
use when I got it to crash right now (the traceback above is from when I
used a bigger file containing this, but I think the crash is similar):
>>>>>>>> test.org >>>>>>>>>>>>>
** Fri Nov 02 23:45:07 2007 (Why does not cua--ena-cua-keys-keymap
override viper's defin)
Why does not cua--ena-cua-keys-keymap override Viper's definition
of BS, DEL etc? This keymap is in cua--keymap-alist. This alist is
before viper in emulation-mode-map-alists. So what happens?
** Sun Nov 04 01:59:17 2007 (Kim's key-sequence widget)
Kim's key-sequence widget
- Add ks-to-vec. => store vec format
- Some cleanup.
- History keys?
- Different input formats? Use space at the beginning to force desc
style. Or C-t to toggle, put ^V first?
** Sun Nov 04 12:58:01 2007 (New versions from GnuWin32 to EmacsW32)
New versions from GnuWin32 to EmacsW32
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Only the "**" rows should be visible. (You can toggle that by pressing
TAB.) Place point on after at k in "Kim's key-sequence". Turn on
tabkey2-mode:
eval tabkey2.el <-- forgot to add (eval-when-compile (require 'cl))
M-x tabkey2-mode
F8
Now it should crash. Eh, perhaps rather "it crashes". On my pc, w32.
So, please give us a recipe starting from `emacs -Q' with *every single
step* necessary to trigger the crash. Including a small sample
Org-mode file. It's always safer to assume we're complete idiots.
Stefan