Patch 8.1.1038
Problem:    Arabic support excludes Farsi.
Solution:   Add Farsi support to the Arabic support. (Ali Gholami Rudi,
            Ameretat Reith)
Files:      Filelist, src/arabic.c, src/arabic.h, src/globals.h, src/macros.h,
            src/mbyte.c, src/proto/arabic.pro, src/proto/mbyte.pro,
            src/Makefile, src/testdir/test_arabic.vim


*** ../vim-8.1.1037/Filelist    2019-02-16 15:09:21.209946237 +0100
--- Filelist    2019-03-22 15:28:28.674998090 +0100
***************
*** 12,18 ****
                src/README.txt \
                src/alloc.h \
                src/arabic.c \
-               src/arabic.h \
                src/ascii.h \
                src/autocmd.c \
                src/beval.c \
--- 12,17 ----
*** ../vim-8.1.1037/src/arabic.c        2019-03-21 21:45:30.871282226 +0100
--- src/arabic.c        2019-03-22 16:19:36.840005367 +0100
***************
*** 11,551 ****
   * arabic.c: functions for Arabic language
   *
   * Author: Nadim Shaikli & Isam Bayazidi
   */
  
  #include "vim.h"
  
  #if defined(FEAT_ARABIC) || defined(PROTO)
  
! static int  A_firstc_laa(int c1, int c);
! static int  A_is_harakat(int c);
! static int  A_is_iso(int c);
! static int  A_is_formb(int c);
! static int  A_is_ok(int c);
! static int  A_is_valid(int c);
! static int  A_is_special(int c);
! 
  
  /*
!  * Returns True if c is an ISO-8859-6 shaped ARABIC letter (user entered)
   */
      static int
! A_is_a(int cur_c)
  {
!     switch (cur_c)
      {
-       case a_HAMZA:
        case a_ALEF_MADDA:
        case a_ALEF_HAMZA_ABOVE:
!       case a_WAW_HAMZA:
        case a_ALEF_HAMZA_BELOW:
!       case a_YEH_HAMZA:
        case a_ALEF:
!       case a_BEH:
!       case a_TEH_MARBUTA:
!       case a_TEH:
!       case a_THEH:
!       case a_JEEM:
!       case a_HAH:
!       case a_KHAH:
!       case a_DAL:
!       case a_THAL:
!       case a_REH:
!       case a_ZAIN:
!       case a_SEEN:
!       case a_SHEEN:
!       case a_SAD:
!       case a_DAD:
!       case a_TAH:
!       case a_ZAH:
!       case a_AIN:
!       case a_GHAIN:
!       case a_TATWEEL:
!       case a_FEH:
!       case a_QAF:
!       case a_KAF:
!       case a_LAM:
!       case a_MEEM:
!       case a_NOON:
!       case a_HEH:
!       case a_WAW:
!       case a_ALEF_MAKSURA:
!       case a_YEH:
!           return TRUE;
!     }
! 
!     return FALSE;
! }
! 
! 
! /*
!  * Returns True if c is an Isolated Form-B ARABIC letter
!  */
!     static int
! A_is_s(int cur_c)
! {
!     switch (cur_c)
!     {
!       case a_s_HAMZA:
!       case a_s_ALEF_MADDA:
!       case a_s_ALEF_HAMZA_ABOVE:
!       case a_s_WAW_HAMZA:
!       case a_s_ALEF_HAMZA_BELOW:
!       case a_s_YEH_HAMZA:
!       case a_s_ALEF:
!       case a_s_BEH:
!       case a_s_TEH_MARBUTA:
!       case a_s_TEH:
!       case a_s_THEH:
!       case a_s_JEEM:
!       case a_s_HAH:
!       case a_s_KHAH:
!       case a_s_DAL:
!       case a_s_THAL:
!       case a_s_REH:
!       case a_s_ZAIN:
!       case a_s_SEEN:
!       case a_s_SHEEN:
!       case a_s_SAD:
!       case a_s_DAD:
!       case a_s_TAH:
!       case a_s_ZAH:
!       case a_s_AIN:
!       case a_s_GHAIN:
!       case a_s_FEH:
!       case a_s_QAF:
!       case a_s_KAF:
!       case a_s_LAM:
!       case a_s_MEEM:
!       case a_s_NOON:
!       case a_s_HEH:
!       case a_s_WAW:
!       case a_s_ALEF_MAKSURA:
!       case a_s_YEH:
!           return TRUE;
      }
  
!     return FALSE;
  }
  
- 
  /*
!  * Returns True if c is a Final shape of an ARABIC letter
   */
      static int
! A_is_f(int cur_c)
  {
!     switch (cur_c)
!     {
!       case a_f_ALEF_MADDA:
!       case a_f_ALEF_HAMZA_ABOVE:
!       case a_f_WAW_HAMZA:
!       case a_f_ALEF_HAMZA_BELOW:
!       case a_f_YEH_HAMZA:
!       case a_f_ALEF:
!       case a_f_BEH:
!       case a_f_TEH_MARBUTA:
!       case a_f_TEH:
!       case a_f_THEH:
!       case a_f_JEEM:
!       case a_f_HAH:
!       case a_f_KHAH:
!       case a_f_DAL:
!       case a_f_THAL:
!       case a_f_REH:
!       case a_f_ZAIN:
!       case a_f_SEEN:
!       case a_f_SHEEN:
!       case a_f_SAD:
!       case a_f_DAD:
!       case a_f_TAH:
!       case a_f_ZAH:
!       case a_f_AIN:
!       case a_f_GHAIN:
!       case a_f_FEH:
!       case a_f_QAF:
!       case a_f_KAF:
!       case a_f_LAM:
!       case a_f_MEEM:
!       case a_f_NOON:
!       case a_f_HEH:
!       case a_f_WAW:
!       case a_f_ALEF_MAKSURA:
!       case a_f_YEH:
!       case a_f_LAM_ALEF_MADDA_ABOVE:
!       case a_f_LAM_ALEF_HAMZA_ABOVE:
!       case a_f_LAM_ALEF_HAMZA_BELOW:
!       case a_f_LAM_ALEF:
!           return TRUE;
!     }
!     return FALSE;
! }
  
! 
! /*
!  * Change shape - from ISO-8859-6/Isolated to Form-B Isolated
!  */
!     static int
! chg_c_a2s(int cur_c)
! {
!     switch (cur_c)
      {
!       case a_HAMZA: return a_s_HAMZA;
!       case a_ALEF_MADDA: return a_s_ALEF_MADDA;
!       case a_ALEF_HAMZA_ABOVE: return a_s_ALEF_HAMZA_ABOVE;
!       case a_WAW_HAMZA: return a_s_WAW_HAMZA;
!       case a_ALEF_HAMZA_BELOW: return a_s_ALEF_HAMZA_BELOW;
!       case a_YEH_HAMZA: return a_s_YEH_HAMZA;
!       case a_ALEF: return a_s_ALEF;
!       case a_TEH_MARBUTA: return a_s_TEH_MARBUTA;
!       case a_DAL: return a_s_DAL;
!       case a_THAL: return a_s_THAL;
!       case a_REH: return a_s_REH;
!       case a_ZAIN: return a_s_ZAIN;
!       case a_TATWEEL: return cur_c;   /* exceptions */
!       case a_WAW: return a_s_WAW;
!       case a_ALEF_MAKSURA: return a_s_ALEF_MAKSURA;
!       case a_BEH: return a_s_BEH;
!       case a_TEH: return a_s_TEH;
!       case a_THEH: return a_s_THEH;
!       case a_JEEM: return a_s_JEEM;
!       case a_HAH: return a_s_HAH;
!       case a_KHAH: return a_s_KHAH;
!       case a_SEEN: return a_s_SEEN;
!       case a_SHEEN: return a_s_SHEEN;
!       case a_SAD: return a_s_SAD;
!       case a_DAD: return a_s_DAD;
!       case a_TAH: return a_s_TAH;
!       case a_ZAH: return a_s_ZAH;
!       case a_AIN: return a_s_AIN;
!       case a_GHAIN: return a_s_GHAIN;
!       case a_FEH: return a_s_FEH;
!       case a_QAF: return a_s_QAF;
!       case a_KAF: return a_s_KAF;
!       case a_LAM: return a_s_LAM;
!       case a_MEEM: return a_s_MEEM;
!       case a_NOON: return a_s_NOON;
!       case a_HEH: return a_s_HEH;
!       case a_YEH: return a_s_YEH;
      }
-     return 0;
- }
  
