emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/coding.c


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/src/coding.c
Date: Thu, 06 Mar 2003 21:18:37 -0500

Index: emacs/src/coding.c
diff -c emacs/src/coding.c:1.268 emacs/src/coding.c:1.269
*** emacs/src/coding.c:1.268    Tue Feb  4 09:03:12 2003
--- emacs/src/coding.c  Thu Mar  6 21:18:35 2003
***************
*** 688,695 ****
  
  /* Record one COMPONENT (alternate character or composition rule).  */
  
! #define CODING_ADD_COMPOSITION_COMPONENT(coding, component)   \
!   (coding->cmp_data->data[coding->cmp_data->used++] = component)
  
  
  /* Get one byte from a data pointed by SRC and increment SRC.  If SRC
--- 688,703 ----
  
  /* Record one COMPONENT (alternate character or composition rule).  */
  
! #define CODING_ADD_COMPOSITION_COMPONENT(coding, component)           \
!   do {                                                                        
\
!     coding->cmp_data->data[coding->cmp_data->used++] = component;     \
!     if (coding->cmp_data->used - coding->cmp_data_start                       
\
!       == COMPOSITION_DATA_MAX_BUNCH_LENGTH)                           \
!       {                                                                       
\
!       CODING_ADD_COMPOSITION_END (coding, coding->produced_char);     \
!       coding->composing = COMPOSITION_NO;                             \
!       }                                                                       
\
!   } while (0)
  
  
  /* Get one byte from a data pointed by SRC and increment SRC.  If SRC
***************
*** 1329,1334 ****
--- 1337,1345 ----
  #define SHIFT_OUT_OK(idx) \
    (CODING_SPEC_ISO_INITIAL_DESIGNATION (coding_system_table[idx], 1) >= 0)
  
+ #define COMPOSITION_OK(idx)   \
+   (coding_system_table[idx]->composing != COMPOSITION_DISABLED)
+ 
  /* See the above "GENERAL NOTES on `detect_coding_XXX ()' functions".
     Check if a text is encoded in ISO2022.  If it is, return an
     integer in which appropriate flag bits any of:
***************
*** 1406,1412 ****
          else if (c >= '0' && c <= '4')
            {
              /* ESC <Fp> for start/end composition.  */
!             mask_found |= CODING_CATEGORY_MASK_ISO;
              break;
            }
          else
--- 1417,1446 ----
          else if (c >= '0' && c <= '4')
            {
              /* ESC <Fp> for start/end composition.  */
!             if (COMPOSITION_OK (CODING_CATEGORY_IDX_ISO_7))
!               mask_found |= CODING_CATEGORY_MASK_ISO_7;
!             else
!               mask &= ~CODING_CATEGORY_MASK_ISO_7;
!             if (COMPOSITION_OK (CODING_CATEGORY_IDX_ISO_7_TIGHT))
!               mask_found |= CODING_CATEGORY_MASK_ISO_7_TIGHT;
!             else
!               mask &= ~CODING_CATEGORY_MASK_ISO_7_TIGHT;
!             if (COMPOSITION_OK (CODING_CATEGORY_IDX_ISO_8_1))
!               mask_found |= CODING_CATEGORY_MASK_ISO_8_1;
!             else
!               mask &= ~CODING_CATEGORY_MASK_ISO_8_1;
!             if (COMPOSITION_OK (CODING_CATEGORY_IDX_ISO_8_2))
!               mask_found |= CODING_CATEGORY_MASK_ISO_8_2;
!             else
!               mask &= ~CODING_CATEGORY_MASK_ISO_8_2;
!             if (COMPOSITION_OK (CODING_CATEGORY_IDX_ISO_7_ELSE))
!               mask_found |= CODING_CATEGORY_MASK_ISO_7_ELSE;
!             else
!               mask &= ~CODING_CATEGORY_MASK_ISO_7_ELSE;
!             if (COMPOSITION_OK (CODING_CATEGORY_IDX_ISO_8_ELSE))
!               mask_found |= CODING_CATEGORY_MASK_ISO_8_ELSE;
!             else
!               mask &= ~CODING_CATEGORY_MASK_ISO_8_ELSE;
              break;
            }
          else
***************
*** 5289,5294 ****
--- 5323,5331 ----
              int len = data[0] - 4, j;
              Lisp_Object args[MAX_COMPOSITION_COMPONENTS * 2 - 1];
  
+             if (method == COMPOSITION_WITH_RULE_ALTCHARS
+                 && len % 2 == 0)
+               len --;
              for (j = 0; j < len; j++)
                args[j] = make_number (data[4 + j]);
              components = (method == COMPOSITION_WITH_ALTCHARS




reply via email to

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