Fix display of R2L lines and cursor motion in bidi buffers.
authorEli Zaretskii <eliz@gnu.org>
Sat, 1 May 2010 18:11:20 +0000 (21:11 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 1 May 2010 18:11:20 +0000 (21:11 +0300)
 xdisp.c (find_row_end): New function, refactored from display_line.
 (display_line): Use it.
 (extend_face_to_end_of_line): In almost-filled rows, extend only
 if the row is R2L and not continued.
 (display_line): Fix prepending of truncation glyphs to R2L rows.
 Preserve overlay and string info in row->end.
 (insert_left_trunc_glyphs): Support addition of left truncation
 glyphs to R2L rows.
 (set_cursor_from_row): Don't place cursor on the vertical border
 glyph between adjacent windows.  Fix a crash when a display string
 is continued to the next line.  Don't return zero if cursor was
 found by `cursor' property of a display string.
 (try_cursor_movement): Don't assume that row->end == (row+1)->start,
 test for that explicitly.

1  2 
src/ChangeLog

diff --cc src/ChangeLog
 -      * xdisp.c (find_row_end): New function, refactored from display_line.
+ 2010-05-01  Eli Zaretskii  <eliz@gnu.org>
 -      glyph between adjacent windows.
++      Miscellaneous fixes of bidi display.
++
++      * xdisp.c (find_row_end): New function, refactored from
++      display_line.
+       (display_line): Use it.
+       (extend_face_to_end_of_line): In almost-filled rows, extend only
+       if the row is R2L and not continued.
+       (display_line): Fix prepending of truncation glyphs to R2L rows.
++      Preserve overlay and string info in row->end.
+       (insert_left_trunc_glyphs): Support addition of left truncation
+       glyphs to R2L rows.
+       (set_cursor_from_row): Don't place cursor on the vertical border
 -2010-04-27  Eli Zaretskii  <eliz@gnu.org>
++      glyph between adjacent windows.  Fix a crash when a display string
++      is continued to the next line.  Don't return zero if cursor was
++      found by `cursor' property of a display string.
+       (try_cursor_movement): Don't assume that row->end == (row+1)->start,
+       test for that explicitly.
 +2010-05-01  Glenn Morris  <rgm@gnu.org>
  
 -      * xdisp.c (set_cursor_from_row): Fix a crash when a display string
 -      is continued to the next line.
 +      * Makefile.in (gmallocobj, rallocobj, vmlimitobj): Initialize to null,
 +      for clarity.
 +      (OTHER_OBJ): Remove.
 +      (PRE_ALLOC_OBJ, POST_ALLOC_OBJ): New, set by configure.
 +      (otherobj): Use PRE_ALLOC_OBJ, POST_ALLOC_OBJ rather than OTHER_OBJ.
  
 -2010-04-25  Eli Zaretskii  <eliz@gnu.org>
 +2010-05-01  Karel Klíč  <kklic@redhat.com>
  
 -      * xdisp.c (set_cursor_from_row): Don't return zero if cursor was
 -      found by `cursor' property of a display string.
 -      (display_line): Preserve overlay and string info in row->end.
 +      * fileio.c (Ffile_selinux_context): Context functions may return null.
 +
 +2010-04-30  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * s/gnu.h (POSIX_SIGNALS):
 +      (START_FILES): New definitions.
 +
 +2010-04-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (vmlimitobj) [!SYSTEM_MALLOC]: New variable.  (Bug#6065)
 +      (OTHER_OBJ): Define as a separate variable, for clarity.
 +
 +2010-04-30  Jan Djärv  <jan.h.d@swipnet.se>
 +
 +      * xsettings.c: include limits.h and update file comment.
 +
 +2010-04-30  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (OLDXMENU, LIBXMENU) [HAVE_MENUS]:
 +      Set with configure, not cpp.
 +      (LIBW): Remove, replace with $TOOLKIT_LIBW.
 +
 +      * Makefile.in (mallocobj): Remove.
 +      (otherobj): Simplify using @OTHER_OBJ@.
 +
 +      * Makefile.in (dispnew.o, frame.o, fringe.o, font.o, fontset.o)
 +      (keyboard.o, window.o, xdisp.o, xfaces.o, menu.o):
 +      Don't bother making nsgui.h dependency platform-specific.
 +
 +      * Makefile.in (nsfns.o): Remove duplicate nsgui.h dependency.
 +
 +2010-04-29  Stefan Monnier  <monnier@iro.umontreal.ca>
 +
 +      * process.c (read_process_output, exec_sentinel): Don't burp if the
 +      sentinel/filter kills the current buffer (bug#6060).
 +
 +      Fix wrong-docstring problem introduced with hash-consing.  (Bug#6008)
 +      * eval.c (Fautoload): Set doc to a unique number rather than to 0.
 +      Remove unused var `args'.
 +      * lisp.h (XSETCARFASTINT, XSETCDRFASTINT): Remove.
 +      (LOADHIST_ATTACH): Wrap with do...while to avoid surprises for callers.
 +      * doc.c (store_function_docstring): Use XSETCAR.
 +
 +2010-04-28  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (BASE_WINDOW_SUPPORT, X_WINDOW_SUPPORT): New variables.
 +      (WINDOW_SUPPORT) [HAVE_WINDOW_SYSTEM]: Use them.
 +
 +      * Makefile.in (CYGWIN_OBJ): Set with configure, not cpp.
 +
 +      * Makefile.in (GPM_MOUSE_SUPPORT): New, set by configure.
 +      (MOUSE_SUPPORT) [!HAVE_MOUSE]: Use $GPM_MOUSE_SUPPORT.
 +
 +      * Makefile.in (FONT_OBJ): New, set by configure.
 +      (FONT_DRIVERS): Use $FONT_OBJ.
 +
 +      * Makefile.in (LIBXMU): Set with configure, not cpp.
 +      * s/aix4-2.h (LIBXMU):
 +      * s/hpux10-20.h (LIBXMU):
 +      Remove definition, now set in configure.
 +
 +      * Makefile.in (NS_OBJ, NS_SUPPORT): Set with configure, not cpp.
 +
 +      * m/amdx86-64.h [i386]: Move this test to configure.in.
 +
 +2010-04-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * Makefile.in (LIBXTR6): Set with configure, not cpp.
 +      * s/unixware.h (NEED_LIBW): Remove definition.
 +
 +      * Makefile.in (LUCID_LIBW, MOTIF_LIBW): Remove, replacing by...
 +      (TOOLKIT_LIBW): New, set by configure.
 +      (@X_TOOLKIT_TYPE@): No longer define it.
 +
 +      * Makefile.in (LIBXP): Remove, since included in MOTIF_LIBW.
 +      (MOTIF_LIBW): Set with configure, not cpp.
 +      * s/aix4-2.h (LIB_MOTIF):
 +      * s/gnu-linux.h (LIB_MOTIF):
 +      * s/unixware.h (LIB_MOTIF): Move to configure.in.
 +
 +2010-04-27  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Reduce CPP usage.
 +      * Makefile.in (LIB_X11_LIB): Remove, inline in the only user.
 +      (obj): Use autoconf for unexec instead of cpp.
 +      (C_SWITCH_SYSTEM, C_SWITCH_MACHINE, C_SWITCH_X_SITE): Remove
 +      definitions and undefs.  Inline definitions in the only user.
 +      (ALL_CFLAGS): Substitute C_SWITCH_X_SYSTEM using autoconf.
 +
 +2010-04-27  Glenn Morris  <rgm@gnu.org>
 +
 +      * m/amdx86-64.h (START_FILES, LIB_STANDARD): Change the logic around,
 +      since the defaults (set by the system file) are fine in most cases.
 +      [GNU_LINUX, __OpenBSD__, __NetBSD__, __APPLE__]: Remove sections.
 +      * m/ibms390x.h (START_FILES, LIB_STANDARD):
 +      * m/macppc.h (START_FILES, LIB_STANDARD) [GNU_LINUX]:
 +      * m/sparc.h (START_FILES, LIB_STANDARD) [__linux__]:
 +      Remove definitions, since they are set correctly in s/gnu-linux.h.
 +      * s/freebsd.h (START_FILES, LIB_STANDARD):
 +      * s/gnu-linux.h (START_FILES, LIB_STANDARD):
 +      * s/hpux10-20.h (START_FILES):
 +      * s/netbsd.h (START_FILES, LIB_STANDARD, START_FILES_1, END_FILES_1):
 +      Use $CRT_DIR in place of fixed /usr/lib, /lib directories.
 +
 +      * Makefile.in (LIBXP, LUCID_LIBW, WIDGET_OBJ): Set via configure.
 +      (MOTIF_LIBW): Use $LIBXP.
 +      (otherobj): Use $WIDGET_OBJ.
 +
 +2010-04-26  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      * Makefile.in (LIBS_MACHINE): Remove, unused.
 +
 +      Use autoconf instead of cpp for LIB_MATH.
 +      * s/darwin.h (LIB_MATH): Do not define here, move to configure.
 +      * s/cygwin.h (LIB_MATH): Likewise.
 +      * Makefile.in (LIB_MATH): Do not define with cpp.
 +      (LIBES): Use autoconf for LIB_MATH.
 +
 +2010-04-26  Kenichi Handa  <handa@m17n.org>
 +
 +      * composite.c (Ffind_composition_internal): Fix the return value
 +      for an automatic composition.
 +
 +2010-04-25  Dan Nicolaescu  <dann@ics.uci.edu>
 +
 +      Remove all NO_ARG_ARRAY uses.
 +      * fns.c (concat2, concat3, nconc2):
 +      * eval.c (apply1, call1, call2, call3, call4, call5, call6)
 +      (call7): Remove NO_ARG_ARRAY usage, assume it's always true.
 +      * m/xtensa.h (NO_ARG_ARRAY):
 +      * m/template.h (NO_ARG_ARRAY):
 +      * m/sparc.h (NO_ARG_ARRAY):
 +      * m/sh3.h (NO_ARG_ARRAY):
 +      * m/mips.h (NO_ARG_ARRAY):
 +      * m/macppc.h (NO_ARG_ARRAY):
 +      * m/iris4d.h (NO_ARG_ARRAY):
 +      * m/intel386.h (NO_ARG_ARRAY):
 +      * m/ibms390x.h (NO_ARG_ARRAY):
 +      * m/ibms390.h (NO_ARG_ARRAY):
 +      * m/ibmrs6000.h (NO_ARG_ARRAY):
 +      * m/ia64.h (NO_ARG_ARRAY):
 +      * m/hp800.h (NO_ARG_ARRAY):
 +      * m/arm.h (NO_ARG_ARRAY):
 +      * m/amdx86-64.h (NO_ARG_ARRAY):
 +      * m/alpha.h (NO_ARG_ARRAY): Remove definition.
  
  2010-04-25  Eli Zaretskii  <eliz@gnu.org>