emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r101184: Allow composition striding o


From: Kenichi Handa
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r101184: Allow composition striding over PT.
Date: Wed, 25 Aug 2010 13:41:32 +0900
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 101184 [merge]
committer: Kenichi Handa <address@hidden>
branch nick: trunk
timestamp: Wed 2010-08-25 13:41:32 +0900
message:
  Allow composition striding over PT.
modified:
  src/ChangeLog
  src/composite.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2010-08-25 03:49:02 +0000
+++ b/src/ChangeLog     2010-08-25 04:39:30 +0000
@@ -1,5 +1,14 @@
 2010-08-25  Kenichi Handa  <address@hidden>
 
+       * composite.c (composition_compute_stop_pos): Don't break
+       composition at PT.
+       (composition_reseat_it): Likewise.  Fix calculation of character
+       position starting a composition.
+       (Fcomposition_get_gstring): Don't limit the number of components
+       for automatic composition.
+
+2010-08-25  Kenichi Handa  <address@hidden>
+
        * composite.c (composition_compute_stop_pos): In forward search,
        pay attention to the possibility that some character after ENDPOS
        will be composed with charactrs before ENDPOS.

=== modified file 'src/composite.c'
--- a/src/composite.c   2010-08-25 00:54:05 +0000
+++ b/src/composite.c   2010-08-25 04:39:30 +0000
@@ -969,7 +969,9 @@
 static Lisp_Object _work_val;
 static int _work_char;
 
-/* 1 iff the character C is composable.  */
+/* 1 iff the character C is composable.  Characters of general
+   category Z? or C? are not composable except for ZWNJ and ZWJ. */
+
 #define CHAR_COMPOSABLE_P(C)                                           \
   ((C) == 0x200C || (C) == 0x200D                                      \
    || (_work_val = CHAR_TABLE_REF (Vunicode_category_table, (C)),      \
@@ -1028,19 +1030,6 @@
       cmp_it->stop_pos = endpos = start;
       cmp_it->ch = -1;
     }
-  if (NILP (string))
-    {
-      /* A composition never strides over PT.  */
-      if (PT > charpos)
-       {
-         if (PT < endpos)
-           cmp_it->stop_pos = endpos = PT;
-       }
-      else if (PT < charpos && PT > endpos)
-       {
-         cmp_it->stop_pos = endpos = PT - 1;
-       }
-    }
   if (NILP (current_buffer->enable_multibyte_characters)
       || NILP (Vauto_composition_mode))
     return;
@@ -1233,23 +1222,8 @@
 int
 composition_reseat_it (struct composition_it *cmp_it, EMACS_INT charpos, 
EMACS_INT bytepos, EMACS_INT endpos, struct window *w, struct face *face, 
Lisp_Object string)
 {
-  if (endpos <= charpos)
-    {
-      if (NILP (string))
-       {
-         if (endpos < 0)
-           endpos = BEGV;
-         if (endpos < PT && PT < charpos)
-           endpos = PT;
-       }
-      else if (endpos < 0)
-       endpos = 0;
-    }
-  else
-    {
-      if (NILP (string) && charpos < PT && PT < endpos)
-       endpos = PT;
-    }
+  if (endpos < 0)
+    endpos = NILP (string) ? BEGV : 0;
 
   if (cmp_it->ch == -2)
     {
@@ -1311,7 +1285,7 @@
              elt = XCAR (val);
              if (cmp_it->lookback > 0)
                {
-                 cpos -= cmp_it->lookback;
+                 cpos = charpos - cmp_it->lookback;
                  if (STRINGP (string))
                    bpos = string_char_to_byte (string, cpos);
                  else
@@ -1773,8 +1747,6 @@
 
   CHECK_NATNUM (from);
   CHECK_NATNUM (to);
-  if (XINT (to) > XINT (from) + MAX_COMPOSITION_COMPONENTS)
-    to = make_number (XINT (from) + MAX_COMPOSITION_COMPONENTS);
   if (! FONT_OBJECT_P (font_object))
     {
       struct coding_system *coding;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]