1. 24 Sep, 2010 1 commit
  2. 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
  3. 31 Aug, 2010 1 commit
  4. 09 Aug, 2010 1 commit
    • Dan Nicolaescu's avatar
      Use const char* instead of char*. · 8ea90aa3
      Dan Nicolaescu authored
      Reduce the number of warnings with -Wwrite-strings.
      * src/xrdb.c (get_environ_db, get_system_name):
      * src/unexelf.c (find_section):
      * src/term.c (string_cost, string_cost_one_line, per_line_cost)
      (get_named_tty, init_tty):
      * src/sysdep.c (sys_subshell):
      * src/sound.c (sound_perror, sound_warning, vox_open, vox_init)
      (alsa_sound_perror, alsa_open, alsa_configure, alsa_init):
      * src/search.c (Freplace_match):
      * src/process.c (Fmake_network_process, send_process, init_process):
      * src/lread.c (Fload, init_lread):
      * src/keymap.c (Fdescribe_buffer_bindings, describe_map_tree):
      * src/keyboard.c (parse_tool_bar_item, struct event_head):
      * src/gtkutil.h (xg_get_font_name):
      * src/gtkutil.c (get_dialog_title, create_dialog, xg_get_font_name)
      (make_widget_for_menu_item, make_menu_item, create_menus)
      (xg_make_tool_item):
      * src/font.c (parse_matrix, font_parse_name):
      * src/floatfns.c (rounding_driver, float_error_fn_name):
      * src/filelock.c (get_boot_time_1, lock_file_1):
      * src/fileio.c (barf_or_query_if_file_exists, check_writable):
      * src/editfns.c (get_system_name, get_operating_system_release)
      (Fencode_time, Fset_time_zone_rule):
      * src/dispextern.h (string_cost, per_line_cost, get_named_tty, init_tty):
      * src/buffer.c (defvar_per_buffer): Use const.
      8ea90aa3
  5. 08 Aug, 2010 1 commit
    • Dan Nicolaescu's avatar
      Use const char* instead of char*. · 675e2c69
      Dan Nicolaescu authored
      * src/xterm.c (x_create_toolkit_scroll_bar):
      * src/xfont.c (xfont_list_pattern):
      * src/xfns.c (x_default_scroll_bar_color_parameter)
      (xic_create_fontsetname, x_default_font_parameter)
      (x_screen_planes):
      * src/xdisp.c (c_string_pos, number_of_chars, reseat_to_string)
      (store_mode_line_string, decode_mode_spec, display_string):
      * src/menu.c (digest_single_submenu):
      * src/keymap.h (initial_define_key, initial_define_lispy_key):
      * src/keymap.c (initial_define_key, initial_define_lispy_key):
      * src/image.c (image_error, image_keyword):
      * src/gtkutil.h (xg_create_widget, xg_create_scroll_bar):
      * src/gtkutil.c (xg_create_widget, xg_create_scroll_bar):
      * src/ftfont.c (struct fc_charset_table, ftfont_spec_pattern)
      (ftfont_list, ftfont_match):
      * src/frame.c (frame_parm_table):
      * src/font.h (font_intern_prop, font_parse_xlfd, font_parse_fcname)
      (font_unparse_fcname, font_unparse_fcname, font_open_by_name)
      (font_add_log, font_deferred_log):
      * src/font.c (font_intern_prop, font_parse_xlfd, font_parse_fcname)
      (font_unparse_fcname, font_unparse_fcname, font_open_by_name)
      (font_add_log, font_deferred_log):
      * src/emacs.c (argmatch):
      * src/dispextern.h (struct it):
      * src/coding.c (ENCODE_DESIGNATION):
      * src/charset.c (define_charset_internal): Use const.
      675e2c69
  6. 07 Aug, 2010 1 commit
    • Juanma Barranquero's avatar
      Remove duplicate declarations. · 0e9c8657
      Juanma Barranquero authored
      * lib-src/ebrowse.c (usage, version, mark_virtual)
      * src/alloc.c (lisp_malloc)
      * src/buffer.c (set_buffer_internal, set_buffer_internal_1)
      * src/charset.h (emacs_mule_charset)
      * src/dispextern.h (inhibit_free_realized_faces, redraw_frame)
        (redraw_garbaged_frames, scroll_cost, update_frame, scrolling)
        (bitch_at_user)
      * src/lisp.h (Fcheck_coding_system, Fget_text_property)
        (Qfunction, Qcompletion_ignore_case, QCwidth, QCsize)
      0e9c8657
  7. 05 Aug, 2010 1 commit
    • Dan Nicolaescu's avatar
      Add declarations to header files. · 99f3388e
      Dan Nicolaescu authored
      * src/keyboard.h (xmalloc_widget_value, digest_single_submenu): Remove
      declarations, menu.h has them.
      (QCbutton, QCtoggle, QCradio, QClabel, extra_keyboard_modifiers)
      (Vinput_method_function, Qinput_method_function)
      (Qevent_symbol_element_mask, last_event_timestamp):
      * src/dispextern.h (Voverflow_newline_into_fringe):
      * src/font.h (QCantialias, Qp, syms_of_ftfont, syms_of_xfns)
      (syms_of_ftxfont, syms_of_xftfont, syms_of_bdffont)
      (syms_of_w32font, syms_of_nsfont):
      * src/fontset.h (find_font_encoding, Qlatin):
      * src/frame.h (Qtooltip, Qrun_hook_with_args, Vmenu_bar_mode)
      (Vtool_bar_mode, set_frame_menubar):
      * src/ftfont.h (ftfont_font_format, ftfont_get_fc_charset):
      * src/xterm.h (Qx_gtk_map_stock):
      * src/keymap.h (meta_prefix_char): Add declarations.
      
      * src/lisp.h: Remove HAVE_SHM code, unused.
      (QCmap, QCrehash_size, QCrehash_threshold, QCsize, QCtest)
      (QCweakness, Qabove_handle, Qbackquote, Qbar, Qbelow_handle)
      (Qborder, Qbottom, Qbox, Qcircular_list, Qcomma, Qcomma_at)
      (Qcomma_dot, Qcursor, Qdefault, Qdown, Qend_scroll, Qeq, Qeql)
      (Qequal, Qfile_exists_p, Qfont_param, Qfringe, Qfunction)
      (Qfunction_documentation, Qhandle, Qhbar, Qheader_line, Qhollow)
      (Qidentity, Qleft_margin, Qmenu, Qmenu_bar_update_hook)
      (Qmode_line_inactive, Qmouse, Qoverriding_local_map)
      (Qoverriding_terminal_local_map, Qratio, Qregion, Qright_margin)
      (Qscroll_bar, Qtool_bar, Qtop, Qup, Qvertical_border, Qwhen)
      (Qwindow_scroll_functions, Vafter_load_alist)
      (Vauto_save_list_file_name, Vface_alternative_font_family_alist)
      (Vface_alternative_font_registry_alist, Vface_font_rescale_alist)
      (Vface_ignored_fonts, Vinhibit_redisplay, Vminibuffer_list)
      (Vprint_length, Vprint_level, Vscalable_fonts_allowed)
      (Vshell_file_name, Vsystem_name, Vwindow_scroll_functions)
      (Vwindow_system_version, Vx_no_window_manager, initial_argc)
      (initial_argv, last_nonmenu_event, load_in_progress)
      (noninteractive_need_newline, scroll_margin): Add declarations.
      99f3388e
  8. 27 Jul, 2010 1 commit
    • Dan Nicolaescu's avatar
      Use const, move declarations to header files. · eec47d6b
      Dan Nicolaescu authored
      * src/buffer.c (Fset_buffer_multibyte): Remove local extern declaration.
      
      * src/character.c (strwidth, parse_str_to_multibyte): Add const.
      
      * src/character.h (strwidth, parse_str_to_multibyte): Likewise.
      
      * src/charset.c (add_to_log): Remove declaration.
      
      * src/composite.c (syms_of_composite): Remove local extern declarations.
      
      * src/data.c (Finteractive_form): Use const.
      
      * src/dired.c (scmp): Add const.
      (directory_files_internal): Remove local extern declaration.
      
      * src/dispextern.h (add_to_log): Remove declaration.
      (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
      (x_frame_get_and_record_arg, x_default_parameter): Add const.
      
      * src/dispnew.c: Remove duplicate #include <unistd.h>.
      (update_window, update_frame_1, init_display): Remove local extern
      declarations.
      
      * src/editfns.c (region_limit, syms_of_editfns): Remove local extern
      declarations.
      
      * src/emacs.c (main): Remove local extern declaration.
      
      * src/font.c (Qnormal, QCtype, QCfamily, QCweight, QCslant, QCwidth)
      (QCheight, QCsize, QCname): Remove declarations.
      
      * src/frame.c (x_get_resource_string, x_get_string_resource)
      (x_get_arg, x_frame_get_arg, x_frame_get_and_record_arg)
      (x_default_parameter): Use const.
      
      * src/image.c (QCwidth, QCheight, QCforeground, QCbackground, QCfile)
      (QCdata, QCtype, Qcenter): Remove declarations.
      
      * src/keyboard.h (do_mouse_tracking): Add declaration.
      
      * src/minibuf.c (Qmouse_face): Remove declaration.
      
      * src/msdos.c (IT_note_mouse_highlight): Remove local extern declaration.
      
      * src/xdisp.c (do_mouse_tracking): Remove declaration.
      (add_to_log): Use const.
      
      * src/xfaces.c (Qmouse_face): Remove declaration.
      (face_color_gray_p, tty_defined_color, defined_color)
      (face_color_gray_p, face_color_supported_p). Add const.
      
      * src/xfns.c: Include xlwmenu.h when USE_LUCID.
      (x_defined_color, xic_set_xfontset): Use const.
      (Fx_hide_tip): Remove local extern declaration.
      
      * src/xselect.c (selection_data_to_lisp_data)
      (x_property_data_to_lisp):
      * src/xrdb.c (x_get_string_resource, file_p)
      (x_get_customization_string, magic_file_p, search_magic_path)
      (get_system_app, get_user_app, x_load_resources, x_get_resource)
      (x_get_string_resource): Use const.
      
      * src/xterm.c (xlwmenu_window_p, xlwmenu_redisplay): Remove declarations.
      (x_text_icon, x_check_errors, x_connection_closed): Use const.
      
      * src/xterm.h (x_get_customization_string, x_load_resources)
      (x_get_resource, x_text_icon, x_text_icon, x_check_errors)
      (x_check_errors, x_property_data_to_lisp, defined_color)
      (xic_set_xfontset, x_defined_color): Use const.
      eec47d6b
  9. 05 Jul, 2010 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325). · 5a874e95
      YAMAMOTO Mitsuharu authored
      * dispextern.h (FRINGE_HEIGHT_BITS): New define.
      (struct glyph_row): New members left_fringe_offset and
      right_fringe_offset.
      
      * xterm.c (x_draw_fringe_bitmap): Don't clip bottom aligned bitmap
      specially.
      * w32term.c (w32_draw_fringe_bitmap): Likewise.
      * nsterm.m (ns_draw_fringe_bitmap): Likewise.
      
      * fringe.c (draw_fringe_bitmap_1): Don't clip bitmap here.
      Take account of	bitmap offset.
      (draw_window_fringes): Take account of window vscroll.
      (update_window_fringes): Likewise.  Extend top-aligned top indicator
      or bottom-aligned bottom indicator to adjacent rows if it doesn't fit
      in one row.  Don't set redraw_fringe_bitmaps_p outside row comparison.
      Set left_fringe_offset and right_fringe_offset (Bug#5634, Bug#6325).
      5a874e95
  10. 02 Jul, 2010 1 commit
    • Jan D's avatar
      Remove P_ and __P macros. · 383e0970
      Jan D authored
      * lwlib/lwlib-Xaw.h: Remove P_ and __P macros.
      * lwlib/lwlib-Xlw.h:
      * lwlib/lwlib-Xm.h:
      * lwlib/lwlib-int.h:
      * lwlib/lwlib-utils.h:
      * lwlib/lwlib.h: Likewise.
      
      * src/buffer.h: Remove P_ and __P macros.
      * src/category.h:
      * src/ccl.h:
      * src/character.h:
      * src/charset.h:
      * src/cm.h:
      * src/coding.h:
      * src/composite.h:
      * src/dispextern.h:
      * src/disptab.h:
      * src/font.h:
      * src/fontset.h:
      * src/frame.h:
      * src/gtkutil.h:
      * src/indent.h:
      * src/intervals.h:
      * src/keyboard.h:
      * src/keymap.h:
      * src/lisp.h:
      * src/macros.h:
      * src/md5.h:
      * src/menu.h:
      * src/msdos.h:
      * src/nsterm.h:
      * src/puresize.h:
      * src/region-cache.h:
      * src/syntax.h:
      * src/syssignal.h:
      * src/systime.h:
      * src/termhooks.h:
      * src/w32term.h:
      * src/widget.h:
      * src/window.h:
      * src/xgselect.h:
      * src/xsettings.h:
      * src/xterm.h: Likewise.
      383e0970
  11. 25 May, 2010 1 commit
  12. 23 May, 2010 2 commits
  13. 18 May, 2010 1 commit
    • Eli Zaretskii's avatar
      Initial reimplementation of calculating line edge positions in bidi lines. · d36fe237
      Eli Zaretskii authored
       dispextern.h (struct glyph_row): New members minpos and maxpos.
       (MATRIX_ROW_START_CHARPOS, MATRIX_ROW_START_BYTEPOS)
       (MATRIX_ROW_END_CHARPOS, MATRIX_ROW_END_BYTEPOS): Reference minpos
       and maxpos members instead of start.pos and end.pos, respectively.
       xdisp.c (display_line): Compare IT_CHARPOS with the position in
       row->start.pos, rather than with MATRIX_ROW_START_CHARPOS.
       (cursor_row_p): Use row->end.pos rather than MATRIX_ROW_END_CHARPOS.
       (try_window_reusing_current_matrix, try_window_id): Use
       ROW->minpos rather than ROW->start.pos.
       (init_from_display_pos, init_iterator): Use EMACS_INT for
       character and byte positions.
       (find_row_edges): Renamed from find_row_end.  Accept additional
       arguments for minimum and maximum buffer positions seen by
       display_line for this row.  Don't use iterator to find the
       position following the maximum one; instead, increment the
       position found by display_line directly.
       (display_line): Record minimum and maximum buffer positions for
       glyphs in this row.  Record the position of the newline that
       terminates the line.
       dispnew.c (increment_row_positions, check_matrix_invariants):
       Increment and check row->start.pos and row->end.pos, in addition
       to MATRIX_ROW_START_CHARPOS and MATRIX_ROW_END_CHARPOS.
      d36fe237
  14. 14 May, 2010 2 commits
  15. 23 Apr, 2010 1 commit
  16. 20 Apr, 2010 2 commits
    • Jan Djärv's avatar
      Gtk tool bars can be text, icons with text or just icons. · f904c0f9
      Jan Djärv authored
      * xsettings.c: Qmonospace_font_name, Qtool_bar_style and
      current_tool_bar_style are new.
      (store_config_changed_event): Rename from store_font_changed_event.
      (XSETTINGS_TOOL_BAR_STYLE): New define.
      (SEEN_FONT, SEEN_TB_STYLE): New enum values.
      (struct xsettings): Add font and tb_style, set xft stuff inside #ifdef
      HAVE_XFT.
      (something_changedCB): store_font_changed_event is now
      store_config_changed_event
      (parse_settings): Rename from parse_xft_settings.  Read
      non-xft xsettings outside #ifdef HAVE_XFT.
      (read_settings): Renamed from read_xft_settings.
      (apply_xft_settings): Take current settings as parameter.  Do not
      call read_(xft)_settings.
      (read_and_apply_settings): New function.
      (xft_settings_event): Do non-xft stuff out of HAVE_XFT.  Call
      read_and_apply_settings if there are settings to be read.
      (init_xsettings): Renamed from init_xfd_settings.
      Call read_and_apply_settings unconditionally.
      (xsettings_initialize): Call init_xsettings.
      (Ftool_bar_get_system_style): New function.
      (syms_of_xsettings): Define Qmonospace_font_name and
      Qtool_bar_style.  Initialize current_tool_bar_style to nil.
      defsubr Stool_bar_get_system_style. Fprovide on
      dynamic-setting.
      
      * xsettings.h (Ftool_bar_get_system_style): Declare.
      
      * xdisp.c: Vtool_bar_style, tool_bar_max_label_size,
      Qtext, Qboth, Qboth_horiz are new.
      (syms_of_xdisp): Intern Qtext, Qboth, Qboth_horiz, DEFVAR
      Vtool_bar_style, tool_bar_max_label_size.
      
      * lisp.h: Extern declare Qtext, Qboth, Qboth_horiz.
      
      * keyboard.c: QClabel is new.
      (parse_tool_bar_item): Take out QClabel from tool bar items.
      Try to construct a label if ther is no QClabel.
      (syms_of_keyboard): Intern :label as QClabel.
      
      * dispextern.h (tool_bar_item_idx): TOOL_BAR_ITEM_LABEL is new.
      (Vtool_bar_style, tool_bar_max_label_size, DEFAULT_TOOL_BAR_LABEL_SIZE):
      New.
      
      * Makefile.in (SOME_MACHINE_LISP): font-setting.el renamed to
      dynamic-setting.el.
      
      * gtkutil.c (xg_tool_bar_menu_proxy): Handle label in tool bar item.
      (xg_make_tool_item, xg_show_toolbar_item): New function.
      (update_frame_tool_bar): Take label from TOOL_BAR_ITEM_LABEL.
      Call xg_make_tool_item to make a tool bar item.
      Call xg_show_toolbar_item.  Use wtoolbar instead of x->toolbar_widget.
      
      * xterm.c (x_draw_image_relief): Take Vtool_bar_button_margin
      into account for toolbars.
      
      * vc-dir.el (vc-dir-tool-bar-map): Add :label on some tool bar items.
      
      * tool-bar.el (tool-bar-setup): Add :label on some tool bar items.
      
      * loadup.el: Load dynamic-setting.el if feature dynamic-setting
      is present.
      
      * info.el (info-tool-bar-map): Add labels.
      
      * cus-start.el (all): Add tool-bar-style and tool-bar-max-label-size.
      
      * cus-edit.el (custom-commands): Add labels for tool bar.
      (custom-buffer-create-internal, Custom-mode): Adjust for
      labels in custom-commands.
      
      * dynamic-setting.el: Renamed from font-setting.el.
      f904c0f9
    • 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
  17. 19 Apr, 2010 1 commit
  18. 10 Apr, 2010 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Don't abort try_window with fonts change when showing tooltip (Bug#2423). · 6eff5c3d
      YAMAMOTO Mitsuharu authored
      * dispextern.h (TRY_WINDOW_CHECK_MARGINS)
      (TRY_WINDOW_IGNORE_FONTS_CHANGE): New defines.
      
      * xdisp.c (try_window): Change arg from CHECK_MARGINS to FLAGS.
      Don't abort with fonts change if TRY_WINDOW_IGNORE_FONTS_CHANGE is
      set in FLAGS.  Callers with non-zero CHECK_MARGINS changed to use
      TRY_WINDOW_CHECK_MARGINS.
      
      * xfns.c (Fx_show_tip): Call try_window with TRY_WINDOW_IGNORE_FONTS_CHANGE.
      6eff5c3d
  19. 31 Mar, 2010 1 commit
    • Stefan Monnier's avatar
      Get rid of the direct_output optimizations. · 855a0da7
      Stefan Monnier authored
      * keyboard.c (nonundocount): Remove extern declaration.
      (command_loop_1): Remove brittle optimisation for cheap and common operations.
      * xdisp.c (redisplay_internal): Don't bother checking
      redisplay_performed_directly_p any more.
      * sysdep.c (init_sys_modes): Don't call direct_output_forward_char any more.
      * dispnew.c (redisplay_performed_directly_p)
      (direct_output_for_insert, direct_output_forward_char):
      * dispextern.h (redisplay_performed_directly_p)
      (direct_output_for_insert, direct_output_forward_char): Remove.
      * cmds.c (nonundocount): Make it static.
      855a0da7
  20. 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
  21. 22 Mar, 2010 1 commit
    • Jan Djärv's avatar
      bug #5736: Allow X-resource menuBar to take on/off as documented. · 93318cbd
      Jan Djärv authored
      * frame.c (x_get_arg): Handle RES_TYPE_BOOLEAN_NUMBER (bug #5736).
      
      * xfns.c (Fx_create_frame): Make menuBar a RES_TYPE_BOOLEAN_NUMBER.
      
      * dispextern.h (resource_types): RES_TYPE_BOOLEAN_NUMBER is new.
      
      * xresources.texi (Table of Resources): Clarify toolBar number
      for Gtk+.
      
      * frames.texi (Menu Bars): menuBarLines => menuBar (bug#5736).
      93318cbd
  22. 13 Mar, 2010 1 commit
    • Eli Zaretskii's avatar
      Continue work on cursor movement in continued lines. · 8eef7665
      Eli Zaretskii authored
       xdisp.c (try_cursor_movement): Give up if rows are
       bidi-reordered and point moved backwards.  Examine all the
       candidate rows that occlude point, to return the best match.
       (row_containing_pos): With bidi-reordered rows, don't return the
       first one that occludes point; rather, examine all candidates and
       return the best match, with he glyph that's closest to point.
       (display_line): When looking for min position, don't consider
       negative values of glyph->charpos.  (Fixes a crash with "C-x 3" at
       ZV.)  Record the position after EOL in it->eol_pos, and use it to
       set end_pos of the last row produced for a continued line.  Fix
       the condition for passing candidate rows to set_cursor_from_row:
       check ends_at_zv_p flag of the best candidate row, not of the
       current row.
       dispextern.h (struct it): New member eol_pos.
       .gdbinit (prowlims): Display the ends_at_zv_p flag.
      8eef7665
  23. 19 Feb, 2010 1 commit
  24. 13 Jan, 2010 1 commit
  25. 02 Jan, 2010 1 commit
    • Eli Zaretskii's avatar
      Continue working on handling of properties in bidi iteration. · 241ab1c1
      Eli Zaretskii authored
      Region display and extension seems to work.
      Solved a crash in bidirectional display of etc/HELLO.
      (HELLO display still not 100% OK, e.g. near Kannada.)
      
       .gdbinit (pitx): Display some bidi information about the
       iterator.
      
       dispextern.h (BIDI_AT_BASE_LEVEL): Enclose definition in
       parentheses.
      
       xdisp.c (handle_stop_backwards): Save and restore it->current
       and it->position, instead of expecting the caller to do that.
       (next_element_from_buffer): When moving across stop_charpos,
       record it in prev_stop.  When IT_CHARPOS backs up, call
       handle_stop_backwards only if above the base embedding level.
       This solves the crash while displaying etc/HELLO in bidi mode.
      241ab1c1
  26. 01 Jan, 2010 10 commits
    • Eli Zaretskii's avatar
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-12-12. · e69a9370
      Eli Zaretskii authored
      Begin working on faces support.  First version of handle_stop_backwards.
      Rearrange struct bidi_it for more efficient push/pop ops.
      
       dispextern.h (struct it): New members prev_stop and
       base_level_stop.
      
       xdisp.c (handle_stop_backwards): New function.
       (next_element_from_buffer): Handle the situation where we
       overstepped stop_charpos due to non-linearity of the bidi
       iteration.  Likewise for when we back up beyond the previous
       stop_charpos.
       (reseat_1, pop_it, push_it): Set prev_stop and base_level_stop.
      
       dispextern.h (BIDI_AT_BASE_LEVEL): New macro.
      
       bidi.c (bidi_copy_it): Fix compiler warning due to cast of a
       pointer to `int'.  Don't preserve the first_elt member, as it is
       no longer copied, because its position in the structure was
       changed, see below.
      
       dispextern.h (struct bidi_it): Move first_elt, new_paragraph,
       separator_limit, and paragraph_dir to after bidi_stack.  Add a
       note that anything beyond the level stack is not preserved when
       the bidi iterator state is copied/saved.
      e69a9370
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-10-24. · 29e3d8d1
      Eli Zaretskii authored
      Continue working on set_cursor_from_row.
      Cleanup of resolved_level and bidi_type members of struct glyph.
      
       xdisp.c (set_cursor_from_row): Fix off-by-one error when
       skipping over non-character glyphs at end of a reversed row.
      
       dispextern.h (struct glyph): The `resolved_level' member needs
       only 5 bits, not 6.  The `bidi_type' member needs only 3 bits.
       (bidi_type_t): Rearrange so that types that can appear in the
       resolved type are at the beginning and have values less than 8.
      
       bidi.c: Include setjmp.h.
      29e3d8d1
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-10-17. · 5e65aec0
      Eli Zaretskii authored
      Continue working on display of R2L glyph rows.  Reverse glyphs in
      term.c:append_glyph rather than in extend_face_to_end_of_line.
      Fix bidi iteration near BEGV and ZV.
      
       dispextern.h (struct glyph): New members resolved_level and
       bidi_type.
      
       xdisp.c (append_glyph, append_composite_glyph)
       (produce_image_glyph, append_stretch_glyph): Set them.
      
       term.c (append_glyph): Ditto.
      
       xdisp.c (display_line, next_element_from_buffer): Set the glyph
       row's reversed_p flag if the paragraph base direction is odd.
       (extend_face_to_end_of_line): Don't reverse the glyphs here.
      
       term.c (append_glyph): Reverse glyphs here.
      
       bidi.c (bidi_get_next_char_visually): Don't exit early when at ZV.
       (bidi_paragraph_init): Don't step over a newline if at BEGV.
       (bidi_paragraph_init): Handle empty buffers.
      5e65aec0
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-10-08. · c143c213
      Eli Zaretskii authored
      Finish up working on paragraph's base direction.
      Start working on display of right-to-left glyph rows.
      Rewrite set_cursor_from_row to support bidi.
      
       xdisp.c (string_buffer_position_lim): New function.
       (string_buffer_position): Most of code moved to
       string_buffer_position_lim.  Last argument and return value are
       now EMACS_INT; all callers changed.
       (set_cursor_from_row): Rewritten to support bidirectional text and
       reversed glyph rows.
       dispextern.h <string_buffer_position>: Update prototype.
       bidi.c (bidi_paragraph_init): Fix initialization of POS.
       dispextern.h (struct glyph_row): New member reversed_p.
       buffer.c (syms_of_buffer): Remove DEFVAR_LISP_NOPRO for
       default-direction-reversed, default-bidi-display-reordering, and
       default-paragraph-direction.
      c143c213
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-10-05. · b44d9321
      Eli Zaretskii authored
      Continue working on paragraph base direction.
      Support per-buffer default paragraph direction.
      
       buffer.h (struct buffer): New member paragraph_direction.
       buffer.c (init_buffer_once): Initialize it.
       (syms_of_buffer): Declare Lisp variables
       default-paragraph-direction and paragraph-direction.
       dispextern.h (struct it): New member paragraph_embedding.
       xdisp.c (init_iterator): Initialize it from the buffer's value
       of paragraph-direction.
       <Qright_to_left, Qleft_to_right>: New variables.
       (syms_of_xdisp): Initialize and staticpro them.
       (set_iterator_to_next, next_element_from_buffer): Use the value of
       paragraph_embedding to determine the paragraph direction.
       bidi.c (bidi_line_init): Fix second argument to
       bidi_set_sor_type.
       (bidi_init_it): Initialize paragraph_dir to NEUTRAL_DIR.
       (bidi_get_next_char_visually): Record the last character of the
       separator in separator_limit, not the character after that.
       (bidi_find_paragraph_start): Accept character and byte positions
       instead of the whole iterator stricture.  All callers changed.
      b44d9321
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-10-04. · be39f003
      Eli Zaretskii authored
      Continue working on determining paragraph's base direction.
      
       bidi.c (bidi_at_paragraph_end): Check for paragraph-start if
       paragraph-separate failed to match.  Return the length of the
       matched separator.
       (bidi_line_init): New function.
       (bidi_paragraph_init): Use bidi_line_init.  Do nothing if in the
       middle of a paragraph-separate sequence.  Don't override existing
       paragraph direction if no strong characters found in this
       paragraph.  Set separator_limit according to what
       bidi_at_paragraph_end returns.  Reset new_paragraph flag when a
       new paragraph is found.
       (bidi_init_it): Reset separator_limit.
       dispextern.h (struct bidi_it): New member separator_limit.
       bidi.c (bidi_find_paragraph_start): Return the byte position of
       the paragraph beginning.
       xdisp.c (set_iterator_to_next): Call bidi_paragraph_init if the
       new_paragraph flag is set in the bidi iterator.
       bidi.c (bidi_at_paragraph_end, bidi_find_paragraph_start): Use
       the buffer-local value of paragraph-start and paragraph-separate.
      be39f003
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-10-03. · 6bff6497
      Eli Zaretskii authored
      Detect paragraph start and paragraph separators (part of determining
      paragraph base direction).
      
      (The commit of window.h belongs to the original changes by Kenichi Handa,
      it was forgotten earlier.)
      
       bidi.c (bidi_set_paragraph_end): Don't set the new_paragraph
       flag in the iterator.
       (bidi_init_it): Set the new_paragraph flag.
       (bidi_at_paragraph_end): Arguments are now character and byte
       position of the next character.  All callers changed.
       (bidi_resolve_explicit): Don't call bidi_at_paragraph_end, and
       don't behave as if at paragraph end if it returns true.
       (bidi_get_next_char_visually): Don't call bidi_paragraph_init if
       new_paragraph flag is set.  Set new_paragraph flag when at end of
       a paragraph.
       <fallback_paragraph_start_re, fallback_paragraph_separate_re>: New
       variables.
       <Qparagraph_start, Qparagraph_separate>: New variables.
       (bidi_initialize): Initialize and staticpro them.
       dispextern.h <struct bidi_it>: New element paragraph_dir.  Make
       positional elements EMACS_INT.
       bidi.c <bidi_overriding_paragraph_direction>: Delete.
      6bff6497
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-09-27. · e342a24d
      Eli Zaretskii authored
      Support character mirroring.
      Support iteration that starts in the middle of a line.
      Misc cleanups.
      
       xdisp.c (next_element_from_buffer): If called not at line
       beginning, start bidi iteration from line beginning.
       bidi.c (bidi_paragraph_init): Use
       bidi_overriding_paragraph_direction instead of a literal zero.
       (bidi_initialize): Fix some character types, per Unicode 5.x.
       (bidi_get_type): Abort if called with invalid character code.
       dispextern.h: Add prototype of bidi_mirror_char.
       xdisp.c (get_next_display_element): Mirror characters whose
       resolved type is STRONG_R.
      e342a24d
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-09-26. · 9c82e145
      Eli Zaretskii authored
      Continued working on initialization.
      Started working on paragraph direction initialization.
      
       bidi.c (bidi_paragraph_init): Don't set bidi_it->ch_len.  Abort
       if called not at beginning of a new paragraph.
       (bidi_get_next_char_visually): Prepare and use a sentinel iterator
       state when first_elt flag is set.
       dispextern.h (struct bidi_it): New struct member first_elt.
       bidi.c (bidi_init_it): Initialize bidi_it->first_elt.
       (bidi_copy_it): Don't copy the first_elt flag.
       xdisp.c (reseat_1): Initialize bidi_it.first_elt.  Move bidi
       scan start code from here...
       (next_element_from_buffer): ...to here.  Use bidi_it.first_elt flag.
      9c82e145
  27. 31 Dec, 2009 2 commits
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-09-19. · 89d3374a
      Eli Zaretskii authored
      Begin work on bidi initialization and other cleanup.
      Remove all STANDALONE code from bidi.c.
      
       xdisp.c (init_iterator): Call bidi_init_it.  Set
       bidi_it->bytepos if buffer position specified.
       (reseat_1): Don't call bidi_init_it.  Call bidi_paragraph_init
       instead.  Move back to preceding character before the call to
       bidi_get_next_char_visually.
       bidi.c: Remove all STANDALONE parts.
       (bidi_init_it): Init bidi_it->charpos and bidi_it->bytepos to -1.
       Don't call bidi_paragraph_init.  Change arguments.
       (bidi_paragraph_init): Remove code for negative pos.
       dispextern.h <bidi_it>: Rename orig_type to type_after_w1 and
       pristine_type to orig_type.
      89d3374a
    • Eli Zaretskii's avatar
      Retrospective commit from 2009-09-12. · d8300a8a
      Eli Zaretskii authored
      Undo changes from 2009-09-11.  Set row->end and row->start in
      xdisp.c:display_line.
      
       dispnew.c (direct_output_for_insert): Give up if we are
       reordering bidirectional text.
       dispextern.h (IT_STACK_SIZE): Enlarge to 5.
       xdisp.c (display_line): Set row->end and it->start for the next
       row to the next character in logical order.  If we are reordering
       bidi text, push and pop the iterator before and after momentarily
       iterating in logical order.
      d8300a8a