! 
! /*
!  * Change shape - from ISO-8859-6/Isolated to Initial
!  */
!     static int
! chg_c_a2i(int cur_c)
! {
!     switch (cur_c)
!     {
!       case a_YEH_HAMZA: return a_i_YEH_HAMZA;
!       case a_HAMZA:                   /* exceptions */
!           return a_s_HAMZA;
!       case a_ALEF_MADDA:              /* exceptions */
!           return a_s_ALEF_MADDA;
!       case a_ALEF_HAMZA_ABOVE:        /* exceptions */
!           return a_s_ALEF_HAMZA_ABOVE;
!       case a_WAW_HAMZA:               /* exceptions */
!           return a_s_WAW_HAMZA;
!       case a_ALEF_HAMZA_BELOW:        /* exceptions */
!           return a_s_ALEF_HAMZA_BELOW;
!       case a_ALEF:                    /* exceptions */
!           return a_s_ALEF;
!       case a_TEH_MARBUTA:             /* exceptions */
!           return a_s_TEH_MARBUTA;
!       case a_DAL:                     /* exceptions */
!           return a_s_DAL;
!       case a_THAL:                    /* exceptions */
!           return a_s_THAL;
!       case a_REH:                     /* exceptions */
!           return a_s_REH;
!       case a_ZAIN:                    /* exceptions */
!           return a_s_ZAIN;
!       case a_TATWEEL:                 /* exceptions */
!           return cur_c;
!       case a_WAW:                     /* exceptions */
!           return a_s_WAW;
!       case a_ALEF_MAKSURA:            /* exceptions */
!           return a_s_ALEF_MAKSURA;
!       case a_BEH: return a_i_BEH;
!       case a_TEH: return a_i_TEH;
!       case a_THEH: return a_i_THEH;
!       case a_JEEM: return a_i_JEEM;
!       case a_HAH: return a_i_HAH;
!       case a_KHAH: return a_i_KHAH;
!       case a_SEEN: return a_i_SEEN;
!       case a_SHEEN: return a_i_SHEEN;
!       case a_SAD: return a_i_SAD;
!       case a_DAD: return a_i_DAD;
!       case a_TAH: return a_i_TAH;
!       case a_ZAH: return a_i_ZAH;
!       case a_AIN: return a_i_AIN;
!       case a_GHAIN: return a_i_GHAIN;
!       case a_FEH: return a_i_FEH;
!       case a_QAF: return a_i_QAF;
!       case a_KAF: return a_i_KAF;
!       case a_LAM: return a_i_LAM;
!       case a_MEEM: return a_i_MEEM;
!       case a_NOON: return a_i_NOON;
!       case a_HEH: return a_i_HEH;
!       case a_YEH: return a_i_YEH;
!     }
!     return 0;
  }
  
- 
  /*
!  * Change shape - from ISO-8859-6/Isolated to Medial
   */
      static int
! chg_c_a2m(int cur_c)
  {
!     switch (cur_c)
!     {
!       case a_HAMZA: return a_s_HAMZA; /* exception */
!       case a_ALEF_MADDA: return a_f_ALEF_MADDA;       /* exception */
!       case a_ALEF_HAMZA_ABOVE: return a_f_ALEF_HAMZA_ABOVE;   /* exception */
!       case a_WAW_HAMZA: return a_f_WAW_HAMZA; /* exception */
!       case a_ALEF_HAMZA_BELOW: return a_f_ALEF_HAMZA_BELOW;   /* exception */
!       case a_YEH_HAMZA: return a_m_YEH_HAMZA;
!       case a_ALEF: return a_f_ALEF;   /* exception */
!       case a_BEH: return a_m_BEH;
!       case a_TEH_MARBUTA: return a_f_TEH_MARBUTA;     /* exception */
!       case a_TEH: return a_m_TEH;
!       case a_THEH: return a_m_THEH;
!       case a_JEEM: return a_m_JEEM;
!       case a_HAH: return a_m_HAH;
!       case a_KHAH: return a_m_KHAH;
!       case a_DAL: return a_f_DAL;     /* exception */
!       case a_THAL: return a_f_THAL;   /* exception */
!       case a_REH: return a_f_REH;     /* exception */
!       case a_ZAIN: return a_f_ZAIN;   /* exception */
!       case a_SEEN: return a_m_SEEN;
!       case a_SHEEN: return a_m_SHEEN;
!       case a_SAD: return a_m_SAD;
!       case a_DAD: return a_m_DAD;
!       case a_TAH: return a_m_TAH;
!       case a_ZAH: return a_m_ZAH;
!       case a_AIN: return a_m_AIN;
!       case a_GHAIN: return a_m_GHAIN;
!       case a_TATWEEL: return cur_c;   /* exception */
!       case a_FEH: return a_m_FEH;
!       case a_QAF: return a_m_QAF;
!       case a_KAF: return a_m_KAF;
!       case a_LAM: return a_m_LAM;
!       case a_MEEM: return a_m_MEEM;
!       case a_NOON: return a_m_NOON;
!       case a_HEH: return a_m_HEH;
!       case a_WAW: return a_f_WAW;     /* exception */
!       case a_ALEF_MAKSURA: return a_f_ALEF_MAKSURA;   /* exception */
!       case a_YEH: return a_m_YEH;
!     }
!     return 0;
! }
! 
  
! /*
!  * Change shape - from ISO-8859-6/Isolated to final
!  */
!     static int
! chg_c_a2f(int cur_c)
! {
!     /* NOTE: these encodings need to be accounted for
!      * a_f_ALEF_MADDA;
!      * a_f_ALEF_HAMZA_ABOVE;
!      * a_f_ALEF_HAMZA_BELOW;
!      * a_f_LAM_ALEF_MADDA_ABOVE;
!      * a_f_LAM_ALEF_HAMZA_ABOVE;
!      * a_f_LAM_ALEF_HAMZA_BELOW;
!      */
!     switch (cur_c)
!     {
!       case a_HAMZA: return a_s_HAMZA; /* exception */
!       case a_ALEF_MADDA: return a_f_ALEF_MADDA;
!       case a_ALEF_HAMZA_ABOVE: return a_f_ALEF_HAMZA_ABOVE;
!       case a_WAW_HAMZA: return a_f_WAW_HAMZA;
!       case a_ALEF_HAMZA_BELOW: return a_f_ALEF_HAMZA_BELOW;
!       case a_YEH_HAMZA: return a_f_YEH_HAMZA;
!       case a_ALEF: return a_f_ALEF;
!       case a_BEH: return a_f_BEH;
!       case a_TEH_MARBUTA: return a_f_TEH_MARBUTA;
!       case a_TEH: return a_f_TEH;
!       case a_THEH: return a_f_THEH;
!       case a_JEEM: return a_f_JEEM;
!       case a_HAH: return a_f_HAH;
!       case a_KHAH: return a_f_KHAH;
!       case a_DAL: return a_f_DAL;
!       case a_THAL: return a_f_THAL;
!       case a_REH: return a_f_REH;
!       case a_ZAIN: return a_f_ZAIN;
!       case a_SEEN: return a_f_SEEN;
!       case a_SHEEN: return a_f_SHEEN;
!       case a_SAD: return a_f_SAD;
!       case a_DAD: return a_f_DAD;
!       case a_TAH: return a_f_TAH;
!       case a_ZAH: return a_f_ZAH;
!       case a_AIN: return a_f_AIN;
!       case a_GHAIN: return a_f_GHAIN;
!       case a_TATWEEL: return cur_c;   /* exception */
!       case a_FEH: return a_f_FEH;
!       case a_QAF: return a_f_QAF;
!       case a_KAF: return a_f_KAF;
!       case a_LAM: return a_f_LAM;
!       case a_MEEM: return a_f_MEEM;
!       case a_NOON: return a_f_NOON;
!       case a_HEH: return a_f_HEH;
!       case a_WAW: return a_f_WAW;
!       case a_ALEF_MAKSURA: return a_f_ALEF_MAKSURA;
!       case a_YEH: return a_f_YEH;
!     }
!     return 0;
  }
  
- 
  /*
!  * Change shape - from Initial to Medial
!  * This code is unreachable, because for the relevant characters ARABIC_CHAR()
!  * is FALSE;
   */
! #if 0
!     static int
! chg_c_i2m(int cur_c)
  {
!     switch (cur_c)
!     {
!       case a_i_YEH_HAMZA: return a_m_YEH_HAMZA;
!       case a_i_BEH: return a_m_BEH;
!       case a_i_TEH: return a_m_TEH;
!       case a_i_THEH: return a_m_THEH;
!       case a_i_JEEM: return a_m_JEEM;
!       case a_i_HAH: return a_m_HAH;
!       case a_i_KHAH: return a_m_KHAH;
!       case a_i_SEEN: return a_m_SEEN;
!       case a_i_SHEEN: return a_m_SHEEN;
!       case a_i_SAD: return a_m_SAD;
!       case a_i_DAD: return a_m_DAD;
!       case a_i_TAH: return a_m_TAH;
!       case a_i_ZAH: return a_m_ZAH;
!       case a_i_AIN: return a_m_AIN;
!       case a_i_GHAIN: return a_m_GHAIN;
!       case a_i_FEH: return a_m_FEH;
!       case a_i_QAF: return a_m_QAF;
!       case a_i_KAF: return a_m_KAF;
!       case a_i_LAM: return a_m_LAM;
!       case a_i_MEEM: return a_m_MEEM;
!       case a_i_NOON: return a_m_NOON;
!       case a_i_HEH: return a_m_HEH;
!       case a_i_YEH: return a_m_YEH;
!     }
!     return 0;
  }
- #endif
- 
  
  /*
!  * Change shape - from Final to Medial
   */
!     static int
! chg_c_f2m(int cur_c)
  {
!     switch (cur_c)
!     {
!       /* NOTE: these encodings are multi-positional, no ?
!        * case a_f_ALEF_MADDA:
!        * case a_f_ALEF_HAMZA_ABOVE:
!        * case a_f_ALEF_HAMZA_BELOW:
!        */
!       case a_f_YEH_HAMZA: return a_m_YEH_HAMZA;
!       case a_f_WAW_HAMZA:             /* exceptions */
!       case a_f_ALEF:
!       case a_f_TEH_MARBUTA:
!       case a_f_DAL:
!       case a_f_THAL:
!       case a_f_REH:
!       case a_f_ZAIN:
!       case a_f_WAW:
!       case a_f_ALEF_MAKSURA:
!               return cur_c;
!       case a_f_BEH: return a_m_BEH;
!       case a_f_TEH: return a_m_TEH;
!       case a_f_THEH: return a_m_THEH;
!       case a_f_JEEM: return a_m_JEEM;
!       case a_f_HAH: return a_m_HAH;
!       case a_f_KHAH: return a_m_KHAH;
!       case a_f_SEEN: return a_m_SEEN;
!       case a_f_SHEEN: return a_m_SHEEN;
!       case a_f_SAD: return a_m_SAD;
!       case a_f_DAD: return a_m_DAD;
!       case a_f_TAH: return a_m_TAH;
!       case a_f_ZAH: return a_m_ZAH;
!       case a_f_AIN: return a_m_AIN;
!       case a_f_GHAIN: return a_m_GHAIN;
!       case a_f_FEH: return a_m_FEH;
!       case a_f_QAF: return a_m_QAF;
!       case a_f_KAF: return a_m_KAF;
!       case a_f_LAM: return a_m_LAM;
!       case a_f_MEEM: return a_m_MEEM;
!       case a_f_NOON: return a_m_NOON;
!       case a_f_HEH: return a_m_HEH;
!       case a_f_YEH: return a_m_YEH;
! 
!       /* NOTE: these encodings are multi-positional, no ?
!        * case a_f_LAM_ALEF_MADDA_ABOVE:
!        * case a_f_LAM_ALEF_HAMZA_ABOVE:
!        * case a_f_LAM_ALEF_HAMZA_BELOW:
!        * case a_f_LAM_ALEF:
!        */
!     }
!     return 0;
  }
  
