summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Allow controlling how many prime bits to use during TLS negotiationLawrence Mitchell2011-07-152-0/+21
|
* * src/doc.c (Fsubstitute_command_keys): Revert last change.Andreas Schwab2011-07-152-2/+6
|
* Clarify that \= only quotes the next characterLars Magne Ingebrigtsen2011-07-152-2/+6
|
* `lexical-binding' doc clarificationLars Magne Ingebrigtsen2011-07-152-3/+11
| | | | | | | | * lread.c (syms_of_lread): Clarify that is isn't only `eval-buffer' and `eval-defun' that's affected by `lexical-binding'. Fixes: debbugs:8460
* Fix vertical cursor motion in Speedbar frames under bidi display.Eli Zaretskii2011-07-152-1/+21
| | | | | | src/xdisp.c (move_it_in_display_line_to): Fix vertical motion with bidi redisplay when a line includes both an image and is truncated.
* No need for ChangeLog entry about quickly reverted change.Glenn Morris2011-07-141-3/+0
| | | | (Also confusing since the original ChangeLog entry was removed.)
* Fix minor problems found by static checking.Paul Eggert2011-07-142-2/+9
| | | | | | | | | * bidi.c (bidi_cache_size): Now EMACS_INT, not size_t. (elsz): Now a signed constant, not a size_t var. We prefer signed types to unsigned, to avoid integer comparison confusion. Without this change, GCC 4.6.1 with -Wunsafe-loop-optimizations complains "cannot optimize loop, the loop counter may overflow", a symptom of the confusion.
* * indent.c (Fvertical_motion): Mark locals as initialized.Paul Eggert2011-07-142-1/+2
|
* * xdisp.c (reseat_to_string): Fix pointer signedness issue.Paul Eggert2011-07-142-1/+5
|
* * data.c (Fcdr, Fcar): Revert the last change, since it didn't really ↵Lars Magne Ingebrigtsen2011-07-142-6/+5
| | | | clarify much.
* Mention `case-fold-search' in all the re_search_* functionsLars Magne Ingebrigtsen2011-07-142-0/+19
| | | | Fixes: debbugs:8138
* * keyboard.c (Fopen_dribble_file): Document when the file is closed.Lars Magne Ingebrigtsen2011-07-142-1/+7
| | | | Fixes: debbugs:8056
* * data.c (car, cdr): add functionality hints to documentation.Adam Sjøgren2011-07-142-2/+6
|
* Fix format conversion in bidi.c.Eli Zaretskii2011-07-142-1/+4
| | | | | src/bidi.c (bidi_dump_cached_states): Fix format of displaying bidi_cache_idx.
* Support bidi reordering of overlay and display strings.Eli Zaretskii2011-07-148-606/+1971
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix bugs #7616, #8133, #8867. src/xdisp.c (compute_display_string_pos) (compute_display_string_end): Accept additional argument STRING. (init_iterator, reseat_1): Initialize bidi_it->string.s to NULL. (reseat_to_string): Initialize bidi_it->string.s and bidi_it->string.schars. (Fcurrent_bidi_paragraph_direction): Initialize itb.string.s to NULL (avoids a crash in bidi_paragraph_init). Initialize itb.string.lstring. (init_iterator): Call bidi_init_it only of a valid buffer position was specified. Initialize paragraph_embedding to L2R. (reseat_to_string): Initialize the bidi iterator. (display_string): If we need to ignore text properties of LISP_STRING, set IT->stop_charpos to IT->end_charpos. (The original value of -1 will not work with bidi.) (compute_display_string_pos): First arg is now struct `text_pos *'; all callers changed. Support display properties on Lisp strings. (compute_display_string_end): Support display properties on Lisp strings. (init_iterator, reseat_1, reseat_to_string): Initialize the string.bufpos member to 0 (zero, for compatibility with IT_CHARPOS when iterating on a string not from display properties). (compute_display_string_pos, compute_display_string_end): Fix calculation of the object to scan. Fixes an error when using arrow keys. (next_element_from_buffer): Don't abort when IT_CHARPOS is before base_level_stop; instead, set base_level_stop to BEGV. Fixes crashes in vertical-motion. (next_element_from_buffer): Improve commentary for when the iterator is before prev_stop. (init_iterator): Initialize bidi_p from the default value of bidi-display-reordering, not from buffer-local value. Use the buffer-local value only if initializing for buffer iteration. (handle_invisible_prop): Support invisible properties on strings that are being bidi-reordered. (set_iterator_to_next): Support bidi reordering of C strings and Lisp strings. (next_element_from_string): Support bidi reordering of Lisp strings. (handle_stop_backwards): Support Lisp strings as well. (display_string): Support display of R2L glyph rows. Use IT_STRING_CHARPOS when displaying from a Lisp string. (init_iterator): Don't initialize it->bidi_p for strings here. (reseat_to_string): Initialize it->bidi_p for strings here. (next_element_from_string, next_element_from_c_string) (next_element_from_buffer): Add xassert's for correspondence between IT's object being iterated and it->bidi_it.string structure. (face_before_or_after_it_pos): Support bidi iteration. (next_element_from_c_string): Handle the case of the first string character that is not the first one in the visual order. (get_visually_first_element): New function, refactored from common parts of next_element_from_buffer, next_element_from_string, and next_element_from_c_string. (tool_bar_lines_needed, redisplay_tool_bar) (display_menu_bar): Force left-to-right direction. Add a FIXME comment for making that be controlled by a user option. (push_it, pop_it): Save and restore the state of the bidi iterator. Save and restore the bidi_p flag. (pop_it): Iterate out of display property for string iteration as well. (iterate_out_of_display_property): Support iteration over strings. (handle_single_display_spec): Set up it->bidi_it for iteration over a display string, and call bidi_init_it. (handle_single_display_spec, next_overlay_string) (get_overlay_strings_1, push_display_prop): Set up the bidi iterator for displaying display or overlay strings. (forward_to_next_line_start): Don't use the shortcut if bidi-iterating. (back_to_previous_visible_line_start): If handle_display_prop pushed the iterator stack, restore the internal state of the bidi iterator by calling bidi_pop_it same number of times. (reseat_at_next_visible_line_start): If ON_NEWLINE_P is non-zero, and we are bidi-iterating, don't decrement the iterator position; instead, set the first_elt flag in the bidi iterator, to produce the same effect. (reseat_1): Remove redundant setting of string_from_display_prop_p. (push_display_prop): xassert that we are iterating a buffer. (push_it, pop_it): Save and restore paragraph_embedding member. (handle_single_display_spec, next_overlay_string) (get_overlay_strings_1, reseat_1, reseat_to_string) (push_display_prop): Set up the `unibyte' member of bidi_it.string correctly. Don't assume unibyte strings are not bidi-reordered. (compute_display_string_pos) (compute_display_string_end): Fix handling the case of C string. (push_it, pop_it): Save and restore from_disp_prop_p. (handle_single_display_spec, push_display_prop): Set the from_disp_prop_p flag. (get_overlay_strings_1): Reset the from_disp_prop_p flag. (pop_it): Call iterate_out_of_display_property only if we are popping after iteration over a string that came from a display property. Fix a typo in popping stretch info. Add an assertion for verifying that the iterator position is in sync with the bidi iterator. (handle_single_display_spec, get_overlay_strings_1) (push_display_prop): Fix initialization of paragraph direction for string when that of the parent object is not yet determined. (reseat_1): Call bidi_init_it to resync the bidi iterator with IT's position. (Bug#7616) (find_row_edges): If ROW->start.pos gives position smaller than min_pos, use it as ROW->minpos. (Bug#7616) (handle_stop, back_to_previous_visible_line_start, reseat_1): Reset the from_disp_prop_p flag. (SAVE_IT, RESTORE_IT): New macros. (pos_visible_p, face_before_or_after_it_pos) (back_to_previous_visible_line_start) (move_it_in_display_line_to, move_it_in_display_line) (move_it_to, move_it_vertically_backward, move_it_by_lines) (try_scrolling, redisplay_window, display_line): Use them when saving a temporary copy of the iterator and restoring it back. (back_to_previous_visible_line_start, reseat_1) (init_iterator): Empty the bidi cache "stack". (move_it_in_display_line_to): If iterator ended up at EOL, but we never saw any buffer positions smaller than to_charpos, return MOVE_POS_MATCH_OR_ZV. Fixes vertical cursor motion in bidi-reordered lines. (move_it_in_display_line_to): Record prev_method and prev_pos immediately before the call to set_iterator_to_next. Fixes cursor motion in bidi-reordered lines with stretch glyphs and strings displayed in margins. (Bug#8133) (Bug#8867) Return MOVE_POS_MATCH_OR_ZV only if iterator position is past TO_CHARPOS. (pos_visible_p): Support positions in bidi-reordered lines. Save and restore bidi cache. src/bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int. (bidi_paragraph_info): Delete unused struct. (bidi_cache_idx, bidi_cache_last_idx): Declare EMACS_INT. (bidi_cache_start): New variable. (bidi_cache_reset): Reset bidi_cache_idx to bidi_cache_start, not to zero. (bidi_cache_fetch_state, bidi_cache_search) (bidi_cache_find_level_change, bidi_cache_iterator_state) (bidi_cache_find, bidi_peek_at_next_level) (bidi_level_of_next_char, bidi_find_other_level_edge) (bidi_move_to_visually_next): Compare cache index with bidi_cache_start rather than with zero. (bidi_fetch_char): Accept new argument STRING; all callers changed. Support iteration over a string. Support strings with display properties. Support unibyte strings. Fix the type of `len' according to what STRING_CHAR_AND_LENGTH expects. (bidi_paragraph_init, bidi_resolve_explicit_1) (bidi_resolve_explicit, bidi_resolve_weak) (bidi_level_of_next_char, bidi_move_to_visually_next): Support iteration over a string. (bidi_set_sor_type, bidi_resolve_explicit_1) (bidi_resolve_explicit, bidi_type_of_next_char): ignore_bn_limit can now be zero (for strings); special values 0 and -1 were changed to -1 and -2, respectively. (bidi_char_at_pos): New function. (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak): Call it instead of FETCH_MULTIBYTE_CHAR. (bidi_move_to_visually_next): Abort if charpos or bytepos were not initialized to valid values. (bidi_init_it): Don't initialize charpos and bytepos with invalid values. (bidi_level_of_next_char): Allow the sentinel "position" to pass the test for valid cached positions. Fix the logic for looking up the sentinel state in the cache. GCPRO the Lisp string we are iterating. (bidi_push_it, bidi_pop_it): New functions. (bidi_initialize): Initialize the bidi cache start stack pointer. (bidi_cache_ensure_space): New function, refactored from part of bidi_cache_iterator_state. Don't assume the required size is just one BIDI_CACHE_CHUNK away. (bidi_cache_start_stack, bidi_push_it): Use IT_STACK_SIZE. (bidi_count_bytes, bidi_char_at_pos): New functions. (bidi_cache_search): Don't assume bidi_cache_last_idx is always valid if bidi_cache_idx is valid. (bidi_cache_find_level_change): xassert that bidi_cache_last_idx is valid if it's going to be used. (bidi_shelve_cache, bidi_unshelve_cache): New functions. (bidi_cache_fetch_state, bidi_cache_search) (bidi_cache_find_level_change, bidi_cache_ensure_space) (bidi_cache_iterator_state, bidi_cache_find) (bidi_find_other_level_edge, bidi_cache_start_stack): All variables related to cache indices are now EMACS_INT. src/dispextern.h (struct bidi_string_data): New structure. (struct bidi_it): New member `string'. Make flag members be 1-bit fields, and put them last in the struct. (compute_display_string_pos, compute_display_string_end): Update prototypes. (bidi_push_it, bidi_pop_it): Add prototypes. (struct iterator_stack_entry): New members bidi_p, paragraph_embedding, and from_disp_prop_p. (struct it): Member bidi_p is now a bit field 1 bit wide. (bidi_shelve_cache, bidi_unshelve_cache): Declare prototypes. src/.gdbinit (xvectype, xvector, xcompiled, xchartable, xboolvector) (xpr, xfont, xbacktrace): Use "header.size" when accessing vectors and vector-like objects. src/dispnew.c (buffer_posn_from_coords): Save and restore the bidi cache around display iteration. src/window.c (Fwindow_end, window_scroll_pixel_based) (displayed_window_lines, Frecenter): Save and restore the bidi cache around display iteration. lisp/buff-menu.el (Buffer-menu-buffer+size): Accept an additional argument LRM; if non-nil, append an invisible LRM character to the buffer name. (list-buffers-noselect): Call Buffer-menu-buffer+size with the last argument non-nil, when formatting buffer names. (Buffer-menu-mode, list-buffers-noselect): Force left-to-right paragraph direction. doc/lispref/display.texi (Other Display Specs): Document that `left-fringe' and `right-fringe' display specifications are of the "replacing" kind.
| * Fix declarations of variables related to bidi cache indices.Eli Zaretskii2011-07-142-10/+18
| | | | | | | | | | | | | | | | src/bidi.c (bidi_cache_fetch_state, bidi_cache_search) (bidi_cache_find_level_change, bidi_cache_ensure_space) (bidi_cache_iterator_state, bidi_cache_find) (bidi_find_other_level_edge, bidi_cache_start_stack): All variables related to cache indices are now EMACS_INT.
| * src/bidi.c: Fix type of a variable revealed on x86_64.Eli Zaretskii2011-07-092-2/+5
| |
| * Update commentary on bidi.c.Eli Zaretskii2011-07-091-1/+6
| |
| * Fix various problems with cursor positioning around display properties.Eli Zaretskii2011-07-092-14/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | src/xdisp.c (move_it_in_display_line_to): Record prev_method and prev_pos immediately before the call to set_iterator_to_next. Fixes cursor motion in bidi-reordered lines with stretch glyphs and strings displayed in margins. (Bug#8133) (Bug#8867) Return MOVE_POS_MATCH_OR_ZV only if iterator position is past TO_CHARPOS. (pos_visible_p): Support positions in bidi-reordered lines. Save and restore bidi cache. (move_it_in_display_line_to): If iterator ended up at EOL, but we never saw any buffer positions smaller than to_charpos, return MOVE_POS_MATCH_OR_ZV. Fixes vertical cursor motion in bidi-reordered lines.
| * Fix another bug with cursor motion around display properties.Eli Zaretskii2011-07-072-5/+11
| | | | | | | | | | | | | | Still not quite there yet. src/xdisp.c (find_row_edges): If ROW->start.pos gives position smaller than min_pos, use it as ROW->minpos. (Bug#7616)
| * Empty the bidi cache "stack" when it->sp is zeroed.Eli Zaretskii2011-07-056-11/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Solves crashes due to overflow of bidi cache stack. Make sure cache is saved and restored around all temporary iterations. src/dispnew.c (buffer_posn_from_coords): Save and restore the bidi cache around display iteration. src/window.c (Fwindow_end, window_scroll_pixel_based) (displayed_window_lines, Frecenter): Save and restore the bidi cache around display iteration. src/bidi.c (bidi_unshelve_cache): Ensure we have enough space before restoring the shelved cache. (bidi_cache_ensure_space): Don't assume the required size is just one BIDI_CACHE_CHUNK away. src/xdisp.c (back_to_previous_visible_line_start, reseat_1) (init_iterator): Empty the bidi cache "stack".
| * Save and restore bidi cache when saving and restoring the iterator.Eli Zaretskii2011-07-034-45/+204
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not tested, just compiled. src/bidi.c (bidi_shelve_cache, bidi_unshelve_cache): New functions. src/dispextern.h (bidi_shelve_cache, bidi_unshelve_cache): Declare prototypes. src/xdisp.c (SAVE_IT, RESTORE_IT): New macros. (pos_visible_p, face_before_or_after_it_pos) (back_to_previous_visible_line_start) (move_it_in_display_line_to, move_it_in_display_line) (move_it_to, move_it_vertically_backward, move_it_by_lines) (try_scrolling, redisplay_window, display_line): Use them when saving a temporary copy of the iterator and restoring it back.
| * Start fixing cursor motion around invisible text.Eli Zaretskii2011-07-023-3/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | Hit a MAJOR design problem in pushing and popping bidi iterator state. src/xdisp.c (reseat_1): Call bidi_init_it to resync the bidi iterator with IT's position. (handle_stop, back_to_previous_visible_line_start, reseat_1): Reset the from_disp_prop_p flag. src/bidi.c (bidi_cache_search): Don't assume bidi_cache_last_idx is always valid if bidi_cache_idx is valid. (bidi_cache_find_level_change): xassert that bidi_cache_last_idx is valid if it's going to be used.
| * Fix the use case of popping from display property.Eli Zaretskii2011-07-023-15/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | src/dispextern.h (struct iterator_stack_entry, struct it): New member from_disp_prop_p. src/xdisp.c (push_it, pop_it): Save and restore from_disp_prop_p. (handle_single_display_spec, push_display_prop): Set the from_disp_prop_p flag. (get_overlay_strings_1): Reset the from_disp_prop_p flag. (pop_it): Call iterate_out_of_display_property only if we are popping after iteration over a string that came from a display property. Fix a typo in popping stretch info. Add an assertion for verifying that the iterator position is in sync with the bidi iterator. (handle_single_display_spec, get_overlay_strings_1) (push_display_prop): Fix initialization of paragraph direction for string when that of the parent object is not yet determined.
| * Support bidi reordering of unibyte strings. Fix crash displaying "All" in ↵Eli Zaretskii2011-07-014-72/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mode line of an empty buffer. src/dispextern.h (struct bidi_string_data): New member `unibyte'. src/xdisp.c (handle_single_display_spec, next_overlay_string) (get_overlay_strings_1, reseat_1, reseat_to_string) (push_display_prop): Set up the `unibyte' member of bidi_it.string correctly. Don't assume unibyte strings are not bidi-reordered. (compute_display_string_pos) (compute_display_string_end): Fix handling the case of C string. src/bidi.c (bidi_count_bytes, bidi_char_at_pos): Accept an additional argument UNIBYTE, and support unibyte strings. All callers changed. (bidi_fetch_char): Support unibyte strings.
| * Fix typos in comments. Use xassert.Eli Zaretskii2011-07-011-8/+6
| |
| * Initial version of display/overlay strings is working.Eli Zaretskii2011-06-254-6/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | src/xdisp.c (set_iterator_to_next, get_visually_first_element): Use it->bidi_it.string.schars rather than it->string_nchars when testing whether we're beyond string end, because string_nchars is zero for strings that come from overlays and display properties. src/bidi.c (bidi_cache_iterator_state): Fix a bug with testing character positions against the cached range, when we use a stacked cache. src/dispextern.h (struct iterator_stack_entry): New member paragraph_embedding. src/xdisp.c (push_it, pop_it): Save and restore it.
| * Set up the bidi iterator for iterating display strings and overlay strings.Eli Zaretskii2011-06-254-38/+214
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not tested yet, just compiled. src/xdisp.c (handle_single_display_spec, next_overlay_string) (get_overlay_strings_1, push_display_prop): Set up the bidi iterator for displaying display or overlay strings. (forward_to_next_line_start): Don't use the shortcut if bidi-iterating. (back_to_previous_visible_line_start): If handle_display_prop pushed the iterator stack, restore the internal state of the bidi iterator by calling bidi_pop_it same number of times. (reseat_at_next_visible_line_start): If ON_NEWLINE_P is non-zero, and we are bidi-iterating, don't decrement the iterator position; instead, set the first_elt flag in the bidi iterator, to produce the same effect. (reseat_1): Remove redundant setting of string_from_display_prop_p. (push_display_prop): xassert that we are iterating a buffer. (push_it, pop_it): Save and restore the state of the bidi iterator. Save and restore the bidi_p flag. (pop_it): Iterate out of display property for string iteration as well. (iterate_out_of_display_property): Support iteration over strings. (handle_single_display_spec): Set up it->bidi_it for iteration over a display string, and call bidi_init_it. src/bidi.c (bidi_cache_start_stack, bidi_push_it): Use IT_STACK_SIZE. src/dispextern.h (struct iterator_stack_entry): New member bidi_p. (struct it): Member bidi_p is now a bit field 1 bit wide.
| * Added to bidi.c support functions for reordering display strings.Eli Zaretskii2011-06-233-26/+105
| | | | | | | | | | | | | | | | src/bidi.c (bidi_push_it, bidi_pop_it): New functions. (bidi_initialize): Initialize the bidi cache start stack pointer. (bidi_cache_ensure_space): New function, refactored from part of bidi_cache_iterator_state. src/dispextern.h (bidi_push_it, bidi_pop_it): Add prototypes.
| * Rearrange bidi.c and add leading comments for each part.Eli Zaretskii2011-06-231-195/+224
| | | | | | | | No changes in functionality.
| * Add comments for forced L2R directions of menu bar and tool bar.Eli Zaretskii2011-06-183-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | GCPRO Lisp string inside bidi.c. Force L2R direction in buffer menu buffer. src/xdisp.c (tool_bar_lines_needed, redisplay_tool_bar) (display_menu_bar): Force left-to-right direction. Add a FIXME comment for making that be controlled by a user option. src/bidi.c (bidi_move_to_visually_next): GCPRO the Lisp string we are iterating. lisp/buff-menu.el (Buffer-menu-mode, list-buffers-noselect): Force left-to-right paragraph direction.
| * Fix a gratuitous crash in emacs -nw with iso-safe terminal encoding.Eli Zaretskii2011-06-182-0/+5
| | | | | | | | | | | | src/term.c (produce_glyphs): Add IT_GLYPHLESS to the values of it->what accepted by the xassert. Fixes a gratuitous crash in an Emacs built with -DXASSERTS.
| * Tried and abandoned idea of displaying mode line and tool/menu-bars R2L.Eli Zaretskii2011-06-183-11/+17
| | | | | | | | | | | | | | | | | | Added those features to etc/TODO wishlist. Fixed src/.gdbinit for changes in Lisp vector structures. src/.gdbinit (xvectype, xvector, xcompiled, xchartable, xboolvector) (xpr, xfont, xbacktrace): Use "header.size" when accessing vectors and vector-like objects.
| * Refactor getting the first element into a separate function.Eli Zaretskii2011-06-182-141/+108
| | | | | | | | | | | | src/xdisp.c (get_visually_first_element): New function, refactored from common parts of next_element_from_buffer, next_element_from_string, and next_element_from_c_string.
| * Fix box face decision for BEFORE_P case.Eli Zaretskii2011-06-182-8/+46
| | | | | | | | src/xdisp.c (face_before_or_after_it_pos): Support bidi iteration.
| * Fix the decision about box_face in mode line for reordered text.Eli Zaretskii2011-06-182-24/+129
| | | | | | | | | | | | | | | | | | This fixes display of composed characters in buffer name on mode line. src/xdisp.c (face_before_or_after_it_pos): Support bidi iteration when BEFORE_P is zero. (next_element_from_c_string): Handle the case of the first string character that is not the first one in the visual order.
| * Fix display of R2L strings in mode line.Eli Zaretskii2011-06-163-11/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Composed characters still don't work. src/xdisp.c (init_iterator): Don't initialize it->bidi_p for strings here. (reseat_to_string): Initialize it->bidi_p for strings here. (next_element_from_string, next_element_from_c_string) (next_element_from_buffer): Add xassert's for correspondence between IT's object being iterated and it->bidi_it.string structure. src/bidi.c (bidi_level_of_next_char): Fix the logic for looking up the sentinel state in the cache.
| * Fix string handling to avoid data relocation gotcha.Eli Zaretskii2011-06-133-25/+73
| | | | | | | | | | | | | | | | | | | | | | | | Bugs in mode-line display still there. src/xdisp.c (compute_display_string_pos) (compute_display_string_end, reseat_to_string): Don't assume it->bidi_it.string.s always points to string.lstring's data. src/bidi.c (bidi_fetch_char, bidi_paragraph_init) (bidi_resolve_explicit_1, bidi_resolve_explicit) (bidi_resolve_weak, bidi_level_of_next_char): Don't assume string.s always points to string.lstring's data.
| * Fixed a bug with displaying strings padded with blanks.Eli Zaretskii2011-06-112-2/+18
| | | | | | | | | | src/xdisp.c (set_iterator_to_next): Advance string position correctly when padding it with blanks.
| * Initial version of string reordering. Tested only on mode line andEli Zaretskii2011-06-112-66/+329
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TTY menu bar. Display is buggy. src/xdisp.c (next_element_from_buffer): Improve commentary for when the iterator is before prev_stop. (init_iterator): Initialize bidi_p from the default value of bidi-display-reordering, not from buffer-local value. Use the buffer-local value only if initializing for buffer iteration. (handle_invisible_prop): Support invisible properties on strings that are being bidi-reordered. (reseat_to_string): Enable bidi-related code. (set_iterator_to_next): Support bidi reordering of C strings and Lisp strings. (next_element_from_string): Support bidi reordering of Lisp strings. (handle_stop_backwards): Support Lisp strings as well. (display_mode_line, display_mode_element): Temporarily force L2R paragraph direction. (display_string): Support display of R2L glyph rows. Use IT_STRING_CHARPOS when displaying from a Lisp string.
| * Only commentary changes, no functionality changed.Eli Zaretskii2011-06-112-2/+14
| | | | | | | | | | src/xdisp.c (next_element_from_buffer): Improve commentary for when the iterator is before prev_stop.
| * Tested and fixed compute_display_string_pos for buffer iteration.Eli Zaretskii2011-06-102-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | Also fixed an unrelated bug caused by vertical-motion. src/xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize itb.string.lstring. (compute_display_string_pos, compute_display_string_end): Fix calculation of the object to scan. Fixes an error when using arrow keys. (next_element_from_buffer): Don't abort when IT_CHARPOS is before base_level_stop; instead, set base_level_stop to BEGV. Fixes crashes in vertical-motion.
| * Adapt compute_display_string_pos to iteration over strings.Eli Zaretskii2011-06-094-36/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just compiled, not yet tested. src/xdisp.c (compute_display_string_pos): First arg is now struct `text_pos *'; all callers changed. Support display properties on Lisp strings. (compute_display_string_end): Support display properties on Lisp strings. (init_iterator, reseat_1, reseat_to_string): Initialize the string.bufpos member to 0 (zero, for compatibility with IT_CHARPOS when iterating on a string not from display properties). src/bidi.c (bidi_fetch_char): Support strings with display properties. src/dispextern.h (struct bidi_string_data): New member bufpos. (compute_display_string_pos): Update prototype.
| * Add code to initialize bidi iterator for displaying strings.Eli Zaretskii2011-06-094-33/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For now, ifdef'ed away. Some more testing. src/bidi.c (bidi_level_of_next_char): Allow the sentinel "position" to pass the test for valid cached positions. src/xdisp.c (init_iterator): Call bidi_init_it only of a valid buffer position was specified. Initialize paragraph_embedding to L2R. (reseat_to_string): Initialize the bidi iterator (for now ifdef'ed out). (display_string): If we need to ignore text properties of LISP_STRING, set IT->stop_charpos to IT->end_charpos. (The original value of -1 will not work with bidi.) src/dispextern.h (struct bidi_string_data): New member lstring.
| * Tested with buffer reordering, fixed one crash.Eli Zaretskii2011-06-092-0/+6
| | | | | | | | | | src/xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize itb.string.s to NULL (avoids a crash in bidi_paragraph_init).
| * Started work on string reordering. Just compiled, not yet tested.Eli Zaretskii2011-06-084-122/+312
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | src/bidi.c (bidi_paragraph_info): Delete unused struct. (bidi_cache_idx, bidi_cache_last_idx): Declare EMACS_INT. (bidi_cache_start): New variable. (bidi_cache_reset): Reset bidi_cache_idx to bidi_cache_start, not to zero. (bidi_cache_fetch_state, bidi_cache_search) (bidi_cache_find_level_change, bidi_cache_iterator_state) (bidi_cache_find, bidi_peek_at_next_level) (bidi_level_of_next_char, bidi_find_other_level_edge) (bidi_move_to_visually_next): Compare cache index with bidi_cache_start rather than with zero. (bidi_fetch_char): Accept new argument STRING; all callers changed. Support iteration over a string. (bidi_paragraph_init, bidi_resolve_explicit_1) (bidi_resolve_explicit, bidi_resolve_weak) (bidi_level_of_next_char, bidi_move_to_visually_next): Support iteration over a string. (bidi_set_sor_type, bidi_resolve_explicit_1) (bidi_resolve_explicit, bidi_type_of_next_char): ignore_bn_limit can now be zero (for strings); special values 0 and -1 were changed to -1 and -2, respectively. (bidi_char_at_pos): New function. (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak): Call it instead of FETCH_MULTIBYTE_CHAR. (bidi_move_to_visually_next): Abort if charpos or bytepos were not initialized to valid values. (bidi_init_it): Don't initialize charpos and bytepos with invalid values. src/xdisp.c (compute_display_string_pos) (compute_display_string_end): Accept additional argument STRING. (init_iterator, reseat_1): Initialize bidi_it->string.s to NULL. (reseat_to_string): Initialize bidi_it->string.s and bidi_it->string.schars. src/dispextern.h (struct bidi_string_data): New structure. (struct bidi_it): New member `string'. Make flag members be 1-bit fields, and put them last in the struct. (compute_display_string_pos, compute_display_string_end): Update prototypes.
| * Fix declaration in bidi_level_of_next_char.Eli Zaretskii2011-06-042-1/+5
| | | | | | | | src/bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int.
* | Mention that `delete-region' doesn't alter the kill ring.Lars Magne Ingebrigtsen2011-07-141-1/+2
| |
* | * editfns.c (Fdelete_region): Clarify the use of the named parameters.Lars Magne Ingebrigtsen2011-07-142-4/+7
| | | | | | | | Fixes: debbugs:6788
* | Fix bugs in vertical-motion and display-buffer-normalize-special.Martin Rudalics2011-07-142-3/+16
| | | | | | | | | | | | | | | | * indent.c (Fvertical_motion): Set and restore w->pointm when saving and restoring the window's buffer (Bug#9006). * window.el (display-buffer-normalize-special): Replace `dedicated' by `dedicate' to dedicate window (Bug#9072).