* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
@ 2011-09-28 7:02 Alex Ott
2011-09-28 7:39 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Alex Ott @ 2011-09-28 7:02 UTC (permalink / raw)
To: 9624
Emacs crashes when I trying to open any "complex" .muse file with some
markup inside -- I tried to open files in English & Russian and in both
cases Emacs crashes in BIDI code. I can provide example files if needed.
I send backtrace for Linux version of Emacs, but I saw similar problem
on Mac OS X 10.6 (with all latest updates installed) with freebidi from
macports & Emacs compiled myself.
(gdb) bt full
#0 0x00007f90c75586e7 in kill () at ../sysdeps/unix/syscall-template.S:82
No locals.
#1 0x000000000050580c in fatal_error_signal (sig=<optimized out>) at
emacs.c:358
No locals.
#2 fatal_error_signal (sig=<optimized out>) at emacs.c:328
No locals.
#3 <signal handler called>
No symbol table info available.
#4 0x00007f90c75586e7 in kill () at ../sysdeps/unix/syscall-template.S:82
No locals.
#5 0x0000000000504e65 in abort () at emacs.c:386
No locals.
#6 0x000000000043b4d5 in compute_display_string_end
(charpos=<optimized out>, string=<optimized out>) at xdisp.c:3406
object = 11975170
pos = 4540
eob = <optimized out>
#7 0x00000000004a4b94 in bidi_fetch_char (bytepos=<optimized out>,
charpos=1135, disp_pos=0x7fff6a817598,
disp_prop=0x7fff6a8175a0, string=<optimized out>,
frame_window_p=<optimized out>, ch_len=0x7fff6a8174b8,
nchars=0x7fff6a8174b0) at bidi.c:976
disp_end_pos = <optimized out>
ch = 65532
endpos = 18097
pos = {charpos = 140734980243824, bytepos = 72467280}
#8 0x00000000004a52a2 in bidi_resolve_explicit_1
(bidi_it=0x7fff6a817498) at bidi.c:1376
curchar = <optimized out>
type = <optimized out>
current_level = 0
new_level = 0
override = <optimized out>
string_p = <optimized out>
#9 0x00000000004a579c in bidi_resolve_explicit
(bidi_it=0x7fff6a817498) at bidi.c:1513
prev_level = 0
new_level = <optimized out>
eob = <optimized out>
s = <optimized out>
#10 0x00000000004a5f08 in bidi_resolve_weak (bidi_it=0x7fff6a817498)
at bidi.c:1598
type = <optimized out>
override = <optimized out>
prev_level = 0
new_level = <optimized out>
next_char = <optimized out>
type_of_next = <optimized out>
saved_it = {bytepos = 0, charpos = 3, ch = 1786, nchars =
1046, ch_len = 0, type = UNKNOWN_BT,
type_after_w1 = UNKNOWN_BT, orig_type = STRONG_L,
resolved_level = 0, invalid_levels = 1135,
invalid_rl_levels = 0, prev_was_pdf = 1, prev = {bytepos =
6081824048, charpos = 140734980244792,
type = 1786868888, type_after_w1 = 32767, orig_type =
UNKNOWN_BT}, last_strong = {
bytepos = 140734980244752, charpos = 0, type = STRONG_L,
type_after_w1 = UNKNOWN_BT,
orig_type = UNKNOWN_BT}, next_for_neutral = {bytepos =
4890328, charpos = 1786, type = 1046,
type_after_w1 = UNKNOWN_BT, orig_type = RLE},
prev_for_neutral = {bytepos = 1, charpos = 1,
type = NEUTRAL_B, type_after_w1 = NEUTRAL_B, orig_type =
NEUTRAL_B}, next_for_ws = {bytepos = -4294967296,
charpos = 0, type = 1785, type_after_w1 = UNKNOWN_BT,
orig_type = 1045}, next_en_pos = 81604378624,
ignore_bn_limit = 19, sor = 1783, scan_dir = 0, disp_pos =
1044, disp_prop = 0, stack_idx = 0,
level_stack = {{level = 0, override = NEUTRAL_DIR}, {level =
1786, override = NEUTRAL_DIR}, {level = 1046,
override = NEUTRAL_DIR}, {level = 0, override =
NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {
level = 1786, override = NEUTRAL_DIR}, {level = 1046,
override = NEUTRAL_DIR}, {level = 1,
override = L2R}, {level = 1, override = NEUTRAL_DIR},
{level = 0, override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 0, override =
NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {
level = -1, override = 4294967295}, {level = -1,
override = 4294967295}, {level = 1, override = L2R}, {
level = 1135, override = NEUTRAL_DIR}, {level = 1,
override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 18, override =
NEUTRAL_DIR}, {level = 1048576, override = 1073741824},
{level = 0, override = NEUTRAL_DIR}, {level = 1786857200,
override = 32767}, {level = 5983606,
override = NEUTRAL_DIR}, {level = 11975170, override =
NEUTRAL_DIR}, {level = 11975170,
override = NEUTRAL_DIR}, {level = 1786857920, override =
32767}, {level = 1786857104, override = 32767},
{level = 1786856992, override = 32767}, {level = 3,
override = NEUTRAL_DIR}, {level = 11975218,
override = NEUTRAL_DIR}, {level = 0, override =
NEUTRAL_DIR}, {level = 11013440,
override = NEUTRAL_DIR}, {level = 9951209, override =
NEUTRAL_DIR}, {level = 11013430,
override = NEUTRAL_DIR}, {level = 9985117, override =
NEUTRAL_DIR}, {level = 1786857664,
override = 32767}, {level = 10, override = NEUTRAL_DIR},
{level = 1048576, override = 1073741824}, {
level = 11420064, override = NEUTRAL_DIR}, {level =
11975170, override = NEUTRAL_DIR}, {level = 3,
override = NEUTRAL_DIR}, {level = 1786857288, override =
32767}, {level = 1786857288, override = 32767},
{level = 1786857440, override = 32767}, {level = 5750635,
override = NEUTRAL_DIR}, {level = 188214853,
override = NEUTRAL_DIR}, {level = 1021, override =
NEUTRAL_DIR}, {level = 11975170,
override = NEUTRAL_DIR}, {level = 1, override =
NEUTRAL_DIR}, {level = 3, override = NEUTRAL_DIR}, {
level = 1786857288, override = 32767}, {level = 9951209,
override = NEUTRAL_DIR}, {level = 9985117,
override = NEUTRAL_DIR}, {level = 8, override =
NEUTRAL_DIR}, {level = 1021, override = NEUTRAL_DIR}, {
level = 1, override = NEUTRAL_DIR}, {level = 11424144,
override = NEUTRAL_DIR}, {level = 1786857536,
override = 32767}, {level = 170250443, override =
NEUTRAL_DIR}, {level = 1786857920, override = 32767}, {
level = 1786857376, override = 32767}, {level =
1786857264, override = 32767}, {level = 3,
override = NEUTRAL_DIR}}, string = {lstring = 11975170,
s = 0x9d2ef80 "\363\320%\n", schars = 12180498,
bufpos = 11975170, from_disp_str = 0, unibyte = 1},
paragraph_dir = 11975170, separator_limit = 320,
first_elt = 0, new_paragraph = 1, frame_window_p = 0}
eob = <optimized out>
#11 0x00000000004a7516 in bidi_resolve_neutral
(bidi_it=0x7fff6a817498) at bidi.c:1871
saved_it = {bytepos = 1948, charpos = 1134, ch = 44, nchars =
1, ch_len = 1, type = NEUTRAL_ON,
type_after_w1 = NEUTRAL_ON, orig_type = WEAK_CS,
resolved_level = 0, invalid_levels = 0,
invalid_rl_levels = -1, prev_was_pdf = 0, prev = {bytepos =
1946, charpos = 1133, type = STRONG_L,
type_after_w1 = STRONG_L, orig_type = STRONG_L},
last_strong = {bytepos = 1946, charpos = 1133,
type = STRONG_L, type_after_w1 = STRONG_L, orig_type =
STRONG_L}, next_for_neutral = {bytepos = 1928,
charpos = 1124, type = UNKNOWN_BT, type_after_w1 =
STRONG_L, orig_type = STRONG_L}, prev_for_neutral = {
bytepos = 1946, charpos = 1133, type = STRONG_L,
type_after_w1 = STRONG_L, orig_type = STRONG_L},
next_for_ws = {bytepos = 0, charpos = 0, type = UNKNOWN_BT,
type_after_w1 = UNKNOWN_BT,
orig_type = UNKNOWN_BT}, next_en_pos = -1, ignore_bn_limit
= -1, sor = L2R, scan_dir = 1, disp_pos = 1135,
disp_prop = 1, stack_idx = 0, level_stack = {{level = 0,
override = NEUTRAL_DIR}, {level = 193943664,
override = NEUTRAL_DIR}, {level = -947233184, override =
32656}, {level = 32, override = NEUTRAL_DIR}, {
level = 11, override = 9}, {level = 12, override =
NEUTRAL_DIR}, {level = 1786849648, override = 32767},
{level = -956115936, override = 32656}, {level = 3,
override = NEUTRAL_DIR}, {level = -909397145,
override = 32656}, {level = 65536, override =
NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {
level = 0, override = NEUTRAL_DIR}, {level = 65536,
override = NEUTRAL_DIR}, {level = 1786858416,
override = 32767}, {level = 1786859084, override =
32767}, {level = 0, override = L2R}, {
level = 1786859200, override = 32767}, {level =
15574528, override = NEUTRAL_DIR}, {level = 1786859200,
override = 32767}, {level = 0, override = NEUTRAL_DIR},
{level = 193943664, override = NEUTRAL_DIR}, {
level = 1786859200, override = 32767}, {level = 1,
override = NEUTRAL_DIR}, {level = 1786859196,
override = 32767}, {level = -909413558, override =
32656}, {level = 1786858256, override = 32767}, {
level = 15574528, override = NEUTRAL_DIR}, {level =
194181787, override = L2R}, {level = 1786859152,
override = 32767}, {level = 488, override =
NEUTRAL_DIR}, {level = 2000, override = NEUTRAL_DIR}, {
level = 45, override = NEUTRAL_DIR}, {level = 2,
override = NEUTRAL_DIR}, {level = 13,
override = NEUTRAL_DIR}, {level = 5784330, override =
NEUTRAL_DIR}, {level = 12006498,
override = NEUTRAL_DIR}, {level = 12006498, override =
NEUTRAL_DIR}, {level = 72369938,
override = NEUTRAL_DIR}, {level = 194205469, override =
NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 12, override =
NEUTRAL_DIR}, {level = 11806856,
override = NEUTRAL_DIR}, {level = 1, override =
NEUTRAL_DIR}, {level = 194209588,
override = NEUTRAL_DIR}, {level = 0, override =
NEUTRAL_DIR}, {level = 40, override = NEUTRAL_DIR}, {
level = 1786858320, override = 32767}, {level = 0,
override = NEUTRAL_DIR}, {level = 1786858904,
override = 32767}, {level = 18097, override =
NEUTRAL_DIR}, {level = 1786858888, override = 32767}, {
level = 0, override = NEUTRAL_DIR}, {level = 1786858896,
override = 32767}, {level = 194181787,
override = NEUTRAL_DIR}, {level = 1221, override =
NEUTRAL_DIR}, {level = 1786858960, override = 32767},
{level = 16, override = NEUTRAL_DIR}, {level = 16391552,
override = NEUTRAL_DIR}, {level = 4484,
override = NEUTRAL_DIR}, {level = 11975794, override =
NEUTRAL_DIR}, {level = 4971910,
override = NEUTRAL_DIR}, {level = 0, override =
NEUTRAL_DIR}, {level = 194207470,
override = NEUTRAL_DIR}}, string = {lstring = 25470, s =
0x0, schars = 13316560, bufpos = 4294967297,
from_disp_str = 0, unibyte = 0}, paragraph_dir = 27588,
separator_limit = 13316561, first_elt = 0,
new_paragraph = 1, frame_window_p = 1}
next_type = <optimized out>
prev_level = <optimized out>
type = <optimized out>
current_level = 0
#12 bidi_type_of_next_char (bidi_it=0x7fff6a817498) at bidi.c:1960
No locals.
#13 bidi_level_of_next_char (bidi_it=0x7fff6a817498) at bidi.c:2070
type = <optimized out>
level = <optimized out>
prev_level = 0
next_for_neutral = {bytepos = 1928, charpos = 1124, type =
<optimized out>, type_after_w1 = <optimized out>,
orig_type = <optimized out>}
next_char_pos = <optimized out>
#14 0x00000000004a9ed8 in bidi_move_to_visually_next
(bidi_it=0x7fff6a817498) at bidi.c:2280
old_level = 0
new_level = <optimized out>
next_level = <optimized out>
sentinel = {bytepos = 1946, charpos = 1133, ch = 1080, nchars
= 1, ch_len = 2, type = STRONG_L,
type_after_w1 = STRONG_L, orig_type = STRONG_L,
resolved_level = 0, invalid_levels = 0,
invalid_rl_levels = -1, prev_was_pdf = 0, prev = {bytepos =
1944, charpos = 1132, type = STRONG_L,
type_after_w1 = STRONG_L, orig_type = STRONG_L},
last_strong = {bytepos = 1944, charpos = 1132,
type = STRONG_L, type_after_w1 = STRONG_L, orig_type =
STRONG_L}, next_for_neutral = {bytepos = 1928,
charpos = 1124, type = UNKNOWN_BT, type_after_w1 =
STRONG_L, orig_type = STRONG_L}, prev_for_neutral = {
override = 1073741824}, {level = 1786866416, override =
32767}, {level = 1, override = NEUTRAL_DIR}, {
level = 125405392, override = NEUTRAL_DIR}, {level =
1048576, override = 1073741824}, {level = 0,
override = NEUTRAL_DIR}}, string = {lstring =
4611686018427387904,
s = 0x441820 "\351I\372\377\377H\213\223\210\002", schars
= 140734980247024, bufpos = 40,
from_disp_str = 0, unibyte = 0}, paragraph_dir =
1786866416, separator_limit = 18098, first_elt = 1,
new_paragraph = 0, frame_window_p = 1}
#15 0x000000000043e7d0 in set_iterator_to_next (it=0x7fff6a816af0,
reseat_p=<optimized out>) at xdisp.c:6797
prev_scan_dir = 1
#16 0x00000000004468c7 in display_line (it=0x7fff6a816af0) at xdisp.c:19134
x_before = 774
nglyphs = <optimized out>
ascent = 14
phys_ascent = 13
n_glyphs_before = 86
hpos_before = 86
x = <optimized out>
descent = 5
phys_descent = 4
row = 0x4c40220
overlay_arrow_string = 87
wrap_it = {window = 0, w = 0x1, f = 0x0, method =
GET_FROM_BUFFER, stop_charpos = 0, prev_stop = 0,
base_level_stop = 0, end_charpos = -1, s =
0xffffffffffffffff <Address 0xffffffffffffffff out of bounds>,
string_nchars = 4294967297, region_beg_charpos = 1,
region_end_charpos = 0,
redisplay_end_trigger_charpos = 0, multibyte_p = 0,
header_line_p = 0, string_from_display_prop_p = 0,
from_disp_prop_p = 0, ellipsis_p = 0, avoid_cursor_p = 0, dp
= 0x96795d, dpvec = 0x57b8ae, dpend = 0x0,
dpvec_char_len = 1786859792, dpvec_face_id = 32767,
saved_face_id = 11396564, ctl_chars = {11975170,
11396556, 9861464, 4611686018427404288,
4611686018427389952, 2, 2, 11975170, 5679689, 11975170, 5750013,
2, 5752313, 712, 11975170, 1}, start = {pos = {charpos =
140734980248232, bytepos = 58376064},
overlay_string_index = 58375200, string_pos = {charpos =
1, bytepos = 8786456}, dpvec_index = 1786860176},
current = {pos = {charpos = 8786461, bytepos =
140734980248304}, overlay_string_index = 1786860064,
string_pos = {charpos = 140734980247824, bytepos = 0},
dpvec_index = 0}, n_overlay_strings = 0,
overlay_strings_charpos = 12631682, overlay_strings =
{11975170, 140734980248544, 140734980249360, 0,
193943664, 140734980249360, 1, 140734980249356,
140259837571914, 140734980248416, 15574528, 4294967299,
140734980249312, 140734980248368, 5757447, 8786461},
string_overlays = {12739846, 12599985,
140734980248368, 8786461, 5757198, 0, 2, 0, 58375200,
140734980248544, 140734980248352, 140734980248360,
-1, 4611686018427404288, 4611686018427389952, 12162242},
string = 145341622,
from_overlay = 140734980248656, stack = {{string = 12739734,
string_nchars = 11975170,
end_charpos = 6243626, stop_charpos = 1, prev_stop = 0,
base_level_stop = 2, cmp_it = {
stop_pos = 5750391, id = 1, ch = -1, rule_idx = -1,
lookback = 0, nglyphs = 0, reversed_p = 0,
charpos = 1, nchars = 1, nbytes = 0, from = 1, to = 0,
width = 0}, face_id = 0, u = {image = {
object = 140734980252312, slice = {x = 0, y =
140734980248560, width = 4611686018428436480,
height = 4294967295}, image_id =
4611686018427387904}, comp = {object = 140734980252312},
stretch = {object = 140734980252312}}, position =
{charpos = 4928989, bytepos = 140734980249376},
current = {pos = {charpos = 12207730, bytepos =
15462800}, overlay_string_index = 15462800,
string_pos = {charpos = 0, bytepos = 4935226},
dpvec_index = 11975794}, from_overlay = 12006498,
area = TEXT_AREA, method = GET_FROM_BUFFER,
paragraph_embedding = 5649752, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = WINDOW_WRAP, voffset =
0, space_width = 140734980248864,
font_height = 2}, {string = 5795901, string_nchars =
12006498, end_charpos = 0, stop_charpos = 11975170,
prev_stop = 12006498, base_level_stop = 146978150,
cmp_it = {stop_pos = 58375200, id = 58376960,
ch = 164795350, rule_idx = 0, lookback = 0, nglyphs =
0, reversed_p = 164795350, charpos = 0,
nchars = 1786860856, nbytes = 32767, from = 1, to = 0,
width = 1}, face_id = 164795398, u = {image = {
object = 25769803776, slice = {x = 28, y = 0, width
= 12199314, height = 146978150},
image_id = 11975170}, comp = {object = 25769803776},
stretch = {object = 25769803776}}, position = {
charpos = 8, bytepos = 194120496}, current = {pos =
{charpos = 8, bytepos = 144609248},
overlay_string_index = 5797404, string_pos = {charpos
= 188214853, bytepos = 146978150},
dpvec_index = 194120496}, from_overlay = 144609248,
area = 9, method = GET_FROM_BUFFER,
paragraph_embedding = 6073838, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0,
line_wrap = 492, voffset = 0,
space_width = 6086860, font_height = 492}, {string =
181485297, string_nchars = 500, end_charpos = 1968,
stop_charpos = 181485297, prev_stop = 181485297,
base_level_stop = 500, cmp_it = {stop_pos = 6087053,
id = 492, ch = 5732813, rule_idx = 0, lookback =
1786861088, nglyphs = 32767, reversed_p = 1786861096,
charpos = 140734980249296, nchars = 8840528, nbytes =
0, from = 55, to = 0, width = 1048576},
face_id = 1786861088, u = {image = {object = 5733157,
slice = {x = 2000, y = 1968, width = 176,
height = 11802896}, image_id = 41}, comp = {object
= 5733157}, stretch = {object = 5733157}},
position = {charpos = 11802960, bytepos = 11802896},
current = {pos = {charpos = 41,
bytepos = 11802896}, overlay_string_index = 5608884,
string_pos = {charpos = 0, bytepos = 5611912},
dpvec_index = 96}, from_overlay = 140206304, area =
11381466, method = GET_FROM_BUFFER,
paragraph_embedding = 8840497, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0,
line_wrap = 11381444, voffset = 0,
space_width = 8840533, font_height = 194180007}, {string
= 41, string_nchars = 194207470,
end_charpos = 0, stop_charpos = 0, prev_stop =
194207429, base_level_stop = 0, cmp_it = {stop_pos = -42,
id = 65794, ch = 11802144, rule_idx = 0, lookback = 0,
nglyphs = 0, reversed_p = 5784973, charpos = 0,
nchars = 5567146, nbytes = 0, from = 72119840, to = 0,
width = 2}, face_id = 2, u = {image = {
object = 49, slice = {x = 140734980249664, y = 8,
width = 1, height = 12206978},
image_id = 164795670}, comp = {object = 49}, stretch
= {object = 49}}, position = {
charpos = 6078148, bytepos = 194120440}, current =
{pos = {charpos = 8, bytepos = 34},
overlay_string_index = 34, string_pos = {charpos =
11975170, bytepos = 6103624},
dpvec_index = 1786861544}, from_overlay = 188214848,
area = LEFT_MARGIN_AREA,
method = GET_FROM_BUFFER, paragraph_embedding = 8,
multibyte_p = 0, string_from_display_prop_p = 0,
display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = 34,
voffset = 0, space_width = 1, font_height = 2}, {string
= 5439547, string_nchars = 53, end_charpos = 34,
stop_charpos = 49, prev_stop = 5983525, base_level_stop
= 0, cmp_it = {stop_pos = 194207470, id = 41,
ch = 11975794, rule_idx = 0, lookback = 69022336,
nglyphs = 0, reversed_p = 194120440,
charpos = 72369938, nchars = 0, nbytes = 0, from =
11975794, to = 0, width = 6089104}, face_id = 8,
u = {image = {object = 21474836514, slice = {x =
188214848, y = 188214853, width = 2,
height = 194120440}, image_id = 26}, comp =
{object = 21474836514}, stretch = {
object = 21474836514}}, position = {charpos =
188214848, bytepos = 69022342}, current = {pos = {
charpos = 5, bytepos = 0}, overlay_string_index =
6095347, string_pos = {charpos = 136,
bytepos = 32}, dpvec_index = 1786861992},
from_overlay = 11423904, area = 1786861968,
method = 32767, paragraph_embedding = 1786861808,
multibyte_p = 1, string_from_display_prop_p = 1,
display_ellipsis_p = 1, avoid_cursor_p = 1, bidi_p = 1,
from_disp_prop_p = 1, line_wrap = 1786861992,
voffset = 32767, space_width = 4, font_height = 2}}, sp
= 5753618, selective = 143675768, what = 33,
face_id = 0, selective_display_ellipsis_p = 0, ctl_arrow_p =
0, face_box_p = 0, start_of_box_run_p = 0,
end_of_box_run_p = 0, overlay_strings_at_end_processed_p =
1, ignore_overlay_strings_at_pos_p = 0,
glyph_not_available_p = 0, starts_in_middle_of_char_p = 0,
face_before_selective_p = 0,
constrain_row_ascent_descent_p = 0, line_wrap = TRUNCATE,
base_face_id = 136, c = 0, len = 69022342,
cmp_it = {stop_pos = 11975170, id = 49, ch = 5702572,
rule_idx = 0, lookback = 1786861808, nglyphs = 32767,
reversed_p = 12230000, charpos = 140734980250352, nchars =
1786861984, nbytes = 32767, from = 1786861992,
to = 32767, width = 3}, char_to_display = 188214852,
glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE,
image_id = 1, slice = {x = 53, y = 140734980250016, width =
72512800, height = 53},
space_width = 4611686018428436480, voffset = 0, tab_width =
0, font_height = 140734980250192,
object = 5983606, position = {charpos = 11975218, bytepos =
32}, truncation_pixel_width = 136,
continuation_pixel_width = 0, first_visible_x = 0,
last_visible_x = 69022342, last_visible_y = 0,
extra_line_spacing = 65794, max_extra_line_spacing = 0,
override_ascent = 11802864, override_descent = 0,
override_boff = 0, glyph_row = 0x58458d, area =
LEFT_MARGIN_AREA, nglyphs = 0, pixel_width = 5567146,
ascent = 0, descent = 71644337, max_ascent = 0, max_descent
= 72510369, phys_ascent = 0,
phys_descent = 71644304, max_phys_ascent = 0,
max_phys_descent = 72512805, current_x = 0,
continuation_lines_width = 1786862896, eol_pos = {charpos =
795, bytepos = 1}, current_y = 72513120,
first_vpos = 0, vpos = 13537410, hpos = 0,
left_user_fringe_bitmap = 43593, right_user_fringe_bitmap = 86,
left_user_fringe_face_id = 0, right_user_fringe_face_id =
954498, bidi_p = 0, bidi_it = {bytepos = 5750013,
charpos = 2, ch = 5782408, nchars = 140734980250448,
ch_len = 145641264, type = 164795222,
type_after_w1 = UNKNOWN_BT, orig_type = 164795238,
resolved_level = 0, invalid_levels = 164795222,
invalid_rl_levels = 0, prev_was_pdf = 4648812, prev =
{bytepos = 3, charpos = 11975218, type = 11975218,
type_after_w1 = UNKNOWN_BT, orig_type = 16391557},
last_strong = {bytepos = 140734980250472,
charpos = 11975218, type = 1786862624, type_after_w1 =
32767, orig_type = 4667047}, next_for_neutral = {
bytepos = 188214853, charpos = 194207470, type =
188214848, type_after_w1 = UNKNOWN_BT,
orig_type = 72498672}, prev_for_neutral = {bytepos =
140734980250656, charpos = 11975218,
type = 1786862624, type_after_w1 = 32767, orig_type =
11975170}, next_for_ws = {bytepos = 1,
charpos = 140734980250488, type = 1786862456,
type_after_w1 = 32767, orig_type = 5395313},
next_en_pos = 8670960, ignore_bn_limit = 5750678, sor = 3,
scan_dir = 0, disp_pos = 8,
disp_prop = 1786862576, stack_idx = 32767, level_stack =
{{level = 1, override = NEUTRAL_DIR}, {level = 1,
override = NEUTRAL_DIR}, {level = 1786862456, override
= 32767}, {level = 11975218,
override = NEUTRAL_DIR}, {level = 1786862576, override
= 32767}, {level = 72498674,
override = NEUTRAL_DIR}, {level = 8, override =
NEUTRAL_DIR}, {level = 1, override = NEUTRAL_DIR}, {
level = 2, override = NEUTRAL_DIR}, {level =
1786862744, override = 32767}, {level = 193137723,
override = NEUTRAL_DIR}, {level = 1786863152, override
= 32767}, {level = 1786862560,
override = 32767}, {level = 1786862448, override =
32767}, {level = 1, override = NEUTRAL_DIR}, {
level = 11975170, override = NEUTRAL_DIR}, {level =
164766720, override = NEUTRAL_DIR}, {
level = 12178802, override = NEUTRAL_DIR}, {level =
11975218, override = NEUTRAL_DIR}, {
level = 12204514, override = NEUTRAL_DIR}, {level =
11975218, override = NEUTRAL_DIR}, {level = 960,
override = NEUTRAL_DIR}, {level = 11975170, override =
NEUTRAL_DIR}, {level = 72443986,
override = NEUTRAL_DIR}, {level = 131072, override =
1073741824}, {level = 11975170,
override = NEUTRAL_DIR}, {level = 5680738, override =
NEUTRAL_DIR}, {level = 11975218,
override = NEUTRAL_DIR}, {level = 5748296, override =
NEUTRAL_DIR}, {level = 1786862992,
override = 32767}, {level = 188214853, override =
NEUTRAL_DIR}, {level = 72464848,
override = NEUTRAL_DIR}, {level = 1786862736, override
= 32767}, {level = 1786862992,
override = 32767}, {level = 72467280, override =
NEUTRAL_DIR}, {level = 30, override = NEUTRAL_DIR}, {
level = 1048576, override = 1073741824}, {level = 256,
override = NEUTRAL_DIR}, {level = 5983525,
override = NEUTRAL_DIR}, {level = 11975170, override =
NEUTRAL_DIR}, {level = 72404210,
override = NEUTRAL_DIR}, {level = 4, override =
NEUTRAL_DIR}, {level = 2012, override = NEUTRAL_DIR}, {
level = 11975170, override = NEUTRAL_DIR}, {level =
11975218, override = NEUTRAL_DIR}, {level = 72388,
override = NEUTRAL_DIR}, {level = 11975170, override =
NEUTRAL_DIR}, {level = 69031974,
override = NEUTRAL_DIR}, {level = 11975170, override =
NEUTRAL_DIR}, {level = 11975170,
override = NEUTRAL_DIR}, {level = 11975170, override =
NEUTRAL_DIR}, {level = 11975170,
it = {window = 16391557, w = 0xfa1d80, f = 0xebf190, method =
GET_FROM_BUFFER, stop_charpos = 1221,
prev_stop = 1121, base_level_stop = 1121, end_charpos =
18097, s = 0x0, string_nchars = 0,
region_beg_charpos = -1, region_end_charpos = -1,
redisplay_end_trigger_charpos = 0, multibyte_p = 1,
header_line_p = 0, string_from_display_prop_p = 0,
from_disp_prop_p = 0, ellipsis_p = 0, avoid_cursor_p = 0,
dp = 0x0, dpvec = 0x0, dpend = 0x0, dpvec_char_len = 0,
dpvec_face_id = 0, saved_face_id = 14, ctl_chars = {
0 <repeats 16 times>}, start = {pos = {charpos = 1047,
bytepos = 1787}, overlay_string_index = -1,
string_pos = {charpos = -1, bytepos = -1}, dpvec_index =
-1}, current = {pos = {charpos = 1133,
bytepos = 1946}, overlay_string_index = -1, string_pos =
{charpos = -1, bytepos = -1},
dpvec_index = -1}, n_overlay_strings = 0,
overlay_strings_charpos = 1121, overlay_strings = {
0 <repeats 16 times>}, string_overlays = {0 <repeats 16
times>}, string = 11975170, from_overlay = 0,
stack = {{string = 0, string_nchars = 0, end_charpos = 0,
stop_charpos = 0, prev_stop = 0,
base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch
= 0, rule_idx = 0, lookback = 0, nglyphs = 0,
reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0,
from = 0, to = 0, width = 0}, face_id = 0, u = {
image = {object = 0, slice = {x = 0, y = 0, width = 0,
height = 0}, image_id = 0}, comp = {
object = 0}, stretch = {object = 0}}, position =
{charpos = 0, bytepos = 0}, current = {pos = {
charpos = 0, bytepos = 0}, overlay_string_index = 0,
string_pos = {charpos = 0, bytepos = 0},
dpvec_index = 0}, from_overlay = 0, area =
LEFT_MARGIN_AREA, method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0,
string_from_display_prop_p = 0,
display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = TRUNCATE,
voffset = 0, space_width = 0, font_height = 0}, {string
= 0, string_nchars = 0, end_charpos = 0,
stop_charpos = 0, prev_stop = 0, base_level_stop = 0,
cmp_it = {stop_pos = 0, id = 0, ch = 0,
rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p =
0, charpos = 0, nchars = 0, nbytes = 0,
from = 0, to = 0, width = 0}, face_id = 0, u = {image
= {object = 0, slice = {x = 0, y = 0, width = 0,
height = 0}, image_id = 0}, comp = {object = 0},
stretch = {object = 0}}, position = {charpos = 0,
bytepos = 0}, current = {pos = {charpos = 0, bytepos =
0}, overlay_string_index = 0, string_pos = {
charpos = 0, bytepos = 0}, dpvec_index = 0},
from_overlay = 0, area = LEFT_MARGIN_AREA,
method = GET_FROM_BUFFER, paragraph_embedding =
NEUTRAL_DIR, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0,
space_width = 0, font_height = 0}, {string = 0,
string_nchars = 0, end_charpos = 0, stop_charpos = 0,
prev_stop = 0, base_level_stop = 0, cmp_it = {
stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback =
0, nglyphs = 0, reversed_p = 0, charpos = 0,
nchars = 0, nbytes = 0, from = 0, to = 0, width = 0},
face_id = 0, u = {image = {object = 0, slice = {
x = 0, y = 0, width = 0, height = 0}, image_id =
0}, comp = {object = 0}, stretch = {object = 0}},
position = {charpos = 0, bytepos = 0}, current = {pos =
{charpos = 0, bytepos = 0},
overlay_string_index = 0, string_pos = {charpos = 0,
bytepos = 0}, dpvec_index = 0}, from_overlay = 0,
area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0,
space_width = 0, font_height = 0}, {string = 0,
string_nchars = 0, end_charpos = 0, stop_charpos = 0,
prev_stop = 0, base_level_stop = 0, cmp_it = {
stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback =
0, nglyphs = 0, reversed_p = 0, charpos = 0,
nchars = 0, nbytes = 0, from = 0, to = 0, width = 0},
face_id = 0, u = {image = {object = 0, slice = {
x = 0, y = 0, width = 0, height = 0}, image_id =
0}, comp = {object = 0}, stretch = {object = 0}},
position = {charpos = 0, bytepos = 0}, current = {pos =
{charpos = 0, bytepos = 0},
overlay_string_index = 0, string_pos = {charpos = 0,
bytepos = 0}, dpvec_index = 0}, from_overlay = 0,
area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0,
space_width = 0, font_height = 0}, {string = 0,
string_nchars = 0, end_charpos = 0, stop_charpos = 0,
prev_stop = 0, base_level_stop = 0, cmp_it = {
stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback =
0, nglyphs = 0, reversed_p = 0, charpos = 0,
nchars = 0, nbytes = 0, from = 0, to = 0, width = 0},
face_id = 0, u = {image = {object = 0, slice = {
x = 0, y = 0, width = 0, height = 0}, image_id =
0}, comp = {object = 0}, stretch = {object = 0}},
position = {charpos = 0, bytepos = 0}, current = {pos =
{charpos = 0, bytepos = 0},
overlay_string_index = 0, string_pos = {charpos = 0,
bytepos = 0}, dpvec_index = 0}, from_overlay = 0,
area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER,
paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0,
space_width = 0, font_height = 0}}, sp = 0,
selective = 0, what = IT_CHARACTER, face_id = 14,
selective_display_ellipsis_p = 1, ctl_arrow_p = 1,
face_box_p = 0, start_of_box_run_p = 0, end_of_box_run_p =
0, overlay_strings_at_end_processed_p = 0,
#18 0x00000000004628e1 in redisplay_window (window=16391557,
just_this_one_p=0) at xdisp.c:15362
d2 = 0
d4 = 32767
d6 = 32767
d1 = 1
d3 = 1786880464
d5 = 1786880472
w = 0xfa1d80
f = 0xebf190
buffer = <optimized out>
old = 0xb37ee40
lpoint = {charpos = 1, bytepos = 1}
opoint = {charpos = 1, bytepos = 1}
startp = {charpos = 1, bytepos = 1}
update_mode_line = 1
tem = <optimized out>
it = {window = 12036210, w = 0xb7a492, f = 0x1, method =
8783504, stop_charpos = 8783509,
prev_stop = 12421554, base_level_stop = 4294967295,
end_charpos = 0, s = 0x7fff6a817a60 "",
string_nchars = 140734980258192, region_beg_charpos =
140734980258080, region_end_charpos = 2,
redisplay_end_trigger_charpos = 12, multibyte_p = 0,
header_line_p = 0, string_from_display_prop_p = 0,
from_disp_prop_p = 1, ellipsis_p = 1, avoid_cursor_p = 1, dp
= 0xb796e2, dpvec = 0x90ca56, dpend = 0x1,
dpvec_char_len = 9489008, dpvec_face_id = 0, saved_face_id =
9489014, ctl_chars = {2, 79304741, 192451242,
140734980258512, 5762037, 47, 5751068, 140734980258424,
12421264, 140734980258784, 140734980258416,
140734980258424, -1, 0, 2, 11807576}, start = {pos =
{charpos = 1, bytepos = 79304760},
overlay_string_index = 0, string_pos = {charpos = 0,
bytepos = 0}, dpvec_index = 0}, current = {pos = {
charpos = 0, bytepos = 20}, overlay_string_index =
1786866992, string_pos = {charpos = 0,
bytepos = 79304760}, dpvec_index = 79304736},
n_overlay_strings = 0, overlay_strings_charpos = 79304760,
overlay_strings = {78945190, 24, 0, 0, 0, 0, 79304736, 0, 0,
125, 4294967297, 2, 0, 11807640, 11807576, 0},
string_overlays = {79304736, 0, 5609812, 0, 24,
140734980258880, 140734980258688, 140734980258576, 2, 0, 24,
79304736, 0, 24, 79304736, 0}, string = -1, from_overlay =
65808, stack = {{string = 140734980258824,
string_nchars = 11400368, end_charpos = 11807544,
stop_charpos = 0, prev_stop = 9078817,
base_level_stop = 11975170, cmp_it = {stop_pos =
11807904, id = 0, ch = 181956400, rule_idx = 0,
lookback = 181956401, nglyphs = 0, reversed_p =
9078817, charpos = 11975170, nchars = 11975170,
nbytes = 0, from = 181956401, to = 0, width =
5612900}, face_id = 24, u = {image = {object = 0,
slice = {x = 24, y = 11975170, width = 181956401,
height = 5576329}, image_id = 140734980259360},
comp = {object = 0}, stretch = {object = 0}}, position
= {charpos = 164270160, bytepos = 12909488},
current = {pos = {charpos = 5473995, bytepos =
79304760}, overlay_string_index = 11400368, string_pos = {
charpos = 12035218, bytepos = 164281718},
dpvec_index = 1786871040}, from_overlay = 181619345,
area = 1786871088, method = 32767, paragraph_embedding =
5477724, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0,
avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = 1836017711, voffset =
101, space_width = 2, font_height = 2}, {
string = 5476461, string_nchars = 2, end_charpos =
181619344, stop_charpos = 13468514,
prev_stop = 140734980259008, base_level_stop = 8781973,
cmp_it = {stop_pos = 8674512, id = 12035218,
ch = 1786871256, rule_idx = 32767, lookback = 2,
nglyphs = 0, reversed_p = 2,
charpos = 140734980259264, nchars = 5753660, nbytes =
0, from = 1786871024, to = 32767, width = 2},
face_id = 1786871256, u = {image = {object = 12035216,
slice = {x = 140734980259584,
y = 140734980259280, width = 140734980259288,
height = 2}, image_id = 4611686018427404288},
comp = {object = 12035216}, stretch = {object =
12035216}}, position = {charpos = 4611686018427389952,
bytepos = 9489158}, current = {pos = {charpos =
11975170, bytepos = 140734980259280},
overlay_string_index = 1786871424, string_pos =
{charpos = 3, bytepos = 3}, dpvec_index = 1786871392},
from_overlay = 5757447, area = 12035218, method =
GET_FROM_BUFFER, paragraph_embedding = 181619345,
multibyte_p = 0, string_from_display_prop_p = 0,
display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = 11975170, voffset = 0,
space_width = 140734980259424,
font_height = 12035218}, {string = 5757198,
string_nchars = 181956401, end_charpos = 2,
stop_charpos = 24, prev_stop = 58375200, base_level_stop
= 58379200, cmp_it = {stop_pos = 1786871376,
id = 140734980259416, ch = 11410880, rule_idx = 0,
lookback = 11975170, nglyphs = 0,
reversed_p = 14527424, charpos = 14527424, nchars =
5297671, nbytes = 0, from = 1786871664,
to = 32767, width = 5751015}, face_id = 11410880, u =
{image = {object = 140734980259696, slice = {
x = 12035218, y = 164282838, width = 13850130,
height = 78872589}, image_id = 435627714607},
comp = {object = 140734980259696}, stretch = {object =
140734980259696}}, position = {
charpos = 58375200, bytepos = 58379200}, current =
{pos = {charpos = 78872585, bytepos = 2},
overlay_string_index = 5602107, string_pos = {charpos
= 0, bytepos = 14527424},
dpvec_index = 14527424}, from_overlay = 4300264967,
area = 78872586, method = GET_FROM_BUFFER,
paragraph_embedding = 192451238, multibyte_p = 0,
string_from_display_prop_p = 0,
display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = 6,
voffset = 0, space_width = 78872587, font_height =
192451238}, {string = 9, string_nchars = 78872588,
end_charpos = 192451238, stop_charpos = 12, prev_stop =
78872589, base_level_stop = 192451238, cmp_it = {
stop_pos = 9489216, id = 12035218, ch = 164282870,
rule_idx = 0, lookback = 3936, nglyphs = 0,
reversed_p = 181619345, charpos = 2, nchars = 131072,
nbytes = 1, from = 11975170, to = 0,
width = 5680738}, face_id = 164282870, u = {image =
{object = 5748296, slice = {x = 58379136,
y = 170340339, width = 192451238, height =
11410352}, image_id = 140734980260048}, comp = {
object = 5748296}, stretch = {object = 5748296}},
position = {charpos = 9489158, bytepos = 2},
current = {pos = {charpos = 2, bytepos = 0},
overlay_string_index = 5751068, string_pos = {charpos = 3,
bytepos = 58375200}, dpvec_index = 58378912},
from_overlay = 1786871856, area = 1786871864,
method = 32767, paragraph_embedding = 12230418,
multibyte_p = 0, string_from_display_prop_p = 0,
display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = 20,
voffset = 0, space_width = 6085506, font_height =
140734980259936}, {string = 0,
string_nchars = 1786872144, end_charpos = 20,
stop_charpos = 1, prev_stop = -1,
base_level_stop = 181576561, cmp_it = {stop_pos =
140734980260128, id = 140734980260120, ch = 6115122,
rule_idx = 0, lookback = 1786872560, nglyphs = 0,
reversed_p = 1786872080, charpos = 12162898,
nchars = 20, nbytes = 0, from = 20, to = 0, width =
20}, face_id = -1, u = {image = {object = 0,
slice = {x = 115, y = 4848383, width = 2, height =
5751655}, image_id = 21}, comp = {object = 0},
stretch = {object = 0}}, position = {charpos = 47,
bytepos = 0}, current = {pos = {charpos = 0,
bytepos = 0}, overlay_string_index = 0, string_pos =
{charpos = 0, bytepos = 0}, dpvec_index = 0},
from_overlay = 0, area = LEFT_MARGIN_AREA, method =
GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR,
multibyte_p = 0, string_from_display_prop_p = 0,
display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0,
from_disp_prop_p = 0, line_wrap = 1786872544, voffset =
32767, space_width = 140734980260256,
font_height = 140734980263840}}, sp = 0, selective = 0,
what = 1786872224, face_id = 32767,
selective_display_ellipsis_p = 0, ctl_arrow_p = 0,
face_box_p = 0, start_of_box_run_p = 0,
end_of_box_run_p = 0, overlay_strings_at_end_processed_p =
1, ignore_overlay_strings_at_pos_p = 0,
glyph_not_available_p = 1, starts_in_middle_of_char_p = 1,
face_before_selective_p = 1,
constrain_row_ascent_descent_p = 1, line_wrap = 32767,
base_face_id = 0, c = 0, len = 0, cmp_it = {
stop_pos = 0, id = 188860712, ch = 5583877, rule_idx = 0,
lookback = 0, nglyphs = 0, reversed_p = 0,
charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0,
width = 0}, char_to_display = 0,
glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE, image_id =
140734980260400, slice = {x = 140734980263984,
y = 0, width = 0, height = 140734980260400}, space_width =
140734980263984, voffset = 0, tab_width = 0,
font_height = 50, object = 4866047, position = {charpos =
99589107, bytepos = 5585953},
truncation_pixel_width = 0, continuation_pixel_width = 0,
first_visible_x = 0, last_visible_x = 0,
last_visible_y = 0, extra_line_spacing = 99589074,
max_extra_line_spacing = 0, override_ascent = 0,
override_descent = 0, override_boff = 1, glyph_row = 0x0,
area = 188850530, nglyphs = 0,
pixel_width = 192451238, ascent = 0, descent = 6, max_ascent
= 0, max_descent = 188850531, phys_ascent = 0,
phys_descent = 192451238, max_phys_ascent = 0,
max_phys_descent = 9, current_x = 0,
continuation_lines_width = 188850532, eol_pos = {charpos =
192451238, bytepos = 12}, current_y = 188850533,
first_vpos = 0, vpos = 192451238, hpos = 0,
left_user_fringe_bitmap = 0, right_user_fringe_bitmap = 0,
left_user_fringe_face_id = 0, right_user_fringe_face_id = 0,
bidi_p = 0, bidi_it = {bytepos = 11164863,
charpos = 4000, ch = 1786872544, nchars =
8389976743488743471, ch_len = 12230418, type = WEAK_NSM,
type_after_w1 = UNKNOWN_BT, orig_type = 6085506,
resolved_level = 0, invalid_levels = 1869762661,
invalid_rl_levels = 1868787572, prev_was_pdf = 1831760748,
prev = {bytepos = 1702065517, charpos = 16,
type = STRONG_L, type_after_w1 = UNKNOWN_BT, orig_type =
4294967295}, last_strong = {
bytepos = 104209345, charpos = 140734980260848, type =
1786872808, type_after_w1 = 32767,
orig_type = 6115122}, next_for_neutral = {bytepos = 0,
charpos = 140734980260832, type = WEAK_BN,
type_after_w1 = UNKNOWN_BT, orig_type = WEAK_NSM},
prev_for_neutral = {bytepos = 16, charpos = 16,
type = 4294967295, type_after_w1 = 4294967295, orig_type
= UNKNOWN_BT}, next_for_ws = {bytepos = 46,
charpos = 4848114, type = 99589074, type_after_w1 =
UNKNOWN_BT, orig_type = 5602107}, next_en_pos = 0,
ignore_bn_limit = 19, sor = 19, scan_dir = 0, disp_pos =
181486480, disp_prop = 10939295, stack_idx = 0,
level_stack = {{level = 1, override = NEUTRAL_DIR}, {level
= 0, override = NEUTRAL_DIR}, {level = 5646362,
override = NEUTRAL_DIR}, {level = 1786873280, override
= 32767}, {level = 1786878720,
override = 32767}, {level = 19, override =
NEUTRAL_DIR}, {level = 5646847, override = NEUTRAL_DIR}, {
level = 1786873280, override = 32767}, {level =
1786878720, override = 32767}, {level = 19,
override = NEUTRAL_DIR}, {level = 10939295, override =
NEUTRAL_DIR}, {level = 1786872968,
override = 32767}, {level = 5715196, override =
NEUTRAL_DIR}, {level = -1, override = 4294967295}, {
level = 0, override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 17, override =
NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {
level = 19, override = NEUTRAL_DIR}, {level = 19,
override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 19, override =
NEUTRAL_DIR}, {level = 19, override = NEUTRAL_DIR}, {
level = 0, override = NEUTRAL_DIR}, {level = -1,
override = 4294967295}, {level = 0,
override = NEUTRAL_DIR}, {level = 0, override =
NEUTRAL_DIR}, {level = 257, override = 16843009}, {
level = 6, override = NEUTRAL_DIR}, {level =
188850307, override = NEUTRAL_DIR}, {level = 3,
override = NEUTRAL_DIR}, {level = 1786878912, override
= 32767}, {level = 0, override = NEUTRAL_DIR}, {
level = 192451073, override = NEUTRAL_DIR}, {level =
1, override = NEUTRAL_DIR}, {level = 58375200,
override = NEUTRAL_DIR}, {level = 58375904, override =
NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 1786878625, override
= 32767}, {level = 1786872896,
override = 32767}, {level = 10939295, override =
NEUTRAL_DIR}, {level = 3, override = NEUTRAL_DIR}, {
level = 1786878888, override = 32767}, {level = 4,
override = NEUTRAL_DIR}, {level = 0,
override = L2R}, {level = 65536, override =
NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {
level = 0, override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 5602107,
override = NEUTRAL_DIR}, {level = 1786873016, override
= 32767}, {level = 10939287,
override = NEUTRAL_DIR}, {level = 19, override =
NEUTRAL_DIR}, {level = -1, override = 4294967295}, {
level = 0, override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 0,
override = NEUTRAL_DIR}, {level = 10939295, override =
NEUTRAL_DIR}, {level = 4000,
override = NEUTRAL_DIR}, {level = 1786873280, override
= 32767}, {level = 1954039107,
override = 1953720652}, {level = 1970032755, override
= 778987879}, {level = 538976360,
override = 2105376}}, string = {lstring =
140259796360791, s = 0x7fff6a818900 "\f", schars = 0,
bufpos = 140734980263040, from_disp_str = 1, unibyte =
0}, paragraph_dir = L2R,
separator_limit = 140734980263328, first_elt = 0,
new_paragraph = 1, frame_window_p = 0},
paragraph_embedding = 3344342615}
used_current_matrix_p = 0
buffer_unchanged_p = 0
temp_scroll_step = 0
rc = 1
centering_position = -1
last_line_misfit = 0
beg_unchanged = -1
end_unchanged = 0
#19 0x00000000004641c4 in redisplay_window_0 (window=<optimized out>)
at xdisp.c:13491
No locals.
#20 0x000000000057adfe in internal_condition_case_1 (bfun=0x4641a0
<redisplay_window_0>, arg=16391557,
handlers=11945478, hfun=0x42b790 <redisplay_window_error>) at eval.c:1537
val = <optimized out>
c = {tag = 11975170, val = 11975170, next = 0x7fff6a81c3f0,
gcpro = 0x0, jmp = {{__jmpbuf = {16391552,
7764570935097350743, 16391552, 15462805, 15462800,
12840256, -7764319058259027369,
7764572273921677911}, __mask_was_saved = 0,
__saved_mask = {__val = {5680738, 1, 5748296, 164808742,
11975218, 11975170, 5555570, 1, 2305843009213693951,
15462800, 0, 188214848, 4, 11975218, 11975218,
128}}}}, backlist = 0x0, handlerlist =
0x7fff6a81c500, lisp_eval_depth = 0, pdlcount = 4,
poll_suppress_count = 1, interrupt_input_blocked = 0,
byte_stack = 0x0}
h = {handler = 11945478, var = 11975170, chosen_clause =
15462800, tag = 0x7fff6a81a0c0, next = 0x7fff6a81c500}
#21 0x000000000042fa4e in redisplay_windows (window=<optimized out>)
at xdisp.c:13471
w = 0xfa1d80
#22 0x000000000044d6d1 in redisplay_internal () at xdisp.c:13048
f = 0xebf190
tail = <optimized out>
frame = <optimized out>
w = 0xfa1d80
sw = 0xfa1d80
fr = <optimized out>
pending = <optimized out>
must_finish = 1
tlbufpos = {charpos = <optimized out>, bytepos = 1}
tlendpos = <optimized out>
number_of_visible_frames = <optimized out>
count = 2
count1 = <optimized out>
sf = 0xebf190
polling_stopped_here = 0
old_frame = 15462805
consider_all_windows_p = <optimized out>
#23 0x0000000000511618 in read_char (commandflag=1, nmaps=8,
maps=0x7fff6a81c070, prev_event=11975170,
used_mouse_menu=0x7fff6a81c228, end_time=0x0) at keyboard.c:2446
echo_current = 1
c = <optimized out>
local_getcjmp = {{__jmpbuf = {0, 3, 140734980275856, 12022530,
140734980275880, 0, 2, 5292137},
__mask_was_saved = 1786887888, __saved_mask = {__val = {3,
140734980275856, 5301125, 8667360, 5301670, 2,
11975218, 96, 11975170, 40, 0, 188214853, 6075573,
12009250, 188214853, 140734980276320}}}}
save_jump = {{__jmpbuf = {0, 40, 188214853, 188214853,
140734980276320, 12009250, 1, 4},
__mask_was_saved = 1786887856, __saved_mask = {__val =
{5725630, 0, 9077064, 140734980276080, 12874498,
140734980276208, 140734980275968, 140734980275976,
18446744073709551615, 78663449, 79117505, 78663328,
81336565, 0, 63525568, 63525584}}}}
key_already_recorded = 0
tem = <optimized out>
save = <optimized out>
previous_echo_area_message = 11975170
also_record = 11975170
reread = 0
polling_stopped_here = 0
orig_kboard = 0xddeb40
#24 0x0000000000513ac7 in read_key_sequence (keybuf=0x7fff6a81c280,
prompt=11975170, dont_downcase_last=0,
can_return_switch_frame=1, fix_current_buffer=1, bufsize=30) at
keyboard.c:9285
interrupted_kboard = 0xddeb40
interrupted_frame = 0xebf190
key = <optimized out>
used_mouse_menu = 0
echo_local_start = 0
last_real_key_start = 0
keys_local_start = 0
local_first_binding = 0
from_string = 11975170
count = 2
t = 0
echo_start = 0
keys_start = 0
nmaps = <optimized out>
nmaps_allocated = 8
defs = 0x7fff6a81c020
submaps = 0x7fff6a81c070
orig_local_map = 68086614
orig_keymap = 11975170
localized_local_map = 0
first_binding = 0
first_unbound = 31
mock_input = 0
fkey = {parent = 17661158, map = 17661158, start = 0, end = 0}
keytran = {parent = 11954598, map = 11954598, start = 0, end = 0}
interrupt_input_blocked = 0, byte_stack = 0x0}
h = {handler = 12027362, var = 11975170, chosen_clause =
11975170, tag = 0x7fff6a81c3f0, next = 0x0}
#27 0x000000000050891e in command_loop_2 (ignore=<optimized out>) at
keyboard.c:1157
val = 0
---Type <return> to continue, or q <return> to quit---
#28 0x000000000057ab78 in internal_catch (tag=Cannot access memory at
address 0x47bf
) at eval.c:1256
c = {tag = 12023154, val = 11975170, next = 0x0, gcpro = 0x0,
jmp = {{__jmpbuf = {12437744,
7764571400816089687, 11975170, 140734980278712,
4294967295, 140734980278992, -7764319054893098409,
7764572273829403223}, __mask_was_saved = 0,
__saved_mask = {__val = {0, 0, 0, 0, 0, 352, 6040761,
14777080, 140734980277912, 344, 140734980277904,
6327779, 11975170, 12266610, 5759958, 14}}}},
backlist = 0x0, handlerlist = 0x0, lisp_eval_depth = 0,
pdlcount = 2, poll_suppress_count = 1,
interrupt_input_blocked = 0, byte_stack = 0x0}
#29 0x0000000000509f17 in command_loop () at keyboard.c:1136
No locals.
#30 recursive_edit_1 () at keyboard.c:756
val = 11975170
#31 0x000000000050a24c in Frecursive_edit () at keyboard.c:820
buffer = 11975170
#32 0x00000000004174cd in main (argc=1, argv=<optimized out>) at emacs.c:1706
dummy = 22034999
stack_bottom_variable = 0 '\000'
do_initial_setlocale = <optimized out>
skip_args = 0
rlim = {rlim_cur = 8720000, rlim_max = 18446744073709551615}
no_loadup = 0
junk = 0x0
dname_arg = 0x0
ch_to_dir = 0x1081f31 "\272\266"
In GNU Emacs 24.0.90.1 (x86_64-pc-linux-gnu, GTK+ Version 3.0.12)
of 2011-09-26 on keller, modified by Debian
(emacs-snapshot package, version 1:20110926-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11002902
configured using `configure '--build' 'x86_64-linux-gnu' '--host'
'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib'
'--libexecdir=/usr/lib' '--localstatedir=/var'
'--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes'
'--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.0.90/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.0.90/site-lisp:/usr/share/emacs/site-lisp'
'--without-compress-info' '--with-crt-dir=/usr/lib/x86_64-linux-gnu/'
'--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu'
'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: ru_RU.UTF-8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
Major mode: Text
Minor modes in effect:
flyspell-mode: t
desktop-save-mode: t
iswitchb-mode: t
show-paren-mode: t
display-time-mode: t
delete-selection-mode: t
yas/global-mode: t
yas/minor-mode: t
diff-auto-refine-mode: t
shell-dirtrack-mode: t
which-function-mode: t
tooltip-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
unify-8859-on-decoding-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
<return> y <help-echo> <help-echo> <help-echo> <help-echo>
<help-echo> <help-echo> <menu-bar> <help-menu> <se
nd-emacs-bug-report>
Recent messages:
Loading /home/ott/.emacs.d/custom.el (source)...done
Warning: desktop file appears to be in use by PID 16531.
Using it may cause conflicts. Use it anyway? (y or n) y
Ispell process killed
Starting new Ispell process [english] ...
~/work/webwasher-ng/Interfaces/Interfaces_common.h and
/home/ott/work/pinacolada/WebWasher/Interfaces/Interfaces_common.h are
the same file
Ispell process killed
Starting new Ispell process [english] ...
Desktop: 241 buffers restored.
For information about GNU Emacs and the GNU system, type C-h C-a. [6 times]
Load-path shadows:
~/emacs/programming/json hides /home/ott/.emacs.d/el-get/json/json
~/emacs/programming/xml-parse hides
/home/ott/.emacs.d/el-get/doxymacs/lisp/xml-parse
~/emacs/misc/htmlize hides
/home/ott/.emacs.d/el-get/org-mode/contrib/lisp/htmlize
/home/ott/.emacs.d/el-get/org-mode/.dir-locals hides
/home/ott/.emacs.d/el-get/magit/.dir-locals
~/emacs/programming/cmake-mode hides
/usr/share/emacs/24.0.90/site-lisp/cmake-data/cmake-mode
~/emacs/programming/gtags hides /usr/share/emacs/24.0.90/site-lisp/global/gtags
/home/ott/.emacs.d/el-get/psvn/psvn hides /usr/share/emacs/site-lisp/psvn
/usr/share/emacs/24.0.90/site-lisp/debian-startup hides
/usr/share/emacs/site-lisp/debian-startup
~/emacs/programming/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
~/emacs/epg/epa-mail hides /usr/share/emacs/24.0.90/lisp/epa-mail
/home/ott/projects/cedet/speedbar/speedbar hides
/usr/share/emacs/24.0.90/lisp/speedbar
~/emacs/epg/epg-config hides /usr/share/emacs/24.0.90/lisp/epg-config
~/emacs/epg/epg hides /usr/share/emacs/24.0.90/lisp/epg
~/emacs/epg/epa hides /usr/share/emacs/24.0.90/lisp/epa
/home/ott/projects/cedet/common/ezimage hides
/usr/share/emacs/24.0.90/lisp/ezimage
~/emacs/epg/epa-file hides /usr/share/emacs/24.0.90/lisp/epa-file
~/emacs/programming/json hides /usr/share/emacs/24.0.90/lisp/json
/home/ott/projects/cedet/speedbar/sb-image hides
/usr/share/emacs/24.0.90/lisp/sb-image
~/emacs/epg/epa-dired hides /usr/share/emacs/24.0.90/lisp/epa-dired
/home/ott/projects/cedet/speedbar/dframe hides
/usr/share/emacs/24.0.90/lisp/dframe
/home/ott/.emacs.d/el-get/remember/remember hides
/usr/share/emacs/24.0.90/lisp/textmodes/remember
/usr/share/emacs/site-lisp/rst hides /usr/share/emacs/24.0.90/lisp/textmodes/rst
/usr/share/emacs/24.0.90/site-lisp/octave3.2-emacsen/octave-mod hides
/usr/share/emacs/24.0.90/lisp/progmodes/octave-mod
/usr/share/emacs/24.0.90/site-lisp/octave3.2-emacsen/octave-inf hides
/usr/share/emacs/24.0.90/lisp/progmodes/octave-inf
~/emacs/programming/prolog hides /usr/share/emacs/24.0.90/lisp/progmodes/prolog
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-eval hides
/usr/share/emacs/24.0.90/lisp/org/ob-eval
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-R hides
/usr/share/emacs/24.0.90/lisp/org/ob-R
/home/ott/.emacs.d/el-get/org-mode/lisp/org-inlinetask hides
/usr/share/emacs/24.0.90/lisp/org/org-inlinetask
/home/ott/.emacs.d/el-get/org-mode/lisp/org-mew hides
/usr/share/emacs/24.0.90/lisp/org/org-mew
/home/ott/.emacs.d/el-get/org-mode/lisp/org-bbdb hides
/usr/share/emacs/24.0.90/lisp/org/org-bbdb
/home/ott/.emacs.d/el-get/org-mode/lisp/org-mks hides
/usr/share/emacs/24.0.90/lisp/org/org-mks
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-ref hides
/usr/share/emacs/24.0.90/lisp/org/ob-ref
/home/ott/.emacs.d/el-get/org-mode/lisp/org-remember hides
/usr/share/emacs/24.0.90/lisp/org/org-remember
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-keys hides
/usr/share/emacs/24.0.90/lisp/org/ob-keys
/home/ott/.emacs.d/el-get/org-mode/lisp/org-mhe hides
/usr/share/emacs/24.0.90/lisp/org/org-mhe
/home/ott/.emacs.d/el-get/org-mode/lisp/org-publish hides
/usr/share/emacs/24.0.90/lisp/org/org-publish
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-ditaa hides
/usr/share/emacs/24.0.90/lisp/org/ob-ditaa
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-lilypond hides
/usr/share/emacs/24.0.90/lisp/org/ob-lilypond
/home/ott/.emacs.d/el-get/org-mode/lisp/org-install hides
/usr/share/emacs/24.0.90/lisp/org/org-install
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-python hides
/usr/share/emacs/24.0.90/lisp/org/ob-python
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-comint hides
/usr/share/emacs/24.0.90/lisp/org/ob-comint
/home/ott/.emacs.d/el-get/org-mode/lisp/org-plot hides
/usr/share/emacs/24.0.90/lisp/org/org-plot
/home/ott/.emacs.d/el-get/org-mode/lisp/org-xoxo hides
/usr/share/emacs/24.0.90/lisp/org/org-xoxo
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-ledger hides
/usr/share/emacs/24.0.90/lisp/org/ob-ledger
/home/ott/.emacs.d/el-get/org-mode/lisp/org-timer hides
/usr/share/emacs/24.0.90/lisp/org/org-timer
/home/ott/.emacs.d/el-get/org-mode/lisp/org-ascii hides
/usr/share/emacs/24.0.90/lisp/org/org-ascii
/home/ott/.emacs.d/el-get/org-mode/lisp/org-rmail hides
/usr/share/emacs/24.0.90/lisp/org/org-rmail
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-emacs-lisp hides
/usr/share/emacs/24.0.90/lisp/org/ob-emacs-lisp
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-latex hides
/usr/share/emacs/24.0.90/lisp/org/ob-latex
/home/ott/.emacs.d/el-get/org-mode/lisp/org-footnote hides
/usr/share/emacs/24.0.90/lisp/org/org-footnote
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-lob hides
/usr/share/emacs/24.0.90/lisp/org/ob-lob
/home/ott/.emacs.d/el-get/org-mode/lisp/ob hides
/usr/share/emacs/24.0.90/lisp/org/ob
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-ocaml hides
/usr/share/emacs/24.0.90/lisp/org/ob-ocaml
/home/ott/.emacs.d/el-get/org-mode/lisp/org-w3m hides
/usr/share/emacs/24.0.90/lisp/org/org-w3m
/home/ott/.emacs.d/el-get/org-mode/lisp/org-id hides
/usr/share/emacs/24.0.90/lisp/org/org-id
/home/ott/.emacs.d/el-get/org-mode/lisp/org-exp hides
/usr/share/emacs/24.0.90/lisp/org/org-exp
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-sqlite hides
/usr/share/emacs/24.0.90/lisp/org/ob-sqlite
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-lisp hides
/usr/share/emacs/24.0.90/lisp/org/ob-lisp
/home/ott/.emacs.d/el-get/org-mode/lisp/org-datetree hides
/usr/share/emacs/24.0.90/lisp/org/org-datetree
/home/ott/.emacs.d/el-get/org-mode/lisp/org-protocol hides
/usr/share/emacs/24.0.90/lisp/org/org-protocol
/home/ott/.emacs.d/el-get/org-mode/lisp/org-gnus hides
/usr/share/emacs/24.0.90/lisp/org/org-gnus
/home/ott/.emacs.d/el-get/org-mode/lisp/org-special-blocks hides
/usr/share/emacs/24.0.90/lisp/org/org-special-blocks
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-sh hides
/usr/share/emacs/24.0.90/lisp/org/ob-sh
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-gnuplot hides
/usr/share/emacs/24.0.90/lisp/org/ob-gnuplot
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-dot hides
/usr/share/emacs/24.0.90/lisp/org/ob-dot
/home/ott/.emacs.d/el-get/org-mode/lisp/org-agenda hides
/usr/share/emacs/24.0.90/lisp/org/org-agenda
/home/ott/.emacs.d/el-get/org-mode/lisp/org-exp-blocks hides
/usr/share/emacs/24.0.90/lisp/org/org-exp-blocks
/home/ott/.emacs.d/el-get/org-mode/lisp/org-irc hides
/usr/share/emacs/24.0.90/lisp/org/org-irc
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-maxima hides
/usr/share/emacs/24.0.90/lisp/org/ob-maxima
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-screen hides
/usr/share/emacs/24.0.90/lisp/org/ob-screen
/home/ott/.emacs.d/el-get/org-mode/lisp/org-bibtex hides
/usr/share/emacs/24.0.90/lisp/org/org-bibtex
/home/ott/.emacs.d/el-get/org-mode/lisp/org-taskjuggler hides
/usr/share/emacs/24.0.90/lisp/org/org-taskjuggler
/home/ott/.emacs.d/el-get/org-mode/lisp/org-wl hides
/usr/share/emacs/24.0.90/lisp/org/org-wl
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-octave hides
/usr/share/emacs/24.0.90/lisp/org/ob-octave
/home/ott/.emacs.d/el-get/org-mode/lisp/org-info hides
/usr/share/emacs/24.0.90/lisp/org/org-info
/home/ott/.emacs.d/el-get/org-mode/lisp/org-docbook hides
/usr/share/emacs/24.0.90/lisp/org/org-docbook
/home/ott/.emacs.d/el-get/org-mode/lisp/org-icalendar hides
/usr/share/emacs/24.0.90/lisp/org/org-icalendar
/home/ott/.emacs.d/el-get/org-mode/lisp/org-docview hides
/usr/share/emacs/24.0.90/lisp/org/org-docview
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-perl hides
/usr/share/emacs/24.0.90/lisp/org/ob-perl
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-css hides
/usr/share/emacs/24.0.90/lisp/org/ob-css
/home/ott/.emacs.d/el-get/org-mode/lisp/org-latex hides
/usr/share/emacs/24.0.90/lisp/org/org-latex
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-exp hides
/usr/share/emacs/24.0.90/lisp/org/ob-exp
/home/ott/.emacs.d/el-get/org-mode/lisp/org-archive hides
/usr/share/emacs/24.0.90/lisp/org/org-archive
/home/ott/.emacs.d/el-get/org-mode/lisp/org-freemind hides
/usr/share/emacs/24.0.90/lisp/org/org-freemind
/home/ott/.emacs.d/el-get/org-mode/lisp/org-pcomplete hides
/usr/share/emacs/24.0.90/lisp/org/org-pcomplete
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-plantuml hides
/usr/share/emacs/24.0.90/lisp/org/ob-plantuml
/home/ott/.emacs.d/el-get/org-mode/lisp/org-mouse hides
/usr/share/emacs/24.0.90/lisp/org/org-mouse
/home/ott/.emacs.d/el-get/org-mode/lisp/org-beamer hides
/usr/share/emacs/24.0.90/lisp/org/org-beamer
/home/ott/.emacs.d/el-get/org-mode/lisp/org-ctags hides
/usr/share/emacs/24.0.90/lisp/org/org-ctags
/home/ott/.emacs.d/el-get/org-mode/lisp/org-html hides
/usr/share/emacs/24.0.90/lisp/org/org-html
/home/ott/.emacs.d/el-get/org-mode/lisp/org-feed hides
/usr/share/emacs/24.0.90/lisp/org/org-feed
/home/ott/.emacs.d/el-get/org-mode/lisp/org-jsinfo hides
/usr/share/emacs/24.0.90/lisp/org/org-jsinfo
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-mscgen hides
/usr/share/emacs/24.0.90/lisp/org/ob-mscgen
/home/ott/.emacs.d/el-get/org-mode/lisp/org-table hides
/usr/share/emacs/24.0.90/lisp/org/org-table
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-tangle hides
/usr/share/emacs/24.0.90/lisp/org/ob-tangle
/home/ott/.emacs.d/el-get/org-mode/lisp/org-capture hides
/usr/share/emacs/24.0.90/lisp/org/org-capture
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-clojure hides
/usr/share/emacs/24.0.90/lisp/org/ob-clojure
/home/ott/.emacs.d/el-get/org-mode/lisp/org-macs hides
/usr/share/emacs/24.0.90/lisp/org/org-macs
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-awk hides
/usr/share/emacs/24.0.90/lisp/org/ob-awk
/home/ott/.emacs.d/el-get/org-mode/lisp/org-mac-message hides
/usr/share/emacs/24.0.90/lisp/org/org-mac-message
/home/ott/.emacs.d/el-get/org-mode/lisp/org-entities hides
/usr/share/emacs/24.0.90/lisp/org/org-entities
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-table hides
/usr/share/emacs/24.0.90/lisp/org/ob-table
/home/ott/.emacs.d/el-get/org-mode/lisp/org-faces hides
/usr/share/emacs/24.0.90/lisp/org/org-faces
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-sql hides
/usr/share/emacs/24.0.90/lisp/org/ob-sql
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-calc hides
/usr/share/emacs/24.0.90/lisp/org/ob-calc
/home/ott/.emacs.d/el-get/org-mode/lisp/org hides
/usr/share/emacs/24.0.90/lisp/org/org
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-scheme hides
/usr/share/emacs/24.0.90/lisp/org/ob-scheme
/home/ott/.emacs.d/el-get/org-mode/lisp/org-clock hides
/usr/share/emacs/24.0.90/lisp/org/org-clock
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-matlab hides
/usr/share/emacs/24.0.90/lisp/org/ob-matlab
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-C hides
/usr/share/emacs/24.0.90/lisp/org/ob-C
/home/ott/.emacs.d/el-get/org-mode/lisp/org-habit hides
/usr/share/emacs/24.0.90/lisp/org/org-habit
/home/ott/.emacs.d/el-get/org-mode/lisp/org-crypt hides
/usr/share/emacs/24.0.90/lisp/org/org-crypt
/home/ott/.emacs.d/el-get/org-mode/lisp/org-colview hides
/usr/share/emacs/24.0.90/lisp/org/org-colview
/home/ott/.emacs.d/el-get/org-mode/lisp/org-compat hides
/usr/share/emacs/24.0.90/lisp/org/org-compat
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-ruby hides
/usr/share/emacs/24.0.90/lisp/org/ob-ruby
/home/ott/.emacs.d/el-get/org-mode/lisp/org-mobile hides
/usr/share/emacs/24.0.90/lisp/org/org-mobile
/home/ott/.emacs.d/el-get/org-mode/lisp/org-indent hides
/usr/share/emacs/24.0.90/lisp/org/org-indent
/home/ott/.emacs.d/el-get/org-mode/lisp/org-attach hides
/usr/share/emacs/24.0.90/lisp/org/org-attach
/home/ott/.emacs.d/el-get/org-mode/lisp/org-vm hides
/usr/share/emacs/24.0.90/lisp/org/org-vm
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-sass hides
/usr/share/emacs/24.0.90/lisp/org/ob-sass
/home/ott/.emacs.d/el-get/org-mode/lisp/org-src hides
/usr/share/emacs/24.0.90/lisp/org/org-src
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-org hides
/usr/share/emacs/24.0.90/lisp/org/ob-org
/home/ott/.emacs.d/el-get/org-mode/lisp/org-list hides
/usr/share/emacs/24.0.90/lisp/org/org-list
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-js hides
/usr/share/emacs/24.0.90/lisp/org/ob-js
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-haskell hides
/usr/share/emacs/24.0.90/lisp/org/ob-haskell
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-java hides
/usr/share/emacs/24.0.90/lisp/org/ob-java
/home/ott/.emacs.d/el-get/org-mode/lisp/ob-asymptote hides
/usr/share/emacs/24.0.90/lisp/org/ob-asymptote
/home/ott/.emacs.d/el-get/org-mode/.dir-locals hides
/usr/share/emacs/24.0.90/lisp/gnus/.dir-locals
/home/ott/projects/cedet/eieio/eieio-base hides
/usr/share/emacs/24.0.90/lisp/emacs-lisp/eieio-base
/home/ott/projects/cedet/eieio/eieio hides
/usr/share/emacs/24.0.90/lisp/emacs-lisp/eieio
/home/ott/projects/cedet/eieio/eieio-datadebug hides
/usr/share/emacs/24.0.90/lisp/emacs-lisp/eieio-datadebug
/home/ott/projects/cedet/eieio/eieio-opt hides
/usr/share/emacs/24.0.90/lisp/emacs-lisp/eieio-opt
/home/ott/projects/cedet/eieio/eieio-speedbar hides
/usr/share/emacs/24.0.90/lisp/emacs-lisp/eieio-speedbar
/home/ott/projects/cedet/eieio/eieio-custom hides
/usr/share/emacs/24.0.90/lisp/emacs-lisp/eieio-custom
/home/ott/projects/cedet/eieio/chart hides
/usr/share/emacs/24.0.90/lisp/emacs-lisp/chart
/home/ott/projects/cedet/semantic/semantic hides
/usr/share/emacs/24.0.90/lisp/cedet/semantic
/home/ott/projects/cedet/ede/ede hides /usr/share/emacs/24.0.90/lisp/cedet/ede
/home/ott/projects/cedet/common/mode-local hides
/usr/share/emacs/24.0.90/lisp/cedet/mode-local
/home/ott/projects/cedet/common/inversion hides
/usr/share/emacs/24.0.90/lisp/cedet/inversion
/home/ott/projects/cedet/common/cedet-files hides
/usr/share/emacs/24.0.90/lisp/cedet/cedet-files
/home/ott/projects/cedet/common/cedet-idutils hides
/usr/share/emacs/24.0.90/lisp/cedet/cedet-idutils
/home/ott/projects/cedet/common/data-debug hides
/usr/share/emacs/24.0.90/lisp/cedet/data-debug
/home/ott/projects/cedet/common/pulse hides
/usr/share/emacs/24.0.90/lisp/cedet/pulse
/home/ott/projects/cedet/common/cedet-cscope hides
/usr/share/emacs/24.0.90/lisp/cedet/cedet-cscope
/home/ott/projects/cedet/srecode/srecode hides
/usr/share/emacs/24.0.90/lisp/cedet/srecode
/home/ott/projects/cedet/common/cedet-global hides
/usr/share/emacs/24.0.90/lisp/cedet/cedet-global
/home/ott/projects/cedet/common/cedet hides
/usr/share/emacs/24.0.90/lisp/cedet/cedet
Features:
(shadow sort mail-extr message rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader emacsbug
semantic-el semantic-bovine bovine-debug semantic-debug cmake-mode
ede-dired epa-dired doc-view jka-compr image-mode paredit vc-svn
conf-mode footnote longlines nxml-uchnm rng-xsd xsd-regexp rng-cmpct
rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt
rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util
nxml-glyph nxml-enc xmltok ede-locate locate semantic-tag-file
semanticdb-file cedet-files semantic-c hideif semantic-c-by gtags
subword vc-git xgit-dvc xgit xgit-annotate rect dvc-annotate xgit-log
tla smerge-mode newcomment dvc-state dvc-config dvc-diff dvc-fileinfo
diff sendmail rfc2047 rfc2045 ietf-drums mail-utils tla-gnus dvc-gnus
dvc-cmenu dvc-about dvc-version dvc-revlist uniquify org-wl org-w3m
org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html
format-spec org-exp ob-exp org-exp-blocks org-agenda org-info org-gnus
org-docview org-bibtex bibtex org-bbdb ede-linux ede-emacs bzr-core
tla-core tla-autoconf tla-defs dvc-log ffap xdarcs-core xgit-core
xhg-core xmtn-minimal autoinsert flyspell ispell desktop sigdb-mode
iswitchb server epa-setup epa-file epa epg epg-config epg-package-info
jabber-autoaway jabber-chatbuffer jabber-bookmarks jabber-widget
jabber-disco jabber-menu jabber-iq jabber-core jabber-console sgml-mode
jabber-keymap jabber-sasl sasl sasl-anonymous sasl-login sasl-plain fsm
jabber-conn srv dns starttls tls jabber-logon jabber-xml xml jabber-util
jabber-private magit-svn magit magit-bisect magit-key-mode git mercurial
vc ediff-merg ediff-diff ediff-wind ediff-help ediff-util ediff-mult
ediff-init ediff vc-dispatcher slime-banner slime-asdf slime-fancy
slime-fontifying-fu slime-package-fu slime-references slime-scratch
slime-presentations slime-fuzzy slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-parse slime-repl
swank-clojure clojure-mode rx slime apropos hideshow pp hyperspec
inf-lisp swank-clojure-autoload quack cmuscheme scheme info-look c-eldoc
go-mode-load dokuwiki skeleton simple-wiki moinmoin-mode screen-lines
muse-docbook muse-texinfo texnfo-upd texinfo muse-latex muse-wiki
muse-colors muse-html muse-xml-common cus-edit muse-publish muse-project
muse-protocols muse-regexps muse muse-nested-tags muse-mode ob-sh ob-R
ob-C cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine ob-haskell ob-clojure remember org-remember org-datetree
diary-lib diary-loaddefs time-stamp blorg org ob-emacs-lisp ob-tangle
ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys ob ob-eval
org-pcomplete org-list org-faces org-compat org-entities org-macs
noutline outline cal-menu calendar cal-loaddefs paren time tree-widget
chm-view htmlize delsel quail .loaddefs dvc-unified dvc-tips dired-x
json elein yasnippet dropdown-list remember-autoloads planner-autoloads
dvc-autoloads dvc-core dvc-lisp dvc-buffers dvc-ui dvc-register
dvc-utils dvc-emacs dvc-defs dvc-site geiser-load geiser url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-util
url-parse auth-source gnus-util password-cache url-vars mm-util
mail-prsvr mailcap xml-parse doxymacs ahg generic grep log-edit
pcvs-util add-log diff-mode jabber-autoloads ess-toolbar ess-mouse
mouseme thingatpt browse-url ess-menu ess-swv ess-noweb
noweb-font-lock-mode ess-bugs-l essd-els ess-sas-d ess-sas-l ess-sas-a
executable shell pcomplete ess-arc-d ess-vst-d ess-xls-d ess-lsp-l
ess-sta-d ess-sta-l cc-vars cc-defs make-regexp ess-sp6-d ess-sp5-d
ess-sp3-d ess-r-d ess-r-args ess-s-l ess-inf ess-utils ess-mode
noweb-mode ess ess-custom ess-compat ess-site bbdb-autoloads bbdb
timezone distel-ie edb ewoc patmatch erl-service derl erlext epmd
net-fsm erl distel easy-mmode erlang etags tempo scala-mode-auto
preview-latex tex-site auto-loads org-install sb-info info el-get
help-mode view autoload package tabulated-list dired erlang-flymake
flymake erlang-start semantic-clang compile comint regexp-opt
ede-cpp-root ede-generic semantic-lex-spp semanticdb-ectag
semantic-ectag-lang semantic-ectag-parse semantic-ectag-util
semanticdb-global semantic-symref-global semantic-symref cedet-global
semantic-fold semantic-tag-folding cus-start cus-load eassist edmacro
kmacro semantic-ia semantic-gcc semantic-dep srecode-mode cogre-srecode
semantic-edit srecode-template-mode srecode-template srecode-template-wy
semantic-wisent wisent srecode-map srecode-insert srecode-args
srecode-dictionary srecode-find srecode-ctxt srecode-compile
srecode-table semantic-decorate-include semanticdb-find
semantic-decorate-mode semantic-decorate pulse semantic-m3
semantic-analyze-refs cedet-m3 semantic-mru-bookmark semanticdb-mode
semantic-idle eldoc senator ring which-func semantic-imenu semantic-sb
imenu cedet cedet-contrib-load contrib-loaddefs cogre-load
cogre-loaddefs speedbar-load speedbar-loaddefs ede-load ede-loaddefs
ede-speedbar ede-files ede ede-base ede-auto eieio-speedbar
semantic-ia-sb semantic-analyze semantic-scope semantic-analyze-fcn
semantic-sort semanticdb-javap cedet-java semanticdb-el semanticdb-ref
semantic-find semanticdb semantic-ctxt semantic-format
semantic-util-modes semantic-util semantic semantic-lex semantic-tag-ls
semantic-tag working fame speedbar sb-image ezimage dframe easymenu
assoc eieio-custom wid-edit ede-source eieio-base srecode-load srecode
srecode-loaddefs semantic-load semantic-fw semantic-loaddefs mode-local
find-func derived eieio-load eieio-loaddefs cedet-load cedet-compat
cedet-loaddefs eieio warnings advice help-fns advice-preload byte-opt
bytecomp byte-compile cconv macroexp inversion cl time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer loaddefs button faces cus-face files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)
--
With best wishes, Alex Ott
http://alexott.net/
Tiwtter: alexott_en (English), alexott (Russian)
Skype: alex.ott
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 7:02 bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file Alex Ott
@ 2011-09-28 7:39 ` Eli Zaretskii
2011-09-28 7:48 ` Alex Ott
2011-09-28 7:48 ` Alex Ott
0 siblings, 2 replies; 9+ messages in thread
From: Eli Zaretskii @ 2011-09-28 7:39 UTC (permalink / raw)
To: Alex Ott; +Cc: 9624
> Date: Wed, 28 Sep 2011 09:02:07 +0200
> From: Alex Ott <alexott@gmail.com>
>
> Emacs crashes when I trying to open any "complex" .muse file with some
> markup inside -- I tried to open files in English & Russian and in both
> cases Emacs crashes in BIDI code. I can provide example files if needed.
Please do provide example files. Even if I can intuit the cause of
the problem, I need the examples to verify the fix.
Thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 7:39 ` Eli Zaretskii
@ 2011-09-28 7:48 ` Alex Ott
2011-09-28 7:48 ` Alex Ott
1 sibling, 0 replies; 9+ messages in thread
From: Alex Ott @ 2011-09-28 7:48 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 9624
[-- Attachment #1: Type: text/plain, Size: 701 bytes --]
Examples are attached
On Wed, Sep 28, 2011 at 9:39 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>> Date: Wed, 28 Sep 2011 09:02:07 +0200
>> From: Alex Ott <alexott@gmail.com>
>>
>> Emacs crashes when I trying to open any "complex" .muse file with some
>> markup inside -- I tried to open files in English & Russian and in both
>> cases Emacs crashes in BIDI code. I can provide example files if needed.
>
> Please do provide example files. Even if I can intuit the cause of
> the problem, I need the examples to verify the fix.
>
> Thanks.
>
--
With best wishes, Alex Ott
http://alexott.net/
Tiwtter: alexott_en (English), alexott (Russian)
Skype: alex.ott
[-- Attachment #2: index.html --]
[-- Type: text/html, Size: 6654 bytes --]
[-- Attachment #3: ClojureProtocols.muse --]
[-- Type: application/octet-stream, Size: 27588 bytes --]
#title Типы и протоколы в Clojure
#keywords clojure, кложура, datatype, protocol, defprotocol, reify
Одно из самых больших изменений в Clojure версии 1.2 -- введение в язык новых артефактов:
протоколов (protocols) и типов данных (datatypes). Данные изменения позволяют улучшить
производительность программ по сравнению с мультиметодами, что в будущем даст возможность
написать Clojure на Clojure (в данный момент протоколы и типы данных уже активно
используются при реализации Clojure).
<contents>
* Что это такое и зачем нужно?
Протоколы и типы данных -- два связанных друг с другом понятия. Протоколы используются
для определения полиморфных функций, которые затем могут быть реализованы для конкретных
типов данных (в том числе и из других библиотек).
Существует несколько причин введения протоколов и типов данных в новую версию языка:
- Увеличить скорость работы полиморфных функций, при этом поддерживая большую часть
функциональности мультиметодов, поскольку для протоколов диспатчеризация выполняется
только по типу данных;
- Использовать лучшие стороны интерфейсов (только спецификация функций, без реализации,
реализация нескольких интерфейсов одним типом), в тоже время избегая недостатков
(список реализуемых интерфейсов задан во время реализации типа данных, создание
иерархии типов вида =isa/instanceof=);
- Избежать [[http://en.wikipedia.org/wiki/Expression_Problem][Expression problem]] и дать возможность расширять набор операций над типами
данных без изменениях определения типов данных (в том числе и чужих) и перекомпиляции
исходного кода[1];
- Использовать высокоуровневые абстракции для типов данных и операций над ними[2], что
упрощает проектирование программ.
Также как и интерфейсы, протоколы позволяют объединить объявление нескольких полиморфных
функций (или одной функции) в один объект[3]. Отличием от интерфейсов является то, что вы
не можете унаследовать новый протокол от существующего протокола.
В отличии от имеющегося в Clojure =gen-interface= (и соответствующих =proxy/gen-class=)
определение протоколов и типов не требует AOT (ahead-of-time) компиляции исходного кода,
что упрощает распространение программ на Clojure. Однако при определении протокола,
Clojure автоматически создает соответствующий интерфейс, который будет доступен для кода,
написанного на Java.
Типы данных, определенные с помощью =deftype= или =defrecord= позволяют программисту на
Clojure определять свои структуры данных, вместо использования обычных отображений и
структур, но об этом [[#datatypes][ниже]].
*Важно помнить, что протоколы и типы данных с одним и тем же именем могут быть определены в
разных пространствах имен, так что стоит быть осторожным и не наделать ошибок при импорте
определений и последующей реализации протоколов!*
* Определение протоколов
Протоколом называется именованный набор функций с определенными сигнатурами. Для
определения используется макрос, применение которого выглядит следующим образом:
<src lang="clojure">
(defprotocol название "описание" & сигнатуры)
</src>
=название= -- единственный обязательный параметр, хотя определение протокола без функций не
имеет особого смысла. В описании вы можете описать ваш протокол, и это описание будет
показываться при вызове функции =doc= для вашего протокола. Для протокола вы можете указать
одну или несколько сигнатур функций, где каждая сигнатура выглядит следующим образом:
<src lang="clojure">
(имя [аргументы+]+ "описание")
</src>
Вы можете определять одну функцию, которая будет принимать различное количество
параметров, но первым аргументом функции всегда является объект, на основании которого
будет выполняться диспатчеризация, и к которому эта функция будет применяться. Вы можете
рассматривать его как =this= в Java и C++. В дополнение к сигнатурам, вы можете описать
вашу функцию, но это необязательно.
Давайте посмотрим на стандартный пример:
<src lang="clojure">
(defprotocol AProtocol
"A doc string for AProtocol abstraction"
(bar [a b] "bar docs")
(baz [a] [a b] [a b c] "baz docs"))
</src>
Данный протокол определяет две функции: =bar= -- с двумя параметрами, и =baz= -- с одним,
двумя или тремя параметрами.
=defprotocol= также создаст соответствующий интерфейс, с тем же самым именем что и протокол.
Данный интерфейс будет иметь те же самые функции, что и протокол.
* Реализация протоколов
Протокол сам по себе ни на что не влияет -- чтобы использовать его, мы должны добавить его
специализации для типов данных или классов JVM. Для этого может использоваться функция
=extend=, использование которой выглядит следующим образом:
<src lang="clojure">
(extend тип-или-класс
протокол-1
{:метод-1 уже-определенная-функция
:метод-2 (fn [a b] ...)
:метод-3 (fn ([a]...) ([a b] ...)...)}
протокол-2
{...}
...)
</src>
Для этой функции вы указываете имя типа данных или класса (или =nil=), и передаете список
состоящий из названий протоколов (=протокол-1= и т.д.) и отображений, которые связывают
функции протокола (=метод-1= и т.д.) с их реализациями -- анонимными или именованными
функциями.
Стоит отметить, что функция =extend= является низкоуровневым инструментом реализации
протоколов. Кроме этого, в состав языка введены макросы =extend-protocol= & =extend-type=,
которые немного упрощают реализацию протоколов[4]. Протокол также может быть реализован
непосредственно при [[#datatypes][объявлении типа данных]].
Использование =extend-type= выглядит практически также как и использование =extend=, но
пользователь записывает реализации в более удобном виде (=extend-type= раскрывается в
соответствующий вызов =extend=):
<src lang="clojure">
(extend-type тип-или-класс
протокол-1
(метод-2 [a b] ...)
(метод-3 ([a]...)
([a b] ...)...)
протокол-2
(....)
...)
</src>
Макрос =extend-protocol= использоваться в тех случаях, если вы хотите реализовать один
протокол для нескольких типов данных или классов. В общем виде использование
=extend-protocol= выглядит следующим образом:
<src lang="clojure">
(extend-protocol название-протокола
Тип-или-Класс-1
(метод-1 ...)
(метод-2 ...)
Тип-или-Класс-2
(метод-1 ...)
(метод-2 ...)
...)
</src>
При использовании, =extend-protocol= раскрывается в серию вызовов =extend-type= для каждого из
используемых типов.
Давайте рассмотрим небольшой пример. Пусть мы объявим следующий простой протокол:
<src lang="clojure">
(defprotocol Hello "Test of protocol"
(hello [this] "hello function"))
</src>
Мы можем использовать =extend=, =extend-protocol=, или =extend-type= для его специализации для
класса =String=:
<src lang="clojure">
(extend String
Hello
{:hello (fn [this] (str "Hello " this "!"))})
(extend-protocol Hello String
(hello [this] (str "Hello " this "!")))
(extend-type String Hello
(hello [this] (str "Hello " this "!")))
</src>
При использовании любой из этих реализаций для объекта класса =String= мы получим один и тот
же ответ:
<src lang="clojure">
user> (hello "world")
"Hello world!"
</src>
Стоит отметить, что если вы не реализовали протокол для определенного типа данных, то при
вызове функции будет сгенерировано исключение. В том случае, если вам необходима
"реализация по умолчанию", то вы можете специализировать протокол для класса =Object=.
#datatypes
* Определение типов данных
В Clojure 1.2 введены два метода определения новых именованных типов данных (=deftype= и
=defrecord=), которые реализуют абстракции, определенные протоколами и/или интерфейсами (к
типам данных относится также =reify=, который описан ниже).
=deftype= и =defrecord= динамически создают именованный класс, который имеет набор заданных
полей и (необязательно) методов для одного или нескольких протоколов и/или интерфейсов.
Поскольку они не требуют явной компиляции, то это дает возможность их использования в
интерактивной разработке. С точки зрения разработчика =deftype= и =defrecord= похожи на
=defstruct=, но во многом они отличаются:
- они создают уникальный класс с соответствующими полями;
- созданный класс имеет конкретный тип;
- имеется конструктор;
- для полей можно указывать типы (это будет использоваться для оптимизации и ограничения
типов в конструкторе).
=deftype= является "базовым" инструментом для определения типов данных -- созданный тип
имеет только конструктор, и ничего больше -- все остальное должен реализовывать
разработчик. Но при этом, =deftype= может иметь изменяемые поля, чего не имеет =defrecord=.
В отличии от =deftype=, =defrecord= более прост в использовании, поскольку создаваемый тип
данных имеет большую функциональность (по большей части за счет реализации интерфейсов
=IKeywordLookup=, =IPersistentMap=, =Serializable= и т.д.):
- автоматически генерируемые функции =hashCode= и =equals=;
- возможность указания мета-информации;
- доступ к полям с помощью ключевых символов;
- вы можете добавлять поля, не указанные в определении.
=deftype= и =defrecord= обычно имеют разные области применения: =deftype= в основном
используется для "системных" вещей -- коллекций, и т.п., тогда как =defrecord= в основном
используется для хранения информации из "проблемной области" -- данных о заказчиках,
записях в БД и т.п. -- то, для чего использовались отображения в версиях 1.0 и 1.1.
Давайте рассмотрим как использовать конкретные средства для создания типов данных.
** deftype & defrecord
В общей форме использование макросов =deftype= и =defrecord= выглядит следующим образом:
<src>
(deftype имя [& поля] & спецификации)
(defrecord имя [& поля] & спецификации)
</src>
Для обоих макросов обязательным параметром является лишь имя, которое становится именем
класса. Поля, которые станут членами класса, перечисляются в векторе, следующем за
именем, и могут содержать объявления типов. После этого вектора, можно указать список
реализуемых интерфейсов и протоколов, вместе с реализацией (это не обязательно, поскольку
для этого вы позже можете использовать =extend-protocol= & =extend-type=).
Спецификации протоколов/интерфейсов выглядят следующим образом:
<src>
протокол/интерфейс
(название-метода [аргументы*] реализация)*
</src>
Вы можете указать любое количество протоколов/интерфейсов, которые будут реализованы
данным типом данных. Давайте посмотрим на простейший тип данных, который реализует
протокол =Hello=:
<src lang="clojure">
(deftype A []
Hello
(hello [this] (str "Hello A!")))
</src>
Мы можем вызвать функцию =hello= для нашего объекта, и получим следующий вывод:
<src lang="clojure">
user> (hello (A.))
"Hello A!"
</src>
Мы можем также создать тип с помощью =defrecord=:
<src lang="clojure">
(defrecord B [name]
Hello
(hello [this] (str "Hello " name "!")))
</src>
и вызвать метод =hello= для этого типа:
<src lang="clojure">
user> (hello (B. "world"))
"Hello world!"
</src>
Как уже отмечалось выше, создаваемые поля по умолчанию являются неизменяемыми, но если вы
создаете тип с помощью =deftype=, то вы можете пометить некоторые поля как изменяемые,
используя метаданные (с помощью ключевого символа =:volatile-mutable= или
=:unsynchronized-mutable=). Для таких полей вы сможете использовать оператор =(set! afield
aval)= для изменения данных. Давайте посмотрим как это делается на примере -- если мы
создадим следующий протокол и тип данных:
<src lang="clojure">
(defprotocol Setter
(set-name [this new-name]))
(deftype AM [^{:volatile-mutable true} mfield]
Hello
(hello [this] (str "Hello " mfield "!"))
Setter
(set-name [this new-name] (set! mfield new-name)))
</src>
то мы сможем изменять значение поля:
<src>
user> (def am (AM. "world"))
#'user/am
user> (hello am)
"Hello world!"
user> (set-name am "peace")
"peace"
user> (hello am)
"Hello peace!"
</src>
** reify
=reify= используется тогда, когда вам нужно реализовать протокол или интерфейс только в
одном месте -- когда вы используете =reify= вы одновременно объявляете тип, и сразу создаете
объект этого типа. Функция =reify= по своему использованию очень похожа на =proxy=, но с
некоторыми исключениями:
- можно использовать только для интерфейсов и протоколов;
- реализуемые методы являются методами результирующего класса, и они вызываются напрямую,
без поиска в отображении, но при этом не поддерживается подмена методов в отображении.
Эти отличия позволяют получить более высокую производительность по сравнению с =proxy=, и
при создании и при выполнении.
Вот небольшой пример реализации протокола =Hello= для конкретного объекта:
<src lang="clojure">
(def int-reify (reify Hello
(hello [this] "Hello integer!")))
</src>
И при вызове =hello= для этого объекта, мы получим соответствующий результат:
<src lang="clojure">
user> (hello int-reify)
"Hello integer!"
</src>
* Дополнительные функции и макросы
Для работы с протоколами и типами данных определено некоторое количество вспомогательных
функций, которые могут вам понадобиться:
=extends?= :: возвращает =true= если данный тип данных (2-й аргумент) реализует интерфейс,
заданный первым аргументом;
=extenders= :: возвращает коллекцию типов, реализующих заданный протокол;
=satisfies?= :: возвращает =true= если данный протокол (1-й аргумент) применим к данному
объекту (2-й аргумент);
* Дополнительная информация
Как всегда, основной источник информации -- сайт языка: ознакомьтесь с разделами [[http://clojure.org/protocols][protocols]]
и [[http://clojure.org/datatypes][datatypes]]. Хорошее описание протоколов и типов данных можно найти в 13-й главе недавно
вышедшей книги [[http://www.amazon.com/gp/product/1430272317?ie=UTF8&tag=aleottshompag-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430272317][Practical Clojure. The Definitive Guide]], а также в [[http://www.amazon.com/gp/product/1935182595?ie=UTF8&tag=aleottshompag-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1935182595][Clojure in Action]] и
[[http://www.amazon.com/gp/product/1935182641?ie=UTF8&tag=aleottshompag-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1935182641][The Joy of Clojure. Thinking the Clojure Way]], которые будут выпущены в ближайшее время.
Stuart Halloway создал очень [[http://vimeo.com/11236603][интересный скринкаст]] в котором он рассказывает о том, зачем
были созданы протоколы и data types, и демонстрирует их применение на небольших примерах.
Введение новых возможностей в язык не обходится без статей в блогах. Вот ссылки на
некоторые интересные статьи на эту тему:
- [[http://www.ibm.com/developerworks/java/library/j-clojure-protocols/index.html][Статья Stuart Sierra]] на IBM developerWorks;
- [[http://www.infoq.com/presentations/Clojure-Expression-Problem][Clojure's Solutions to the Expression Problem]] -- выступление Chris Houser на
конференции Strange Loop 2010;
- Серия из 3-х статей ([[http://www.objectcommando.com/blog/2010/03/26/clojure-protocols-part-1/][1]], [[http://www.objectcommando.com/blog/2010/03/29/clojure-protocols-part-2/][2]], [[http://www.objectcommando.com/blog/2010/04/12/clojure-protocols-part-3/][3]]) о протоколах в блоге Object Commando;
- [[http://freegeek.in/blog/2010/05/clojure-protocols-datatypes-a-sneak-peek/][Краткое введение]] в протоколы, написанное Baishampayan Ghose;
- [[http://formpluslogic.blogspot.com/2010/08/clojure-protocols-and-expression.html][Clojure Protocols and Expression Problem]];
- Два постинга от Sean Devlin -- [[http://fulldisclojure.blogspot.com/2010/08/thoughts-on-protocols.html][Protocol Implementation Awesomeness]] и
[[http://fulldisclojure.blogspot.com/2010/08/partially-implemented-protocols.html][Partially Implemented Protocols]];
- [[http://blog.higher-order.net/2010/05/05/circuitbreaker-clojure-1-2/][Пример реализации паттерна "Circuit Breaker"]] с помощью протоколов;
- [[http://kotka.de/blog/2010/03/memoize_done_right.html#protocols][Пример использования протоколов]] для мемоизации;
- [[http://bestinclass.dk/index.clj/2010/04/prototurtle-the-tale-of-the-bleeding-turtle.html][Еще пример]] использования протоколов для реализации turtle graphics;
- [[http://kirindave.tumblr.com/post/658770511/monkey-patching-gorilla-engineering-protocols-in][Небольшое сравнение]] Monkey Patching в Ruby с протоколами в Clojure;
- Пример реализации стека с помощью протоколов ([[http://www.viksit.com/content/stack-implementation-clojure-using-protocols-and-records][1]], [[http://www.viksit.com/content/stack-implementation-clojure-ii-functional-approach][2]]), написанный Viksit Gaur;
; ================================================================================
; - http://gist.github.com/306174 - пример использования протоколов, написанный Rich Hickey
; - http://gist.github.com/420036
; - http://groups.google.com/group/clojure/browse_thread/thread/b8620db0b7424712
; - http://fogus.me/static/preso/clj1.2+/
; - http://www.infoq.com/presentations/Clojure-Expression-Problem - video at StrangeLoop
; - http://debasishg.blogspot.com/2010/08/random-thoughts-on-clojure-protocols.html
; LocalWords: defprotocol reify datatype protocols datatypes data types AOT defrecord
; LocalWords: Halloway Stuart injection patching monkey gen-interface proxy deftype
Footnotes:
[1] Стоит однако отметить, что протоколы не реализуют monkey patching и внедрение методов
(injection) в существующие типы данных.
[2] Возможность реализации абстракций на Clojure и высокая скорость работы протоколов
позволит в будущем написать Clojure на самой Clojure, без использования исходного кода
на Java.
[3] Люди знакомые с Haskell могут рассматривать протоколы как некоторое подобие типов
классов (typeclasses) в этом языке, правда при этом нельзя определять реализации по
умолчанию для методов.
[4] Но =extend= может использоваться в тех случаях, когда вы хотите использовать одни и те
же реализации для разных типов данных -- в этом случае, вы можете создать отображение
с нужными функциями, и использовать его для разных типов, например, как описано в
[[http://fulldisclojure.blogspot.com/2010/08/thoughts-on-protocols.html][следующем блог-постинге]].
; LocalWords: gen-class ahead-of-time instanceof extend-type extend-protocol Object
; LocalWords: String this extend
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 7:39 ` Eli Zaretskii
2011-09-28 7:48 ` Alex Ott
@ 2011-09-28 7:48 ` Alex Ott
2011-09-28 8:54 ` Eli Zaretskii
1 sibling, 1 reply; 9+ messages in thread
From: Alex Ott @ 2011-09-28 7:48 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 9624
[-- Attachment #1: Type: text/plain, Size: 718 bytes --]
Sorry, attached .html instead of .muse
On Wed, Sep 28, 2011 at 9:39 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>> Date: Wed, 28 Sep 2011 09:02:07 +0200
>> From: Alex Ott <alexott@gmail.com>
>>
>> Emacs crashes when I trying to open any "complex" .muse file with some
>> markup inside -- I tried to open files in English & Russian and in both
>> cases Emacs crashes in BIDI code. I can provide example files if needed.
>
> Please do provide example files. Even if I can intuit the cause of
> the problem, I need the examples to verify the fix.
>
> Thanks.
>
--
With best wishes, Alex Ott
http://alexott.net/
Tiwtter: alexott_en (English), alexott (Russian)
Skype: alex.ott
[-- Attachment #2: index.muse --]
[-- Type: application/octet-stream, Size: 2109 bytes --]
#title Alex Ott's home page (English)
#keywords home page, emacs, linux, programming, c++, functional programming, scheme, lisp, common lisp, haskell, ocaml, articles
* Short information about me
**Name**: Alexey (Alex) Ott<br>
**Age**: 35<br>
**E-mail**: [[mailto:alexott@gmail.com][alexott@gmail.com]]<br>
**Jabber**: [[xmpp://alexott@gmail.com][alexott@gmail.com]]<br>
**Live in**: Germany
Other my personal information you can find in my profile at [[https://www.plaxo.com/add_me?u=38655136415&v0=861575&k0=1086616232][Plaxo]]. And my *wish lists* are
stored at [[http://amazon.de/gp/registry/wishlist/3GN7PNIFBJSHC][Amazon.de]] & [[http://www.amazon.co.uk/wishlist/T6DNC3CKUHZ2][Amazon UK]].
You can also look into my [[alexott-cv-en][CV]] ([[alexott-cv-en.pdf][PDF]]). And also, my professional information you can find at
[[http://www.linkedin.com/in/alexott][LinkedIn]].
You can read what i do in my [[http://alexott.blogspot.com/][personal blog]], and also at some [[./internet][other Internet resources]].
* What i do
My main work -- development of software, starting from architect it, and finishing in
implementation and marketing activity. Besides this i do consulting of external projects.
Currently my specialization are information security and [[cf/index][content filtering]].
At work and at home i working on different projects, using different programming
languages. My main languages are [[cpp/index][C & C++]], but i also use [[./clojure][Clojure]], Lisp, Scheme, Haskell,
and other [[fp/index][functional programming]] languages.
For a long time (more than 10 years) i working with Unix-like operating systems -- Linux,
Solaris, HP-UX, FreeBSD, and Mac OS X.
I also use [[emacs/index][Emacs editor]], for performing most of my tasks -- from programming to mail
reading and Internet surfing.
I also wrote many articles on different themes -- about content filtering, Emacs editor
and programming. List of articles you can find in [[writings/index]["Articles" section]].
Besides articles, i working on different [[oss/index][open source projects]].
; LocalWords: OCaml
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 7:48 ` Alex Ott
@ 2011-09-28 8:54 ` Eli Zaretskii
2011-09-28 10:20 ` Alex Ott
0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2011-09-28 8:54 UTC (permalink / raw)
To: Alex Ott; +Cc: 9624
> Date: Wed, 28 Sep 2011 09:48:53 +0200
> From: Alex Ott <alexott@gmail.com>
> Cc: 9624@debbugs.gnu.org
>
> Sorry, attached .html instead of .muse
Thanks, but I'm unable to reproduce the crash on my system. I'm
probably doing something wrong.
I downloaded muse-3.20, fired up "emacs -Q", and evaluated the forms
shown here:
http://mwolson.org/static/doc/muse.html#Loading-Muse
Then I visited the 2 *.muse files you sent, and they displayed
correctly without any crash. I'm probably missing some crucial steps.
So please instruct me how to reproduce the crash starting from
"emacs -Q", assuming that I have muse in a separate directory.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 8:54 ` Eli Zaretskii
@ 2011-09-28 10:20 ` Alex Ott
2011-09-28 10:35 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Alex Ott @ 2011-09-28 10:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 9624
It reproducible with following config:
--------------------------------------------------------------------------------------------------------------------------------------------------
(add-to-list 'load-path "~/projects/muse.el/lisp")
(require 'muse-mode) ; load authoring mode
(require 'muse-html) ; load publishing styles I use
(require 'muse-colors)
(require 'muse-wiki)
(require 'muse-latex)
(require 'muse-texinfo)
(require 'muse-docbook)
(require 'muse-project)
(defun alexott/muse-mode-hook ()
(auto-fill-mode -1)
(longlines-mode)
)
(add-hook 'muse-mode-hook 'alexott/muse-mode-hook)
(setq longlines-show-hard-newlines t)
--------------------------------------------------------------------------------------------------------------------------------------------------
Real problem is in longlines-mode - when I enable it in hook, and
longlines-show-hard-newlines is set to true, then Emacs will crash
On Wed, Sep 28, 2011 at 10:54 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>> Date: Wed, 28 Sep 2011 09:48:53 +0200
>> From: Alex Ott <alexott@gmail.com>
>> Cc: 9624@debbugs.gnu.org
>>
>> Sorry, attached .html instead of .muse
>
> Thanks, but I'm unable to reproduce the crash on my system. I'm
> probably doing something wrong.
>
> I downloaded muse-3.20, fired up "emacs -Q", and evaluated the forms
> shown here:
>
> http://mwolson.org/static/doc/muse.html#Loading-Muse
>
> Then I visited the 2 *.muse files you sent, and they displayed
> correctly without any crash. I'm probably missing some crucial steps.
>
> So please instruct me how to reproduce the crash starting from
> "emacs -Q", assuming that I have muse in a separate directory.
>
--
With best wishes, Alex Ott
http://alexott.net/
Tiwtter: alexott_en (English), alexott (Russian)
Skype: alex.ott
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 10:20 ` Alex Ott
@ 2011-09-28 10:35 ` Eli Zaretskii
2011-09-28 14:38 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2011-09-28 10:35 UTC (permalink / raw)
To: Alex Ott; +Cc: 9624
> Date: Wed, 28 Sep 2011 12:20:09 +0200
> From: Alex Ott <alexott@gmail.com>
> Cc: 9624@debbugs.gnu.org
>
> It reproducible with following config:
>
> --------------------------------------------------------------------------------------------------------------------------------------------------
> (add-to-list 'load-path "~/projects/muse.el/lisp")
>
> (require 'muse-mode) ; load authoring mode
> (require 'muse-html) ; load publishing styles I use
> (require 'muse-colors)
> (require 'muse-wiki)
> (require 'muse-latex)
> (require 'muse-texinfo)
> (require 'muse-docbook)
> (require 'muse-project)
>
> (defun alexott/muse-mode-hook ()
> (auto-fill-mode -1)
> (longlines-mode)
> )
> (add-hook 'muse-mode-hook 'alexott/muse-mode-hook)
>
> (setq longlines-show-hard-newlines t)
> --------------------------------------------------------------------------------------------------------------------------------------------------
>
> Real problem is in longlines-mode - when I enable it in hook, and
> longlines-show-hard-newlines is set to true, then Emacs will crash
Thanks, I can reproduce the crash now.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 10:35 ` Eli Zaretskii
@ 2011-09-28 14:38 ` Eli Zaretskii
2011-09-28 14:56 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2011-09-28 14:38 UTC (permalink / raw)
To: alexott, 9624
> Date: Wed, 28 Sep 2011 13:35:50 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 9624@debbugs.gnu.org
>
> > (add-to-list 'load-path "~/projects/muse.el/lisp")
> >
> > (require 'muse-mode) ; load authoring mode
> > (require 'muse-html) ; load publishing styles I use
> > (require 'muse-colors)
> > (require 'muse-wiki)
> > (require 'muse-latex)
> > (require 'muse-texinfo)
> > (require 'muse-docbook)
> > (require 'muse-project)
> >
> > (defun alexott/muse-mode-hook ()
> > (auto-fill-mode -1)
> > (longlines-mode)
> > )
> > (add-hook 'muse-mode-hook 'alexott/muse-mode-hook)
> >
> > (setq longlines-show-hard-newlines t)
> > --------------------------------------------------------------------------------------------------------------------------------------------------
> >
> > Real problem is in longlines-mode - when I enable it in hook, and
> > longlines-show-hard-newlines is set to true, then Emacs will crash
>
> Thanks, I can reproduce the crash now.
Fixed in revision 105950 on the trunk.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file
2011-09-28 14:38 ` Eli Zaretskii
@ 2011-09-28 14:56 ` Eli Zaretskii
0 siblings, 0 replies; 9+ messages in thread
From: Eli Zaretskii @ 2011-09-28 14:56 UTC (permalink / raw)
To: alexott, 9624-done
> Date: Wed, 28 Sep 2011 17:38:56 +0300
> From: Eli Zaretskii <eliz@gnu.org>
>
> Fixed in revision 105950 on the trunk.
Bug closed.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-09-28 14:56 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-28 7:02 bug#9624: 24.0.90; Emacs crashes in BIDI code when trying to open Muse file Alex Ott
2011-09-28 7:39 ` Eli Zaretskii
2011-09-28 7:48 ` Alex Ott
2011-09-28 7:48 ` Alex Ott
2011-09-28 8:54 ` Eli Zaretskii
2011-09-28 10:20 ` Alex Ott
2011-09-28 10:35 ` Eli Zaretskii
2011-09-28 14:38 ` Eli Zaretskii
2011-09-28 14:56 ` Eli Zaretskii
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.