- 
  /*
!  * Change shape - from Combination (2 char) to an Isolated
   */
      static int
! chg_c_laa2i(int hid_c)
  {
!     switch (hid_c)
!     {
!       case a_ALEF_MADDA: return a_s_LAM_ALEF_MADDA_ABOVE;
!       case a_ALEF_HAMZA_ABOVE: return a_s_LAM_ALEF_HAMZA_ABOVE;
!       case a_ALEF_HAMZA_BELOW: return a_s_LAM_ALEF_HAMZA_BELOW;
!       case a_ALEF: return a_s_LAM_ALEF;
!     }
!     return 0;
  }
  
- 
  /*
!  * Change shape - from Combination-Isolated to Final
   */
      static int
! chg_c_laa2f(int hid_c)
  {
!     switch (hid_c)
!     {
!       case a_ALEF_MADDA: return a_f_LAM_ALEF_MADDA_ABOVE;
!       case a_ALEF_HAMZA_ABOVE: return a_f_LAM_ALEF_HAMZA_ABOVE;
!       case a_ALEF_HAMZA_BELOW: return a_f_LAM_ALEF_HAMZA_BELOW;
!       case a_ALEF: return a_f_LAM_ALEF;
!     }
!     return 0;
  }
  
  /*
!  * Do "half-shaping" on character "c".  Return zero if no shaping.
   */
      static int
! half_shape(int c)
  {
!     if (A_is_a(c))
!       return chg_c_a2i(c);
!     if (A_is_valid(c) && A_is_f(c))
!       return chg_c_f2m(c);
!     return 0;
  }
  
  /*
--- 11,321 ----
   * arabic.c: functions for Arabic language
   *
   * Author: Nadim Shaikli & Isam Bayazidi
+  * Farsi support and restructuring to make adding new letters easier by Ali
+  * Gholami Rudi.  Further work by Ameretat Reith.
+  */
+ 
+ /*
+  * Sorted list of unicode Arabic characters.  Each entry holds the
+  * presentation forms of a letter.
+  *
+  * Arabic characters are categorized into following types:
+  *
+  * Isolated   - iso-8859-6 form
+  * Initial    - unicode form-B start
+  * Medial     - unicode form-B middle
+  * Final      - unicode form-B final
+  * Stand-Alone        - unicode form-B isolated
   */
  
  #include "vim.h"
  
  #if defined(FEAT_ARABIC) || defined(PROTO)
  
! // Unicode values for Arabic characters.
! #define a_HAMZA                               0x0621
! #define a_ALEF_MADDA                  0x0622
! #define a_ALEF_HAMZA_ABOVE            0x0623
! #define a_WAW_HAMZA                   0x0624
! #define a_ALEF_HAMZA_BELOW            0x0625
! #define a_YEH_HAMZA                   0x0626
! #define a_ALEF                                0x0627
! #define a_BEH                         0x0628
! #define a_TEH_MARBUTA                 0x0629
! #define a_TEH                         0x062a
! #define a_THEH                                0x062b
! #define a_JEEM                                0x062c
! #define a_HAH                         0x062d
! #define a_KHAH                                0x062e
! #define a_DAL                         0x062f
! #define a_THAL                                0x0630
! #define a_REH                         0x0631
! #define a_ZAIN                                0x0632
! #define a_SEEN                                0x0633
! #define a_SHEEN                               0x0634
! #define a_SAD                         0x0635
! #define a_DAD                         0x0636
! #define a_TAH                         0x0637
! #define a_ZAH                         0x0638
! #define a_AIN                         0x0639
! #define a_GHAIN                               0x063a
! #define a_TATWEEL                     0x0640
! #define a_FEH                         0x0641
! #define a_QAF                         0x0642
! #define a_KAF                         0x0643
! #define a_LAM                         0x0644
! #define a_MEEM                                0x0645
! #define a_NOON                                0x0646
! #define a_HEH                         0x0647
! #define a_WAW                         0x0648
! #define a_ALEF_MAKSURA                        0x0649
! #define a_YEH                         0x064a
! #define a_FATHATAN                    0x064b
! #define a_DAMMATAN                    0x064c
! #define a_KASRATAN                    0x064d
! #define a_FATHA                               0x064e
! #define a_DAMMA                               0x064f
! #define a_KASRA                               0x0650
! #define a_SHADDA                      0x0651
! #define a_SUKUN                               0x0652
! #define a_MADDA_ABOVE                 0x0653
! #define a_HAMZA_ABOVE                 0x0654
! #define a_HAMZA_BELOW                 0x0655
! 
! #define a_PEH                         0x067e
! #define a_TCHEH                               0x0686
! #define a_JEH                         0x0698
! #define a_FKAF                                0x06a9
! #define a_GAF                         0x06af
! #define a_FYEH                                0x06cc
! 
! #define a_s_LAM_ALEF_MADDA_ABOVE      0xfef5
! #define a_f_LAM_ALEF_MADDA_ABOVE      0xfef6
! #define a_s_LAM_ALEF_HAMZA_ABOVE      0xfef7
! #define a_f_LAM_ALEF_HAMZA_ABOVE      0xfef8
! #define a_s_LAM_ALEF_HAMZA_BELOW      0xfef9
! #define a_f_LAM_ALEF_HAMZA_BELOW      0xfefa
! #define a_s_LAM_ALEF                  0xfefb
! #define a_f_LAM_ALEF                  0xfefc
! 
! static struct achar {
!     unsigned c;
!     unsigned isolated;
!     unsigned initial;
!     unsigned medial;
!     unsigned final;
! } achars[] = {
!     {a_HAMZA, 0xfe80, 0, 0, 0},
!     {a_ALEF_MADDA, 0xfe81, 0, 0, 0xfe82},
!     {a_ALEF_HAMZA_ABOVE, 0xfe83, 0, 0, 0xfe84},
!     {a_WAW_HAMZA, 0xfe85, 0, 0, 0xfe86},
!     {a_ALEF_HAMZA_BELOW, 0xfe87, 0, 0, 0xfe88},
!     {a_YEH_HAMZA, 0xfe89, 0xfe8b, 0xfe8c, 0xfe8a},
!     {a_ALEF, 0xfe8d, 0, 0, 0xfe8e},
!     {a_BEH, 0xfe8f, 0xfe91, 0xfe92, 0xfe90},
!     {a_TEH_MARBUTA, 0xfe93, 0, 0, 0xfe94},
!     {a_TEH, 0xfe95, 0xfe97, 0xfe98, 0xfe96},
!     {a_THEH, 0xfe99, 0xfe9b, 0xfe9c, 0xfe9a},
!     {a_JEEM, 0xfe9d, 0xfe9f, 0xfea0, 0xfe9e},
!     {a_HAH, 0xfea1, 0xfea3, 0xfea4, 0xfea2},
!     {a_KHAH, 0xfea5, 0xfea7, 0xfea8, 0xfea6},
!     {a_DAL, 0xfea9, 0, 0, 0xfeaa},
!     {a_THAL, 0xfeab, 0, 0, 0xfeac},
!     {a_REH, 0xfead, 0, 0, 0xfeae},
!     {a_ZAIN, 0xfeaf, 0, 0, 0xfeb0},
!     {a_SEEN, 0xfeb1, 0xfeb3, 0xfeb4, 0xfeb2},
!     {a_SHEEN, 0xfeb5, 0xfeb7, 0xfeb8, 0xfeb6},
!     {a_SAD, 0xfeb9, 0xfebb, 0xfebc, 0xfeba},
!     {a_DAD, 0xfebd, 0xfebf, 0xfec0, 0xfebe},
!     {a_TAH, 0xfec1, 0xfec3, 0xfec4, 0xfec2},
!     {a_ZAH, 0xfec5, 0xfec7, 0xfec8, 0xfec6},
!     {a_AIN, 0xfec9, 0xfecb, 0xfecc, 0xfeca},
!     {a_GHAIN, 0xfecd, 0xfecf, 0xfed0, 0xfece},
!     {a_TATWEEL, 0, 0x0640, 0x0640, 0x0640},
!     {a_FEH, 0xfed1, 0xfed3, 0xfed4, 0xfed2},
!     {a_QAF, 0xfed5, 0xfed7, 0xfed8, 0xfed6},
!     {a_KAF, 0xfed9, 0xfedb, 0xfedc, 0xfeda},
!     {a_LAM, 0xfedd, 0xfedf, 0xfee0, 0xfede},
!     {a_MEEM, 0xfee1, 0xfee3, 0xfee4, 0xfee2},
!     {a_NOON, 0xfee5, 0xfee7, 0xfee8, 0xfee6},
!     {a_HEH, 0xfee9, 0xfeeb, 0xfeec, 0xfeea},
!     {a_WAW, 0xfeed, 0, 0, 0xfeee},
!     {a_ALEF_MAKSURA, 0xfeef, 0, 0, 0xfef0},
!     {a_YEH, 0xfef1, 0xfef3, 0xfef4, 0xfef2},
!     {a_FATHATAN, 0xfe70, 0, 0, 0},
!     {a_DAMMATAN, 0xfe72, 0, 0, 0},
!     {a_KASRATAN, 0xfe74, 0, 0, 0},
!     {a_FATHA, 0xfe76, 0, 0xfe77, 0},
!     {a_DAMMA, 0xfe78, 0, 0xfe79, 0},
!     {a_KASRA, 0xfe7a, 0, 0xfe7b, 0},
!     {a_SHADDA, 0xfe7c, 0, 0xfe7c, 0},
!     {a_SUKUN, 0xfe7e, 0, 0xfe7f, 0},
!     {a_MADDA_ABOVE, 0, 0, 0, 0},
!     {a_HAMZA_ABOVE, 0, 0, 0, 0},
!     {a_HAMZA_BELOW, 0, 0, 0, 0},
!     {a_PEH, 0xfb56, 0xfb58, 0xfb59, 0xfb57},
!     {a_TCHEH, 0xfb7a, 0xfb7c, 0xfb7d, 0xfb7b},
!     {a_JEH, 0xfb8a, 0, 0, 0xfb8b},
!     {a_FKAF, 0xfb8e, 0xfb90, 0xfb91, 0xfb8f},
!     {a_GAF, 0xfb92, 0xfb94, 0xfb95, 0xfb93},
!     {a_FYEH, 0xfbfc, 0xfbfe, 0xfbff, 0xfbfd},
! };
! 
! #define a_BYTE_ORDER_MARK             0xfeff
! 
! #define ARRAY_SIZE(a)         (sizeof(a) / sizeof((a)[0]))
! 
! /*
!  * Find the struct achar pointer to the given Arabic char.
!  * Returns NULL if not found.
!  */
!     static struct achar *
! find_achar(int c)
! {
!     int h, m, l;
! 
!     // using binary search to find c
!     h = ARRAY_SIZE(achars);
!     l = 0;
!     while (l < h)
!     {
!       m = (h + l) / 2;
!       if (achars[m].c == (unsigned)c)
!           return &achars[m];
!       if ((unsigned)c < achars[m].c)
!           h = m;
!       else
!           l = m + 1;
!     }
!     return NULL;
! }
  
  /*
!  * Change shape - from Combination (2 char) to an Isolated
   */
      static int
