1. 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
  2. 19 Apr, 2011 1 commit
    • Paul Eggert's avatar
      Replace pEd with more-general pI, and fix some printf arg casts. · c2982e87
      Paul Eggert authored
      * lisp.h (pI): New macro, generalizing old pEd macro to other
      conversion specifiers.  For example, use "...%"pI"d..." rather
      than "...%"pEd"...".
      (pEd): Remove.  All uses replaced with similar uses of pI.
      * src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h: Likewise.
      * alloc.c (check_pure_size): Don't overflow by converting size to int.
      * bidi.c (bidi_dump_cached_states): Use pI to avoid cast.
      * data.c (Fnumber_to_string): Use pI instead of if-then-else-abort.
      * dbusbind.c (xd_append_arg): Use pI to avoid cast.
      (Fdbus_method_return_internal, Fdbus_method_error_internal): Likewise.
      * font.c (font_unparse_xlfd): Avoid potential buffer overrun on
      64-bit hosts.
      (font_unparse_xlfd, font_unparse_fcname): Use pI to avoid casts.
      * keyboard.c (record_char, modify_event_symbol): Use pI to avoid casts.
      * print.c (safe_debug_print, print_object): Likewise.
      (print_object): Don't overflow by converting EMACS_INT or EMACS_UINT
      to int.
      Use pI instead of if-then-else-abort.  Use %p to avoid casts.
      * process.c (Fmake_network_process): Use pI to avoid cast.
      * region-cache.c (pp_cache): Likewise.
      * xdisp.c (decode_mode_spec): Likewise.
      * xrdb.c (x_load_resources) [USE_MOTIF]: Use pI to avoid undefined
      behavior on 64-bit hosts with printf arg.
      * xselect.c (x_queue_event): Use %p to avoid casts.
      (x_stop_queuing_selection_requests): Likewise.
      (x_get_window_property): Don't truncate byte count to an 'int'
      when tracing.
      c2982e87
  3. 11 Apr, 2011 1 commit
  4. 08 Mar, 2011 2 commits
  5. 23 Feb, 2011 1 commit
  6. 25 Jan, 2011 1 commit
  7. 15 Jan, 2011 1 commit
  8. 01 Oct, 2010 1 commit
    • Dan Nicolaescu's avatar
      Do not include stdlib.h and string.h, config.h does it. · 4cacd822
      Dan Nicolaescu authored
      * src/xfont.c:
      * src/w32term.c:
      * src/w32reg.c:
      * src/w32inevt.c:
      * src/w32heap.c:
      * src/w32console.c:
      * src/w16select.c:
      * src/unexsol.c:
      * src/term.c:
      * src/sound.c:
      * src/scroll.c (m):
      * src/gtkutil.c:
      * src/font.c:
      * src/filelock.c:
      * src/fileio.c:
      * src/dosfns.c:
      * src/dbusbind.c:
      * src/bidi.c:
      * src/callproc.c:
      * src/process.c:
      * src/msdos.c:
      * src/charset.c: Do not include stdlib.h and string.h, config.h does it.
      
      * configure.in: Include stdlib.h and string.h unconditionally.
      4cacd822
  9. 24 Sep, 2010 1 commit
  10. 18 Sep, 2010 1 commit
    • Eli Zaretskii's avatar
      Fix bug #7038 with cursor motion in paragraphs w/o strong characters. · bea4f10c
      Eli Zaretskii authored
       xdisp.c (Fcurrent_bidi_paragraph_direction): Call
       bidi_paragraph_init with NO_DEFAULT_P non-zero.
       bidi.c (bidi_paragraph_init): Accept an additional argument
       NO_DEFAULT_P; all callers changed.  If NO_DEFAULT_P is non-zero,
       search back until a paragraph with a strong directional character
       is found, and use that to determine paragraph's base direction.
       dispextern.h (bidi_paragraph_init): Update prototype.
      bea4f10c
  11. 18 Aug, 2010 1 commit
  12. 14 Aug, 2010 1 commit
  13. 06 Aug, 2010 1 commit
    • Jan D's avatar
      Fix missing prototypes for HAVE_NS (caused crash) and vrious warnings. · 3d608a86
      Jan D authored
      * configure.in: Check for util.h.
      
      * src/bidi.c (bidi_dump_cached_states): Fix fprintf warning.
      
      * src/emacs.c: Include src/nsterm.h if HAVE_NS.
      
      * src/image.c (xpm_scan, xpm_make_color_table_v)
      (xpm_put_color_table_v, xpm_get_color_table_v)
      (xpm_make_color_table_h, xpm_put_color_table_h)
      (xpm_get_color_table_h, xpm_str_to_color_key, xpm_load_image)
      (xpm_load): Convert to ANSI C prototypes.
      
      * src/lisp.h (fmod_float): Declare.
      
      * src/menu.h (x_set_menu_bar_line): Declare.
      (free_menubar_widget_value_tree et.al): Add HAVE_NS for these functions.
      
      * src/window.c: Include menu.h.
      
      * src/nsfns.m (have_menus_p, ns_display_info_for_name)
      (x_set_cursor_type, ns_appkit_version_str)
      (ns_appkit_version_int, ns_do_applescript)
      (x_set_scroll_bar_default_width, x_sync, compute_tip_xy)
      (syms_of_nsfns): Convert to ANSI C prototypes.
      
      * src/nsfont.m (ns_fallback_entity, syms_of_nsfont): Convert to ANSI C
      prototypes.
      
      * src/nsimage.m (ns_load_image): Move NSTRACE after declarations.
      
      * src/nsmenu.m (popup_activated, name_is_separator)
      (syms_of_nsmenu): Convert to ANSI C prototypes.
      (runMenuAt): Prototypes and move declarations before code.
      
      * src/nsterm.h : Include sysselect.h.
      (x_sync, x_get_focus_frame, x_set_mouse_position)
      (x_set_mouse_pixel_position, x_make_frame_visible)
      (x_make_frame_invisible, x_iconify_frame, x_char_width, x_char_height)
      (x_pixel_width, x_pixel_height, x_set_frame_alpha, x_set_tool_bar_lines)
      (x_activate_menubar, free_frame_menubar, ns_init_paths, ns_select)
      (syms_of_nsterm, syms_of_nsfns, syms_of_nsmenu, syms_of_nsselect):
      Declare
      
      * src/process.c: Check HAVE_UTIL_H. Include src/nsterm.h if HAVE_NS.
      
      * src/nsterm.m (ns_init_paths, ns_alloc_autorelease_pool)
      (ns_ring_bell, ns_defined_color, hide_hourglass)
      (x_display_pixel_height, x_display_pixel_width, syms_of_nsterm):
      Convert to ANSI C prototypes.
      (x_set_window_size, ns_draw_fringe_bitmap, judge): Move declarations
      before code.
      
      * src/sysdep.c: Check HAVE_TERM_H
      
      * src/term.c: Check HAVE_SYS_IOCTL_H.
      
      * src/unexmacosx.c (print_region_list, print_regions)
      (build_region_list, find_emacs_zone_regions)
      (unexec_regions_merge, read_load_commands, dump_it)
      (unexec_init_emacs_zone): Convert to ANSI C prototypes.
      
      * src/xfaces.c (x_create_gc, x_free_gc): Convert to ANSI C prototypes.
      3d608a86
  14. 08 Jul, 2010 1 commit
    • Dan Nicolaescu's avatar
      Clean up include guards. · 295d0d8f
      Dan Nicolaescu authored
      * src/tparam.c: Remove include guards for config.h, string.h and code
      that assumes #ifndef emacs.
      * src/termcap.c:
      * src/unexalpha.c:
      * src/sysdep.c:
      * src/filemode.c:
      * src/filelock.c:
      * src/bidi.c: Likewise.
      295d0d8f
  15. 04 Jul, 2010 1 commit
    • Dan Nicolaescu's avatar
      Convert (most) functions in src to standard C. · 971de7fb
      Dan Nicolaescu authored
      * src/alloc.c: Convert function definitions to standard C.
      * src/atimer.c:
      * src/bidi.c:
      * src/bytecode.c:
      * src/callint.c:
      * src/callproc.c:
      * src/casefiddle.c:
      * src/casetab.c:
      * src/category.c:
      * src/ccl.c:
      * src/character.c:
      * src/charset.c:
      * src/chartab.c:
      * src/cmds.c:
      * src/coding.c:
      * src/composite.c:
      * src/data.c:
      * src/dbusbind.c:
      * src/dired.c:
      * src/dispnew.c:
      * src/doc.c:
      * src/doprnt.c:
      * src/ecrt0.c:
      * src/editfns.c:
      * src/fileio.c:
      * src/filelock.c:
      * src/filemode.c:
      * src/fns.c:
      * src/font.c:
      * src/fontset.c:
      * src/frame.c:
      * src/fringe.c:
      * src/ftfont.c:
      * src/ftxfont.c:
      * src/gtkutil.c:
      * src/indent.c:
      * src/insdel.c:
      * src/intervals.c:
      * src/keymap.c:
      * src/lread.c:
      * src/macros.c:
      * src/marker.c:
      * src/md5.c:
      * src/menu.c:
      * src/minibuf.c:
      * src/prefix-args.c:
      * src/print.c:
      * src/ralloc.c:
      * src/regex.c:
      * src/region-cache.c:
      * src/scroll.c:
      * src/search.c:
      * src/sound.c:
      * src/strftime.c:
      * src/syntax.c:
      * src/sysdep.c:
      * src/termcap.c:
      * src/terminal.c:
      * src/terminfo.c:
      * src/textprop.c:
      * src/tparam.c:
      * src/undo.c:
      * src/unexelf.c:
      * src/window.c:
      * src/xfaces.c:
      * src/xfns.c:
      * src/xfont.c:
      * src/xftfont.c:
      * src/xgselect.c:
      * src/xmenu.c:
      * src/xrdb.c:
      * src/xselect.c:
      * src/xsettings.c:
      * src/xsmfns.c:
      * src/xterm.c: Likewise.
      971de7fb
  16. 13 Jun, 2010 1 commit
  17. 12 Jun, 2010 2 commits
    • Eli Zaretskii's avatar
      Use BidiMirroring.txt for mirroring characters in bidi context. · cbc4fd20
      Eli Zaretskii authored
       admin/unidata/bidimirror.awk: New file.
       admin/unidata/BidiMirroring.txt: New file from
       http://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d1.txt.
       admin/unidata/Makefile.in: (../../src/bidimirror.h): New target.
       (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h.
       admin/unidata/makefile.w32-in (../../src/bidimirror.h): New target.
       (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h.
       src/makefile.w32-in ($(BLD)/bidi.$(O)): Depend on biditype.h and
       bidimirror.h.
       src/deps.mk (bidi.o): Depend on biditype.h and bidimirror.h.
       src/bidi.c (bidi_initialize): Initialize bidi_mirror_table.
       (bidi_mirror_char): Use bidi_mirror_table.
      cbc4fd20
    • Eli Zaretskii's avatar
      Derive bidi type table from UnicodeData.txt. · 317fbf33
      Eli Zaretskii authored
       src/bidi.c (bidi_initialize): Remove explicit initialization of
       bidi_type_table; include biditype.h instead.  Don't support
       entries whose second codepoint is zero.
       src/biditype.h: New file.
       admin/unidata/biditype.awk: New file.
       admin/unidata/Makefile.in (../../src/biditype.h): New target.
       admin/unidata/makefile.w32-in (../../src/biditype.h): New target.
      317fbf33
  18. 30 May, 2010 1 commit
  19. 19 May, 2010 2 commits
    • Eli Zaretskii's avatar
      Completed initial debugging and testing of reimplemented cursor motion. · 0416466c
      Eli Zaretskii authored
       .gdbinit (prowlims): Display row->minpos and row->maxpos.
       Display truncated_on_left_p and truncated_on_right_p flags.
       Formatting fixes.
       (pmtxrows): Display the ordinal number of each row.  Don't display
       rows beyond the last one.
       xdisp.c (RECORD_MAX_MIN_POS): New macro.
       (display_line): Use it to record the minimum and maximum buffer
       positions for glyphs in the row being assembled.  If word wrap is
       in effect, restore minimum and maximum positions seen up to the
       wrap point, when iterator returns to it.
       (find_row_edges): Fix logic; eol_pos should be tested before the
       rest.
       (try_window_reusing_current_matrix): Give up if in bidi-reordered
       row and cursor not already at point.  Restore original pre-bidi
       code for unidirectional buffers.
       bidi.c (bidi_cache_shrink, bidi_cache_iterator_state): Fix
       reallocation of the cache.  (Bug#6210)
       (bidi_cache_iterator_state): Don't zero out new_paragraph (it is
       not copied by bidi_copy_it).
      0416466c
    • Eli Zaretskii's avatar
      Fix bug #6210. · ead6f8f5
      Eli Zaretskii authored
       bidi.c (bidi_cache_shrink, bidi_cache_iterator_state): Fix
       reallocation of the cache.
      ead6f8f5
  20. 15 May, 2010 2 commits
    • Eli Zaretskii's avatar
      Avoid crashes when stepping with right-arrow through "^L^L". · 2e9abc3d
      Eli Zaretskii authored
       bidi.c (bidi_paragraph_init): Remove redundant assertion that we are at
       the beginning of a line after call to bidi_find_paragraph_start.
      2e9abc3d
    • Eli Zaretskii's avatar
      Implement bidi-sensitive movement with arrow keys. · d20e1419
      Eli Zaretskii authored
       src/bidi.c (bidi_paragraph_init): Don't leave alone garbage values
       of bidi_it->paragraph_dir.  Call bidi_initialize if needed.
       src/xdisp.c (Fcurrent_bidi_paragraph_direction): New function.
       (syms_of_xdisp): Defsubr it.
       src/cmds.c (Fforward_char, Fbackward_char): Doc fix.
       src/subr.el (right-arrow-command, left-arrow-command): New functions.
       src/bindings.el (global-map): Bind them to right and left arrow keys.
       etc/NEWS: Mention current-bidi-paragraph-direction
      d20e1419
  21. 14 May, 2010 2 commits
  22. 21 Apr, 2010 1 commit
    • Eli Zaretskii's avatar
      Fix bug #5992. · 372b7a95
      Eli Zaretskii authored
       bidi.c (bidi_find_paragraph_start, bidi_at_paragraph_end): Don't
       use buffer-local values of paragraph-start and paragraph-separate.
       <paragraph_start_re, paragraph_separate_re>: Rename from
       fallback_paragraph_start_re and fallback_paragraph_separate_re.
      372b7a95
  23. 20 Apr, 2010 2 commits
    • Stefan Monnier's avatar
      * buffer.h (struct buffer): Remove unused var `direction_reversed'. · b4bf28b7
      Stefan Monnier authored
      * buffer.c (init_buffer_once, syms_of_buffer): Remove its initialization.
      
      * bidi.c (bidi_initialize): Simplify fallback_paragraph_*_re init.
      b4bf28b7
    • Stefan Monnier's avatar
      Make variable forwarding explicit rather the using special values. · ce5b453a
      Stefan Monnier authored
      Basically, this makes the structure of buffer-local values and object
      forwarding explicit in the type of Lisp_Symbols rather than use
      special Lisp_Objects for that.  This tends to lead to slightly more
      verbose code, but is more C-like, simpler, and makes it easier to make
      sure we handled all cases, among other things by letting the compiler
      help us check it.
      * lisp.h (enum Lisp_Misc_Type, union Lisp_Misc):
      Removing forwarding objects.
      (enum Lisp_Fwd_Type, enum symbol_redirect, union Lisp_Fwd): New types.
      (struct Lisp_Symbol): Make the various forms of variable-forwarding
      explicit rather than hiding them inside Lisp_Object "values".
      (XFWDTYPE): New macro.
      (XINTFWD, XBOOLFWD, XOBJFWD, XKBOARD_OBJFWD): Redefine.
      (XBUFFER_LOCAL_VALUE): Remove.
      (SYMBOL_VAL, SYMBOL_ALIAS, SYMBOL_BLV, SYMBOL_FWD, SET_SYMBOL_VAL)
      (SET_SYMBOL_ALIAS, SET_SYMBOL_BLV, SET_SYMBOL_FWD): New macros.
      (SYMBOL_VALUE, SET_SYMBOL_VALUE): Remove.
      (struct Lisp_Intfwd, struct Lisp_Boolfwd, struct Lisp_Objfwd)
      (struct Lisp_Buffer_Objfwd, struct Lisp_Kboard_Objfwd):
      Remove the Lisp_Misc_* header.
      (struct Lisp_Buffer_Local_Value): Redefine.
      (BLV_FOUND, SET_BLV_FOUND, BLV_VALUE, SET_BLV_VALUE): New macros.
      (struct Lisp_Misc_Any): Add filler to get the right size.
      (struct Lisp_Free): Use struct Lisp_Misc_Any rather than struct
      Lisp_Intfwd.
      (DEFVAR_LISP, DEFVAR_LISP_NOPRO, DEFVAR_BOOL, DEFVAR_INT)
      (DEFVAR_KBOARD): Allocate a forwarding object.
      * data.c (do_blv_forwarding, store_blv_forwarding): New macros.
      (let_shadows_global_binding_p): New function.
      (union Lisp_Val_Fwd): New type.
      (make_blv): New function.
      (swap_in_symval_forwarding, indirect_variable, do_symval_forwarding)
      (store_symval_forwarding, swap_in_global_binding, Fboundp)
      (swap_in_symval_forwarding, find_symbol_value, Fset)
      (let_shadows_buffer_binding_p, set_internal, default_value)
      (Fset_default, Fmake_variable_buffer_local, Fmake_local_variable)
      (Fkill_local_variable, Fmake_variable_frame_local)
      (Flocal_variable_p, Flocal_variable_if_set_p)
      (Fvariable_binding_locus):
      * xdisp.c (select_frame_for_redisplay):
      * lread.c (Fintern, Funintern, init_obarray, defvar_int)
      (defvar_bool, defvar_lisp_nopro, defvar_lisp, defvar_kboard):
      * frame.c (store_frame_param):
      * eval.c (Fdefvaralias, Fuser_variable_p, specbind, unbind_to):
      * bytecode.c (Fbyte_code) <varref, varset>: Adapt to the new symbol
      value structure.
      * buffer.c (PER_BUFFER_SYMBOL): Move from buffer.h.
      (clone_per_buffer_values): Only adjust markers into the current buffer.
      (reset_buffer_local_variables): PER_BUFFER_IDX is never -2.
      (Fbuffer_local_value, set_buffer_internal_1)
      (swap_out_buffer_local_variables):
      Adapt to the new symbol value structure.
      (DEFVAR_PER_BUFFER): Allocate a Lisp_Buffer_Objfwd object.
      (defvar_per_buffer): Take a new arg for the fwd object.
      (buffer_lisp_local_variables): Return a proper alist (different fix
      for bug#4138).
      * alloc.c (Fmake_symbol): Use SET_SYMBOL_VAL.
      (Fgarbage_collect): Don't handle buffer_defaults specially.
      (mark_object): Handle new symbol value structure rather than the old
      special Lisp_Misc_* objects.
      (gc_sweep) <symbols>: Free also the buffer-local-value objects.
      * term.c (set_tty_color_mode):
      * bidi.c (bidi_initialize): Don't access the ->value field directly.
      * buffer.h (PER_BUFFER_VAR_OFFSET): Don't bother with
      a buffer_local_flags.
      * print.c (print_object): Get rid of impossible forwarding objects.
      ce5b453a
  24. 19 Apr, 2010 2 commits
  25. 17 Apr, 2010 1 commit
  26. 08 Apr, 2010 1 commit
  27. 03 Apr, 2010 1 commit
  28. 30 Mar, 2010 3 commits
  29. 28 Mar, 2010 1 commit
    • Eli Zaretskii's avatar
      Fix glyph_row reversed_p flag in empty lines between paragraphs. · c0546589
      Eli Zaretskii authored
       bidi.c (bidi_get_next_char_visually): Improve commentary.
       dispextern.h (PRODUCE_GLYPHS): Set the reversed_p flag in the
       iterator's glyph_row here.
       xdisp.c (handle_invisible_prop, set_iterator_to_next)
       (next_element_from_buffer): Don't set the reversed_p flag in the
       iterator's glyph_row here.
      c0546589
  30. 25 Jan, 2010 1 commit
    • Eli Zaretskii's avatar
      Finish and debug display of invisible text. · 5009f85e
      Eli Zaretskii authored
       xdisp.c (handle_invisible_prop): If we are `reseat'ed, init the
       paragraph direction and set the `reversed_p' flag in the IT's
       glyph row.  Fix exit conditions of the loop that skips invisible
       text.  Update IT->prev_stop after skipping invisible text.  Check
       for additional overlays at IT->stop_charpos, not at start_pos.
      
      Clean up the mess with setting the glyph row reversed_p flag.
       dispnew.c (prepare_desired_row): Preserve the reversed_p flag.
      
       bidi.c (bidi_cache_find): Use bidi_copy_it instead of copying
       the whole struct (which includes uninitialized parts).
       (bidi_init_it): Don't initialize bidi_it->paragraph_dir.
      
       xdisp.c (display_line): Remove misplaced setting of
       row->reversed_p flags.  Copy the reversed_p flag to the next glyph
       row.
       (next_element_from_buffer): Check bidi_it.paragraph_dir rather
       than level_stack[0].level.  Reset the reversed_p flag for non-R2L
       paragraphs.
      5009f85e
  31. 01 Jan, 2010 1 commit
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-12-26. · 9443b3c7
      Eli Zaretskii authored
      Redesign handle_stop_backwards.
      Fix character mirroring for non-ASCII characters.
      
       xdisp.c (handle_stop_backwards): Call compute_stop_pos in the
       loop, instead of calling handle_stop.  Call handle_stop only once,
       after the loop.
       (next_element_from_buffer): Don't call handle_stop_backwards if at
       stop position.  If base_level_stop is zero, set it to 1.
      
       term.c (append_glyph): Fill resolved_level and bidi_type slots
       of struct glyph for unidirectional display.
      
       xdisp.c (set_cursor_from_row): Handle zero-width characters.
      
       bidi.c (bidi_mirror_char): More efficient code (suggested by
       Ehud Karni <ehud@unix.mvs.co.il>).  Don't even try to mirror
       non-ASCII characters.
      9443b3c7