aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2011-06-18 16:28:53 +0300
committerEli Zaretskii2011-06-18 16:28:53 +0300
commitcc7245e4b5d277bff1cb5cf9af249955ff1f8e10 (patch)
tree42f57439012331b350fc9ccf657c9442978a5df2 /src
parent1ace72676cb6749c45c5dd6462457fc2cea2988c (diff)
downloademacs-cc7245e4b5d277bff1cb5cf9af249955ff1f8e10.tar.gz
emacs-cc7245e4b5d277bff1cb5cf9af249955ff1f8e10.zip
Tried and abandoned idea of displaying mode line and tool/menu-bars R2L.
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.
Diffstat (limited to 'src')
-rw-r--r--src/.gdbinit16
-rw-r--r--src/ChangeLog4
-rw-r--r--src/xdisp.c8
3 files changed, 17 insertions, 11 deletions
diff --git a/src/.gdbinit b/src/.gdbinit
index 2cf5663df91..0f51a00ea76 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -677,7 +677,7 @@ end
677 677
678define xvectype 678define xvectype
679 xgetptr $ 679 xgetptr $
680 set $size = ((struct Lisp_Vector *) $ptr)->size 680 set $size = ((struct Lisp_Vector *) $ptr)->header.size
681 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag 681 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
682 echo \n 682 echo \n
683end 683end
@@ -818,7 +818,7 @@ end
818define xvector 818define xvector
819 xgetptr $ 819 xgetptr $
820 print (struct Lisp_Vector *) $ptr 820 print (struct Lisp_Vector *) $ptr
821 output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag) 821 output ($->header.size > 50) ? 0 : ($->contents[0])@($->header.size & ~gdb_array_mark_flag)
822echo \n 822echo \n
823end 823end
824document xvector 824document xvector
@@ -853,7 +853,7 @@ end
853define xcompiled 853define xcompiled
854 xgetptr $ 854 xgetptr $
855 print (struct Lisp_Vector *) $ptr 855 print (struct Lisp_Vector *) $ptr
856 output ($->contents[0])@($->size & 0xff) 856 output ($->contents[0])@($->header.size & 0xff)
857end 857end
858document xcompiled 858document xcompiled
859Print $ as a compiled function pointer. 859Print $ as a compiled function pointer.
@@ -903,7 +903,7 @@ define xchartable
903 print (struct Lisp_Char_Table *) $ptr 903 print (struct Lisp_Char_Table *) $ptr
904 printf "Purpose: " 904 printf "Purpose: "
905 xprintsym $->purpose 905 xprintsym $->purpose
906 printf " %d extra slots", ($->size & 0x1ff) - 68 906 printf " %d extra slots", ($->header.size & 0x1ff) - 68
907 echo \n 907 echo \n
908end 908end
909document xchartable 909document xchartable
@@ -927,7 +927,7 @@ end
927define xboolvector 927define xboolvector
928 xgetptr $ 928 xgetptr $
929 print (struct Lisp_Bool_Vector *) $ptr 929 print (struct Lisp_Bool_Vector *) $ptr
930 output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8) 930 output ($->header.size > 256) ? 0 : ($->data[0])@((($->header.size & ~gdb_array_mark_flag) + 7)/ 8)
931 echo \n 931 echo \n
932end 932end
933document xboolvector 933document xboolvector
@@ -1093,7 +1093,7 @@ define xpr
1093# end 1093# end
1094 end 1094 end
1095 if $type == Lisp_Vectorlike 1095 if $type == Lisp_Vectorlike
1096 set $size = ((struct Lisp_Vector *) $ptr)->size 1096 set $size = ((struct Lisp_Vector *) $ptr)->header.size
1097 if ($size & PVEC_FLAG) 1097 if ($size & PVEC_FLAG)
1098 set $vec = (enum pvec_type) ($size & PVEC_TYPE_MASK) 1098 set $vec = (enum pvec_type) ($size & PVEC_TYPE_MASK)
1099 if $vec == PVEC_NORMAL_VECTOR 1099 if $vec == PVEC_NORMAL_VECTOR
@@ -1202,7 +1202,7 @@ end
1202 1202
1203define xfont 1203define xfont
1204 xgetptr $ 1204 xgetptr $
1205 set $size = (((struct Lisp_Vector *) $ptr)->size & 0x1FF) 1205 set $size = (((struct Lisp_Vector *) $ptr)->header.size & 0x1FF)
1206 if $size == FONT_SPEC_MAX 1206 if $size == FONT_SPEC_MAX
1207 print (struct font_spec *) $ptr 1207 print (struct font_spec *) $ptr
1208 else 1208 else
@@ -1229,7 +1229,7 @@ define xbacktrace
1229 printf "0x%x ", $ptr 1229 printf "0x%x ", $ptr
1230 if $type == Lisp_Vectorlike 1230 if $type == Lisp_Vectorlike
1231 xgetptr (*$bt->function) 1231 xgetptr (*$bt->function)
1232 set $size = ((struct Lisp_Vector *) $ptr)->size 1232 set $size = ((struct Lisp_Vector *) $ptr)->header.size
1233 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag 1233 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
1234 else 1234 else
1235 printf "Lisp type %d", $type 1235 printf "Lisp type %d", $type
diff --git a/src/ChangeLog b/src/ChangeLog
index ba829af4026..b560528a1d6 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,9 @@
12011-06-18 Eli Zaretskii <eliz@gnu.org> 12011-06-18 Eli Zaretskii <eliz@gnu.org>
2 2
3 * .gdbinit (xvectype, xvector, xcompiled, xchartable, xboolvector)
4 (xpr, xfont, xbacktrace): Use "header.size" when accessing vectors
5 and vector-like objects.
6
3 * xdisp.c (face_before_or_after_it_pos): Support bidi iteration. 7 * xdisp.c (face_before_or_after_it_pos): Support bidi iteration.
4 (next_element_from_c_string): Handle the case of the first string 8 (next_element_from_c_string): Handle the case of the first string
5 character that is not the first one in the visual order. 9 character that is not the first one in the visual order.
diff --git a/src/xdisp.c b/src/xdisp.c
index ea55cdcc3d2..7aafab4f32c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -18833,7 +18833,11 @@ display_mode_line (struct window *w, enum face_id face_id, Lisp_Object format)
18833 /* Force the mode-line to be displayed in the default face. */ 18833 /* Force the mode-line to be displayed in the default face. */
18834 it.base_face_id = it.face_id = DEFAULT_FACE_ID; 18834 it.base_face_id = it.face_id = DEFAULT_FACE_ID;
18835 18835
18836 /* FIXME: This should take its value from a user option. */ 18836 /* FIXME: This should be controlled by a user option. But
18837 supporting such an option is not trivial, since the mode line is
18838 made up of many separate strings, most of which are normally
18839 unibyte, and unibyte strings currently don't get reordered for
18840 display. */
18837 it.paragraph_embedding = L2R; 18841 it.paragraph_embedding = L2R;
18838 18842
18839 record_unwind_protect (unwind_format_mode_line, 18843 record_unwind_protect (unwind_format_mode_line,
@@ -18941,8 +18945,6 @@ display_mode_element (struct it *it, int depth, int field_width, int precision,
18941 int n = 0, field, prec; 18945 int n = 0, field, prec;
18942 int literal = 0; 18946 int literal = 0;
18943 18947
18944 it->paragraph_embedding = L2R;
18945
18946 tail_recurse: 18948 tail_recurse:
18947 if (depth > 100) 18949 if (depth > 100)
18948 elt = build_string ("*too-deep*"); 18950 elt = build_string ("*too-deep*");