! chg_c_laa2i(int hid_c)
  {
!     int tempc;
! 
!     switch (hid_c)
      {
        case a_ALEF_MADDA:
+           tempc = a_s_LAM_ALEF_MADDA_ABOVE;
+           break;
        case a_ALEF_HAMZA_ABOVE:
!           tempc = a_s_LAM_ALEF_HAMZA_ABOVE;
!           break;
        case a_ALEF_HAMZA_BELOW:
!           tempc = a_s_LAM_ALEF_HAMZA_BELOW;
!           break;
        case a_ALEF:
!           tempc = a_s_LAM_ALEF;
!           break;
!       default:
!           tempc = 0;
      }
  
!     return tempc;
  }
  
  /*
!  * Change shape - from Combination-Isolated to Final
   */
      static int
! chg_c_laa2f(int hid_c)
  {
!     int tempc;
  
!     switch (hid_c)
      {
!       case a_ALEF_MADDA:
!           tempc = a_f_LAM_ALEF_MADDA_ABOVE;
!           break;
!       case a_ALEF_HAMZA_ABOVE:
!           tempc = a_f_LAM_ALEF_HAMZA_ABOVE;
!           break;
!       case a_ALEF_HAMZA_BELOW:
!           tempc = a_f_LAM_ALEF_HAMZA_BELOW;
!           break;
!       case a_ALEF:
!           tempc = a_f_LAM_ALEF;
!           break;
!       default:
!           tempc = 0;
      }
  
!     return tempc;
  }
  
  /*
!  * Returns whether it is possible to join the given letters
   */
      static int
! can_join(int c1, int c2)
  {
!     struct achar *a1 = find_achar(c1);
!     struct achar *a2 = find_achar(c2);
  
!     return a1 && a2 && (a1->initial || a1->medial) && (a2->final || 
a2->medial);
  }
  
  /*
!  * Check whether we are dealing with a character that could be regarded as an
!  * Arabic combining character, need to check the character before this.
   */
!     int
! arabic_maycombine(int two)
  {
!     if (p_arshape && !p_tbidi)
!       return (two == a_ALEF_MADDA
!                   || two == a_ALEF_HAMZA_ABOVE
!                   || two == a_ALEF_HAMZA_BELOW
!                   || two == a_ALEF);
!     return FALSE;
  }
  
  /*
!  * Check whether we are dealing with Arabic combining characters.
!  * Note: these are NOT really composing characters!
   */
!     int
! arabic_combine(
!     int               one,        // first character
!     int               two)        // character just after "one"
  {
!     if (one == a_LAM)
!       return arabic_maycombine(two);
!     return FALSE;
  }
  
  /*
!  * A_is_iso returns true if 'c' is an Arabic ISO-8859-6 character
!  *            (alphabet/number/punctuation)
   */
      static int
! A_is_iso(int c)
  {
!     return find_achar(c) != NULL;
  }
  
  /*
!  * A_is_ok returns true if 'c' is an Arabic 10646 (8859-6 or Form-B)
   */
      static int
! A_is_ok(int c)
  {
!     return (A_is_iso(c) || c == a_BYTE_ORDER_MARK);
  }
  
  /*
!  * A_is_valid returns true if 'c' is an Arabic 10646 (8859-6 or Form-B)
!  *            with some exceptions/exclusions
   */
      static int
! A_is_valid(int c)
  {
!     return (A_is_ok(c) && c != a_HAMZA);
  }
  
  /*
***************
*** 567,614 ****
      int               next_c)
  {
      int               curr_c;
-     int               shape_c;
      int               curr_laa;
      int               prev_laa;
  
!     /* Deal only with Arabic character, pass back all others */
      if (!A_is_ok(c))
        return c;
  
!     /* half-shape current and previous character */
!     shape_c = half_shape(prev_c);
! 
!     curr_laa = A_firstc_laa(c, *c1p);
!     prev_laa = A_firstc_laa(prev_c, prev_c1);
  
      if (curr_laa)
      {
!       if (A_is_valid(prev_c) && !A_is_f(shape_c)
!                                        && !A_is_s(shape_c) && !prev_laa)
!           curr_c = chg_c_laa2f(curr_laa);
        else
!           curr_c = chg_c_laa2i(curr_laa);
  
!       /* Remove the composing character */
        *c1p = 0;
      }
-     else if (!A_is_valid(prev_c) && A_is_valid(next_c))
-       curr_c = chg_c_a2i(c);
-     else if (!shape_c || A_is_f(shape_c) || A_is_s(shape_c) || prev_laa)
-       curr_c = A_is_valid(next_c) ? chg_c_a2i(c) : chg_c_a2s(c);
-     else if (A_is_valid(next_c))
- #if 0
-       curr_c = A_is_iso(c) ? chg_c_a2m(c) : chg_c_i2m(c);
- #else
-       curr_c = A_is_iso(c) ? chg_c_a2m(c) : 0;
- #endif
-     else if (A_is_valid(prev_c))
-       curr_c = chg_c_a2f(c);
      else
!       curr_c = chg_c_a2s(c);
  
!     /* Sanity check -- curr_c should, in the future, never be 0.
!      * We should, in the future, insert a fatal error here. */
      if (curr_c == NUL)
        curr_c = c;
  
--- 337,380 ----
      int               next_c)
  {
      int               curr_c;
      int               curr_laa;
      int               prev_laa;
  
!     // Deal only with Arabic characters, pass back all others
      if (!A_is_ok(c))
        return c;
  
!     curr_laa = arabic_combine(c, *c1p);
!     prev_laa = arabic_combine(prev_c, prev_c1);
  
      if (curr_laa)
      {
!       if (A_is_valid(prev_c) && can_join(prev_c, a_LAM) && !prev_laa)
!           curr_c = chg_c_laa2f(*c1p);
        else
!           curr_c = chg_c_laa2i(*c1p);
  
!       // Remove the composing character
        *c1p = 0;
      }
      else
!     {
!       struct achar *curr_a = find_achar(c);
!       int backward_combine = !prev_laa && can_join(prev_c, c);
!       int forward_combine = can_join(c, next_c);
! 
!       if (backward_combine && forward_combine)
!           curr_c = curr_a->medial;
!       if (backward_combine && !forward_combine)
!           curr_c = curr_a->final;
!       if (!backward_combine && forward_combine)
!           curr_c = curr_a->initial;
!       if (!backward_combine && !forward_combine)
!           curr_c = curr_a->isolated;
!     }
  
!     // Sanity check -- curr_c should, in the future, never be 0.
!     // We should, in the future, insert a fatal error here.
      if (curr_c == NUL)
        curr_c = c;
  
***************
*** 616,712 ****
      {
        char_u buf[MB_MAXBYTES + 1];
  
!       /* Update the first byte of the character. */
        (*mb_char2bytes)(curr_c, buf);
        *ccp = buf[0];
      }
  
!     /* Return the shaped character */
      return curr_c;
  }
