1. 02 Jul, 2011 1 commit
    • Eli Zaretskii's avatar
      Fix the use case of popping from display property. · a2eaa31d
      Eli Zaretskii authored
       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.
      a2eaa31d
  2. 01 Jul, 2011 2 commits
    • Eli Zaretskii's avatar
      Support bidi reordering of unibyte strings. Fix crash displaying "All" in... · f3014ef5
      Eli Zaretskii authored
      Support bidi reordering of unibyte strings.  Fix crash displaying "All" in 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.
      f3014ef5
    • Eli Zaretskii's avatar
      Fix typos in comments. Use xassert. · 7e2ad32c
      Eli Zaretskii authored
      7e2ad32c
  3. 25 Jun, 2011 2 commits
    • Eli Zaretskii's avatar
      Initial version of display/overlay strings is working. · a1344e7d
      Eli Zaretskii authored
       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.
      a1344e7d
    • Eli Zaretskii's avatar
      Set up the bidi iterator for iterating display strings and overlay strings. · 0c22566f
      Eli Zaretskii authored
      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.
      0c22566f
  4. 23 Jun, 2011 2 commits
  5. 18 Jun, 2011 6 commits
  6. 16 Jun, 2011 1 commit
    • Eli Zaretskii's avatar
      Fix display of R2L strings in mode line. · 578b494e
      Eli Zaretskii authored
      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.
      578b494e
  7. 13 Jun, 2011 1 commit
    • Eli Zaretskii's avatar
      Fix string handling to avoid data relocation gotcha. · 9f257352
      Eli Zaretskii authored
      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.
      9f257352
  8. 11 Jun, 2011 3 commits
    • Eli Zaretskii's avatar
      Fixed a bug with displaying strings padded with blanks. · f23590cc
      Eli Zaretskii authored
       src/xdisp.c (set_iterator_to_next): Advance string position
       correctly when padding it with blanks.
      f23590cc
    • Eli Zaretskii's avatar
      Initial version of string reordering. Tested only on mode line and · 34c48e57
      Eli Zaretskii authored
      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.
      34c48e57
    • Eli Zaretskii's avatar
      Only commentary changes, no functionality changed. · 4b988f8b
      Eli Zaretskii authored
       src/xdisp.c (next_element_from_buffer): Improve commentary for when
       the iterator is before prev_stop.
      4b988f8b
  9. 10 Jun, 2011 1 commit
    • Eli Zaretskii's avatar
      Tested and fixed compute_display_string_pos for buffer iteration. · 9f4ef500
      Eli Zaretskii authored
      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.
      9f4ef500
  10. 09 Jun, 2011 3 commits
    • Eli Zaretskii's avatar
      Adapt compute_display_string_pos to iteration over strings. · 6db161be
      Eli Zaretskii authored
      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.
      6db161be
    • Eli Zaretskii's avatar
      Add code to initialize bidi iterator for displaying strings. · bb269206
      Eli Zaretskii authored
      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.
      bb269206
    • Eli Zaretskii's avatar
      Tested with buffer reordering, fixed one crash. · d9334cb7
      Eli Zaretskii authored
       src/xdisp.c (Fcurrent_bidi_paragraph_direction): Initialize
       itb.string.s to NULL (avoids a crash in bidi_paragraph_init).
      d9334cb7
  11. 08 Jun, 2011 1 commit
    • Eli Zaretskii's avatar
      Started work on string reordering. Just compiled, not yet tested. · 87e67904
      Eli Zaretskii authored
       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.
      87e67904
  12. 04 Jun, 2011 1 commit
  13. 03 Jun, 2011 1 commit
  14. 31 May, 2011 1 commit
  15. 28 May, 2011 3 commits
    • Eli Zaretskii's avatar
      Fix cursor motion across display strings covering reordered text. · 0e14fe90
      Eli Zaretskii authored
       src/xdisp.c (set_cursor_from_row): Set start and stop points
       according to the row's direction when priming the loop that looks
       for the glyph on which to display cursor.
       (single_display_spec_intangible_p): Function deleted.
       (display_prop_intangible_p): Reimplement to call
       handle_display_spec instead of single_display_spec_intangible_p.
       Accept 3 additional arguments needed by handle_display_spec.  This
       fixes incorrect cursor motion across display property with complex
       values: lists, `(when COND...)' forms, etc.
       (single_display_spec_string_p): Support property values that are
       lists with the argument STRING its top-level element.
       (display_prop_string_p): Fix the condition for processing a
       property that is a list to be consistent with handle_display_spec.
       src/keyboard.c (adjust_point_for_property): Adjust the call to
       display_prop_intangible_p to its new signature.
       src/dispextern.h (display_prop_intangible_p): Adjust prototype.
      0e14fe90
    • Eli Zaretskii's avatar
      Fix cursor motion near overlays covering reordered text. · c40e2fb2
      Eli Zaretskii authored
       src/xdisp.c (set_cursor_from_row): Set start and stop points of the
       loop that looks for the glyph on which to display cursor according
       to the row's direction.
      c40e2fb2
    • Eli Zaretskii's avatar
  16. 21 May, 2011 1 commit
    • Eli Zaretskii's avatar
      Discovery of replacing display properties now uses the same code · fc6f18ce
      Eli Zaretskii authored
      as the display engine.  Tested OK with display properties whose
      value is a list.
      
       src/dispextern.h (struct bidi_it): New member frame_window_p.
       (bidi_init_it, compute_display_string_pos): Update prototypes.
       src/bidi.c (bidi_fetch_char): Accept additional argument
       FRAME_WINDOW_P and pass it to compute_display_string_pos.  All
       callers changed.
       (bidi_init_it): Accept additional argument FRAME_WINDOW_P and use
       it to initialize the frame_window_p member of struct bidi_it.
       src/xdisp.c (handle_display_spec): New function, refactored from the
       last portion of handle_display_prop.
       (compute_display_string_pos): Accept additional argument
       FRAME_WINDOW_P.  Call handle_display_spec to determine whether the
       value of a `display' property is a "replacing spec".
       (handle_single_display_spec): Accept 2 additional arguments BUFPOS
       and FRAME_WINDOW_P.  If IT is NULL, don't set up the iterator from
       the display property, but just return a value indicating whether
       the display property will replace the characters it covers.
       (Fcurrent_bidi_paragraph_direction): Initialize the nchars and
       frame_window_p members of struct bidi_it.
      fc6f18ce
  17. 14 May, 2011 3 commits
    • Eli Zaretskii's avatar
      Remove kludgey save and restore of IT->position for push_it. · 683a44f7
      Eli Zaretskii authored
       src/xdisp.c (push_it): Accept second argument POSITION, where pop_it
       should jump to continue iteration.
      683a44f7
    • Eli Zaretskii's avatar
      Text covered by `display' overlays is correctly reordered. · 7b600102
      Eli Zaretskii authored
      Cursor positioning is not yet right near the overlay.
      
       src/xdisp.c (compute_display_string_pos): Non-trivial implementation.
       (compute_display_string_end): New function.
       src/dispextern.h (compute_display_string_end): Declare prototype.
       src/bidi.c (bidi_resolve_explicit_1): Use ZV for disp_pos.
       (bidi_fetch_char): Implement support for runs of characters
       covered by display strings.
      7b600102
    • Eli Zaretskii's avatar
      Refactoring with bidi_fetch_char tested and debugged. · 102ebb00
      Eli Zaretskii authored
       src/bidi.c (bidi_fetch_char): Accept also character position
       corresponding to BYTEPOS.  All callers changed.
       (bidi_cache_iterator_state, bidi_resolve_explicit_1)
       (bidi_resolve_explicit, bidi_resolve_weak)
       (bidi_level_of_next_char, bidi_move_to_visually_next): Abort if
       bidi_it->nchars is non-positive.
       (bidi_level_of_next_char): Don't try to lookup the cache for the
       next/previous character if nothing is cached there yet, or if we
       were just reseat()'ed to a new position.
       (bidi_paragraph_init, bidi_resolve_explicit_1)
       (bidi_level_of_next_char): Fix arguments in the calls to
       bidi_fetch_char.
      102ebb00
  18. 10 May, 2011 1 commit
    • Eli Zaretskii's avatar
      Started work on reordering display strings. Refactor FETCH_CHAR. · 182ce2d2
      Eli Zaretskii authored
      Only compiled, not tested.
      
       src/xdisp.c (compute_display_string_pos): New function.
       (reseat_1): Initialize bidi_it.disp_pos.
       src/bidi.c (bidi_copy_it): Use offsetof.
       (bidi_fetch_char, bidi_fetch_char_advance): New functions.
       (bidi_cache_search, bidi_cache_iterator_state)
       (bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak)
       (bidi_level_of_next_char, bidi_move_to_visually_next): Support
       character positions inside a run of characters covered by a
       display string.
       (bidi_paragraph_init, bidi_resolve_explicit_1)
       (bidi_level_of_next_char): Call bidi_fetch_char and
       bidi_fetch_char_advance instead of FETCH_CHAR and
       FETCH_CHAR_ADVANCE.
       (bidi_init_it): Initialize new members.
       (LRE_CHAR, RLE_CHAR, PDF_CHAR, LRO_CHAR, RLO_CHAR): Remove macro
       definitions.
       (bidi_explicit_dir_char): Lookup character type in bidi_type_table,
       instead of using explicit *_CHAR codes.
       (bidi_resolve_explicit, bidi_resolve_weak): Use
       FETCH_MULTIBYTE_CHAR instead of FETCH_CHAR, as reordering of
       bidirectional text is supported only in multibyte buffers.
       src/dispextern.h (struct bidi_it): New members nchars and disp_pos.
       ch_len is now EMACS_INT.
       (compute_display_string_pos): Declare prototype.
      182ce2d2
  19. 09 May, 2011 1 commit
  20. 07 May, 2011 3 commits
    • Eli Zaretskii's avatar
      Fix bug #8597 with setting frame background mode on w32 console. · b0512a1d
      Eli Zaretskii authored
       src/w32console.c (Fset_screen_color): Doc fix.
       (Fget_screen_color): New function.
       (syms_of_ntterm): Defsubr it.
       lisp/term/w32console.el (terminal-init-w32console): Call
       get-screen-color and use its output to set the frame
       background-mode.
      b0512a1d
    • Eli Zaretskii's avatar
      Fix changes in 2011-05-01T00:04:17Z!larsi@gnus.org for MS-DOS. · 888c9e86
      Eli Zaretskii authored
       src/callproc.c (call_process_cleanup): Don't close and unlink the
       temporary file if Fcall_process didn't create it in the first
       place.
       (Fcall_process): Don't create tempfile if stdout of the child
       process will be redirected to a file specified with `:file'.
       Don't try to re-open tempfile in that case, and set fd[0] to -1 as
       cue to call_process_cleanup not to close that handle.
      888c9e86
    • Ben Key's avatar
      * nt/configure.bat: Renamed the fusercflags variable to escusercflags · 4d3fcc8e
      Ben Key authored
      so that the variable name better matches its purpose, to be identical
      to usercflags with the exception that all quotes are escaped by the \
      character.
      
      Renamed the fuserldflags variable to escuserldflags so that the
      variable name better matches its purpose, to be identical to
      userldflags with the exception that all quotes are escaped by the \
      character.
      
      A new ESC_USER_CFLAGS variable is written to config.settings.  This
      variable has the same value as the escusercflags variable.
      
      * nt/gmake.defs, nt/nmake.defs: Added the variable ESC_CFLAGS.  This
      variable is identical to the CFLAGS variable except that it includes
      the new ESC_USER_CFLAGS variable instead of USER_CFLAGS.
      
      * src/makefile.w32-in: The bootstrap-temacs rule now makes use of one
      of two shell specific rules, either bootstrap-temacs-CMD or
      bootstrap-temacs-SH.  The bootstrap-temacs-SH rule is identical to the
      previous implementation of the bootstrap-temacs rule.  The
      bootstrap-temacs-CMD rule is similar to the previous implementation of
      the bootstrap-temacs rule except that it makes use of the ESC_CFLAGS
      variable instead of the CFLAGS variable.
      
      
      These changes are required to extend my earlier fix to add support for
      --cflags and --ldflags options that include quotes so that it works
      whether make uses cmd or sh as the shell.
      4d3fcc8e
  21. 06 May, 2011 2 commits