! 
! 
! /*
!  * A_firstc_laa returns first character of LAA combination if it exists
!  */
!     static int
! A_firstc_laa(
!     int c,    /* base character */
!     int c1)   /* first composing character */
! {
!     if (c1 != NUL && c == a_LAM && !A_is_harakat(c1))
!       return c1;
!     return 0;
! }
! 
! 
! /*
!  * A_is_harakat returns TRUE if 'c' is an Arabic Harakat character
!  *            (harakat/tanween)
!  */
!     static int
! A_is_harakat(int c)
! {
!     return (c >= a_FATHATAN && c <= a_SUKUN);
! }
! 
! 
! /*
!  * A_is_iso returns TRUE if 'c' is an Arabic ISO-8859-6 character
!  *            (alphabet/number/punctuation)
!  */
!     static int
! A_is_iso(int c)
! {
!     return ((c >= a_HAMZA && c <= a_GHAIN)
!           || (c >= a_TATWEEL && c <= a_HAMZA_BELOW)
!           || c == a_MINI_ALEF);
! }
! 
! 
! /*
!  * A_is_formb returns TRUE if 'c' is an Arabic 10646-1 FormB character
!  *            (alphabet/number/punctuation)
!  */
!     static int
! A_is_formb(int c)
! {
!     return ((c >= a_s_FATHATAN && c <= a_s_DAMMATAN)
!           || c == a_s_KASRATAN
!           || (c >= a_s_FATHA && c <= a_f_LAM_ALEF)
!           || c == a_BYTE_ORDER_MARK);
! }
! 
! 
! /*
!  * A_is_ok returns TRUE if 'c' is an Arabic 10646 (8859-6 or Form-B)
!  */
!     static int
! A_is_ok(int c)
! {
!     return (A_is_iso(c) || A_is_formb(c));
! }
! 
! 
! /*
!  * A_is_valid returns TRUE if 'c' is an Arabic 10646 (8859-6 or Form-B)
!  *            with some exceptions/exclusions
!  */
!     static int
! A_is_valid(int c)
! {
!     return (A_is_ok(c) && !A_is_special(c));
! }
! 
! 
! /*
!  * A_is_special returns TRUE if 'c' is not a special Arabic character.
!  *            Specials don't adhere to most of the rules.
!  */
!     static int
! A_is_special(int c)
! {
!     return (c == a_HAMZA || c == a_s_HAMZA);
! }
! 
! #endif /* FEAT_ARABIC */
--- 382,393 ----
      {
        char_u buf[MB_MAXBYTES + 1];
  
!       // Update the first byte of the character.
        (*mb_char2bytes)(curr_c, buf);
        *ccp = buf[0];
      }
  
!     // Return the shaped character
      return curr_c;
  }
! #endif // FEAT_ARABIC
*** ../vim-8.1.1037/src/arabic.h        2016-08-29 22:42:20.000000000 +0200
--- src/arabic.h        1970-01-01 01:00:00.000000000 +0100
***************
*** 1,258 ****
- /* vi:set ts=8 sts=4 sw=4 noet:
-  *
-  * VIM - Vi IMproved    by Bram Moolenaar
-  *
-  * Do ":help uganda"  in Vim to read copying and usage conditions.
-  * Do ":help credits" in Vim to see a list of people who contributed.
-  */
- 
- /*
-  * Arabic characters are categorized into following types:
-  *
-  * Isolated   - iso-8859-6 form         char denoted with     a_*
-  * Initial    - unicode form-B start    char denoted with     a_i_*
-  * Medial     - unicode form-B middle   char denoted with     a_m_*
-  * Final      - unicode form-B final    char denoted with     a_f_*
-  * Stand-Alone        - unicode form-B isolated char denoted with     a_s_* 
(NOT USED)
-  *
-  * --
-  *
-  * Author: Nadim Shaikli & Isam Bayazidi
-  * - (based on Unicode)
-  *
-  */
- 
- /*
-  * Arabic ISO-10646-1 character set definition
-  */
- 
- /*
-  * Arabic ISO-8859-6 (subset of 10646; 0600 - 06FF)
-  */
- #define a_COMMA                               0x060C
- #define a_SEMICOLON                   0x061B
- #define a_QUESTION                    0x061F
- #define a_HAMZA                               0x0621
- #define a_ALEF_MADDA                  0x0622
- #define a_ALEF_HAMZA_ABOVE            0x0623
- #define a_WAW_HAMZA                   0x0624
- #define a_ALEF_HAMZA_BELOW            0x0625
- #define a_YEH_HAMZA                   0x0626
- #define a_ALEF                                0x0627
- #define a_BEH                         0x0628
- #define a_TEH_MARBUTA                 0x0629
- #define a_TEH                         0x062a
- #define a_THEH                                0x062b
- #define a_JEEM                                0x062c
- #define a_HAH                         0x062d
- #define a_KHAH                                0x062e
- #define a_DAL                         0x062f
- #define a_THAL                                0x0630
- #define a_REH                         0x0631
- #define a_ZAIN                                0x0632
- #define a_SEEN                                0x0633
- #define a_SHEEN                               0x0634
- #define a_SAD                         0x0635
- #define a_DAD                         0x0636
- #define a_TAH                         0x0637
- #define a_ZAH                         0x0638
- #define a_AIN                         0x0639
- #define a_GHAIN                               0x063a
- #define a_TATWEEL                     0x0640
- #define a_FEH                         0x0641
- #define a_QAF                         0x0642
- #define a_KAF                         0x0643
- #define a_LAM                         0x0644
- #define a_MEEM                                0x0645
- #define a_NOON                                0x0646
- #define a_HEH                         0x0647
- #define a_WAW                         0x0648
- #define a_ALEF_MAKSURA                        0x0649
- #define a_YEH                         0x064a
- 
- #define a_FATHATAN                    0x064b
- #define a_DAMMATAN                    0x064c
- #define a_KASRATAN                    0x064d
- #define a_FATHA                               0x064e
- #define a_DAMMA                               0x064f
- #define a_KASRA                               0x0650
- #define a_SHADDA                      0x0651
- #define a_SUKUN                               0x0652
- 
- #define a_MADDA_ABOVE                 0x0653
- #define a_HAMZA_ABOVE                 0x0654
- #define a_HAMZA_BELOW                 0x0655
- 
- #define a_ZERO                                0x0660
- #define a_ONE                         0x0661
- #define a_TWO                         0x0662
- #define a_THREE                               0x0663
- #define a_FOUR                                0x0664
- #define a_FIVE                                0x0665
- #define a_SIX                         0x0666
- #define a_SEVEN                               0x0667
- #define a_EIGHT                               0x0668
- #define a_NINE                                0x0669
- #define a_PERCENT                     0x066a
- #define a_DECIMAL                     0x066b
- #define a_THOUSANDS                   0x066c
- #define a_STAR                                0x066d
- #define a_MINI_ALEF                   0x0670
- /* Rest of 8859-6 does not relate to Arabic */
- 
- /*
-  * Arabic Presentation Form-B (subset of 10646; FE70 - FEFF)
-  *
-  *  s -> isolated
-  *  i -> initial
-  *  m -> medial
-  *  f -> final
-  *
-  */
- #define a_s_FATHATAN                  0xfe70
- #define a_m_TATWEEL_FATHATAN          0xfe71
- #define a_s_DAMMATAN                  0xfe72
- 
- #define a_s_KASRATAN                  0xfe74
- 
- #define a_s_FATHA                     0xfe76
- #define a_m_FATHA                     0xfe77
- #define a_s_DAMMA                     0xfe78
- #define a_m_DAMMA                     0xfe79
- #define a_s_KASRA                     0xfe7a
- #define a_m_KASRA                     0xfe7b
- #define a_s_SHADDA                    0xfe7c
- #define a_m_SHADDA                    0xfe7d
- #define a_s_SUKUN                     0xfe7e
- #define a_m_SUKUN                     0xfe7f
- 
- #define a_s_HAMZA                     0xfe80
- #define a_s_ALEF_MADDA                        0xfe81
- #define a_f_ALEF_MADDA                        0xfe82
- #define a_s_ALEF_HAMZA_ABOVE          0xfe83
- #define a_f_ALEF_HAMZA_ABOVE          0xfe84
- #define a_s_WAW_HAMZA                 0xfe85
- #define a_f_WAW_HAMZA                 0xfe86
- #define a_s_ALEF_HAMZA_BELOW          0xfe87
- #define a_f_ALEF_HAMZA_BELOW          0xfe88
- #define a_s_YEH_HAMZA                 0xfe89
- #define a_f_YEH_HAMZA                 0xfe8a
- #define a_i_YEH_HAMZA                 0xfe8b
- #define a_m_YEH_HAMZA                 0xfe8c
- #define a_s_ALEF                      0xfe8d
- #define a_f_ALEF                      0xfe8e
- #define a_s_BEH                               0xfe8f
- #define a_f_BEH                               0xfe90
- #define a_i_BEH                               0xfe91
- #define a_m_BEH                               0xfe92
- #define a_s_TEH_MARBUTA                       0xfe93
- #define a_f_TEH_MARBUTA                       0xfe94
- #define a_s_TEH                               0xfe95
- #define a_f_TEH                               0xfe96
- #define a_i_TEH                               0xfe97
- #define a_m_TEH                               0xfe98
- #define a_s_THEH                      0xfe99
- #define a_f_THEH                      0xfe9a
- #define a_i_THEH                      0xfe9b
- #define a_m_THEH                      0xfe9c
- #define a_s_JEEM                      0xfe9d
- #define a_f_JEEM                      0xfe9e
- #define a_i_JEEM                      0xfe9f
- #define a_m_JEEM                      0xfea0
- #define a_s_HAH                               0xfea1
- #define a_f_HAH                               0xfea2
- #define a_i_HAH                               0xfea3
- #define a_m_HAH                               0xfea4
- #define a_s_KHAH                      0xfea5
- #define a_f_KHAH                      0xfea6
- #define a_i_KHAH                      0xfea7
- #define a_m_KHAH                      0xfea8
- #define a_s_DAL                               0xfea9
- #define a_f_DAL                               0xfeaa
- #define a_s_THAL                      0xfeab
- #define a_f_THAL                      0xfeac
- #define a_s_REH                               0xfead
- #define a_f_REH                               0xfeae
- #define a_s_ZAIN                      0xfeaf
- #define a_f_ZAIN                      0xfeb0
- #define a_s_SEEN                      0xfeb1
- #define a_f_SEEN                      0xfeb2
- #define a_i_SEEN                      0xfeb3
- #define a_m_SEEN                      0xfeb4
- #define a_s_SHEEN                     0xfeb5
- #define a_f_SHEEN                     0xfeb6
- #define a_i_SHEEN                     0xfeb7
- #define a_m_SHEEN                     0xfeb8
- #define a_s_SAD                               0xfeb9
- #define a_f_SAD                               0xfeba
- #define a_i_SAD                               0xfebb
- #define a_m_SAD                               0xfebc
- #define a_s_DAD                               0xfebd
- #define a_f_DAD                               0xfebe
- #define a_i_DAD                               0xfebf
- #define a_m_DAD                               0xfec0
- #define a_s_TAH                               0xfec1
- #define a_f_TAH                               0xfec2
- #define a_i_TAH                               0xfec3
- #define a_m_TAH                               0xfec4
- #define a_s_ZAH                               0xfec5
- #define a_f_ZAH                               0xfec6
- #define a_i_ZAH                               0xfec7
- #define a_m_ZAH                               0xfec8
- #define a_s_AIN                               0xfec9
- #define a_f_AIN                               0xfeca
- #define a_i_AIN                               0xfecb
- #define a_m_AIN                               0xfecc
- #define a_s_GHAIN                     0xfecd
- #define a_f_GHAIN                     0xfece
- #define a_i_GHAIN                     0xfecf
- #define a_m_GHAIN                     0xfed0
- #define a_s_FEH                               0xfed1
- #define a_f_FEH                               0xfed2
- #define a_i_FEH                               0xfed3
- #define a_m_FEH                               0xfed4
- #define a_s_QAF                               0xfed5
- #define a_f_QAF                               0xfed6
- #define a_i_QAF                               0xfed7
- #define a_m_QAF                               0xfed8
- #define a_s_KAF                               0xfed9
- #define a_f_KAF                               0xfeda
- #define a_i_KAF                               0xfedb
- #define a_m_KAF                               0xfedc
- #define a_s_LAM                               0xfedd
- #define a_f_LAM                               0xfede
- #define a_i_LAM                               0xfedf
- #define a_m_LAM                               0xfee0
- #define a_s_MEEM                      0xfee1
- #define a_f_MEEM                      0xfee2
- #define a_i_MEEM                      0xfee3
- #define a_m_MEEM                      0xfee4
- #define a_s_NOON                      0xfee5
- #define a_f_NOON                      0xfee6
- #define a_i_NOON                      0xfee7
- #define a_m_NOON                      0xfee8
- #define a_s_HEH                               0xfee9
- #define a_f_HEH                               0xfeea
- #define a_i_HEH                               0xfeeb
- #define a_m_HEH                               0xfeec
- #define a_s_WAW                               0xfeed
- #define a_f_WAW                               0xfeee
- #define a_s_ALEF_MAKSURA              0xfeef
- #define a_f_ALEF_MAKSURA              0xfef0
- #define a_s_YEH                               0xfef1
- #define a_f_YEH                               0xfef2
- #define a_i_YEH                               0xfef3
- #define a_m_YEH                               0xfef4
- #define a_s_LAM_ALEF_MADDA_ABOVE      0xfef5
- #define a_f_LAM_ALEF_MADDA_ABOVE      0xfef6
- #define a_s_LAM_ALEF_HAMZA_ABOVE      0xfef7
- #define a_f_LAM_ALEF_HAMZA_ABOVE      0xfef8
- #define a_s_LAM_ALEF_HAMZA_BELOW      0xfef9
- #define a_f_LAM_ALEF_HAMZA_BELOW      0xfefa
- #define a_s_LAM_ALEF                  0xfefb
- #define a_f_LAM_ALEF                  0xfefc
- 
- #define a_BYTE_ORDER_MARK             0xfeff
- 
- /* Range of Arabic characters that might be shaped. */
- #define ARABIC_CHAR(c)                ((c) >= a_HAMZA && (c) <= a_MINI_ALEF)
--- 0 ----
*** ../vim-8.1.1037/src/globals.h       2019-03-02 10:13:36.792974862 +0100
--- src/globals.h       2019-03-22 15:28:28.674998090 +0100
***************
*** 1652,1661 ****
  #ifdef FEAT_TEXT_PROP
  EXTERN int text_prop_frozen INIT(= 0);
  #endif
- 
- /*
-  * Optional Arabic support. Include it here, so EXTERN and INIT are defined.
-  */
- #ifdef FEAT_ARABIC
- # include "arabic.h"
- #endif
--- 1652,1654 ----
*** ../vim-8.1.1037/src/macros.h        2019-02-17 17:44:36.211875510 +0100
--- src/macros.h        2019-03-22 15:28:28.674998090 +0100
***************
*** 210,215 ****
--- 210,216 ----
  #define REPLACE_NORMAL(s) (((s) & REPLACE_FLAG) && !((s) & VREPLACE_FLAG))
  
  #ifdef FEAT_ARABIC
+ # define ARABIC_CHAR(ch)            (((ch) & 0xFF00) == 0x0600)
  # define UTF_COMPOSINGLIKE(p1, p2)  utf_composinglike((p1), (p2))
  #else
  # define UTF_COMPOSINGLIKE(p1, p2)  utf_iscomposing(utf_ptr2char(p2))
*** ../vim-8.1.1037/src/mbyte.c 2019-02-17 17:44:36.211875510 +0100
--- src/mbyte.c 2019-03-22 15:28:28.674998090 +0100
***************
*** 1912,1946 ****
  
  #if defined(FEAT_ARABIC) || defined(PROTO)
  /*
-  * Check whether we are dealing with Arabic combining characters.
-  * Note: these are NOT really composing characters!
-  */
-     int
- arabic_combine(
-     int               one,        /* first character */
-     int               two)        /* character just after "one" */
- {
-     if (one == a_LAM)
-       return arabic_maycombine(two);
-     return FALSE;
- }
- 
- /*
-  * Check whether we are dealing with a character that could be regarded as an
-  * Arabic combining character, need to check the character before this.
-  */
-     int
- arabic_maycombine(int two)
- {
-     if (p_arshape && !p_tbidi)
-       return (two == a_ALEF_MADDA
-                   || two == a_ALEF_HAMZA_ABOVE
-                   || two == a_ALEF_HAMZA_BELOW
-                   || two == a_ALEF);
-     return FALSE;
- }
- 
- /*
   * Check if the character pointed to by "p2" is a composing character when it
   * comes after "p1".  For Arabic sometimes "ab" is replaced with "c", which
   * behaves like a composing character.
--- 1912,1917 ----
*** ../vim-8.1.1037/src/proto/arabic.pro        2018-05-17 13:52:28.000000000 
+0200
--- src/proto/arabic.pro        2019-03-22 15:36:14.387738510 +0100
***************
*** 1,3 ****
--- 1,5 ----
  /* arabic.c */
+ int arabic_maycombine(int two);
+ int arabic_combine(int one, int two);
  int arabic_shape(int c, int *ccp, int *c1p, int prev_c, int prev_c1, int 
next_c);
  /* vim: set ft=c : */
*** ../vim-8.1.1037/src/proto/mbyte.pro 2019-01-13 23:38:33.407773189 +0100
--- src/proto/mbyte.pro 2019-03-22 15:36:17.435717792 +0100
***************
*** 25,32 ****
  int utf_ptr2char(char_u *p);
  int mb_ptr2char_adv(char_u **pp);
  int mb_cptr2char_adv(char_u **pp);
- int arabic_combine(int one, int two);
- int arabic_maycombine(int two);
  int utf_composinglike(char_u *p1, char_u *p2);
  int utfc_ptr2char(char_u *p, int *pcc);
  int utfc_ptr2char_len(char_u *p, int *pcc, int maxlen);
--- 25,30 ----
*** ../vim-8.1.1037/src/Makefile        2019-02-16 15:09:21.221946179 +0100
--- src/Makefile        2019-03-22 15:33:31.316856342 +0100
***************
*** 3386,3671 ****
  objects/arabic.o: arabic.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/autocmd.o: autocmd.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/beval.o: beval.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/blob.o: blob.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/blowfish.o: blowfish.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/buffer.o: buffer.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/charset.o: charset.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/crypt.o: crypt.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/crypt_zip.o: crypt_zip.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/dict.o: dict.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/diff.o: diff.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h xdiff/xdiff.h vim.h
  objects/digraph.o: digraph.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/edit.o: edit.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/eval.o: eval.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/evalfunc.o: evalfunc.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/ex_cmds.o: ex_cmds.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/ex_cmds2.o: ex_cmds2.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/ex_docmd.o: ex_docmd.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h ex_cmdidxs.h
  objects/ex_eval.o: ex_eval.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/ex_getln.o: ex_getln.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/fileio.o: fileio.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/findfile.o: findfile.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h libvterm/include/vterm.h \
   libvterm/include/vterm_keycodes.h
  objects/fold.o: fold.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/getchar.o: getchar.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/hardcopy.o: hardcopy.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/hashtab.o: hashtab.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/if_cscope.o: if_cscope.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h if_cscope.h
  objects/if_xcmdsrv.o: if_xcmdsrv.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/indent.o: indent.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/json.o: json.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/list.o: list.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/main.o: main.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/mark.o: mark.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/memfile.o: memfile.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/memline.o: memline.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/menu.o: menu.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/message.o: message.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/misc1.o: misc1.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/misc2.o: misc2.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/move.o: move.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/mbyte.o: mbyte.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/normal.o: normal.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/ops.o: ops.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/option.o: option.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/os_unix.o: os_unix.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h os_unixx.h
  objects/pathdef.o: auto/pathdef.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/popupmnu.o: popupmnu.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/pty.o: pty.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/quickfix.o: quickfix.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/regexp.o: regexp.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h regexp_nfa.c
  objects/screen.o: screen.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/search.o: search.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/sha256.o: sha256.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/sign.o: sign.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/spell.o: spell.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/spellfile.o: spellfile.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/syntax.o: syntax.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/tag.o: tag.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/term.o: term.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h libvterm/include/vterm.h \
   libvterm/include/vterm_keycodes.h
  objects/terminal.o: terminal.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h libvterm/include/vterm.h \
   libvterm/include/vterm_keycodes.h
  objects/textprop.o: textprop.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/ui.o: ui.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/undo.o: undo.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/userfunc.o: userfunc.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/version.o: version.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/window.o: window.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/gui.o: gui.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/gui_gtk.o: gui_gtk.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h gui_gtk_f.h
  objects/gui_gtk_f.o: gui_gtk_f.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h gui_gtk_f.h
  objects/gui_motif.o: gui_motif.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h gui_xmebw.h ../pixmaps/alert.xpm \
   ../pixmaps/error.xpm ../pixmaps/generic.xpm ../pixmaps/info.xpm \
   ../pixmaps/quest.xpm gui_x11_pm.h ../pixmaps/tb_new.xpm \
   ../pixmaps/tb_open.xpm ../pixmaps/tb_close.xpm ../pixmaps/tb_save.xpm \
--- 3386,3671 ----
  objects/arabic.o: arabic.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/autocmd.o: autocmd.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/beval.o: beval.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/blob.o: blob.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/blowfish.o: blowfish.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/buffer.o: buffer.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/charset.o: charset.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/crypt.o: crypt.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/crypt_zip.o: crypt_zip.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/dict.o: dict.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/diff.o: diff.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h xdiff/xdiff.h vim.h
  objects/digraph.o: digraph.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/edit.o: edit.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/eval.o: eval.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/evalfunc.o: evalfunc.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/ex_cmds.o: ex_cmds.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/ex_cmds2.o: ex_cmds2.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/ex_docmd.o: ex_docmd.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h ex_cmdidxs.h
  objects/ex_eval.o: ex_eval.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/ex_getln.o: ex_getln.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/fileio.o: fileio.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/findfile.o: findfile.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h libvterm/include/vterm.h \
   libvterm/include/vterm_keycodes.h
  objects/fold.o: fold.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/getchar.o: getchar.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/hardcopy.o: hardcopy.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/hashtab.o: hashtab.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/if_cscope.o: if_cscope.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h if_cscope.h
  objects/if_xcmdsrv.o: if_xcmdsrv.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/indent.o: indent.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/json.o: json.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/list.o: list.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/main.o: main.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/mark.o: mark.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/memfile.o: memfile.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/memline.o: memline.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/menu.o: menu.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/message.o: message.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/misc1.o: misc1.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/misc2.o: misc2.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/move.o: move.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/mbyte.o: mbyte.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/normal.o: normal.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/ops.o: ops.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/option.o: option.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/os_unix.o: os_unix.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h os_unixx.h
  objects/pathdef.o: auto/pathdef.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/popupmnu.o: popupmnu.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/pty.o: pty.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/quickfix.o: quickfix.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/regexp.o: regexp.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h regexp_nfa.c
  objects/screen.o: screen.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/search.o: search.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/sha256.o: sha256.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/sign.o: sign.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/spell.o: spell.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/spellfile.o: spellfile.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/syntax.o: syntax.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/tag.o: tag.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/term.o: term.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h libvterm/include/vterm.h \
   libvterm/include/vterm_keycodes.h
  objects/terminal.o: terminal.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h libvterm/include/vterm.h \
   libvterm/include/vterm_keycodes.h
  objects/textprop.o: textprop.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/ui.o: ui.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/undo.o: undo.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/userfunc.o: userfunc.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/version.o: version.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/window.o: window.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/gui.o: gui.c vim.h protodef.h auto/config.h feature.h os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/gui_gtk.o: gui_gtk.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h gui_gtk_f.h
  objects/gui_gtk_f.o: gui_gtk_f.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h gui_gtk_f.h
  objects/gui_motif.o: gui_motif.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h gui_xmebw.h ../pixmaps/alert.xpm \
   ../pixmaps/error.xpm ../pixmaps/generic.xpm ../pixmaps/info.xpm \
   ../pixmaps/quest.xpm gui_x11_pm.h ../pixmaps/tb_new.xpm \
   ../pixmaps/tb_open.xpm ../pixmaps/tb_close.xpm ../pixmaps/tb_save.xpm \
***************
*** 3686,3700 ****
  objects/gui_xmdlg.o: gui_xmdlg.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/gui_xmebw.o: gui_xmebw.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h gui_xmebwp.h gui_xmebw.h
  objects/gui_athena.o: gui_athena.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h gui_at_sb.h gui_x11_pm.h \
   ../pixmaps/tb_new.xpm ../pixmaps/tb_open.xpm ../pixmaps/tb_close.xpm \
   ../pixmaps/tb_save.xpm ../pixmaps/tb_print.xpm ../pixmaps/tb_cut.xpm \
   ../pixmaps/tb_copy.xpm ../pixmaps/tb_paste.xpm ../pixmaps/tb_find.xpm \
--- 3686,3700 ----
  objects/gui_xmdlg.o: gui_xmdlg.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/gui_xmebw.o: gui_xmebw.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h gui_xmebwp.h gui_xmebw.h
  objects/gui_athena.o: gui_athena.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h gui_at_sb.h gui_x11_pm.h \
   ../pixmaps/tb_new.xpm ../pixmaps/tb_open.xpm ../pixmaps/tb_close.xpm \
   ../pixmaps/tb_save.xpm ../pixmaps/tb_print.xpm ../pixmaps/tb_cut.xpm \
   ../pixmaps/tb_copy.xpm ../pixmaps/tb_paste.xpm ../pixmaps/tb_find.xpm \
***************
*** 3713,3797 ****
  objects/gui_gtk_x11.o: gui_gtk_x11.c vim.h protodef.h auto/config.h feature.h 
\
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h auto/gui_gtk_gresources.h gui_gtk_f.h \
   ../runtime/vim32x32.xpm ../runtime/vim16x16.xpm ../runtime/vim48x48.xpm
  objects/gui_x11.o: gui_x11.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h ../runtime/vim32x32.xpm \
   ../runtime/vim16x16.xpm ../runtime/vim48x48.xpm
  objects/gui_at_sb.o: gui_at_sb.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h gui_at_sb.h
  objects/gui_at_fs.o: gui_at_fs.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h gui_at_sb.h
  objects/json_test.o: json_test.c main.c vim.h protodef.h auto/config.h 
feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h json.c
  objects/kword_test.o: kword_test.c main.c vim.h protodef.h auto/config.h \
   feature.h os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h \
   option.h beval.h proto/gui_beval.pro structs.h regexp.h gui.h alloc.h \
!  ex_cmds.h spell.h proto.h globals.h arabic.h charset.c
  objects/memfile_test.o: memfile_test.c main.c vim.h protodef.h auto/config.h \
   feature.h os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h \
   option.h beval.h proto/gui_beval.pro structs.h regexp.h gui.h alloc.h \
!  ex_cmds.h spell.h proto.h globals.h arabic.h memfile.c
  objects/message_test.o: message_test.c main.c vim.h protodef.h auto/config.h \
   feature.h os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h \
   option.h beval.h proto/gui_beval.pro structs.h regexp.h gui.h alloc.h \
!  ex_cmds.h spell.h proto.h globals.h arabic.h message.c
  objects/hangulin.o: hangulin.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/if_lua.o: if_lua.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/if_mzsch.o: if_mzsch.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h if_mzsch.h
  objects/if_perl.o: auto/if_perl.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/if_perlsfio.o: if_perlsfio.c vim.h protodef.h auto/config.h feature.h 
\
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/if_python.o: if_python.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h if_py_both.h
  objects/if_python3.o: if_python3.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h if_py_both.h
  objects/if_tcl.o: if_tcl.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/if_ruby.o: if_ruby.c protodef.h auto/config.h vim.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/gui_beval.o: gui_beval.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/netbeans.o: netbeans.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h version.h
  objects/channel.o: channel.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h arabic.h
  objects/gui_gtk_gresources.o: auto/gui_gtk_gresources.c
  objects/encoding.o: libvterm/src/encoding.c libvterm/src/vterm_internal.h \
   libvterm/include/vterm.h libvterm/include/vterm_keycodes.h \
--- 3713,3797 ----
  objects/gui_gtk_x11.o: gui_gtk_x11.c vim.h protodef.h auto/config.h feature.h 
\
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h auto/gui_gtk_gresources.h gui_gtk_f.h \
   ../runtime/vim32x32.xpm ../runtime/vim16x16.xpm ../runtime/vim48x48.xpm
  objects/gui_x11.o: gui_x11.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h ../runtime/vim32x32.xpm \
   ../runtime/vim16x16.xpm ../runtime/vim48x48.xpm
  objects/gui_at_sb.o: gui_at_sb.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h gui_at_sb.h
  objects/gui_at_fs.o: gui_at_fs.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h gui_at_sb.h
  objects/json_test.o: json_test.c main.c vim.h protodef.h auto/config.h 
feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h json.c
  objects/kword_test.o: kword_test.c main.c vim.h protodef.h auto/config.h \
   feature.h os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h \
   option.h beval.h proto/gui_beval.pro structs.h regexp.h gui.h alloc.h \
!  ex_cmds.h spell.h proto.h globals.h charset.c
  objects/memfile_test.o: memfile_test.c main.c vim.h protodef.h auto/config.h \
   feature.h os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h \
   option.h beval.h proto/gui_beval.pro structs.h regexp.h gui.h alloc.h \
!  ex_cmds.h spell.h proto.h globals.h memfile.c
  objects/message_test.o: message_test.c main.c vim.h protodef.h auto/config.h \
   feature.h os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h \
   option.h beval.h proto/gui_beval.pro structs.h regexp.h gui.h alloc.h \
!  ex_cmds.h spell.h proto.h globals.h message.c
  objects/hangulin.o: hangulin.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/if_lua.o: if_lua.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/if_mzsch.o: if_mzsch.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h if_mzsch.h
  objects/if_perl.o: auto/if_perl.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/if_perlsfio.o: if_perlsfio.c vim.h protodef.h auto/config.h feature.h 
\
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/if_python.o: if_python.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h if_py_both.h
  objects/if_python3.o: if_python3.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h if_py_both.h
  objects/if_tcl.o: if_tcl.c vim.h protodef.h auto/config.h feature.h os_unix.h 
\
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/if_ruby.o: if_ruby.c protodef.h auto/config.h vim.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/gui_beval.o: gui_beval.c vim.h protodef.h auto/config.h feature.h \
   os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/netbeans.o: netbeans.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h version.h
  objects/channel.o: channel.c vim.h protodef.h auto/config.h feature.h 
os_unix.h \
   auto/osdef.h ascii.h keymap.h term.h macros.h option.h beval.h \
   proto/gui_beval.pro structs.h regexp.h gui.h alloc.h ex_cmds.h spell.h \
!  proto.h globals.h
  objects/gui_gtk_gresources.o: auto/gui_gtk_gresources.c
  objects/encoding.o: libvterm/src/encoding.c libvterm/src/vterm_internal.h \
   libvterm/include/vterm.h libvterm/include/vterm_keycodes.h \
***************
*** 3823,3829 ****
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  arabic.h xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xemit.o: xdiff/xemit.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
--- 3823,3829 ----
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xemit.o: xdiff/xemit.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
***************
*** 3832,3838 ****
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  arabic.h xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xprepare.o: xdiff/xprepare.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
--- 3832,3838 ----
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xprepare.o: xdiff/xprepare.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
***************
*** 3841,3847 ****
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  arabic.h xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xutils.o: xdiff/xutils.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
--- 3841,3847 ----
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xutils.o: xdiff/xutils.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
***************
*** 3850,3856 ****
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  arabic.h xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xhistogram.o: xdiff/xhistogram.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
--- 3850,3856 ----
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xhistogram.o: xdiff/xhistogram.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
***************
*** 3859,3865 ****
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  arabic.h xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xpatience.o: xdiff/xpatience.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
--- 3859,3865 ----
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
  objects/xpatience.o: xdiff/xpatience.c xdiff/xinclude.h auto/config.h \
   xdiff/xmacros.h xdiff/xdiff.h vim.h protodef.h \
***************
*** 3868,3872 ****
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  arabic.h xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
--- 3868,3872 ----
   macros.h option.h beval.h proto/gui_beval.pro \
   structs.h regexp.h gui.h alloc.h \
   ex_cmds.h spell.h proto.h globals.h \
!  xdiff/xtypes.h xdiff/xutils.h \
   xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
*** ../vim-8.1.1037/src/testdir/test_arabic.vim 2019-01-24 17:59:35.139217458 
+0100
--- src/testdir/test_arabic.vim 2019-03-22 15:43:21.528878362 +0100
***************
*** 524,576 ****
    bwipe!
  endfunc
  
! func Test_shape_final_to_medial()
!   new
!   set arabicshape
! 
!   " Shaping arabic {testchar} arabic   Tests chg_c_f2m().
!   " This does not test much...
!   " pair[0] = testchar,  pair[1] = current-result
!   for pair in [[s:a_f_YEH_HAMZA, s:a_f_BEH],
!       \[s:a_f_WAW_HAMZA, s:a_s_BEH],
!       \[s:a_f_ALEF, s:a_s_BEH],
!       \[s:a_f_TEH_MARBUTA, s:a_s_BEH],
!       \[s:a_f_DAL, s:a_s_BEH],
!       \[s:a_f_THAL, s:a_s_BEH],
!       \[s:a_f_REH, s:a_s_BEH],
!       \[s:a_f_ZAIN, s:a_s_BEH],
!       \[s:a_f_WAW, s:a_s_BEH],
!       \[s:a_f_ALEF_MAKSURA, s:a_s_BEH],
!       \[s:a_f_BEH, s:a_f_BEH],
!       \[s:a_f_TEH, s:a_f_BEH],
!       \[s:a_f_THEH, s:a_f_BEH],
!       \[s:a_f_JEEM, s:a_f_BEH],
!       \[s:a_f_HAH, s:a_f_BEH],
!       \[s:a_f_KHAH, s:a_f_BEH],
!       \[s:a_f_SEEN, s:a_f_BEH],
!       \[s:a_f_SHEEN, s:a_f_BEH],
!       \[s:a_f_SAD, s:a_f_BEH],
!       \[s:a_f_DAD, s:a_f_BEH],
!       \[s:a_f_TAH, s:a_f_BEH],
!       \[s:a_f_ZAH, s:a_f_BEH],
!       \[s:a_f_AIN, s:a_f_BEH],
!       \[s:a_f_GHAIN, s:a_f_BEH],
!       \[s:a_f_FEH, s:a_f_BEH],
!       \[s:a_f_QAF, s:a_f_BEH],
!       \[s:a_f_KAF, s:a_f_BEH],
!       \[s:a_f_LAM, s:a_f_BEH],
!       \[s:a_f_MEEM, s:a_f_BEH],
!       \[s:a_f_NOON, s:a_f_BEH],
!       \[s:a_f_HEH, s:a_f_BEH],
!       \[s:a_f_YEH, s:a_f_BEH],
!       \ ]
!     call setline(1, ' ' . s:a_BEH . pair[0])
!     call assert_equal([' ' . pair[1] . pair[0]], ScreenLines(1, 3))
!   endfor
! 
!   set arabicshape&
!   bwipe!
! endfunc
  
  func Test_shape_combination_final()
    new
--- 524,577 ----
    bwipe!
  endfunc
  
! " TODO: this test now fails
! "func Test_shape_final_to_medial()
! "  new
! "  set arabicshape
! "
! "  " Shaping arabic {testchar} arabic   Tests chg_c_f2m().
! "  " This does not test much...
! "  " pair[0] = testchar,  pair[1] = current-result
! "  for pair in [[s:a_f_YEH_HAMZA, s:a_f_BEH],
! "     \[s:a_f_WAW_HAMZA, s:a_s_BEH],
! "     \[s:a_f_ALEF, s:a_s_BEH],
! "     \[s:a_f_TEH_MARBUTA, s:a_s_BEH],
! "     \[s:a_f_DAL, s:a_s_BEH],
! "     \[s:a_f_THAL, s:a_s_BEH],
! "     \[s:a_f_REH, s:a_s_BEH],
! "     \[s:a_f_ZAIN, s:a_s_BEH],
! "     \[s:a_f_WAW, s:a_s_BEH],
! "     \[s:a_f_ALEF_MAKSURA, s:a_s_BEH],
! "     \[s:a_f_BEH, s:a_f_BEH],
! "     \[s:a_f_TEH, s:a_f_BEH],
! "     \[s:a_f_THEH, s:a_f_BEH],
! "     \[s:a_f_JEEM, s:a_f_BEH],
! "     \[s:a_f_HAH, s:a_f_BEH],
! "     \[s:a_f_KHAH, s:a_f_BEH],
! "     \[s:a_f_SEEN, s:a_f_BEH],
! "     \[s:a_f_SHEEN, s:a_f_BEH],
! "     \[s:a_f_SAD, s:a_f_BEH],
! "     \[s:a_f_DAD, s:a_f_BEH],
! "     \[s:a_f_TAH, s:a_f_BEH],
! "     \[s:a_f_ZAH, s:a_f_BEH],
! "     \[s:a_f_AIN, s:a_f_BEH],
! "     \[s:a_f_GHAIN, s:a_f_BEH],
! "     \[s:a_f_FEH, s:a_f_BEH],
! "     \[s:a_f_QAF, s:a_f_BEH],
! "     \[s:a_f_KAF, s:a_f_BEH],
! "     \[s:a_f_LAM, s:a_f_BEH],
! "     \[s:a_f_MEEM, s:a_f_BEH],
! "     \[s:a_f_NOON, s:a_f_BEH],
! "     \[s:a_f_HEH, s:a_f_BEH],
! "     \[s:a_f_YEH, s:a_f_BEH],
! "     \ ]
! "    call setline(1, ' ' . s:a_BEH . pair[0])
! "    call assert_equal([' ' . pair[1] . pair[0]], ScreenLines(1, 3))
! "  endfor
! "
! "  set arabicshape&
! "  bwipe!
! "endfunc
  
  func Test_shape_combination_final()
    new
*** ../vim-8.1.1037/src/version.c       2019-03-22 14:36:55.730563142 +0100
--- src/version.c       2019-03-22 15:44:40.760354778 +0100
***************
*** 781,782 ****
--- 781,784 ----
  {   /* Add new patch number below this line */
+ /**/
+     1038,
  /**/

-- 
>From "know your smileys":
 |-(    Contact lenses, but has lost them

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui