]> granicus.if.org Git - vim/commitdiff
patch 8.1.0932: Farsi support is outdated and unused v8.1.0932
authorBram Moolenaar <Bram@vim.org>
Sat, 16 Feb 2019 14:10:30 +0000 (15:10 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 16 Feb 2019 14:10:30 +0000 (15:10 +0100)
Problem:    Farsi support is outdated and unused.
Solution:   Delete the Farsi support.

46 files changed:
Filelist
farsi/README.txt [deleted file]
farsi/fonts/DOS/far-a01.com [deleted file]
farsi/fonts/SunOs/far-a01.fb [deleted file]
farsi/fonts/UNIXs/far-a01.f16 [deleted file]
farsi/fonts/UNIXs/far-a01.pcf.Z [deleted file]
farsi/fonts/UNIXs/far-a01.pcf.gz [deleted file]
farsi/fonts/WINDOWS/far-a01.fon [deleted file]
runtime/doc/farsi.txt
runtime/doc/options.txt
runtime/doc/quickref.txt
runtime/doc/starting.txt
src/Make_bc5.mak
src/Make_cyg_ming.mak
src/Make_dice.mak
src/Make_ivc.mak
src/Make_manx.mak
src/Make_morph.mak
src/Make_mvc.mak
src/Make_sas.mak
src/Make_vms.mms
src/Makefile
src/auto/configure
src/charset.c
src/config.h.in
src/configure.ac
src/edit.c
src/evalfunc.c
src/ex_cmds.c
src/ex_getln.c
src/farsi.c [deleted file]
src/farsi.h [deleted file]
src/getchar.c
src/globals.h
src/main.c
src/normal.c
src/option.c
src/proto.h
src/proto/farsi.pro [deleted file]
src/screen.c
src/search.c
src/structs.h
src/testdir/Make_all.mak
src/testdir/test_farsi.vim [deleted file]
src/version.c
src/window.c

index 211b487673ac0994bb93442ad8448829fe45b240..c621f8c937a31cd713665b6e9ccff50015ca2de6 100644 (file)
--- a/Filelist
+++ b/Filelist
@@ -37,8 +37,6 @@ SRC_ALL =     \
                src/ex_docmd.c \
                src/ex_eval.c \
                src/ex_getln.c \
-               src/farsi.c \
-               src/farsi.h \
                src/feature.h \
                src/fileio.c \
                src/findfile.c \
@@ -169,7 +167,6 @@ SRC_ALL =   \
                src/proto/ex_docmd.pro \
                src/proto/ex_eval.pro \
                src/proto/ex_getln.pro \
-               src/proto/farsi.pro \
                src/proto/fileio.pro \
                src/proto/findfile.pro \
                src/proto/fold.pro \
@@ -837,8 +834,6 @@ EXTRA =             \
                $(SRC_EXTRA) \
                README_extra.txt \
                src/VisVim/VisVim.dll \
-               farsi/README.txt \
-               farsi/fonts/*/far-* \
                runtime/vimlogo.xpm \
                src/tee/Makefile \
                src/tee/Make_mvc.mak \
diff --git a/farsi/README.txt b/farsi/README.txt
deleted file mode 100644 (file)
index ef6129f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-For information about installation of Farsi fonts and Vim usage in Farsi mode,
-refer to the Farsi help file by typing ":help farsi" in Vim.
diff --git a/farsi/fonts/DOS/far-a01.com b/farsi/fonts/DOS/far-a01.com
deleted file mode 100755 (executable)
index ebd06ca..0000000
Binary files a/farsi/fonts/DOS/far-a01.com and /dev/null differ
diff --git a/farsi/fonts/SunOs/far-a01.fb b/farsi/fonts/SunOs/far-a01.fb
deleted file mode 100644 (file)
index c353f85..0000000
Binary files a/farsi/fonts/SunOs/far-a01.fb and /dev/null differ
diff --git a/farsi/fonts/UNIXs/far-a01.f16 b/farsi/fonts/UNIXs/far-a01.f16
deleted file mode 100644 (file)
index 471eb3a..0000000
Binary files a/farsi/fonts/UNIXs/far-a01.f16 and /dev/null differ
diff --git a/farsi/fonts/UNIXs/far-a01.pcf.Z b/farsi/fonts/UNIXs/far-a01.pcf.Z
deleted file mode 100644 (file)
index d8e4460..0000000
Binary files a/farsi/fonts/UNIXs/far-a01.pcf.Z and /dev/null differ
diff --git a/farsi/fonts/UNIXs/far-a01.pcf.gz b/farsi/fonts/UNIXs/far-a01.pcf.gz
deleted file mode 100644 (file)
index ab6fa9d..0000000
Binary files a/farsi/fonts/UNIXs/far-a01.pcf.gz and /dev/null differ
diff --git a/farsi/fonts/WINDOWS/far-a01.fon b/farsi/fonts/WINDOWS/far-a01.fon
deleted file mode 100644 (file)
index 3121097..0000000
Binary files a/farsi/fonts/WINDOWS/far-a01.fon and /dev/null differ
index 493714e4d6bd20bcb3deb1879c507dbf6306c7b0..27298593f0e5a0220358908a596bc71777d63478 100644 (file)
@@ -1,4 +1,4 @@
-*farsi.txt*     For Vim version 8.1.  Last change: 2015 Aug 29
+*farsi.txt*     For Vim version 8.1.  Last change: 2019 Feb 16
 
 
                  VIM REFERENCE MANUAL    by Mortaza Ghassab Shiran
@@ -9,261 +9,12 @@ Right to Left and Farsi Mapping for Vim              *farsi* *Farsi*
 {Vi does not have any of these commands}
 
                                                *E27*
-In order to use right-to-left and Farsi mapping support, it is necessary to
-compile Vim with the |+farsi| feature.
+Farsi support has been removed in patch 8.1.0932.  At that time it was
+outdated and unused.
 
-These functions have been made by Mortaza G. Shiran <shiran@jps.net>
+If you would like to bring Farsi support back, please have a look at the old
+Farsi code, as it was present at the 8.1 release.  It should be merged with
+Arabic support using the Unicode character set.
 
 
-Introduction
-------------
-In right-to-left oriented files the characters appear on the screen from right
-to left.  This kind of file is most useful when writing Farsi documents,
-composing faxes or writing Farsi memos.
-
-The commands, prompts and help files are not in Farsi, therefore the user
-interface remains the standard Vi interface.
-
-
-Highlights
-----------
-o  Editing left-to-right files as in the original Vim, no change.
-
-o  Viewing and editing files in right-to-left windows.   File orientation is
-   per window, so it is possible to view the same file in right-to-left and
-   left-to-right modes, simultaneously.
-
-o  Compatibility to the original Vim.   Almost all features work in
-   right-to-left mode (see bugs below).
-
-o  Changing keyboard mapping and reverse insert modes using a single
-   command.
-
-o  Backing from reverse insert mode to the correct place in the file
-   (if possible).
-
-o  While in Farsi mode, numbers are entered from left to right.  Upon entering
-   a none number character, that character will be inserted just into the
-   left of the last number.
-
-o  No special terminal with right-to-left capabilities is required.  The
-   right-to-left changes are completely hardware independent.  Only
-   Farsi font is necessary.
-
-o  Farsi keymapping on the command line in reverse insert mode.
-
-o  Toggling between left-to-right and right-to-left via F8 function key.
-
-o  Toggling between Farsi ISIR-3342 standard encoding and Vim Farsi via F9
-   function key.  Since this makes sense only for the text written in
-   right-to-left mode, this function is also supported only in right-to-left
-   mode.
-
-Farsi Fonts                                    *farsi-fonts*
------------
-
-The following files are found in the subdirectories of the '$VIM/farsi/fonts'
-directory:
-
-   +  far-a01.pcf    X Windows fonts for Unix including Linux systems
-   +  far-a01.bf     X Windows fonts for SunOS
-   +  far-a01.f16    a screen fonts for Unix including Linux systems
-   +  far-a01.fon    a monospaced fonts for Windows NT/95/98
-   +  far-a01.com    a screen fonts for DOS
-
-
-Font Installation
------------------
-
-o  Installation of fonts for MS Window systems (NT/95/98)
-
-   From 'Control Panel' folder, start the 'Fonts' program.  Then from 'file'
-   menu item select 'Install New Fonts ...'.  Browse and select the
-   'far-a01.fon', then follow the installation guide.
-   NOTE: several people have reported that this does not work.  The solution
-   is unknown.
-
-o  Installation of fonts for X Window systems (Unix/Linux)
-
-   Depending on your system, copy far-a01.pcf.Z or far-a01.pcf.gz into a
-   directory of your choice.  Change to the directory containing the Farsi
-   fonts and execute the following commands:
-
-   >  mkfontdir
-   >  xset +fp path_name_of_farsi_fonts_directory
-
-o  Installation of fonts for X Window systems (SunOS)
-
-   Copy far-a01.bf font into a directory of your choice.
-   Change to the directory containing the far-a01.fb fonts and
-   execute the following commands:
-
-   >  fldfamily
-   >  xset +fp path_name_of_fonts_directory
-
-o  Installation of ASCII screen fonts (Unix/Linux)
-
-   For Linux system, copy the far-a01.f16 fonts into /usr/lib/kbd/consolefonts
-   directory and execute the setfont program as "setfont far-a01.f16".  For
-   other systems (e.g. SCO Unix), please refer to the fonts installation
-   section of your system administration manuals.
-
-o  Installation of ASCII screen fonts (DOS)
-
-   After system power on, prior to the first use of Vim, upload the Farsi
-   fonts by executing the far-a01.com font uploading program.
-
-
-Usage
------
-Prior to starting Vim, the environment in which Vim can run in Farsi mode,
-must be set.  In addition to installation of Farsi fonts, following points
-refer to some of the system environments, which you may need to set:
-Key code mapping, loading graphic card in ASCII screen mode, setting the IO
-driver in 8 bit clean mode ... .
-
-o  Setting the Farsi fonts
-
-   +  For Vim GUI set the 'guifont' to far-a01.  This is done by entering
-      ':set guifont=far-a01' in the Vim window.
-
-      You can have 'guifont' set to far-a01 by Vim during the Vim startup
-      by appending the ':set guifont=far-a01' into your .vimrc file
-      (in case of NT/95/98 platforms _vimrc).
-
-      Under the X Window environment, you can also start Vim with the
-      '-fn far-a01' option.
-
-   +  For Vim within a xterm, start a xterm with the Farsi fonts (e.g.
-      kterm -fn far-a01).  Then start Vim inside the kterm.
-
-   +  For Vim under DOS, prior to the first usage of Vim, upload the Farsi
-      fonts by executing the far-a01.com fonts uploading program.
-
-o  Farsi Keymapping Activation
-
-   To activate the Farsi keymapping, set either 'altkeymap' or 'fkmap'.
-   This is done by entering ':set akm' or ':set fk' in the Vim window.
-   You can have 'altkeymap' or 'fkmap' set as default by appending ':set akm'
-   or ':set fk' in your .vimrc file or _vimrc in case of NT/95/98 platforms.
-
-   To turn off the Farsi keymapping as a default second language keymapping,
-   reset the 'altkeymap' by entering ':set noakm'.
-
-o  right-to-left Farsi Mode
-
-   By default Vim starts in Left-to-right mode.  Following are ways to change
-   the window orientation:
-
-   + Start Vim with the -F option (e.g. vim -F ...).
-
-   + Use the F8 function key to toggle between left-to-right and right-to-left.
-
-   + While in Left-to-right mode, enter 'set rl' in the command line ('rl' is
-     the abbreviation for rightleft).
-
-   + Put the 'set rl' line in your '.vimrc' file to start Vim in
-     right-to-left mode permanently.
-
-Encoding
---------
-
-The letter encoding used is the Vim extended ISIR-3342 standard with a built
-in function to convert between Vim extended ISIR-3342 and ISIR-3342 standard.
-
-For document portability reasons, the letter encoding is kept the same across
-different platforms (i.e. UNIX's, NT/95/98, MS DOS, ...).
-
-
-o  Keyboard
-
-   +  CTRL-_ in insert/replace modes toggles between Farsi(akm)/Latin
-      mode as follows:
-
-   +  CTRL-_ moves the cursor to the end of the typed text in edit mode.
-
-   +  CTRL-_ in command mode only toggles keyboard mapping between Farsi(akm)/
-      Latin.  The Farsi text is then entered in reverse insert mode.
-
-   +  F8 - Toggles between left-to-right and right-to-left.
-
-   +  F9 - Toggles the encoding between ISIR-3342 standard and Vim extended
-      ISIR-3342 (supported only in right-to-left mode).
-
-   +  Keyboard mapping is based on the Iranian ISIRI-2901 standard.
-      Following table shows the keyboard mapping while Farsi(akm) mode set:
-
-       -------------------------------------
-       `  1  2  3  4  5  6  7  8  9  0  -  =
-       ¢  ±  ²  ³  ´  µ  ¶  ·  ¸  ¹  °  ­  ½
-       -------------------------------------
-       ~  !  @  #  $  %  ^  &  *  (  )  _  +
-       ~  £  §  ®  ¤  ¥  ª  ¬  è  ¨  ©  é  «
-       -------------------------------------
-       q  w  e  r  t  z  u  i  o  p  [  ]
-       Ó  Ò  Æ  Ù  Ø  Õ  Ö  à  Ê  É  Ç  \88
-       -------------------------------------
-       Q  W  E  R  T  Z  U  I  O  P  {  }
-       ÷  õ  ô  ó  ò  ý  ð  ö  [  ]  {  }
-       -------------------------------------
-       a  s  d  f  g  h  j  k  l  ;  '  \
-       Ñ  Ð  á  Ã  Ü  Á  Å  Þ  Ý  Ú  Û  ë
-       -------------------------------------
-       A  S  D  F  G  H  J  K  L  :  "  |
-       ù  û  þ  ú  ø  À  ü  æ  ç  º  »  ê
-       -------------------------------------
-       <  y  x  c  v  b  n  m  ,  .  /
-       ¾  ×  Ô  Î  Í  Ì  Ë  Ä  ß  ¦  ¯
-       -------------------------------------
-       >  Y  X  C  V  B  N  M  <  >  ?
-       ¼  ñ  Ô  Ï  Í  ¡  Ë  Â  ¾  ¼  ¿
-       -------------------------------------
-
-Note:
-       ¡  stands for Farsi PSP (break without space)
-
-       ¢  stands for Farsi PCN (for HAMZE attribute)
-
-Restrictions
-------------
-
-o  In insert/replace mode and fkmap (Farsi mode) set, CTRL-B is not
-   supported.
-
-o  If you change the character mapping between Latin/Farsi, the redo buffer
-   will be reset (emptied).  That is, redo is valid and will function (using
-   '.') only within the mode you are in.
-
-o  While numbers are entered in Farsi mode, the redo buffer will be reset
-   (emptied).  That is, you cannot redo the last changes (using '.') after
-   entering numbers.
-
-o  While in left-to-right mode and Farsi mode set, CTRL-R is not supported.
-
-o  While in right-to-left mode, the search on 'Latin' pattern does not work,
-   except if you enter the Latin search pattern in reverse.
-
-o  In command mode there is no support for entering numbers from left
-   to right and also for the sake of flexibility the keymapping logic is
-   restricted.
-
-o  Under the X Window environment, if you want to run Vim within a xterm
-   terminal emulator and Farsi mode set, you need to have an ANSI compatible
-   xterm terminal emulator.  This is because the letter codes above 128 decimal
-   have certain meanings in the standard xterm terminal emulator.
-
-   Note: Under X Window environment, Vim GUI works fine in Farsi mode.
-        This eliminates the need of any xterm terminal emulator.
-
-
-Bugs
-----
-While in insert/replace and Farsi mode set, if you repeatedly change the
-cursor position (via cursor movement) and enter new text and then try to undo
-the last change, the undo will lag one change behind.  But as you continue to
-undo, you will reach the original line of text.  You can also use U to undo all
-changes made in the current line.
-
-For more information about the bugs refer to rileft.txt.
-
  vim:tw=78:ts=8:noet:ft=help:norl:
index 3b62c0f530a58c4c85423c185e0a4a2b8a3eaf9a..e664c962176ba4a677235990290222b9a7396991 100644 (file)
@@ -688,13 +688,8 @@ A jump table for the options with a short description can be found at |Q_op|.
                        {not in Vi}
                        {only available when compiled with the |+farsi|
                        feature}
-       When on, the second language is Farsi.  In editing mode CTRL-_ toggles
-       the keyboard map between Farsi and English, when 'allowrevins' set.
-
-       When off, the keyboard map toggles between Hebrew and English.  This
-       is useful to start the Vim in native mode i.e. English (left-to-right
-       mode) and have default second language Farsi or Hebrew (right-to-left
-       mode).  See |farsi.txt|.
+       This option was for using Farsi, which has been removed.  See
+       |farsi.txt|.
 
                                                *'ambiwidth'* *'ambw'*
 'ambiwidth' 'ambw'     string (default: "single")
@@ -3301,9 +3296,8 @@ A jump table for the options with a short description can be found at |Q_op|.
                        {not in Vi}
                        {only available when compiled with the |+rightleft|
                        feature}
-       When on, the keyboard is mapped for the Farsi character set.
-       Normally you would set 'allowrevins' and use CTRL-_ in insert mode to
-       toggle this option |i_CTRL-_|.  See |farsi.txt|.
+       This option was for using Farsi, which has been removed.  See
+       |farsi.txt|.
 
                                                *'foldclose'* *'fcl'*
 'foldclose' 'fcl'      string (default "")
index 75f400f6d7ff5f72f051e7957ffdc12c8012a33a..4c6e249e8a45e8d53d567d0c43b6e8c26b062909 100644 (file)
@@ -600,7 +600,6 @@ In Insert or Command-line mode:
 Short explanation of each option:              *option-list*
 'aleph'                  'al'      ASCII code of the letter Aleph (Hebrew)
 'allowrevins'    'ari'     allow CTRL-_ in Insert and Command-line mode
-'altkeymap'      'akm'     for default second language (Farsi/Hebrew)
 'ambiwidth'      'ambw'    what to do with Unicode chars of ambiguous width
 'antialias'      'anti'    Mac OS X: use smooth, antialiased fonts
 'autochdir'      'acd'     change directory to the file in the current window
@@ -700,7 +699,6 @@ Short explanation of each option:           *option-list*
 'filetype'       'ft'      type of file, used for autocommands
 'fillchars'      'fcs'     characters to use for displaying special items
 'fixendofline'   'fixeol'  make sure last line in file has <EOL>
-'fkmap'                  'fk'      Farsi keyboard mapping
 'foldclose'      'fcl'     close a fold when the cursor leaves it
 'foldcolumn'     'fdc'     width of the column used to indicate folds
 'foldenable'     'fen'     set to display all folds open
index 6289e9c8f795c04a89d3d645340f73fe52f219e3..9f6472670cfd1b926fa1a8054fc0644ba4d288bb 100644 (file)
@@ -321,9 +321,8 @@ a slash.  Thus "-R" means recovery and "-/R" readonly.
                and exits.)  {not in Vi}
 
                                                        *-F*
--F             Farsi mode.  Sets the 'fkmap' and 'rightleft' options on.
-               (Only when compiled with |+rightleft| and |+farsi| features,
-               otherwise Vim gives an error message and exits.)  {not in Vi}
+-F             This was used for Farsi mode, which has been removed.
+               See |farsi.txt|.
 
                                                        *-H*
 -H             Hebrew mode.  Sets the 'hkmap' and 'rightleft' options on.
index eb38dd7ccd6cf09e791cb85688d24628bf037d50..30fe727b2e4b5602fb1921cd1c74f3330dae4ae4 100644 (file)
@@ -542,7 +542,6 @@ vimobj =  \
        $(OBJDIR)\ex_docmd.obj \
        $(OBJDIR)\ex_eval.obj \
        $(OBJDIR)\ex_getln.obj \
-       $(OBJDIR)\farsi.obj \
        $(OBJDIR)\fileio.obj \
        $(OBJDIR)\findfile.obj \
        $(OBJDIR)\fold.obj \
index 48ce3974d647e51b1250505787c2c271258b425b..f6ae85316f0a636fc1c8ca017108105fd27eb00c 100644 (file)
@@ -714,7 +714,6 @@ OBJ = \
        $(OUTDIR)/ex_docmd.o \
        $(OUTDIR)/ex_eval.o \
        $(OUTDIR)/ex_getln.o \
-       $(OUTDIR)/farsi.o \
        $(OUTDIR)/fileio.o \
        $(OUTDIR)/findfile.o \
        $(OUTDIR)/fold.o \
@@ -1005,7 +1004,7 @@ endif
        $(MAKE) -C tee clean
 
 ###########################################################################
-INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
+INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h feature.h globals.h \
        keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
        spell.h structs.h term.h beval.h $(NBDEBUG_INCL)
 GUI_INCL = gui.h
index ffce805d3c06cd2026bef0d0a317494c7497bc4c..2025974fc5e6aba70c3904e232977fe4511cf86a 100644 (file)
@@ -44,7 +44,6 @@ SRC = \
        ex_docmd.c \
        ex_eval.c \
        ex_getln.c \
-       farsi.c \
        fileio.c \
        findfile.c \
        fold.c \
@@ -104,7 +103,6 @@ OBJ =       o/arabic.o \
        o/ex_docmd.o \
        o/ex_eval.o \
        o/ex_getln.o \
-       o/farsi.o \
        o/fileio.o \
        o/findfile.o \
        o/fold.o \
@@ -201,8 +199,6 @@ o/ex_eval.o:        ex_eval.c  $(SYMS) ex_cmds.h
 
 o/ex_getln.o:  ex_getln.c  $(SYMS)
 
-o/farsi.o:     farsi.c  $(SYMS)
-
 o/fileio.o:    fileio.c  $(SYMS)
 
 o/findfile.o:  findfile.c  $(SYMS)
index a02ba960f199a09f63f61932414dcc6271371162..26367e096bc09580a08918e562890ab6789dd1bc 100644 (file)
@@ -228,7 +228,6 @@ LINK32_OBJS= \
        "$(INTDIR)/ex_docmd.obj" \
        "$(INTDIR)/ex_eval.obj" \
        "$(INTDIR)/ex_getln.obj" \
-       "$(INTDIR)/farsi.obj" \
        "$(INTDIR)/fileio.obj" \
        "$(INTDIR)/findfile.obj" \
        "$(INTDIR)/fold.obj" \
@@ -413,10 +412,6 @@ SOURCE=.\ex_getln.c
 # End Source File
 # Begin Source File
 
-SOURCE=.\farsi.c
-# End Source File
-# Begin Source File
-
 SOURCE=.\fileio.c
 # End Source File
 # Begin Source File
index 5314a86a1323f3531ca3a2345ed20beefdb9168f..2cbc3df6aa78743c6f37e5f94404f1d394c43b94 100644 (file)
@@ -54,7 +54,6 @@ SRC = arabic.c \
        ex_docmd.c \
        ex_eval.c \
        ex_getln.c \
-       farsi.c \
        fileio.c \
        findfile.c \
        fold.c \
@@ -116,7 +115,6 @@ OBJ =       obj/arabic.o \
        obj/ex_docmd.o \
        obj/ex_eval.o \
        obj/ex_getln.o \
-       obj/farsi.o \
        obj/fileio.o \
        obj/findfile.o \
        obj/fold.o \
@@ -176,7 +174,6 @@ PRO =       proto/arabic.pro \
        proto/ex_docmd.pro \
        proto/ex_eval.pro \
        proto/ex_getln.pro \
-       proto/farsi.pro \
        proto/fileio.pro \
        proto/findfile.pro \
        proto/fold.pro \
@@ -317,9 +314,6 @@ obj/ex_eval.o:      ex_eval.c ex_cmds.h
 obj/ex_getln.o:        ex_getln.c
        $(CCSYM) $@ ex_getln.c
 
-obj/farsi.o:   farsi.c
-       $(CCSYM) $@ farsi.c
-
 obj/fileio.o:  fileio.c
        $(CCSYM) $@ fileio.c
 
index a6e0dae178c030c24c54855b02aaba4a8a6d5667..af231fb7b5e7186ffb4f79aa9998326b5d384120 100644 (file)
@@ -42,7 +42,6 @@ SRC = arabic.c                                                \
        ex_docmd.c                                              \
        ex_eval.c                                               \
        ex_getln.c                                              \
-       farsi.c                                                 \
        fileio.c                                                \
        findfile.c                                              \
        fold.c                                                  \
index c948f37719649b7c8c425793259e4c98a7b76134..c81fbd29611f4f8a6ab7eb368ebde6192d91e12a 100644 (file)
@@ -694,7 +694,7 @@ CFLAGS = $(CFLAGS) /Zl /MTd
 !include Make_all.mak
 !include testdir\Make_all.mak
 
-INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h farsi.h feature.h globals.h \
+INCL = vim.h alloc.h arabic.h ascii.h ex_cmds.h feature.h globals.h \
        keymap.h macros.h option.h os_dos.h os_win32.h proto.h regexp.h \
        spell.h structs.h term.h beval.h $(NBDEBUG_INCL)
 
@@ -719,7 +719,6 @@ OBJ = \
        $(OUTDIR)\ex_docmd.obj \
        $(OUTDIR)\ex_eval.obj \
        $(OUTDIR)\ex_getln.obj \
-       $(OUTDIR)\farsi.obj \
        $(OUTDIR)\fileio.obj \
        $(OUTDIR)\findfile.obj \
        $(OUTDIR)\fold.obj \
@@ -1404,8 +1403,6 @@ $(OUTDIR)/ex_eval.obj:    $(OUTDIR) ex_eval.c  $(INCL)
 
 $(OUTDIR)/ex_getln.obj:        $(OUTDIR) ex_getln.c  $(INCL)
 
-$(OUTDIR)/farsi.obj:   $(OUTDIR) farsi.c  $(INCL)
-
 $(OUTDIR)/fileio.obj:  $(OUTDIR) fileio.c  $(INCL)
 
 $(OUTDIR)/findfile.obj:        $(OUTDIR) findfile.c  $(INCL)
@@ -1646,7 +1643,6 @@ proto.h: \
        proto/ex_docmd.pro \
        proto/ex_eval.pro \
        proto/ex_getln.pro \
-       proto/farsi.pro \
        proto/fileio.pro \
        proto/findfile.pro \
        proto/getchar.pro \
index deaa5eb5d6cd295b186afc82b8ac3c16df73d4dc..6ba00fbd676d3571dbe0c452b09497ce9a8b0c7a 100644 (file)
@@ -107,7 +107,6 @@ SRC = \
        ex_docmd.c \
        ex_eval.c \
        ex_getln.c \
-       farsi.c \
        fileio.c \
        findfile.c \
        fold.c \
@@ -168,7 +167,6 @@ OBJ = \
        ex_docmd.o \
        ex_eval.o \
        ex_getln.o \
-       farsi.o \
        fileio.o \
        findfile.o \
        fold.o \
@@ -229,7 +227,6 @@ PRO = \
        proto/ex_docmd.pro \
        proto/ex_eval.pro \
        proto/ex_getln.pro \
-       proto/farsi.pro \
        proto/fileio.pro \
        proto/findfile.pro \
        proto/fold.pro \
@@ -362,8 +359,6 @@ ex_eval.o:          ex_eval.c ex_cmds.h
 proto/ex_eval.pro:     ex_eval.c ex_cmds.h
 ex_getln.o:            ex_getln.c
 proto/ex_getln.pro:    ex_getln.c
-farsi.o:               farsi.c
-proto/farsi.pro:       farsi.c
 fileio.o:              fileio.c
 proto/fileio.pro:      fileio.c
 findfile.o:            findfile.c
index 92f5ab12ef091735bad8c06f30e1e9109c8427de..d40c82022dbff0e9117340f15883ecf3975d29c7 100644 (file)
@@ -2,7 +2,7 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change:  2019 Jan 18
+# Last change:  2019 Feb 16
 #
 # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
 # with MMS and MMK
@@ -315,7 +315,7 @@ ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_LIB) \
 SRC =  arabic.c autocmd.c beval.c blob.c blowfish.c buffer.c charset.c \
        crypt.c crypt_zip.c dict.c diff.c digraph.c edit.c eval.c evalfunc.c \
        ex_cmds.c ex_cmds2.c ex_docmd.c ex_eval.c ex_getln.c if_cscope.c \
-       if_xcmdsrv.c farsi.c fileio.c findfile.c fold.c getchar.c hardcopy.c \
+       if_xcmdsrv.c fileio.c findfile.c fold.c getchar.c hardcopy.c \
        hashtab.c indent.c json.c list.c main.c mark.c menu.c mbyte.c \
        memfile.c memline.c message.c misc1.c misc2.c move.c normal.c ops.c \
        option.c popupmnu.c quickfix.c regexp.c search.c sha256.c sign.c \
@@ -328,7 +328,7 @@ SRC =       arabic.c autocmd.c beval.c blob.c blowfish.c buffer.c charset.c \
 OBJ =  arabic.obj autocmd.obj beval.obj blob.obj blowfish.obj buffer.obj \
        charset.obj crypt.obj crypt_zip.obj dict.obj diff.obj digraph.obj \
        edit.obj eval.obj evalfunc.obj ex_cmds.obj ex_cmds2.obj ex_docmd.obj \
-       ex_eval.obj ex_getln.obj if_cscope.obj if_xcmdsrv.obj farsi.obj \
+       ex_eval.obj ex_getln.obj if_cscope.obj if_xcmdsrv.obj \
        fileio.obj findfile.obj fold.obj getchar.obj hardcopy.obj hashtab.obj \
        indent.obj json.obj list.obj main.obj mark.obj menu.obj memfile.obj \
        memline.obj message.obj misc1.obj misc2.obj move.obj mbyte.obj \
@@ -514,279 +514,278 @@ blob.obj : blob.c vim.h [.auto]config.h feature.h os_unix.h
 buffer.obj : buffer.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h version.h
+ globals.h arabic.h version.h
 charset.obj : charset.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 crypt.obj : crypt.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 crypt_zip.obj : crypt_zip.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
- proto.h globals.h farsi.h arabic.h
+ proto.h globals.h arabic.h
 dict.obj : dict.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 diff.obj : diff.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 digraph.obj : digraph.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 edit.obj : edit.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 eval.obj : eval.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h version.h
 evalfunc.obj : evalfunc.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
- proto.h globals.h farsi.h arabic.h version.h
+ proto.h globals.h arabic.h version.h
 ex_cmds.obj : ex_cmds.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h version.h
+ globals.h arabic.h version.h
 ex_cmds2.obj : ex_cmds2.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h version.h
+ globals.h arabic.h version.h
 ex_docmd.obj : ex_docmd.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 ex_eval.obj : ex_eval.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 ex_getln.obj : ex_getln.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
-farsi.obj : farsi.c vim.h
+ globals.h arabic.h
 fileio.obj : fileio.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 findfile.obj : findfile.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 fold.obj : fold.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 getchar.obj : getchar.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 hardcopy.obj : hardcopy.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 hashtab.obj : hashtab.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 if_cscope.obj : if_cscope.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h if_cscope.h
+ globals.h arabic.h if_cscope.h
 if_xcmdsrv.obj : if_xcmdsrv.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h version.h
+ globals.h arabic.h version.h
 if_mzsch.obj : if_mzsch.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro ex_cmds.h proto.h \
- globals.h farsi.h arabic.h if_mzsch.h 
+ globals.h arabic.h if_mzsch.h 
 indent.obj : indent.c vim.h [.auto]config.h feature.h os_unix.h
 json.obj : json.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h version.h
 list.obj : list.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 main.obj : main.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
- arabic.h farsi.c arabic.c
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
+ arabic.h arabic.c
 mark.obj : mark.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 memfile.obj : memfile.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 memline.obj : memline.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 menu.obj : menu.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 message.obj : message.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 misc1.obj : misc1.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h version.h
 misc2.obj : misc2.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 move.obj : move.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 mbyte.obj : mbyte.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 normal.obj : normal.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 ops.obj : ops.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 option.obj : option.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 os_unix.obj : os_unix.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h os_unixx.h
+ globals.h arabic.h os_unixx.h
 os_vms.obj : os_vms.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h os_unixx.h
+ globals.h arabic.h os_unixx.h
 pathdef.obj : pathdef.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 popupmnu.obj : popupmnu.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 quickfix.obj : quickfix.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 regexp.obj : regexp.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 screen.obj : screen.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 search.obj : search.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 sha256.obj : sha256.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 sign.obj : sign.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
  beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 spell.obj : spell.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 spellfile.obj : spellfile.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
- proto.h globals.h farsi.h arabic.h
+ proto.h globals.h arabic.h
 syntax.obj : syntax.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 tag.obj : tag.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 term.obj : term.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 termlib.obj : termlib.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 textprop.obj : textprop.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 ui.obj : ui.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 undo.obj : undo.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 userfunc.obj : userfunc.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h option.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro alloc.h ex_cmds.h spell.h \
- proto.h globals.h farsi.h arabic.h
+ proto.h globals.h arabic.h
 version.obj : version.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h version.h
+ globals.h arabic.h version.h
 window.obj : window.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 gui.obj : gui.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 gui_gtk.obj : gui_gtk.c gui_gtk_f.h vim.h [.auto]config.h feature.h \
  os_unix.h   ascii.h keymap.h term.h macros.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
- proto.h globals.h farsi.h arabic.h [-.pixmaps]stock_icons.h
+ proto.h globals.h arabic.h [-.pixmaps]stock_icons.h
 gui_gtk_f.obj : gui_gtk_f.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h gui_gtk_f.h
+ globals.h arabic.h gui_gtk_f.h
 gui_motif.obj : gui_motif.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h [-.pixmaps]alert.xpm [-.pixmaps]error.xpm \
+ globals.h arabic.h [-.pixmaps]alert.xpm [-.pixmaps]error.xpm \
  [-.pixmaps]generic.xpm [-.pixmaps]info.xpm [-.pixmaps]quest.xpm
 gui_athena.obj : gui_athena.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h gui_at_sb.h
+ globals.h arabic.h gui_at_sb.h
 gui_gtk_x11.obj : gui_gtk_x11.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h gui_gtk_f.h [-.runtime]vim32x32.xpm \
+ globals.h arabic.h gui_gtk_f.h [-.runtime]vim32x32.xpm \
  [-.runtime]vim16x16.xpm [-.runtime]vim48x48.xpm
 gui_x11.obj : gui_x11.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h [-.runtime]vim32x32.xpm \
+ globals.h arabic.h [-.runtime]vim32x32.xpm \
  [-.runtime]vim16x16.xpm [-.runtime]vim48x48.xpm [-.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 \
@@ -806,60 +805,60 @@ gui_x11.obj : gui_x11.c vim.h [.auto]config.h feature.h os_unix.h \
 gui_at_sb.obj : gui_at_sb.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h gui_at_sb.h
+ globals.h arabic.h gui_at_sb.h
 gui_at_fs.obj : gui_at_fs.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h gui_at_sb.h
+ globals.h arabic.h gui_at_sb.h
 pty.obj : pty.c vim.h [.auto]config.h feature.h os_unix.h   \
  ascii.h keymap.h term.h macros.h structs.h regexp.h gui.h beval.h \
- [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h farsi.h \
+ [.proto]gui_beval.pro option.h ex_cmds.h proto.h globals.h \
  arabic.h
 hangulin.obj : hangulin.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 if_perl.obj : [.auto]if_perl.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 if_perlsfio.obj : if_perlsfio.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 if_python.obj : if_python.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 if_tcl.obj : if_tcl.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 if_ruby.obj : if_ruby.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h version.h
+ globals.h arabic.h version.h
 beval.obj : beval.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 gui_beval.obj : gui_beval.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+ globals.h arabic.h
 workshop.obj : workshop.c [.auto]config.h integration.h vim.h feature.h \
  os_unix.h ascii.h keymap.h term.h macros.h structs.h \
  regexp.h gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h \
- proto.h globals.h farsi.h arabic.h version.h workshop.h
+ proto.h globals.h arabic.h version.h workshop.h
 wsdebug.obj : wsdebug.c
 integration.obj : integration.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h integration.h
+ globals.h arabic.h integration.h
 netbeans.obj : netbeans.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h version.h
+ globals.h arabic.h version.h
 gui_xmdlg.obj : gui_xmdlg.c [.auto]config.h vim.h feature.h os_unix.h
 gui_xmebw.obj : gui_xmebw.c [.auto]config.h vim.h feature.h os_unix.h
 xdiffi.obj : [.xdiff]xdiffi.c [.xdiff]xinclude.h [.auto]config.h vim.h feature.h os_unix.h
index 5575902a3d128918e06cc2870b98408b5ce142b7..be41f7725b31151b833ba3ac414a95e19df849fb 100644 (file)
@@ -492,9 +492,9 @@ CClink = $(CC)
 # MULTIBYTE - To edit multi-byte characters.
 # This is now always enabled.
 
-# When building with at least "big" features, right-left, Arabic and Farsi
+# When building with at least "big" features, right-left and Arabic
 # features are enabled.  Use this to disable them.
-#CONF_OPT_MULTIBYTE = --disable-rightleft --disable-farsi --disable-arabic
+#CONF_OPT_MULTIBYTE = --disable-rightleft --disable-arabic
 
 # NLS - National Language Support
 # Uncomment this when you do not want to support translated messages, even
@@ -1590,7 +1590,6 @@ BASIC_SRC = \
        ex_docmd.c \
        ex_eval.c \
        ex_getln.c \
-       farsi.c \
        fileio.c \
        findfile.c \
        fold.c \
@@ -1704,7 +1703,6 @@ OBJ_COMMON = \
        objects/ex_docmd.o \
        objects/ex_eval.o \
        objects/ex_getln.o \
-       objects/farsi.o \
        objects/fileio.o \
        objects/findfile.o \
        objects/fold.o \
@@ -1831,7 +1829,6 @@ PRO_AUTO = \
        ex_docmd.pro \
        ex_eval.pro \
        ex_getln.pro \
-       farsi.pro \
        fileio.pro \
        findfile.pro \
        fold.pro \
@@ -2996,9 +2993,6 @@ objects/ex_eval.o: ex_eval.c
 objects/ex_getln.o: ex_getln.c
        $(CCC) -o $@ ex_getln.c
 
-objects/farsi.o: farsi.c
-       $(CCC) -o $@ farsi.c
-
 objects/fileio.o: fileio.c
        $(CCC) -o $@ fileio.c
 
@@ -3392,290 +3386,286 @@ $(APPDIR)/Contents:
 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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h version.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h xdiff/xdiff.h vim.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h version.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 farsi.h arabic.h version.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 farsi.h arabic.h version.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 farsi.h arabic.h version.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 farsi.h arabic.h ex_cmdidxs.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 farsi.h arabic.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 farsi.h arabic.h
-objects/farsi.o: farsi.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h libvterm/include/vterm.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h version.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 farsi.h arabic.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 farsi.h arabic.h if_cscope.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 farsi.h arabic.h version.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h version.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h os_unixx.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h regexp_nfa.c
+ 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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h libvterm/include/vterm.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 farsi.h arabic.h libvterm/include/vterm.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h version.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h gui_gtk_f.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 farsi.h arabic.h gui_gtk_f.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 farsi.h arabic.h gui_xmebw.h ../pixmaps/alert.xpm \
+ 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 \
@@ -3696,15 +3686,15 @@ objects/gui_motif.o: gui_motif.c vim.h protodef.h auto/config.h feature.h \
 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 farsi.h arabic.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 farsi.h arabic.h gui_xmebwp.h gui_xmebw.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 farsi.h arabic.h gui_at_sb.h gui_x11_pm.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 \
@@ -3723,85 +3713,85 @@ objects/gui_athena.o: gui_athena.c vim.h protodef.h auto/config.h feature.h \
 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 farsi.h arabic.h auto/gui_gtk_gresources.h gui_gtk_f.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 farsi.h arabic.h ../runtime/vim32x32.xpm \
+ 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 farsi.h arabic.h gui_at_sb.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 farsi.h arabic.h gui_at_sb.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 farsi.h arabic.h json.c
+ 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 farsi.h arabic.h charset.c
+ 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 farsi.h arabic.h memfile.c
+ 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 farsi.h arabic.h message.c
+ 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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h if_mzsch.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 farsi.h arabic.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 farsi.h arabic.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 farsi.h arabic.h if_py_both.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 farsi.h arabic.h if_py_both.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 farsi.h arabic.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 farsi.h arabic.h version.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 farsi.h arabic.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 farsi.h arabic.h version.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 farsi.h arabic.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 \
@@ -3833,7 +3823,7 @@ objects/xdiffi.o: xdiff/xdiffi.c xdiff/xinclude.h auto/config.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 \
farsi.h arabic.h xdiff/xtypes.h xdiff/xutils.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 \
@@ -3842,7 +3832,7 @@ objects/xemit.o: xdiff/xemit.c xdiff/xinclude.h auto/config.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 \
farsi.h arabic.h xdiff/xtypes.h xdiff/xutils.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 \
@@ -3851,7 +3841,7 @@ objects/xprepare.o: xdiff/xprepare.c xdiff/xinclude.h auto/config.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 \
farsi.h arabic.h xdiff/xtypes.h xdiff/xutils.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 \
@@ -3860,7 +3850,7 @@ objects/xutils.o: xdiff/xutils.c xdiff/xinclude.h auto/config.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 \
farsi.h arabic.h xdiff/xtypes.h xdiff/xutils.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 \
@@ -3869,7 +3859,7 @@ objects/xhistogram.o: xdiff/xhistogram.c xdiff/xinclude.h auto/config.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 \
farsi.h arabic.h xdiff/xtypes.h xdiff/xutils.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 \
@@ -3878,5 +3868,5 @@ objects/xpatience.o: xdiff/xpatience.c xdiff/xinclude.h auto/config.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 \
farsi.h arabic.h xdiff/xtypes.h xdiff/xutils.h \
+ arabic.h xdiff/xtypes.h xdiff/xutils.h \
  xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
index 8052cebf6eafb4eb1453e032c063d74075b6d034..db3e3b1e45b114fae15fe8581cbd7cfed76a0472 100755 (executable)
@@ -1498,7 +1498,7 @@ Optional Features:
   --enable-multibyte      Include multibyte editing support.
   --disable-rightleft     Do not include Right-to-Left language support.
   --disable-arabic        Do not include Arabic language support.
-  --disable-farsi         Do not include Farsi language support.
+  --disable-farsi         Deprecated.
   --enable-hangulinput    Include Hangul input support.
   --enable-xim            Include XIM input support.
   --enable-fontset        Include X fontset output support.
@@ -7980,24 +7980,11 @@ $as_echo "yes" >&6; }
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking --disable-farsi argument" >&5
-$as_echo_n "checking --disable-farsi argument... " >&6; }
 # Check whether --enable-farsi was given.
 if test "${enable_farsi+set}" = set; then :
   enableval=$enable_farsi;
-else
-  enable_farsi="yes"
 fi
 
-if test "$enable_farsi" = "yes"; then
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-       $as_echo "#define DISABLE_FARSI 1" >>confdefs.h
-
-fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-hangulinput argument" >&5
 $as_echo_n "checking --enable-hangulinput argument... " >&6; }
index 5b091ec4d1cebb2b5a0c8417eba222e0ce85d70c..1d66d617ad7fb3a40d0796c80a7aeebbbbf6a35a 100644 (file)
@@ -98,13 +98,6 @@ buf_init_chartab(
        while (c <= '~')
 #endif
            g_chartab[c++] = 1 + CT_PRINT_CHAR;
-#ifdef FEAT_FKMAP
-       if (p_altkeymap)
-       {
-           while (c < YE)
-               g_chartab[c++] = 1 + CT_PRINT_CHAR;
-       }
-#endif
        while (c < 256)
        {
            /* UTF-8: bytes 0xa0 - 0xff are printable (latin1) */
@@ -218,11 +211,7 @@ buf_init_chartab(
                /* Use the MB_ functions here, because isalpha() doesn't
                 * work properly when 'encoding' is "latin1" and the locale is
                 * "C".  */
-               if (!do_isalpha || MB_ISLOWER(c) || MB_ISUPPER(c)
-#ifdef FEAT_FKMAP
-                       || (p_altkeymap && (F_isalpha(c) || F_isdigit(c)))
-#endif
-                           )
+               if (!do_isalpha || MB_ISLOWER(c) || MB_ISUPPER(c))
                {
                    if (i == 0)                 /* (re)set ID flag */
                    {
@@ -236,10 +225,6 @@ buf_init_chartab(
                        if ((c < ' '
 #ifndef EBCDIC
                                    || c > '~'
-#endif
-#ifdef FEAT_FKMAP
-                                   || (p_altkeymap
-                                       && (F_isalpha(c) || F_isdigit(c)))
 #endif
                                // For double-byte we keep the cell width, so
                                // that we can detect it from the first byte.
@@ -539,9 +524,6 @@ transchar(int c)
                    (c >= 64 && c < 255)
 #else
                    (c >= ' ' && c <= '~')
-#endif
-#ifdef FEAT_FKMAP
-                       || (p_altkeymap && F_ischar(c))
 #endif
                )) || (c < 256 && vim_isprintc_strict(c)))
     {
index d1aaf708ead08f79ae7f952c42e812266954e010..7fe65de5706d6e4e2bf8855f9777956bc532de76 100644 (file)
 /* Define if you don't want to include right-left support. */
 #undef DISABLE_RIGHTLEFT
 
-/* Define if you don't want to include Farsi support. */
-#undef DISABLE_FARSI
-
 /* Define if you don't want to include Arabic support. */
 #undef DISABLE_ARABIC
 
index 2b7725b0a7e7e31730a77db0bb5b8471969af1ed..2d409b3ca06a1500b797d8ae5ebb56e336e85151 100644 (file)
@@ -2155,18 +2155,9 @@ else
        AC_DEFINE(DISABLE_ARABIC)
 fi
 
-dnl Farsi language support for vim will be included with big features,
-dnl unless ENABLE_FARSI is undefined.
-AC_MSG_CHECKING(--disable-farsi argument)
+dnl Farsi language support has been removed, ignore --disable-farsi
 AC_ARG_ENABLE(farsi,
-       [  --disable-farsi         Do not include Farsi language support.],
-       , [enable_farsi="yes"])
-if test "$enable_farsi" = "yes"; then
-       AC_MSG_RESULT(no)
-else
-       AC_MSG_RESULT(yes)
-       AC_DEFINE(DISABLE_FARSI)
-fi
+       [  --disable-farsi         Deprecated.],,)
 
 AC_MSG_CHECKING(--enable-hangulinput argument)
 AC_ARG_ENABLE(hangulinput,
index 042826a872e4c770619ae9b94d0cb048fac3cd07..62ff03d9627969b66789159cc7842a2e162ea9e2 100644 (file)
@@ -467,15 +467,6 @@ edit(
 
     if (cmdchar == 'R')
     {
-#ifdef FEAT_FKMAP
-       if (p_fkmap && p_ri)
-       {
-           beep_flush();
-           emsg(farsi_text_3);     /* encoded in Farsi */
-           State = INSERT;
-       }
-       else
-#endif
        State = REPLACE;
     }
     else if (cmdchar == 'V' || cmdchar == 'v')
@@ -812,10 +803,6 @@ edit(
        if (p_hkmap && KeyTyped)
            c = hkmap(c);               /* Hebrew mode mapping */
 #endif
-#ifdef FEAT_FKMAP
-       if (p_fkmap && KeyTyped)
-           c = fkmap(c);               /* Farsi mode mapping */
-#endif
 
 #ifdef FEAT_INS_EXPAND
        /*
@@ -6281,9 +6268,6 @@ insertchar(
                && !ISSPECIAL(c)
                && (!has_mbyte || MB_BYTE2LEN_CHECK(c) == 1)
                && i < INPUT_BUFLEN
-# ifdef FEAT_FKMAP
-               && !(p_fkmap && KeyTyped) /* Farsi mode mapping moves cursor */
-# endif
                && (textwidth == 0
                    || (virtcol += byte2cells(buf[i - 1])) < (colnr_T)textwidth)
                && !(!no_abbr && !vim_iswordc(c) && vim_iswordc(buf[i - 1])))
@@ -8406,23 +8390,7 @@ ins_ctrl_(void)
     }
     else
        revins_scol = -1;
-#ifdef FEAT_FKMAP
-    if (p_altkeymap)
-    {
-       /*
-        * to be consistent also for redo command, using '.'
-        * set arrow_used to true and stop it - causing to redo
-        * characters entered in one mode (normal/reverse insert).
-        */
-       arrow_used = TRUE;
-       (void)stop_arrow();
-       p_fkmap = curwin->w_p_rl ^ p_ri;
-       if (p_fkmap && p_ri)
-           State = INSERT;
-    }
-    else
-#endif
-       p_hkmap = curwin->w_p_rl ^ p_ri;    /* be consistent! */
+    p_hkmap = curwin->w_p_rl ^ p_ri;    // be consistent!
     showmode();
 }
 #endif
@@ -8488,21 +8456,12 @@ ins_start_select(int c)
     static void
 ins_insert(int replaceState)
 {
-#ifdef FEAT_FKMAP
-    if (p_fkmap && p_ri)
-    {
-       beep_flush();
-       emsg(farsi_text_3);     /* encoded in Farsi */
-       return;
-    }
-#endif
-
-# ifdef FEAT_EVAL
+#ifdef FEAT_EVAL
     set_vim_var_string(VV_INSERTMODE,
                   (char_u *)((State & REPLACE_FLAG) ? "i"
                          : replaceState == VREPLACE ? "v"
                                                     : "r"), 1);
-# endif
+#endif
     ins_apply_autocmds(EVENT_INSERTCHANGE);
     if (State & REPLACE_FLAG)
        State = INSERT | (State & LANGMAP);
@@ -9916,10 +9875,6 @@ ins_eol(int c)
        coladvance(getviscol());
 
 #ifdef FEAT_RIGHTLEFT
-# ifdef FEAT_FKMAP
-    if (p_altkeymap && p_fkmap)
-       fkmap(NL);
-# endif
     /* NL in reverse insert will always start in the end of
      * current line. */
     if (revins_on)
index f1cb9dc607aef92115708c69eb128de688ee8415..e9f63423a8e51619ac820b4d901368419eb1910c 100644 (file)
@@ -6268,9 +6268,6 @@ f_has(typval_T *argvars, typval_T *rettv)
 #ifdef FEAT_SEARCH_EXTRA
        "extra_search",
 #endif
-#ifdef FEAT_FKMAP
-       "farsi",
-#endif
 #ifdef FEAT_SEARCHPATH
        "file_in_path",
 #endif
index e9fa94f67851284696c71db412ca288a3c5a85b7..79b9bc11d4dcaee409e07ad223e78b6ccd002f46 100644 (file)
@@ -4911,10 +4911,6 @@ do_sub(exarg_T *eap)
        }
        else            /* find the end of the regexp */
        {
-#ifdef FEAT_FKMAP      /* reverse the flow of the Farsi characters */
-           if (p_altkeymap && curwin->w_p_rl)
-               lrF_sub(cmd);
-#endif
            which_pat = RE_LAST;            /* use last used regexp */
            delimiter = *cmd++;             /* remember delimiter character */
            pat = cmd;                      /* remember start of search pat */
@@ -6070,11 +6066,6 @@ ex_global(exarg_T *eap)
            *cmd++ = NUL;                   /* replace it with a NUL */
     }
 
-#ifdef FEAT_FKMAP      /* when in Farsi mode, reverse the character flow */
-    if (p_altkeymap && curwin->w_p_rl)
-       lrFswap(pat,0);
-#endif
-
     if (search_regcomp(pat, RE_BOTH, which_pat, SEARCH_HIS, &regmatch) == FAIL)
     {
        emsg(_(e_invcmd));
index cba082a0bd2308a64d8ebef5c04b5fba4a412e3e..0096737b01db2f88004ddf78723318b70a6d9775 100644 (file)
@@ -81,10 +81,6 @@ static int   hist_char2type(int c);
 static int     cmd_hkmap = 0;  /* Hebrew mapping during command line */
 #endif
 
-#ifdef FEAT_FKMAP
-static int     cmd_fkmap = 0;  /* Farsi mapping during command line */
-#endif
-
 static char_u  *getcmdline_int(int firstc, long count, int indent, int init_ccline);
 static int     cmdline_charsize(int idx);
 static void    set_cmdspos(void);
@@ -1043,10 +1039,6 @@ getcmdline_int(
 #ifdef FEAT_RIGHTLEFT
            if (cmd_hkmap)
                c = hkmap(c);
-# ifdef FEAT_FKMAP
-           if (cmd_fkmap)
-               c = cmdl_fkmap(c);
-# endif
            if (cmdmsg_rl && !KeyStuffed)
            {
                /* Invert horizontal movements and operations.  Only when
@@ -1595,10 +1587,6 @@ getcmdline_int(
        case K_DEL:
        case K_KDEL:
        case Ctrl_W:
-#ifdef FEAT_FKMAP
-               if (cmd_fkmap && c == K_BS)
-                   c = K_DEL;
-#endif
                if (c == K_KDEL)
                    c = K_DEL;
 
@@ -1694,13 +1682,6 @@ getcmdline_int(
 
        case K_INS:
        case K_KINS:
-#ifdef FEAT_FKMAP
-               /* if Farsi mode set, we are in reverse insert mode -
-                  Do not change the mode */
-               if (cmd_fkmap)
-                   beep_flush();
-               else
-#endif
                ccline.overstrike = !ccline.overstrike;
 #ifdef CURSOR_SHAPE
                ui_cursor_shape();      /* may show different cursor shape */
@@ -2309,16 +2290,7 @@ getcmdline_int(
        case Ctrl__:        /* CTRL-_: switch language mode */
                if (!p_ari)
                    break;
-# ifdef FEAT_FKMAP
-               if (p_altkeymap)
-               {
-                   cmd_fkmap = !cmd_fkmap;
-                   if (cmd_fkmap)      /* in Farsi always in Insert mode */
-                       ccline.overstrike = FALSE;
-               }
-               else                        /* Hebrew is default */
-# endif
-                   cmd_hkmap = !cmd_hkmap;
+               cmd_hkmap = !cmd_hkmap;
                goto cmdline_not_changed;
 #endif
 
@@ -2421,10 +2393,6 @@ returncmd:
     cmdmsg_rl = FALSE;
 #endif
 
-#ifdef FEAT_FKMAP
-    cmd_fkmap = 0;
-#endif
-
     ExpandCleanup(&xpc);
     ccline.xpc = NULL;
 
@@ -3463,44 +3431,35 @@ put_on_cmdline(char_u *str, int len, int redraw)
                msg_clr_eos();
            msg_no_more = FALSE;
        }
-#ifdef FEAT_FKMAP
-       /*
-        * If we are in Farsi command mode, the character input must be in
-        * Insert mode. So do not advance the cmdpos.
-        */
-       if (!cmd_fkmap)
-#endif
+       if (KeyTyped)
        {
-           if (KeyTyped)
-           {
-               m = Columns * Rows;
-               if (m < 0)      /* overflow, Columns or Rows at weird value */
-                   m = MAXCOL;
-           }
-           else
+           m = Columns * Rows;
+           if (m < 0)  /* overflow, Columns or Rows at weird value */
                m = MAXCOL;
-           for (i = 0; i < len; ++i)
-           {
-               c = cmdline_charsize(ccline.cmdpos);
-               /* count ">" for a double-wide char that doesn't fit. */
-               if (has_mbyte)
-                   correct_cmdspos(ccline.cmdpos, c);
-               /* Stop cursor at the end of the screen, but do increment the
-                * insert position, so that entering a very long command
-                * works, even though you can't see it. */
-               if (ccline.cmdspos + c < m)
-                   ccline.cmdspos += c;
+       }
+       else
+           m = MAXCOL;
+       for (i = 0; i < len; ++i)
+       {
+           c = cmdline_charsize(ccline.cmdpos);
+           /* count ">" for a double-wide char that doesn't fit. */
+           if (has_mbyte)
+               correct_cmdspos(ccline.cmdpos, c);
+           /* Stop cursor at the end of the screen, but do increment the
+            * insert position, so that entering a very long command
+            * works, even though you can't see it. */
+           if (ccline.cmdspos + c < m)
+               ccline.cmdspos += c;
 
-               if (has_mbyte)
-               {
-                   c = (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos) - 1;
-                   if (c > len - i - 1)
-                       c = len - i - 1;
-                   ccline.cmdpos += c;
-                   i += c;
-               }
-               ++ccline.cmdpos;
+           if (has_mbyte)
+           {
+               c = (*mb_ptr2len)(ccline.cmdbuff + ccline.cmdpos) - 1;
+               if (c > len - i - 1)
+                   c = len - i - 1;
+               ccline.cmdpos += c;
+               i += c;
            }
+           ++ccline.cmdpos;
        }
     }
     if (redraw)
@@ -7126,35 +7085,6 @@ write_viminfo_history(FILE *fp, int merge)
 }
 #endif /* FEAT_VIMINFO */
 
-#if defined(FEAT_FKMAP) || defined(PROTO)
-/*
- * Write a character at the current cursor+offset position.
- * It is directly written into the command buffer block.
- */
-    void
-cmd_pchar(int c, int offset)
-{
-    if (ccline.cmdpos + offset >= ccline.cmdlen || ccline.cmdpos + offset < 0)
-    {
-       emsg(_("E198: cmd_pchar beyond the command length"));
-       return;
-    }
-    ccline.cmdbuff[ccline.cmdpos + offset] = (char_u)c;
-    ccline.cmdbuff[ccline.cmdlen] = NUL;
-}
-
-    int
-cmd_gchar(int offset)
-{
-    if (ccline.cmdpos + offset >= ccline.cmdlen || ccline.cmdpos + offset < 0)
-    {
-       // emsg(_("cmd_gchar beyond the command length"));
-       return NUL;
-    }
-    return (int)ccline.cmdbuff[ccline.cmdpos + offset];
-}
-#endif
-
 #if defined(FEAT_CMDWIN) || defined(PROTO)
 /*
  * Open a window on the current command line and history.  Allow editing in
diff --git a/src/farsi.c b/src/farsi.c
deleted file mode 100644 (file)
index 48dd991..0000000
+++ /dev/null
@@ -1,2179 +0,0 @@
-/* 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.
- * See README.txt for an overview of the Vim source code.
- */
-
-/*
- * farsi.c: functions for Farsi language
- */
-
-#include "vim.h"
-
-#if defined(FEAT_FKMAP) || defined(PROTO)
-
-static int F_is_TyB_TyC_TyD(int src, int offset);
-
-/*
- * Convert the given Farsi character into a _X or _X_ type
- */
-    static int
-toF_Xor_X_(int c)
-{
-    int tempc;
-
-    switch (c)
-    {
-       case BE: return _BE;
-       case PE: return _PE;
-       case TE: return _TE;
-       case SE: return _SE;
-       case JIM: return _JIM;
-       case CHE: return _CHE;
-       case HE_J: return _HE_J;
-       case XE: return _XE;
-       case SIN: return _SIN;
-       case SHIN: return _SHIN;
-       case SAD: return _SAD;
-       case ZAD: return _ZAD;
-       case AYN: return _AYN;
-       case AYN_: return _AYN_;
-       case GHAYN: return _GHAYN;
-       case GHAYN_: return _GHAYN_;
-       case FE: return _FE;
-       case GHAF: return _GHAF;
-       case KAF: return _KAF;
-       case GAF: return _GAF;
-       case LAM: return _LAM;
-       case MIM: return _MIM;
-       case NOON: return _NOON;
-       case YE:
-       case YE_: return _YE;
-       case YEE:
-       case YEE_: return _YEE;
-       case IE:
-       case IE_: return _IE;
-       case F_HE:
-               tempc = _HE;
-
-               if (p_ri && (curwin->w_cursor.col + 1
-                                        < (colnr_T)STRLEN(ml_get_curline())))
-               {
-                   inc_cursor();
-
-                   if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-                       tempc = _HE_;
-
-                   dec_cursor();
-               }
-               if (!p_ri && STRLEN(ml_get_curline()))
-               {
-                   dec_cursor();
-
-                   if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-                       tempc = _HE_;
-
-                   inc_cursor();
-               }
-
-               return tempc;
-    }
-    return 0;
-}
-
-/*
- * Convert the given Farsi character into Farsi capital character.
- */
-    static int
-toF_TyA(int c)
-{
-    switch (c)
-    {
-       case ALEF_: return ALEF;
-       case ALEF_U_H_: return ALEF_U_H;
-       case _BE: return BE;
-       case _PE: return PE;
-       case _TE: return TE;
-       case _SE: return SE;
-       case _JIM: return JIM;
-       case _CHE: return CHE;
-       case _HE_J: return HE_J;
-       case _XE: return XE;
-       case _SIN: return SIN;
-       case _SHIN: return SHIN;
-       case _SAD: return SAD;
-       case _ZAD: return ZAD;
-       case _AYN:
-       case AYN_:
-       case _AYN_: return AYN;
-       case _GHAYN:
-       case GHAYN_:
-       case _GHAYN_: return GHAYN;
-       case _FE: return FE;
-       case _GHAF: return GHAF;
-       /* I am not sure what it is !!!     case _KAF_H: */
-       case _KAF: return KAF;
-       case _GAF: return GAF;
-       case _LAM: return LAM;
-       case _MIM: return MIM;
-       case _NOON: return NOON;
-       case _YE:
-       case YE_: return YE;
-       case _YEE:
-       case YEE_: return YEE;
-       case TEE_: return TEE;
-       case _IE:
-       case IE_: return IE;
-       case _HE:
-       case _HE_: return F_HE;
-    }
-    return c;
-}
-
-/*
- * Is the character under the cursor+offset in the given buffer a join type.
- * That is a character that is combined with the others.
- * Note: the offset is used only for command line buffer.
- */
-    static int
-F_is_TyB_TyC_TyD(int src, int offset)
-{
-    int                c;
-
-    if (src == SRC_EDT)
-       c = gchar_cursor();
-    else
-       c = cmd_gchar(AT_CURSOR+offset);
-
-    switch (c)
-    {
-       case _LAM:
-       case _BE:
-       case _PE:
-       case _TE:
-       case _SE:
-       case _JIM:
-       case _CHE:
-       case _HE_J:
-       case _XE:
-       case _SIN:
-       case _SHIN:
-       case _SAD:
-       case _ZAD:
-       case _TA:
-       case _ZA:
-       case _AYN:
-       case _AYN_:
-       case _GHAYN:
-       case _GHAYN_:
-       case _FE:
-       case _GHAF:
-       case _KAF:
-       case _KAF_H:
-       case _GAF:
-       case _MIM:
-       case _NOON:
-       case _YE:
-       case _YEE:
-       case _IE:
-       case _HE_:
-       case _HE:
-               return TRUE;
-    }
-    return FALSE;
-}
-
-/*
- * Is the Farsi character one of the terminating only type.
- */
-    static int
-F_is_TyE(int c)
-{
-    switch (c)
-    {
-       case ALEF_A:
-       case ALEF_D_H:
-       case DAL:
-       case ZAL:
-       case RE:
-       case ZE:
-       case JE:
-       case WAW:
-       case WAW_H:
-       case HAMZE:
-               return TRUE;
-    }
-    return FALSE;
-}
-
-/*
- * Is the Farsi character one of the none leading type.
- */
-    static int
-F_is_TyC_TyD(int c)
-{
-    switch (c)
-    {
-       case ALEF_:
-       case ALEF_U_H_:
-       case _AYN_:
-       case AYN_:
-       case _GHAYN_:
-       case GHAYN_:
-       case _HE_:
-       case YE_:
-       case IE_:
-       case TEE_:
-       case YEE_:
-               return TRUE;
-    }
-    return FALSE;
-}
-
-/*
- * Convert a none leading Farsi char into a leading type.
- */
-    static int
-toF_TyB(int c)
-{
-    switch (c)
-    {
-       case ALEF_:     return ALEF;
-       case ALEF_U_H_: return ALEF_U_H;
-       case _AYN_:     return _AYN;
-       case AYN_:      return AYN;     /* exception - there are many of them */
-       case _GHAYN_:   return _GHAYN;
-       case GHAYN_:    return GHAYN;   /* exception - there are many of them */
-       case _HE_:      return _HE;
-       case YE_:       return YE;
-       case IE_:       return IE;
-       case TEE_:      return TEE;
-       case YEE_:      return YEE;
-    }
-    return c;
-}
-
-
-    static void
-put_and_redo(int c)
-{
-    pchar_cursor(c);
-    AppendCharToRedobuff(K_BS);
-    AppendCharToRedobuff(c);
-}
-
-/*
- * Overwrite the current redo and cursor characters + left adjust.
- */
-    static void
-put_curr_and_l_to_X(int c)
-{
-    int        tempc;
-
-    if (curwin->w_p_rl && p_ri)
-       return;
-
-    if ((curwin->w_cursor.col < (colnr_T)STRLEN(ml_get_curline())))
-    {
-       if ((p_ri && curwin->w_cursor.col) || !p_ri)
-       {
-           if (p_ri)
-               dec_cursor();
-           else
-               inc_cursor();
-
-           if (F_is_TyC_TyD((tempc = gchar_cursor())))
-           {
-               pchar_cursor(toF_TyB(tempc));
-               AppendCharToRedobuff(K_BS);
-               AppendCharToRedobuff(tempc);
-           }
-
-           if (p_ri)
-               inc_cursor();
-           else
-               dec_cursor();
-       }
-    }
-
-    put_and_redo(c);
-}
-
-/*
- * Change the char. under the cursor to a X_ or X type
- */
-    static void
-chg_c_toX_orX(void)
-{
-    int        tempc, curc;
-
-    switch ((curc = gchar_cursor()))
-    {
-       case _BE:
-               tempc = BE;
-               break;
-       case _PE:
-               tempc = PE;
-               break;
-       case _TE:
-               tempc = TE;
-               break;
-       case _SE:
-               tempc = SE;
-               break;
-       case _JIM:
-               tempc = JIM;
-               break;
-       case _CHE:
-               tempc = CHE;
-               break;
-       case _HE_J:
-               tempc = HE_J;
-               break;
-       case _XE:
-               tempc = XE;
-               break;
-       case _SIN:
-               tempc = SIN;
-               break;
-       case _SHIN:
-               tempc = SHIN;
-               break;
-       case _SAD:
-               tempc = SAD;
-               break;
-       case _ZAD:
-               tempc = ZAD;
-               break;
-       case _FE:
-               tempc = FE;
-               break;
-       case _GHAF:
-               tempc = GHAF;
-               break;
-       case _KAF_H:
-       case _KAF:
-               tempc = KAF;
-               break;
-       case _GAF:
-               tempc = GAF;
-               break;
-       case _AYN:
-               tempc = AYN;
-               break;
-       case _AYN_:
-               tempc = AYN_;
-               break;
-       case _GHAYN:
-               tempc = GHAYN;
-               break;
-       case _GHAYN_:
-               tempc = GHAYN_;
-               break;
-       case _LAM:
-               tempc = LAM;
-               break;
-       case _MIM:
-               tempc = MIM;
-               break;
-       case _NOON:
-               tempc = NOON;
-               break;
-       case _HE:
-       case _HE_:
-               tempc = F_HE;
-               break;
-       case _YE:
-       case _IE:
-       case _YEE:
-               if (p_ri)
-               {
-                   inc_cursor();
-                   if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-                           tempc = (curc == _YE ? YE_ :
-                           (curc == _IE ? IE_ : YEE_));
-                   else
-                           tempc = (curc == _YE ? YE :
-                           (curc == _IE ? IE : YEE));
-                   dec_cursor();
-               }
-               else
-               {
-                   if (curwin->w_cursor.col)
-                   {
-                       dec_cursor();
-                       if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-                               tempc = (curc == _YE ? YE_ :
-                               (curc == _IE ? IE_ : YEE_));
-                       else
-                               tempc = (curc == _YE ? YE :
-                               (curc == _IE ? IE : YEE));
-                       inc_cursor();
-                   }
-                   else
-                           tempc = (curc == _YE ? YE :
-                           (curc == _IE ? IE : YEE));
-               }
-               break;
-       default:
-               tempc = 0;
-    }
-
-    if (tempc)
-       put_and_redo(tempc);
-}
-
-/*
- * Change the char. under the cursor to a _X_ or X_ type
- */
-    static void
-chg_c_to_X_orX_(void)
-{
-    int        tempc;
-
-    switch (gchar_cursor())
-    {
-       case ALEF:
-               tempc = ALEF_;
-               break;
-       case ALEF_U_H:
-               tempc = ALEF_U_H_;
-               break;
-       case _AYN:
-               tempc = _AYN_;
-               break;
-       case AYN:
-               tempc = AYN_;
-               break;
-       case _GHAYN:
-               tempc = _GHAYN_;
-               break;
-       case GHAYN:
-               tempc = GHAYN_;
-               break;
-       case _HE:
-               tempc = _HE_;
-               break;
-       case YE:
-               tempc = YE_;
-               break;
-       case IE:
-               tempc = IE_;
-               break;
-       case TEE:
-               tempc = TEE_;
-               break;
-       case YEE:
-               tempc = YEE_;
-               break;
-       default:
-               tempc = 0;
-    }
-
-    if (tempc)
-       put_and_redo(tempc);
-}
-
-/*
- * Change the char. under the cursor to a _X_ or _X type
- */
-    static void
-chg_c_to_X_or_X(void)
-{
-    int        tempc;
-
-    tempc = gchar_cursor();
-
-    if (curwin->w_cursor.col + 1 < (colnr_T)STRLEN(ml_get_curline()))
-    {
-       inc_cursor();
-
-       if ((tempc == F_HE) && (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR)))
-       {
-           tempc = _HE_;
-
-           dec_cursor();
-
-           put_and_redo(tempc);
-           return;
-       }
-
-       dec_cursor();
-    }
-
-    if ((tempc = toF_Xor_X_(tempc)) != 0)
-       put_and_redo(tempc);
-}
-
-/*
- * Change the character left to the cursor to a _X_ or X_ type
- */
-    static void
-chg_l_to_X_orX_(void)
-{
-    int        tempc;
-
-    if (curwin->w_cursor.col != 0 &&
-       (curwin->w_cursor.col + 1 == (colnr_T)STRLEN(ml_get_curline())))
-       return;
-
-    if (!curwin->w_cursor.col && p_ri)
-       return;
-
-    if (p_ri)
-       dec_cursor();
-    else
-       inc_cursor();
-
-    switch (gchar_cursor())
-    {
-       case ALEF:
-               tempc = ALEF_;
-               break;
-       case ALEF_U_H:
-               tempc = ALEF_U_H_;
-               break;
-       case _AYN:
-               tempc = _AYN_;
-               break;
-       case AYN:
-               tempc = AYN_;
-               break;
-       case _GHAYN:
-               tempc = _GHAYN_;
-               break;
-       case GHAYN:
-               tempc = GHAYN_;
-               break;
-       case _HE:
-               tempc = _HE_;
-               break;
-       case YE:
-               tempc = YE_;
-               break;
-       case IE:
-               tempc = IE_;
-               break;
-       case TEE:
-               tempc = TEE_;
-               break;
-       case YEE:
-               tempc = YEE_;
-               break;
-       default:
-               tempc = 0;
-    }
-
-    if (tempc)
-       put_and_redo(tempc);
-
-    if (p_ri)
-       inc_cursor();
-    else
-       dec_cursor();
-}
-
-/*
- * Change the character left to the cursor to a X or _X type
- */
-    static void
-chg_l_toXor_X(void)
-{
-    int        tempc;
-
-    if (curwin->w_cursor.col != 0 &&
-       (curwin->w_cursor.col + 1 == (colnr_T)STRLEN(ml_get_curline())))
-       return;
-
-    if (!curwin->w_cursor.col && p_ri)
-       return;
-
-    if (p_ri)
-       dec_cursor();
-    else
-       inc_cursor();
-
-    switch (gchar_cursor())
-    {
-       case ALEF_:
-               tempc = ALEF;
-               break;
-       case ALEF_U_H_:
-               tempc = ALEF_U_H;
-               break;
-       case _AYN_:
-               tempc = _AYN;
-               break;
-       case AYN_:
-               tempc = AYN;
-               break;
-       case _GHAYN_:
-               tempc = _GHAYN;
-               break;
-       case GHAYN_:
-               tempc = GHAYN;
-               break;
-       case _HE_:
-               tempc = _HE;
-               break;
-       case YE_:
-               tempc = YE;
-               break;
-       case IE_:
-               tempc = IE;
-               break;
-       case TEE_:
-               tempc = TEE;
-               break;
-       case YEE_:
-               tempc = YEE;
-               break;
-       default:
-               tempc = 0;
-    }
-
-    if (tempc)
-       put_and_redo(tempc);
-
-    if (p_ri)
-       inc_cursor();
-    else
-       dec_cursor();
-}
-
-/*
- * Change the character right to the cursor to a _X or _X_ type
- */
-    static void
-chg_r_to_Xor_X_(void)
-{
-    int tempc, c;
-
-    if (curwin->w_cursor.col)
-    {
-       if (!p_ri)
-           dec_cursor();
-
-       tempc = gchar_cursor();
-
-       if ((c = toF_Xor_X_(tempc)) != 0)
-           put_and_redo(c);
-
-       if (!p_ri)
-           inc_cursor();
-
-    }
-}
-
-/*
- * Map Farsi keyboard when in fkmap mode.
- */
-    int
-fkmap(int c)
-{
-    int                tempc;
-    int                insert_mode = (State & INSERT);
-    static int revins = 0;
-
-    if (IS_SPECIAL(c))
-       return c;
-
-    if (insert_mode)
-    {
-       if (VIM_ISDIGIT(c) || ((c == '.' || c == '+' || c == '-' ||
-           c == '^' || c == '%' || c == '#' || c == '=') && revins))
-       {
-           /* Numbers are entered left-to-right. */
-           if (!revins)
-           {
-               if (curwin->w_cursor.col)
-               {
-                   if (!p_ri)
-                       dec_cursor();
-
-                   chg_c_toX_orX ();
-                   chg_l_toXor_X ();
-
-                   if (!p_ri)
-                       inc_cursor();
-               }
-           }
-
-           arrow_used = TRUE;
-           (void)stop_arrow();
-
-           if (!curwin->w_p_rl && revins)
-               inc_cursor();
-
-           ++revins;
-           p_ri = 1;
-       }
-       else if (revins)
-       {
-           /* Stop entering number. */
-           arrow_used = TRUE;
-           (void)stop_arrow();
-
-           revins = 0;
-           if (curwin->w_p_rl)
-           {
-               while ((F_isdigit(gchar_cursor())
-                           || (gchar_cursor() == F_PERIOD
-                               || gchar_cursor() == F_PLUS
-                               || gchar_cursor() == F_MINUS
-                               || gchar_cursor() == F_MUL
-                               || gchar_cursor() == F_DIVIDE
-                               || gchar_cursor() == F_PERCENT
-                               || gchar_cursor() == F_EQUALS))
-                       && gchar_cursor() != NUL)
-                   ++curwin->w_cursor.col;
-           }
-           else
-           {
-               if (curwin->w_cursor.col)
-                   while ((F_isdigit(gchar_cursor())
-                           || (gchar_cursor() == F_PERIOD
-                               || gchar_cursor() == F_PLUS
-                               || gchar_cursor() == F_MINUS
-                               || gchar_cursor() == F_MUL
-                               || gchar_cursor() == F_DIVIDE
-                               || gchar_cursor() == F_PERCENT
-                               || gchar_cursor() == F_EQUALS))
-                           && --curwin->w_cursor.col)
-                       ;
-
-               if (!F_isdigit(gchar_cursor()))
-                   ++curwin->w_cursor.col;
-           }
-       }
-    }
-
-    if (!revins)
-    {
-       if (curwin->w_p_rl)
-           p_ri = 0;
-       if (!curwin->w_p_rl)
-           p_ri = 1;
-    }
-
-    if ((c < 0x100) && (isalpha(c) || c == '&' || c == '^' ||  c == ';' ||
-                           c == '\''|| c == ',' || c == '[' ||
-                           c == ']' || c == '{' || c == '}'))
-       chg_r_to_Xor_X_();
-
-    tempc = 0;
-
-    switch (c)
-    {
-       case '`':
-       case ' ':
-       case '.':
-       case '!':
-       case '"':
-       case '$':
-       case '%':
-       case '^':
-       case '&':
-       case '/':
-       case '(':
-       case ')':
-       case '=':
-       case '\\':
-       case '?':
-       case '+':
-       case '-':
-       case '_':
-       case '*':
-       case ':':
-       case '#':
-       case '~':
-       case '@':
-       case '<':
-       case '>':
-       case '{':
-       case '}':
-       case '|':
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-       case 'B':
-       case 'E':
-       case 'F':
-       case 'H':
-       case 'I':
-       case 'K':
-       case 'L':
-       case 'M':
-       case 'O':
-       case 'P':
-       case 'Q':
-       case 'R':
-       case 'T':
-       case 'U':
-       case 'W':
-       case 'Y':
-       case  NL:
-       case  TAB:
-
-           if (p_ri && c == NL && curwin->w_cursor.col && insert_mode)
-           {
-               /*
-                * If the char before the cursor is _X_ or X_ do not change
-                * the one under the cursor with X type.
-                */
-               dec_cursor();
-
-               if (F_isalpha(gchar_cursor()))
-               {
-                   inc_cursor();
-                   return NL;
-               }
-
-               inc_cursor();
-           }
-
-           if (!p_ri && !curwin->w_cursor.col)
-           {
-               switch (c)
-               {
-                   case '0':   return FARSI_0;
-                   case '1':   return FARSI_1;
-                   case '2':   return FARSI_2;
-                   case '3':   return FARSI_3;
-                   case '4':   return FARSI_4;
-                   case '5':   return FARSI_5;
-                   case '6':   return FARSI_6;
-                   case '7':   return FARSI_7;
-                   case '8':   return FARSI_8;
-                   case '9':   return FARSI_9;
-                   case 'B':   return F_PSP;
-                   case 'E':   return JAZR_N;
-                   case 'F':   return ALEF_D_H;
-                   case 'H':   return ALEF_A;
-                   case 'I':   return TASH;
-                   case 'K':   return F_LQUOT;
-                   case 'L':   return F_RQUOT;
-                   case 'M':   return HAMZE;
-                   case 'O':   return '[';
-                   case 'P':   return ']';
-                   case 'Q':   return OO;
-                   case 'R':   return MAD_N;
-                   case 'T':   return OW;
-                   case 'U':   return MAD;
-                   case 'W':   return OW_OW;
-                   case 'Y':   return JAZR;
-                   case '`':   return F_PCN;
-                   case '!':   return F_EXCL;
-                   case '@':   return F_COMMA;
-                   case '#':   return F_DIVIDE;
-                   case '$':   return F_CURRENCY;
-                   case '%':   return F_PERCENT;
-                   case '^':   return F_MUL;
-                   case '&':   return F_BCOMMA;
-                   case '*':   return F_STAR;
-                   case '(':   return F_LPARENT;
-                   case ')':   return F_RPARENT;
-                   case '-':   return F_MINUS;
-                   case '_':   return F_UNDERLINE;
-                   case '=':   return F_EQUALS;
-                   case '+':   return F_PLUS;
-                   case '\\':  return F_BSLASH;
-                   case '|':   return F_PIPE;
-                   case ':':   return F_DCOLON;
-                   case '"':   return F_SEMICOLON;
-                   case '.':   return F_PERIOD;
-                   case '/':   return F_SLASH;
-                   case '<':   return F_LESS;
-                   case '>':   return F_GREATER;
-                   case '?':   return F_QUESTION;
-                   case ' ':   return F_BLANK;
-               }
-               break;
-           }
-
-           if (insert_mode)
-           {
-               if (!p_ri)
-                   dec_cursor();
-
-               switch ((tempc = gchar_cursor()))
-               {
-                   case _BE:
-                   case _PE:
-                   case _TE:
-                   case _SE:
-                   case _JIM:
-                   case _CHE:
-                   case _HE_J:
-                   case _XE:
-                   case _SIN:
-                   case _SHIN:
-                   case _SAD:
-                   case _ZAD:
-                   case _FE:
-                   case _GHAF:
-                   case _KAF:
-                   case _KAF_H:
-                   case _GAF:
-                   case _LAM:
-                   case _MIM:
-                   case _NOON:
-                   case _HE:
-                   case _HE_:
-                   case _TA:
-                   case _ZA:
-                           put_curr_and_l_to_X(toF_TyA(tempc));
-                           break;
-                   case _AYN:
-                   case _AYN_:
-
-                           if (!p_ri)
-                               if (!curwin->w_cursor.col)
-                               {
-                                   put_curr_and_l_to_X(AYN);
-                                   break;
-                               }
-
-                           if (p_ri)
-                               inc_cursor();
-                           else
-                               dec_cursor();
-
-                           if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-                               tempc = AYN_;
-                           else
-                               tempc = AYN;
-
-                           if (p_ri)
-                               dec_cursor();
-                           else
-                               inc_cursor();
-
-                           put_curr_and_l_to_X(tempc);
-
-                           break;
-                   case _GHAYN:
-                   case _GHAYN_:
-
-                           if (!p_ri)
-                               if (!curwin->w_cursor.col)
-                               {
-                                   put_curr_and_l_to_X(GHAYN);
-                                   break;
-                               }
-
-                           if (p_ri)
-                               inc_cursor();
-                           else
-                               dec_cursor();
-
-                           if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-                               tempc = GHAYN_;
-                           else
-                               tempc = GHAYN;
-
-                           if (p_ri)
-                               dec_cursor();
-                           else
-                               inc_cursor();
-
-                           put_curr_and_l_to_X(tempc);
-                           break;
-                   case _YE:
-                   case _IE:
-                   case _YEE:
-                           if (!p_ri)
-                               if (!curwin->w_cursor.col)
-                               {
-                                   put_curr_and_l_to_X((tempc == _YE ? YE :
-                                               (tempc == _IE ? IE : YEE)));
-                                   break;
-                               }
-
-                           if (p_ri)
-                               inc_cursor();
-                           else
-                               dec_cursor();
-
-                           if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-                                   tempc = (tempc == _YE ? YE_ :
-                                       (tempc == _IE ? IE_ : YEE_));
-                           else
-                                   tempc = (tempc == _YE ? YE :
-                                       (tempc == _IE ? IE : YEE));
-
-                           if (p_ri)
-                               dec_cursor();
-                           else
-                               inc_cursor();
-
-                           put_curr_and_l_to_X(tempc);
-                           break;
-               }
-
-               if (!p_ri)
-                   inc_cursor();
-           }
-
-           tempc = 0;
-
-           switch (c)
-           {
-               case '0':       return FARSI_0;
-               case '1':       return FARSI_1;
-               case '2':       return FARSI_2;
-               case '3':       return FARSI_3;
-               case '4':       return FARSI_4;
-               case '5':       return FARSI_5;
-               case '6':       return FARSI_6;
-               case '7':       return FARSI_7;
-               case '8':       return FARSI_8;
-               case '9':       return FARSI_9;
-               case 'B':       return F_PSP;
-               case 'E':       return JAZR_N;
-               case 'F':       return ALEF_D_H;
-               case 'H':       return ALEF_A;
-               case 'I':       return TASH;
-               case 'K':       return F_LQUOT;
-               case 'L':       return F_RQUOT;
-               case 'M':       return HAMZE;
-               case 'O':       return '[';
-               case 'P':       return ']';
-               case 'Q':       return OO;
-               case 'R':       return MAD_N;
-               case 'T':       return OW;
-               case 'U':       return MAD;
-               case 'W':       return OW_OW;
-               case 'Y':       return JAZR;
-               case '`':       return F_PCN;
-               case '!':       return F_EXCL;
-               case '@':       return F_COMMA;
-               case '#':       return F_DIVIDE;
-               case '$':       return F_CURRENCY;
-               case '%':       return F_PERCENT;
-               case '^':       return F_MUL;
-               case '&':       return F_BCOMMA;
-               case '*':       return F_STAR;
-               case '(':       return F_LPARENT;
-               case ')':       return F_RPARENT;
-               case '-':       return F_MINUS;
-               case '_':       return F_UNDERLINE;
-               case '=':       return F_EQUALS;
-               case '+':       return F_PLUS;
-               case '\\':      return F_BSLASH;
-               case '|':       return F_PIPE;
-               case ':':       return F_DCOLON;
-               case '"':       return F_SEMICOLON;
-               case '.':       return F_PERIOD;
-               case '/':       return F_SLASH;
-               case '<':       return F_LESS;
-               case '>':       return F_GREATER;
-               case '?':       return F_QUESTION;
-               case ' ':       return F_BLANK;
-           }
-           break;
-
-       case 'a':
-           tempc = _SHIN;
-           break;
-       case 'A':
-           tempc = WAW_H;
-           break;
-       case 'b':
-           tempc = ZAL;
-           break;
-       case 'c':
-           tempc = ZE;
-           break;
-       case 'C':
-           tempc = JE;
-           break;
-       case 'd':
-           tempc = _YE;
-           break;
-       case 'D':
-           tempc = _YEE;
-           break;
-       case 'e':
-           tempc = _SE;
-           break;
-       case 'f':
-           tempc = _BE;
-           break;
-       case 'g':
-           tempc = _LAM;
-           break;
-       case 'G':
-           if (!curwin->w_cursor.col  &&  STRLEN(ml_get_curline()))
-           {
-
-               if (gchar_cursor() == _LAM)
-                   chg_c_toX_orX ();
-               else if (p_ri)
-                   chg_c_to_X_or_X ();
-           }
-
-           if (!p_ri)
-               if (!curwin->w_cursor.col)
-                   return ALEF_U_H;
-
-           if (!p_ri)
-               dec_cursor();
-
-           if (gchar_cursor() == _LAM)
-           {
-               chg_c_toX_orX ();
-               chg_l_toXor_X ();
-               tempc = ALEF_U_H;
-           }
-           else if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-           {
-               tempc = ALEF_U_H_;
-               chg_l_toXor_X ();
-           }
-           else
-               tempc = ALEF_U_H;
-
-           if (!p_ri)
-               inc_cursor();
-
-           return tempc;
-       case 'h':
-           if (!curwin->w_cursor.col  &&  STRLEN(ml_get_curline()))
-               {
-               if (p_ri)
-                   chg_c_to_X_or_X ();
-
-           }
-
-           if (!p_ri)
-               if (!curwin->w_cursor.col)
-                   return ALEF;
-
-           if (!p_ri)
-               dec_cursor();
-
-           if (gchar_cursor() == _LAM)
-           {
-               chg_l_toXor_X();
-               del_char(FALSE);
-               AppendCharToRedobuff(K_BS);
-
-               if (!p_ri)
-                   dec_cursor();
-
-               tempc = LA;
-           }
-           else
-           {
-               if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-               {
-                   tempc = ALEF_;
-                   chg_l_toXor_X ();
-               }
-               else
-                   tempc = ALEF;
-           }
-
-           if (!p_ri)
-               inc_cursor();
-
-           return tempc;
-       case 'i':
-           if (!curwin->w_cursor.col && STRLEN(ml_get_curline()))
-           {
-               if (!p_ri && !F_is_TyE(tempc))
-                   chg_c_to_X_orX_ ();
-               if (p_ri)
-                   chg_c_to_X_or_X ();
-
-           }
-
-           if (!p_ri && !curwin->w_cursor.col)
-               return _HE;
-
-           if (!p_ri)
-               dec_cursor();
-
-           if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-               tempc = _HE_;
-           else
-               tempc = _HE;
-
-           if (!p_ri)
-               inc_cursor();
-           break;
-       case 'j':
-           tempc = _TE;
-           break;
-       case 'J':
-           if (!curwin->w_cursor.col  &&  STRLEN(ml_get_curline()))
-           {
-               if (p_ri)
-                   chg_c_to_X_or_X ();
-
-           }
-
-           if (!p_ri)
-               if (!curwin->w_cursor.col)
-                   return TEE;
-
-           if (!p_ri)
-               dec_cursor();
-
-           if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-           {
-               tempc = TEE_;
-               chg_l_toXor_X ();
-           }
-           else
-               tempc = TEE;
-
-           if (!p_ri)
-               inc_cursor();
-
-           return tempc;
-       case 'k':
-           tempc = _NOON;
-           break;
-       case 'l':
-           tempc = _MIM;
-           break;
-       case 'm':
-           tempc = _PE;
-           break;
-       case 'n':
-       case 'N':
-           tempc = DAL;
-           break;
-       case 'o':
-           tempc = _XE;
-           break;
-       case 'p':
-           tempc = _HE_J;
-           break;
-       case 'q':
-           tempc = _ZAD;
-           break;
-       case 'r':
-           tempc = _GHAF;
-           break;
-       case 's':
-           tempc = _SIN;
-           break;
-       case 'S':
-           tempc = _IE;
-           break;
-       case 't':
-           tempc = _FE;
-           break;
-       case 'u':
-           if (!curwin->w_cursor.col  &&  STRLEN(ml_get_curline()))
-           {
-               if (!p_ri && !F_is_TyE(tempc))
-                   chg_c_to_X_orX_ ();
-               if (p_ri)
-                   chg_c_to_X_or_X ();
-
-           }
-
-           if (!p_ri && !curwin->w_cursor.col)
-               return _AYN;
-
-           if (!p_ri)
-               dec_cursor();
-
-           if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-               tempc = _AYN_;
-           else
-               tempc = _AYN;
-
-           if (!p_ri)
-               inc_cursor();
-           break;
-       case 'v':
-       case 'V':
-           tempc = RE;
-           break;
-       case 'w':
-           tempc = _SAD;
-           break;
-       case 'x':
-       case 'X':
-           tempc = _TA;
-           break;
-       case 'y':
-           if (!curwin->w_cursor.col  &&  STRLEN(ml_get_curline()))
-           {
-               if (!p_ri && !F_is_TyE(tempc))
-                   chg_c_to_X_orX_ ();
-               if (p_ri)
-                   chg_c_to_X_or_X ();
-
-           }
-
-           if (!p_ri && !curwin->w_cursor.col)
-               return _GHAYN;
-
-           if (!p_ri)
-               dec_cursor();
-
-           if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
-               tempc = _GHAYN_;
-           else
-               tempc = _GHAYN;
-
-           if (!p_ri)
-               inc_cursor();
-
-           break;
-       case 'z':
-           tempc = _ZA;
-           break;
-       case 'Z':
-           tempc = _KAF_H;
-           break;
-       case ';':
-           tempc = _KAF;
-           break;
-       case '\'':
-           tempc = _GAF;
-           break;
-       case ',':
-           tempc = WAW;
-           break;
-       case '[':
-           tempc = _JIM;
-           break;
-       case ']':
-           tempc = _CHE;
-           break;
-    }
-
-    if (F_isalpha(tempc) || F_isdigit(tempc))
-    {
-       if (!curwin->w_cursor.col && STRLEN(ml_get_curline()))
-       {
-           if (!p_ri && !F_is_TyE(tempc))
-               chg_c_to_X_orX_();
-           if (p_ri)
-               chg_c_to_X_or_X();
-       }
-
-       if (curwin->w_cursor.col)
-       {
-           if (!p_ri)
-               dec_cursor();
-
-           if (F_is_TyE(tempc))
-               chg_l_toXor_X();
-           else
-               chg_l_to_X_orX_();
-
-           if (!p_ri)
-               inc_cursor();
-       }
-    }
-    if (tempc)
-       return tempc;
-    return c;
-}
-
-/*
- * Convert a none leading Farsi char into a leading type.
- */
-    static int
-toF_leading(int c)
-{
-    switch (c)
-    {
-       case ALEF_:     return ALEF;
-       case ALEF_U_H_:     return ALEF_U_H;
-       case BE:    return _BE;
-       case PE:    return _PE;
-       case TE:    return _TE;
-       case SE:    return _SE;
-       case JIM:   return _JIM;
-       case CHE:   return _CHE;
-       case HE_J:  return _HE_J;
-       case XE:    return _XE;
-       case SIN:   return _SIN;
-       case SHIN:  return _SHIN;
-       case SAD:   return _SAD;
-       case ZAD:   return _ZAD;
-
-       case AYN:
-       case AYN_:
-       case _AYN_: return _AYN;
-
-       case GHAYN:
-       case GHAYN_:
-       case _GHAYN_:   return _GHAYN;
-
-       case FE:    return _FE;
-       case GHAF:  return _GHAF;
-       case KAF:   return _KAF;
-       case GAF:   return _GAF;
-       case LAM:   return _LAM;
-       case MIM:   return _MIM;
-       case NOON:  return _NOON;
-
-       case _HE_:
-       case F_HE:      return _HE;
-
-       case YE:
-       case YE_:       return _YE;
-
-       case IE_:
-       case IE:        return _IE;
-
-       case YEE:
-       case YEE_:      return _YEE;
-    }
-    return c;
-}
-
-/*
- * Convert a given Farsi char into right joining type.
- */
-    static int
-toF_Rjoin(int c)
-{
-    switch (c)
-    {
-       case ALEF:  return ALEF_;
-       case ALEF_U_H:  return ALEF_U_H_;
-       case BE:    return _BE;
-       case PE:    return _PE;
-       case TE:    return _TE;
-       case SE:    return _SE;
-       case JIM:   return _JIM;
-       case CHE:   return _CHE;
-       case HE_J:  return _HE_J;
-       case XE:    return _XE;
-       case SIN:   return _SIN;
-       case SHIN:  return _SHIN;
-       case SAD:   return _SAD;
-       case ZAD:   return _ZAD;
-
-       case AYN:
-       case AYN_:
-       case _AYN:  return _AYN_;
-
-       case GHAYN:
-       case GHAYN_:
-       case _GHAYN_:   return _GHAYN_;
-
-       case FE:    return _FE;
-       case GHAF:  return _GHAF;
-       case KAF:   return _KAF;
-       case GAF:   return _GAF;
-       case LAM:   return _LAM;
-       case MIM:   return _MIM;
-       case NOON:  return _NOON;
-
-       case _HE:
-       case F_HE:      return _HE_;
-
-       case YE:
-       case YE_:       return _YE;
-
-       case IE_:
-       case IE:        return _IE;
-
-       case TEE:       return TEE_;
-
-       case YEE:
-       case YEE_:      return _YEE;
-    }
-    return c;
-}
-
-/*
- * Can a given Farsi character join via its left edj.
- */
-    static int
-canF_Ljoin(int c)
-{
-    switch (c)
-    {
-       case _BE:
-       case BE:
-       case PE:
-       case _PE:
-       case TE:
-       case _TE:
-       case SE:
-       case _SE:
-       case JIM:
-       case _JIM:
-       case CHE:
-       case _CHE:
-       case HE_J:
-       case _HE_J:
-       case XE:
-       case _XE:
-       case SIN:
-       case _SIN:
-       case SHIN:
-       case _SHIN:
-       case SAD:
-       case _SAD:
-       case ZAD:
-       case _ZAD:
-       case _TA:
-       case _ZA:
-       case AYN:
-       case _AYN:
-       case _AYN_:
-       case AYN_:
-       case GHAYN:
-       case GHAYN_:
-       case _GHAYN_:
-       case _GHAYN:
-       case FE:
-       case _FE:
-       case GHAF:
-       case _GHAF:
-       case _KAF_H:
-       case KAF:
-       case _KAF:
-       case GAF:
-       case _GAF:
-       case LAM:
-       case _LAM:
-       case MIM:
-       case _MIM:
-       case NOON:
-       case _NOON:
-       case IE:
-       case _IE:
-       case IE_:
-       case YE:
-       case _YE:
-       case YE_:
-       case YEE:
-       case _YEE:
-       case YEE_:
-       case F_HE:
-       case _HE:
-       case _HE_:
-           return TRUE;
-    }
-    return FALSE;
-}
-
-/*
- * Can a given Farsi character join via its right edj.
- */
-    static int
-canF_Rjoin(int c)
-{
-    switch (c)
-    {
-       case ALEF:
-       case ALEF_:
-       case ALEF_U_H:
-       case ALEF_U_H_:
-       case DAL:
-       case ZAL:
-       case RE:
-       case JE:
-       case ZE:
-       case TEE:
-       case TEE_:
-       case WAW:
-       case WAW_H:
-           return TRUE;
-    }
-
-    return canF_Ljoin(c);
-
-}
-
-/*
- * is a given Farsi character a terminating type.
- */
-    static int
-F_isterm(int c)
-{
-    switch (c)
-    {
-       case ALEF:
-       case ALEF_:
-       case ALEF_U_H:
-       case ALEF_U_H_:
-       case DAL:
-       case ZAL:
-       case RE:
-       case JE:
-       case ZE:
-       case WAW:
-       case WAW_H:
-       case TEE:
-       case TEE_:
-           return TRUE;
-    }
-
-    return FALSE;
-}
-
-/*
- * Convert the given Farsi character into a ending type .
- */
-    static int
-toF_ending(int c)
-{
-    switch (c)
-    {
-       case _BE: return BE;
-       case _PE: return PE;
-       case _TE: return TE;
-       case _SE: return SE;
-       case _JIM: return JIM;
-       case _CHE: return CHE;
-       case _HE_J: return HE_J;
-       case _XE: return XE;
-       case _SIN: return SIN;
-       case _SHIN: return SHIN;
-       case _SAD: return SAD;
-       case _ZAD: return ZAD;
-       case _AYN: return AYN;
-       case _AYN_: return AYN_;
-       case _GHAYN: return GHAYN;
-       case _GHAYN_: return GHAYN_;
-       case _FE: return FE;
-       case _GHAF: return GHAF;
-       case _KAF_H:
-       case _KAF: return KAF;
-       case _GAF: return GAF;
-       case _LAM: return LAM;
-       case _MIM: return MIM;
-       case _NOON: return NOON;
-       case _YE: return YE_;
-       case YE_: return YE;
-       case _YEE: return YEE_;
-       case YEE_: return YEE;
-       case TEE: return TEE_;
-       case _IE: return IE_;
-       case IE_: return IE;
-       case _HE:
-       case _HE_: return F_HE;
-    }
-    return c;
-}
-
-/*
- * Convert the Farsi 3342 standard into Farsi VIM.
- */
-    static void
-conv_to_pvim(void)
-{
-    char_u     *ptr;
-    int                lnum, llen, i;
-
-    for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum)
-    {
-       ptr = ml_get((linenr_T)lnum);
-
-       llen = (int)STRLEN(ptr);
-
-       for (i = 0; i < llen-1; i++)
-       {
-           if (canF_Ljoin(ptr[i]) && canF_Rjoin(ptr[i+1]))
-           {
-               ptr[i] = toF_leading(ptr[i]);
-               ++i;
-
-               while (i < llen && canF_Rjoin(ptr[i]))
-               {
-                   ptr[i] = toF_Rjoin(ptr[i]);
-                   if (F_isterm(ptr[i]) || !F_isalpha(ptr[i]))
-                       break;
-                   ++i;
-               }
-               if (!F_isalpha(ptr[i]) || !canF_Rjoin(ptr[i]))
-                   ptr[i-1] = toF_ending(ptr[i-1]);
-           }
-           else
-               ptr[i] = toF_TyA(ptr[i]);
-       }
-    }
-
-    /*
-     * Following lines contains Farsi encoded character.
-     */
-
-    do_cmdline_cmd((char_u *)"%s/\202\231/\232/ge");
-    do_cmdline_cmd((char_u *)"%s/\201\231/\370\334/ge");
-
-    /* Assume the screen has been messed up: clear it and redraw. */
-    redraw_later(CLEAR);
-    msg_attr(farsi_text_1, HL_ATTR(HLF_S));
-}
-
-/*
- * Convert the Farsi VIM into Farsi 3342 standard.
- */
-    static void
-conv_to_pstd(void)
-{
-    char_u     *ptr;
-    int                lnum, llen, i;
-
-    /*
-     * Following line contains Farsi encoded character.
-     */
-    do_cmdline_cmd((char_u *)"%s/\232/\202\231/ge");
-
-    for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; ++lnum)
-    {
-       ptr = ml_get((linenr_T)lnum);
-       llen = (int)STRLEN(ptr);
-
-       for (i = 0; i < llen; i++)
-           ptr[i] = toF_TyA(ptr[i]);
-    }
-
-    /* Assume the screen has been messed up: clear it and redraw. */
-    redraw_later(CLEAR);
-    msg_attr(farsi_text_2, HL_ATTR(HLF_S));
-}
-
-/*
- * left-right swap the characters in buf[len].
- */
-    static void
-lrswapbuf(char_u *buf, int len)
-{
-    char_u     *s, *e;
-    int                c;
-
-    s = buf;
-    e = buf + len - 1;
-
-    while (e > s)
-    {
-       c = *s;
-       *s = *e;
-       *e = c;
-       ++s;
-       --e;
-    }
-}
-
-/*
- * swap all the characters in reverse direction
- */
-    char_u *
-lrswap(char_u *ibuf)
-{
-    if (ibuf != NULL && *ibuf != NUL)
-       lrswapbuf(ibuf, (int)STRLEN(ibuf));
-    return ibuf;
-}
-
-/*
- * swap all the Farsi characters in reverse direction
- */
-    char_u *
-lrFswap(char_u *cmdbuf, int len)
-{
-    int                i, cnt;
-
-    if (cmdbuf == NULL)
-       return cmdbuf;
-
-    if (len == 0 && (len = (int)STRLEN(cmdbuf)) == 0)
-       return cmdbuf;
-
-    for (i = 0; i < len; i++)
-    {
-       for (cnt = 0; i + cnt < len
-                       && (F_isalpha(cmdbuf[i + cnt])
-                           || F_isdigit(cmdbuf[i + cnt])
-                           || cmdbuf[i + cnt] == ' '); ++cnt)
-           ;
-
-       lrswapbuf(cmdbuf + i, cnt);
-       i += cnt;
-    }
-    return cmdbuf;
-}
-
-/*
- * Reverse the characters in the search path and substitute section
- * accordingly.
- * TODO: handle different separator characters.  Use skip_regexp().
- */
-    char_u *
-lrF_sub(char_u *ibuf)
-{
-    char_u     *p, *ep;
-    int                i, cnt;
-
-    p = ibuf;
-
-    /* Find the boundary of the search path */
-    while (((p = vim_strchr(p + 1, '/')) != NULL) && p[-1] == '\\')
-       ;
-
-    if (p == NULL)
-       return ibuf;
-
-    /* Reverse the Farsi characters in the search path. */
-    lrFswap(ibuf, (int)(p-ibuf));
-
-    /* Now find the boundary of the substitute section */
-    if ((ep = (char_u *)strrchr((char *)++p, '/')) != NULL)
-       cnt = (int)(ep - p);
-    else
-       cnt = (int)STRLEN(p);
-
-    /* Reverse the characters in the substitute section and take care of '\' */
-    for (i = 0; i < cnt-1; i++)
-       if (p[i] == '\\')
-       {
-           p[i] = p[i+1] ;
-           p[++i] = '\\';
-       }
-
-    lrswapbuf(p, cnt);
-
-    return ibuf;
-}
-
-/*
- * Map Farsi keyboard when in cmd_fkmap mode.
- */
-    int
-cmdl_fkmap(int c)
-{
-    int            tempc;
-
-    switch (c)
-    {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-       case '`':
-       case ' ':
-       case '.':
-       case '!':
-       case '"':
-       case '$':
-       case '%':
-       case '^':
-       case '&':
-       case '/':
-       case '(':
-       case ')':
-       case '=':
-       case '\\':
-       case '?':
-       case '+':
-       case '-':
-       case '_':
-       case '*':
-       case ':':
-       case '#':
-       case '~':
-       case '@':
-       case '<':
-       case '>':
-       case '{':
-       case '}':
-       case '|':
-       case 'B':
-       case 'E':
-       case 'F':
-       case 'H':
-       case 'I':
-       case 'K':
-       case 'L':
-       case 'M':
-       case 'O':
-       case 'P':
-       case 'Q':
-       case 'R':
-       case 'T':
-       case 'U':
-       case 'W':
-       case 'Y':
-       case  NL:
-       case  TAB:
-
-           switch ((tempc = cmd_gchar(AT_CURSOR)))
-           {
-               case _BE:
-               case _PE:
-               case _TE:
-               case _SE:
-               case _JIM:
-               case _CHE:
-               case _HE_J:
-               case _XE:
-               case _SIN:
-               case _SHIN:
-               case _SAD:
-               case _ZAD:
-               case _AYN:
-               case _GHAYN:
-               case _FE:
-               case _GHAF:
-               case _KAF:
-               case _GAF:
-               case _LAM:
-               case _MIM:
-               case _NOON:
-               case _HE:
-               case _HE_:
-                   cmd_pchar(toF_TyA(tempc), AT_CURSOR);
-                   break;
-               case _AYN_:
-                   cmd_pchar(AYN_, AT_CURSOR);
-                   break;
-               case _GHAYN_:
-                   cmd_pchar(GHAYN_, AT_CURSOR);
-                   break;
-               case _IE:
-                   if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
-                       cmd_pchar(IE_, AT_CURSOR);
-                   else
-                       cmd_pchar(IE, AT_CURSOR);
-                   break;
-               case _YEE:
-                   if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
-                       cmd_pchar(YEE_, AT_CURSOR);
-                   else
-                       cmd_pchar(YEE, AT_CURSOR);
-                   break;
-               case _YE:
-                   if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR+1))
-                       cmd_pchar(YE_, AT_CURSOR);
-                   else
-                       cmd_pchar(YE, AT_CURSOR);
-           }
-
-           switch (c)
-           {
-               case '0':   return FARSI_0;
-               case '1':   return FARSI_1;
-               case '2':   return FARSI_2;
-               case '3':   return FARSI_3;
-               case '4':   return FARSI_4;
-               case '5':   return FARSI_5;
-               case '6':   return FARSI_6;
-               case '7':   return FARSI_7;
-               case '8':   return FARSI_8;
-               case '9':   return FARSI_9;
-               case 'B':   return F_PSP;
-               case 'E':   return JAZR_N;
-               case 'F':   return ALEF_D_H;
-               case 'H':   return ALEF_A;
-               case 'I':   return TASH;
-               case 'K':   return F_LQUOT;
-               case 'L':   return F_RQUOT;
-               case 'M':   return HAMZE;
-               case 'O':   return '[';
-               case 'P':   return ']';
-               case 'Q':   return OO;
-               case 'R':   return MAD_N;
-               case 'T':   return OW;
-               case 'U':   return MAD;
-               case 'W':   return OW_OW;
-               case 'Y':   return JAZR;
-               case '`':   return F_PCN;
-               case '!':   return F_EXCL;
-               case '@':   return F_COMMA;
-               case '#':   return F_DIVIDE;
-               case '$':   return F_CURRENCY;
-               case '%':   return F_PERCENT;
-               case '^':   return F_MUL;
-               case '&':   return F_BCOMMA;
-               case '*':   return F_STAR;
-               case '(':   return F_LPARENT;
-               case ')':   return F_RPARENT;
-               case '-':   return F_MINUS;
-               case '_':   return F_UNDERLINE;
-               case '=':   return F_EQUALS;
-               case '+':   return F_PLUS;
-               case '\\':  return F_BSLASH;
-               case '|':   return F_PIPE;
-               case ':':   return F_DCOLON;
-               case '"':   return F_SEMICOLON;
-               case '.':   return F_PERIOD;
-               case '/':   return F_SLASH;
-               case '<':   return F_LESS;
-               case '>':   return F_GREATER;
-               case '?':   return F_QUESTION;
-               case ' ':   return F_BLANK;
-           }
-
-           break;
-
-       case 'a':   return _SHIN;
-       case 'A':   return WAW_H;
-       case 'b':   return ZAL;
-       case 'c':   return ZE;
-       case 'C':   return JE;
-       case 'd':   return _YE;
-       case 'D':   return _YEE;
-       case 'e':   return _SE;
-       case 'f':   return _BE;
-       case 'g':   return _LAM;
-       case 'G':
-               if (cmd_gchar(AT_CURSOR) == _LAM)
-               {
-                   cmd_pchar(LAM, AT_CURSOR);
-                           return ALEF_U_H;
-               }
-
-               if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR))
-                       return ALEF_U_H_;
-               else
-                       return ALEF_U_H;
-       case 'h':
-               if (cmd_gchar(AT_CURSOR) == _LAM)
-               {
-                   cmd_pchar(LA, AT_CURSOR);
-                   redrawcmdline();
-                   return K_IGNORE;
-               }
-
-               if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR))
-                       return ALEF_;
-               else
-                       return ALEF;
-       case 'i':
-               if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR))
-                       return _HE_;
-               else
-                       return _HE;
-       case 'j':   return _TE;
-       case 'J':
-               if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR))
-                       return TEE_;
-               else
-                       return TEE;
-       case 'k':   return _NOON;
-       case 'l':   return _MIM;
-       case 'm':   return _PE;
-       case 'n':
-       case 'N':   return DAL;
-       case 'o':   return _XE;
-       case 'p':   return _HE_J;
-       case 'q':   return _ZAD;
-       case 'r':   return _GHAF;
-       case 's':   return _SIN;
-       case 'S':   return _IE;
-       case 't':   return _FE;
-       case 'u':
-               if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR))
-                       return _AYN_;
-               else
-                       return _AYN;
-       case 'v':
-       case 'V':   return RE;
-       case 'w':   return _SAD;
-       case 'x':
-       case 'X':   return _TA;
-       case 'y':
-               if (F_is_TyB_TyC_TyD(SRC_CMD, AT_CURSOR))
-                       return _GHAYN_;
-               else
-                       return _GHAYN;
-       case 'z':
-       case 'Z':   return _ZA;
-       case ';':   return _KAF;
-       case '\'':  return _GAF;
-       case ',':   return WAW;
-       case '[':   return _JIM;
-       case ']':   return _CHE;
-    }
-
-    return c;
-}
-
-/*
- * F_isalpha returns TRUE if 'c' is a Farsi alphabet
- */
-    int
-F_isalpha(int c)
-{
-    return ((c >= TEE_ && c <= _YE)
-           || (c >= ALEF_A && c <= YE)
-           || (c >= _IE && c <= YE_));
-}
-
-/*
- * F_isdigit returns TRUE if 'c' is a Farsi digit
- */
-    int
-F_isdigit(int c)
-{
-    return (c >= FARSI_0 && c <= FARSI_9);
-}
-
-/*
- * F_ischar returns TRUE if 'c' is a Farsi character.
- */
-    int
-F_ischar(int c)
-{
-    return (c >= TEE_ && c <= YE_);
-}
-
-    void
-farsi_f8(cmdarg_T *cap UNUSED)
-{
-    if (p_altkeymap)
-    {
-       if (curwin->w_farsi & W_R_L)
-       {
-           p_fkmap = 0;
-           do_cmdline_cmd((char_u *)"set norl");
-           msg("");
-       }
-       else
-       {
-           p_fkmap = 1;
-           do_cmdline_cmd((char_u *)"set rl");
-           msg("");
-       }
-
-       curwin->w_farsi = curwin->w_farsi ^ W_R_L;
-    }
-}
-
-    void
-farsi_f9(cmdarg_T *cap UNUSED)
-{
-    if (p_altkeymap && curwin->w_p_rl)
-    {
-       curwin->w_farsi = curwin->w_farsi ^ W_CONV;
-       if (curwin->w_farsi & W_CONV)
-           conv_to_pvim();
-       else
-           conv_to_pstd();
-    }
-}
-
-#endif /* FEAT_FKMAP */
diff --git a/src/farsi.h b/src/farsi.h
deleted file mode 100644 (file)
index e91bdf7..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/* 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.
- */
-
-/*
- * Farsi characters are categorized into following types:
- *
- * TyA (for capital letter representation)
- * TyB (for types that look like _X  e.g. AYN)
- * TyC (for types that look like X_  e.g. YE_)
- * TyD (for types that look like _X_  e.g. _AYN_)
- * TyE (for types that look like X  e.g. RE)
- */
-
-/*
- * Farsi character set definition
- */
-
-/*
- * Begin of the non-standard part
- */
-
-#define TEE_           0x80
-#define ALEF_U_H_      0x81
-#define ALEF_          0x82
-#define _BE            0x83
-#define _PE            0x84
-#define _TE            0x85
-#define _SE            0x86
-#define _JIM           0x87
-#define _CHE           0x88
-#define _HE_J          0x89
-#define _XE            0x8a
-#define _SIN           0x8b
-#define _SHIN          0x8c
-#define _SAD           0x8d
-#define _ZAD           0x8e
-#define _AYN           0x8f
-#define _AYN_          0x90
-#define AYN_           0x91
-#define _GHAYN         0x92
-#define _GHAYN_                0x93
-#define GHAYN_         0x94
-#define _FE            0x95
-#define _GHAF          0x96
-#define _KAF           0x97
-#define _GAF           0x98
-#define _LAM           0x99
-#define LA             0x9a
-#define _MIM           0x9b
-#define _NOON          0x9c
-#define _HE            0x9d
-#define _HE_           0x9e
-#define _YE            0x9f
-#define _IE            0xec
-#define IE_            0xed
-#define IE             0xfb
-#define _YEE           0xee
-#define YEE_           0xef
-#define YE_            0xff
-
-/*
- * End of the non-standard part
- */
-
-/*
- * Standard part
- */
-
-#define F_BLANK                0xa0    /* Farsi ' ' (SP) character */
-#define F_PSP          0xa1    /* PSP for capitalizing of a character */
-#define F_PCN          0xa2    /* PCN for redefining of the hamye meaning */
-#define F_EXCL         0xa3    /* Farsi ! character */
-#define F_CURRENCY     0xa4    /* Farsi Rial character */
-#define F_PERCENT      0xa5    /* Farsi % character */
-#define F_PERIOD       0xa6    /* Farsi '.' character */
-#define F_COMMA                0xa7    /* Farsi ',' character */
-#define F_LPARENT      0xa8    /* Farsi '(' character */
-#define F_RPARENT      0xa9    /* Farsi ')' character */
-#define F_MUL          0xaa    /* Farsi 'x' character */
-#define F_PLUS         0xab    /* Farsi '+' character */
-#define F_BCOMMA       0xac    /* Farsi comma character */
-#define F_MINUS                0xad    /* Farsi '-' character */
-#define F_DIVIDE       0xae    /* Farsi divide (/) character */
-#define F_SLASH                0xaf    /* Farsi '/' character */
-
-#define FARSI_0                0xb0
-#define FARSI_1                0xb1
-#define FARSI_2                0xb2
-#define FARSI_3                0xb3
-#define FARSI_4                0xb4
-#define FARSI_5                0xb5
-#define FARSI_6                0xb6
-#define FARSI_7                0xb7
-#define FARSI_8                0xb8
-#define FARSI_9                0xb9
-
-#define F_DCOLON       0xba    /* Farsi ':' character */
-#define F_SEMICOLON    0xbb    /* Farsi ';' character */
-#define F_GREATER      0xbc    /* Farsi '>' character */
-#define F_EQUALS       0xbd    /* Farsi '=' character */
-#define F_LESS         0xbe    /* Farsi '<' character */
-#define F_QUESTION     0xbf    /* Farsi ? character */
-
-#define ALEF_A 0xc0
-#define ALEF   0xc1
-#define HAMZE  0xc2
-#define BE     0xc3
-#define PE     0xc4
-#define TE     0xc5
-#define SE     0xc6
-#define JIM    0xc7
-#define CHE    0xc8
-#define HE_J   0xc9
-#define XE     0xca
-#define DAL    0xcb
-#define ZAL    0xcc
-#define RE     0xcd
-#define ZE     0xce
-#define JE     0xcf
-#define SIN    0xd0
-#define SHIN   0xd1
-#define SAD    0xd2
-#define ZAD    0xd3
-#define _TA    0xd4
-#define _ZA    0xd5
-#define AYN    0xd6
-#define GHAYN  0xd7
-#define FE     0xd8
-#define GHAF   0xd9
-#define KAF    0xda
-#define GAF    0xdb
-#define LAM    0xdc
-#define MIM    0xdd
-#define NOON   0xde
-#define WAW    0xdf
-#define F_HE   0xe0            /* F_ added for name clash with Perl */
-#define YE     0xe1
-#define TEE    0xfc
-#define _KAF_H 0xfd
-#define YEE    0xfe
-
-#define F_LBRACK       0xe2    /* Farsi '[' character */
-#define F_RBRACK       0xe3    /* Farsi ']' character */
-#define F_LBRACE       0xe4    /* Farsi '{' character */
-#define F_RBRACE       0xe5    /* Farsi '}' character */
-#define F_LQUOT                0xe6    /* Farsi left quotation character */
-#define F_RQUOT                0xe7    /* Farsi right quotation character */
-#define F_STAR         0xe8    /* Farsi '*' character */
-#define F_UNDERLINE    0xe9    /* Farsi '_' character */
-#define F_PIPE         0xea    /* Farsi '|' character */
-#define F_BSLASH       0xeb    /* Farsi '\' character */
-
-#define MAD            0xf0
-#define JAZR           0xf1
-#define OW             0xf2
-#define MAD_N          0xf3
-#define JAZR_N         0xf4
-#define OW_OW          0xf5
-#define TASH           0xf6
-#define OO             0xf7
-#define ALEF_U_H       0xf8
-#define WAW_H          0xf9
-#define ALEF_D_H       0xfa
-
-/*
- * global definitions
- * ==================
- */
-
-#define SRC_EDT        0
-#define SRC_CMD 1
-
-#define AT_CURSOR 0
-
-/*
- * definitions for the window dependent functions (w_farsi).
- */
-#define W_CONV 0x1
-#define W_R_L  0x2
-
-
-/* special Farsi text messages */
-
-EXTERN char farsi_text_1[]
-#ifdef DO_INIT
-               = { YE_, _SIN, RE, ALEF_, _FE, ' ', 'V', 'I', 'M',
-                   ' ', F_HE, _BE, ' ', SHIN, RE, _GAF, DAL,' ', NOON,
-                   ALEF_, _YE, ALEF_, _PE, '\0'}
-#endif
-                    ;
-
-EXTERN char farsi_text_2[]
-#ifdef DO_INIT
-               = { YE_, _SIN, RE, ALEF_, _FE, ' ', FARSI_3, FARSI_3,
-                   FARSI_4, FARSI_2, ' ', DAL, RE, ALEF, DAL, _NOON,
-                   ALEF_, _TE, _SIN, ALEF, ' ', F_HE, _BE, ' ', SHIN,
-                   RE,  _GAF, DAL, ' ', NOON, ALEF_, _YE, ALEF_, _PE, '\0'}
-#endif
-                    ;
-
-EXTERN char farsi_text_3[]
-#ifdef DO_INIT
-               = { DAL, WAW, _SHIN, _YE, _MIM, _NOON, ' ', YE_, _NOON,
-                   ALEF_,_BE, _YE, _TE, _SHIN, _PE, ' ', 'R','E','P','L',
-                   'A','C','E', ' ', NOON, ALEF_, _MIM, RE, _FE, ZE, ALEF,
-                   ' ', 'R', 'E', 'V', 'E', 'R', 'S', 'E', ' ', 'I', 'N',
-                   'S', 'E', 'R', 'T', ' ', SHIN, WAW, RE, ' ', ALEF_, _BE,
-                   ' ', YE_, _SIN, RE, ALEF_, _FE, ' ', RE, DAL, ' ', RE,
-                   ALEF_, _KAF,' ', MIM, ALEF_, _GAF, _NOON, _HE, '\0'}
-#endif
-                   ;
-
-#if 0 /* not used */
-EXTERN char_u farsi_text_4[]
-#ifdef DO_INIT
-               = { DAL, WAW, _SHIN, _YE, _MIM, _NOON, ' ', YE_, _NOON,
-                   ALEF_, _BE, _YE, _TE, _SHIN, _PE, ' ', '<', 'C','T','R',
-                   'L','-','B','>', ' ', NOON, ALEF_, _MIM, RE, _FE, ZE,
-                   ALEF, ' ', YE_, _SIN, RE, ALEF_, _FE, ' ', RE, DAL, ' ',
-                   RE, ALEF_, _KAF,' ', MIM, ALEF_, _GAF, _NOON, _HE, '\0'}
-#endif
-                   ;
-#endif
-
-EXTERN char farsi_text_5[]
-#ifdef DO_INIT
-               = { ' ', YE_, _SIN, RE, ALEF_, _FE, '\0'}
-#endif
-                   ;
index fe74dbfa1cd8b5423eb531bc87d31cab527819e7..eaef1ab7e43c5a8ac05473ff0c8ababf637cd722 100644 (file)
@@ -3361,15 +3361,6 @@ do_map(
            rhs = replace_termcodes(rhs, &arg_buf, FALSE, TRUE, special);
     }
 
-#ifdef FEAT_FKMAP
-    /*
-     * When in right-to-left mode and alternate keymap option set,
-     * reverse the character flow in the rhs in Farsi.
-     */
-    if (p_altkeymap && curwin->w_p_rl)
-       lrswap(rhs);
-#endif
-
     /*
      * check arguments and translate function keys
      */
index 6cc3be21583835ba9c9daa2f300bfdb04fc77224..82e663e9c6dba0e9da4304f227e6a25c99380d97 100644 (file)
@@ -1450,9 +1450,7 @@ EXTERN char e_nogvim[]    INIT(= N_("E25: GUI cannot be used: Not enabled at compil
 #ifndef FEAT_RIGHTLEFT
 EXTERN char e_nohebrew[]       INIT(= N_("E26: Hebrew cannot be used: Not enabled at compile time\n"));
 #endif
-#ifndef FEAT_FKMAP
-EXTERN char e_nofarsi[]        INIT(= N_("E27: Farsi cannot be used: Not enabled at compile time\n"));
-#endif
+EXTERN char e_nofarsi[]                INIT(= N_("E27: Farsi support has been removed\n"));
 #ifndef FEAT_ARABIC
 EXTERN char e_noarabic[]       INIT(= N_("E800: Arabic cannot be used: Not enabled at compile time\n"));
 #endif
@@ -1655,13 +1653,6 @@ EXTERN int ctrl_break_was_pressed INIT(= FALSE);
 EXTERN int text_prop_frozen INIT(= 0);
 #endif
 
-/*
- * Optional Farsi support.  Include it here, so EXTERN and INIT are defined.
- */
-#ifdef FEAT_FKMAP
-# include "farsi.h"
-#endif
-
 /*
  * Optional Arabic support. Include it here, so EXTERN and INIT are defined.
  */
index df204bc0a9593b0f2d5cc4b2ece2a4d1ae32f48c..6ad6fff7c50656a071f9fbe2b7f9cbb80db00931 100644 (file)
@@ -535,17 +535,6 @@ vim_main2(void)
     if (params.no_swap_file)
        p_uc = 0;
 
-#ifdef FEAT_FKMAP
-    if (curwin->w_p_rl && p_altkeymap)
-    {
-       p_hkmap = FALSE;        /* Reset the Hebrew keymap mode */
-# ifdef FEAT_ARABIC
-       curwin->w_p_arab = FALSE; /* Reset the Arabic keymap mode */
-# endif
-       p_fkmap = TRUE;         /* Set the Farsi keymap mode */
-    }
-#endif
-
 #ifdef FEAT_GUI
     if (gui.starting)
     {
@@ -2025,14 +2014,9 @@ command_line_scan(mparm_T *parmp)
                main_start_gui();
                break;
 
-           case 'F':           /* "-F" start in Farsi mode: rl + fkmap set */
-#ifdef FEAT_FKMAP
-               p_fkmap = TRUE;
-               set_option_value((char_u *)"rl", 1L, NULL, 0);
-#else
+           case 'F':           /* "-F" was for Farsi mode */
                mch_errmsg(_(e_nofarsi));
                mch_exit(2);
-#endif
                break;
 
            case '?':           /* "-?" give help message (for MS-Windows) */
@@ -3350,9 +3334,6 @@ usage(void)
 #endif
 #ifdef FEAT_RIGHTLEFT
     main_msg(_("-H\t\t\tStart in Hebrew mode"));
-#endif
-#ifdef FEAT_FKMAP
-    main_msg(_("-F\t\t\tStart in Farsi mode"));
 #endif
     main_msg(_("-T <terminal>\tSet terminal type to <terminal>"));
     main_msg(_("--not-a-term\t\tSkip warning for input/output not being a terminal"));
index 41af966288c511f4162fb79eab652600b8c7806b..624e34751cfbcd9a7a6ef0c3c8522b91d77e174d 100644 (file)
@@ -397,10 +397,6 @@ static const struct nv_cmd
     {K_TABLINE, nv_tabline,    0,                      0},
     {K_TABMENU, nv_tabmenu,    0,                      0},
 #endif
-#ifdef FEAT_FKMAP
-    {K_F8,     farsi_f8,       0,                      0},
-    {K_F9,     farsi_f9,       0,                      0},
-#endif
 #ifdef FEAT_NETBEANS_INTG
     {K_F21,    nv_nbcmd,       NV_NCH_ALW,             0},
 #endif
@@ -987,11 +983,6 @@ getcount:
                /* adjust Hebrew mapped char */
                if (p_hkmap && lang && KeyTyped)
                    *cp = hkmap(*cp);
-# ifdef FEAT_FKMAP
-               /* adjust Farsi mapped char */
-               if (p_fkmap && lang && KeyTyped)
-                   *cp = fkmap(*cp);
-# endif
 #endif
            }
 
index c8808be041e97e79fa933e6a50c0be7dad0740f7..b9fe3dabef37b823caf1557a7af2cab1cd93d632 100644 (file)
@@ -542,11 +542,7 @@ static struct vimoption options[] =
 #endif
                            {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
     {"altkeymap",   "akm",  P_BOOL|P_VI_DEF,
-#ifdef FEAT_FKMAP
-                           (char_u *)&p_altkeymap, PV_NONE,
-#else
                            (char_u *)NULL, PV_NONE,
-#endif
                            {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
     {"ambiwidth",  "ambw",  P_STRING|P_VI_DEF|P_RCLR,
                            (char_u *)&p_ambw, PV_NONE,
@@ -1141,11 +1137,7 @@ static struct vimoption options[] =
                            (char_u *)&p_fixeol, PV_FIXEOL,
                            {(char_u *)TRUE, (char_u *)0L} SCTX_INIT},
     {"fkmap",      "fk",   P_BOOL|P_VI_DEF,
-#ifdef FEAT_FKMAP
-                           (char_u *)&p_fkmap, PV_NONE,
-#else
                            (char_u *)NULL, PV_NONE,
-#endif
                            {(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
     {"flash",      "fl",   P_BOOL|P_VI_DEF,
                            (char_u *)NULL, PV_NONE,
@@ -8707,69 +8699,6 @@ set_bool_option(
     }
 #endif
 
-#ifdef FEAT_FKMAP
-    else if ((int *)varp == &p_altkeymap)
-    {
-       if (old_value != p_altkeymap)
-       {
-           if (!p_altkeymap)
-           {
-               p_hkmap = p_fkmap;
-               p_fkmap = 0;
-           }
-           else
-           {
-               p_fkmap = p_hkmap;
-               p_hkmap = 0;
-           }
-           (void)init_chartab();
-       }
-    }
-
-    /*
-     * In case some second language keymapping options have changed, check
-     * and correct the setting in a consistent way.
-     */
-
-    /*
-     * If hkmap or fkmap are set, reset Arabic keymapping.
-     */
-    if ((p_hkmap || p_fkmap) && p_altkeymap)
-    {
-       p_altkeymap = p_fkmap;
-# ifdef FEAT_ARABIC
-       curwin->w_p_arab = FALSE;
-# endif
-       (void)init_chartab();
-    }
-
-    /*
-     * If hkmap set, reset Farsi keymapping.
-     */
-    if (p_hkmap && p_altkeymap)
-    {
-       p_altkeymap = 0;
-       p_fkmap = 0;
-# ifdef FEAT_ARABIC
-       curwin->w_p_arab = FALSE;
-# endif
-       (void)init_chartab();
-    }
-
-    /*
-     * If fkmap set, reset Hebrew keymapping.
-     */
-    if (p_fkmap && !p_altkeymap)
-    {
-       p_altkeymap = 1;
-       p_hkmap = 0;
-# ifdef FEAT_ARABIC
-       curwin->w_p_arab = FALSE;
-# endif
-       (void)init_chartab();
-    }
-#endif
-
 #ifdef FEAT_ARABIC
     if ((int *)varp == &curwin->w_p_arab)
     {
@@ -8815,12 +8744,6 @@ set_bool_option(
            /* Force-set the necessary keymap for arabic */
            set_option_value((char_u *)"keymap", 0L, (char_u *)"arabic",
                                                                   OPT_LOCAL);
-# endif
-# ifdef FEAT_FKMAP
-           p_altkeymap = 0;
-           p_hkmap = 0;
-           p_fkmap = 0;
-           (void)init_chartab();
 # endif
        }
        else
@@ -11085,12 +11008,6 @@ win_copy_options(win_T *wp_from, win_T *wp_to)
 {
     copy_winopt(&wp_from->w_onebuf_opt, &wp_to->w_onebuf_opt);
     copy_winopt(&wp_from->w_allbuf_opt, &wp_to->w_allbuf_opt);
-# ifdef FEAT_RIGHTLEFT
-#  ifdef FEAT_FKMAP
-    /* Is this right? */
-    wp_to->w_farsi = wp_from->w_farsi;
-#  endif
-# endif
 #if defined(FEAT_LINEBREAK)
     briopt_check(wp_to);
 #endif
index 1ab5cf78c3efe53064c36a7491aa10b684bca04b..c19d155169fb7e706f663702dae90bd7cf2d47c7 100644 (file)
@@ -99,9 +99,6 @@ extern int _stricoll(char *a, char *b);
 # ifdef FEAT_MENU
 #  include "menu.pro"
 # endif
-# ifdef FEAT_FKMAP
-#  include "farsi.pro"
-# endif
 # ifdef FEAT_ARABIC
 #  include "arabic.pro"
 # endif
diff --git a/src/proto/farsi.pro b/src/proto/farsi.pro
deleted file mode 100644 (file)
index b6e1836..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* farsi.c */
-int fkmap(int c);
-char_u *lrswap(char_u *ibuf);
-char_u *lrFswap(char_u *cmdbuf, int len);
-char_u *lrF_sub(char_u *ibuf);
-int cmdl_fkmap(int c);
-int F_isalpha(int c);
-int F_isdigit(int c);
-int F_ischar(int c);
-void farsi_f8(cmdarg_T *cap);
-void farsi_f9(cmdarg_T *cap);
-/* vim: set ft=c : */
index caf6e2c8badb5aaf7c316660d184b07972a5b404..d06cc3fcb743bcfe0dbd5d9cf9d789cc8ddab180 100644 (file)
@@ -10247,10 +10247,6 @@ showmode(void)
 #ifdef FEAT_RIGHTLEFT
                if (p_hkmap)
                    msg_puts_attr(_(" Hebrew"), attr);
-# ifdef FEAT_FKMAP
-               if (p_fkmap)
-                   msg_puts_attr(farsi_text_5, attr);
-# endif
 #endif
 #ifdef FEAT_KEYMAP
                if (State & LANGMAP)
index df7067b08f4954e7704d47dd61ce52b1a76ec67b..9a47ed4608a9c3f3c6386ff9695a536dc38ae7ab 100644 (file)
@@ -1477,12 +1477,8 @@ do_search(
            }
        }
 
-#ifdef FEAT_FKMAP      /* when in Farsi mode, reverse the character flow */
-       if (p_altkeymap && curwin->w_p_rl)
-            lrFswap(searchstr,0);
-#endif
-
-       c = searchit(curwin, curbuf, &pos, NULL, dirc == '/' ? FORWARD : BACKWARD,
+       c = searchit(curwin, curbuf, &pos, NULL,
+                                             dirc == '/' ? FORWARD : BACKWARD,
                searchstr, count, spats[0].off.end + (options &
                       (SEARCH_KEEP + SEARCH_PEEK + SEARCH_HIS
                        + SEARCH_MSG + SEARCH_START
@@ -2976,10 +2972,6 @@ cls(void)
     int            c;
 
     c = gchar_cursor();
-#ifdef FEAT_FKMAP      /* when 'akm' (Farsi mode), take care of Farsi blank */
-    if (p_altkeymap && c == F_BLANK)
-       return 0;
-#endif
     if (c == ' ' || c == '\t' || c == NUL)
        return 0;
     if (enc_dbcs != 0 && c > 0xFF)
index 4464c4b8d19d0acf2bc99751d67bcd8381ad60c7..fdef811e4701c37a57756510bdceeb037f8024b6 100644 (file)
@@ -2952,10 +2952,6 @@ struct window_S
     dict_T     *w_vars;        /* internal variables, local to window */
 #endif
 
-#if defined(FEAT_RIGHTLEFT) && defined(FEAT_FKMAP)
-    int                w_farsi;        /* for the window dependent Farsi functions */
-#endif
-
     /*
      * The w_prev_pcmark field is used to check whether we really did jump to
      * a new line after setting the w_pcmark.  If not, then we revert to
index 92e2ae36802e377eef136982e0564047d9c4b4d3..7cc5e7eae6b553fec56f42abba215c83104b63b9 100644 (file)
@@ -118,7 +118,6 @@ NEW_TESTS = \
        test_expand_func \
        test_expr \
        test_expr_utf8 \
-       test_farsi \
        test_feedkeys \
        test_file_perm \
        test_file_size \
@@ -318,7 +317,6 @@ NEW_TESTS_RES = \
        test_exists.res \
        test_exists_autocmd.res \
        test_exit.res \
-       test_farsi.res \
        test_file_size.res \
        test_filechanged.res \
        test_find_complete.res \
diff --git a/src/testdir/test_farsi.vim b/src/testdir/test_farsi.vim
deleted file mode 100644 (file)
index dcfa024..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-" Simplistic testing of Farsi mode.
-" Note: must be edited with latin1 encoding.
-
-if !has('farsi')
-  finish
-endif
-" Farsi uses a single byte encoding.
-set enc=latin1
-
-func Test_farsi_toggle()
-  new
-
-  set altkeymap
-  call assert_equal(0, &fkmap)
-  call assert_equal(0, &rl)
-  call feedkeys("\<F8>", 'x')
-  call assert_equal(1, &fkmap)
-  call assert_equal(1, &rl)
-  call feedkeys("\<F8>", 'x')
-  call assert_equal(0, &fkmap)
-  call assert_equal(0, &rl)
-
-  set rl
-  " conversion from Farsi 3342 to Farsi VIM.
-  call setline(1, join(map(range(0x80, 0xff), 'nr2char(v:val)'), ''))
-  call feedkeys("\<F9>", 'x')
-  let exp = [0xfc, 0xf8, 0xc1, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
-          \ 0xc8, 0xc9, 0xca, 0xd0, 0xd1, 0xd2, 0xd3, 0xd6,
-          \ 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd8, 0xd9, 0xda,
-          \ 0xdb, 0xdc, 0xdc, 0xc1, 0xdd, 0xde, 0xe0, 0xe0,
-          \ 0xe1, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
-          \ 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae,
-          \ 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
-          \ 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe,
-          \ 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6,
-          \ 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce,
-          \ 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
-          \ 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde,
-          \ 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
-          \ 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xfb, 0xfb, 0xfe,
-          \ 0xfe, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
-          \ 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xe1,
-           \ ]
-  call assert_equal(join(map(exp, 'nr2char(v:val)'), ''), getline(1))
-
-  " conversion from Farsi VIM to Farsi 3342.
-  call setline(1, join(map(range(0x80, 0xff), 'nr2char(v:val)'), ''))
-  call feedkeys("\<F9>", 'x')
-  let exp = [0xfc, 0xf8, 0xc1, 0x83, 0x84, 0x85, 0x86, 0x87,
-          \ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x90,
-          \ 0x90, 0x90, 0x92, 0x93, 0x93, 0x95, 0x96, 0x97,
-          \ 0x98, 0xdc, 0x9a, 0x9b, 0x9c, 0x9e, 0x9e, 0xff,
-          \ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
-          \ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
-          \ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
-          \ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
-          \ 0xc0, 0xc1, 0xc2, 0x83, 0x84, 0x85, 0x86, 0x87,
-          \ 0x88, 0x89, 0x8a, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
-          \ 0x8b, 0x8c, 0x8d, 0x8e, 0xd4, 0xd5, 0x90, 0x93,
-          \ 0x95, 0x96, 0x97, 0x98, 0x99, 0x9b, 0x9c, 0xdf,
-          \ 0x9d, 0xff, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
-          \ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xec, 0xee, 0xef,
-          \ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
-          \ 0xf8, 0xf9, 0xfa, 0xec, 0x80, 0xfd, 0xee, 0xff,
-           \ ]
-  call assert_equal(join(map(exp, 'nr2char(v:val)'), ''), getline(1))
-
-  bwipe!
-endfunc
-
-func Test_farsi_map()
-  new
-
-  set altkeymap
-  set rl
-  " RHS of mapping is reversed.
-  imap xyz abc
-  call feedkeys("axyz\<Esc>", 'tx')
-  call assert_equal('cba', getline(1))
-
-  set norl
-  iunmap xyz
-  set noaltkeymap
-  bwipe!
-endfunc
-
-func Test_input_farsi()
-  new
-  setlocal rightleft fkmap
-  " numbers switch input direction
-  call feedkeys("aabc0123456789.+-^%#=xyz\<Esc>", 'tx')
-  call assert_equal("\x8cÌν®¥ª­«¦¹¸·¶µ´³²±°Ô\x93Õ", getline('.'))
-
-  " all non-number special chars with spaces
-  call feedkeys("oB E F H I K L M O P Q R T U W Y ` !  @ # $ % ^ & * () - _ = + \\ | : \" .  / < > ? \<Esc>", 'tx')
-  call assert_equal("¡ ô ú À ö æ ç Â [ ] ÷ ó ò ð õ ñ ¢ £  § ® ¤ ¥ ª ¬ è ¨© ­ é ½ « ë ê º » ¦  ¯ ¾ ¼ ¿ ", getline('.'))
-
-  " all non-number special chars without spaces
-  call feedkeys("oBEFHIKLMOPQRTUWY`!@#$%^&*()-_=+\\|:\"./<>?\<Esc>",'tx')
-  call assert_equal("¡ôúÀöæçÂ[]÷óòðõñ¢£§®¤¥ª¬è¨©­é½«ë꺻¦¯¾¼¿", getline('.'))
-
-  " all letter chars with spaces
-  call feedkeys("oa A b c C d D e f g G h i j J k l m n N o p q r s S t u v V w x X y z Z ; \ , [ ] \<Esc>", 'tx')
-  call assert_equal("Ñ ù Ì Î Ï á þ Æ Ã Ü ø Á à Å ü Þ Ý Ä Ë Ë Ê É Ó Ù Ð û Ø Ö Í Í Ò Ô Ô × Õ ý Ú  ß Ç È ", getline('.'))
-
-  " all letter chars without spaces
-  call feedkeys("oaAbcCdDefgGhijJklmnNopqrsStuvVwxXyzZ;\,[]\<Esc>", 'tx')
-  call assert_equal("\x8cùÌÎÏ\x9fî\x86\x83ÜøÁ\x9d\x85\x80\x9c\x9b\x84ËË\x8a\x89\x8e\x96\x8bì\x95\x90ÍÍ\x8dÔÔ\x93Õý\x97ß\x87\x88", getline('.'))
-
-  bwipe!
-endfunc
-
-func Test_command_line_farsi()
-  set allowrevins altkeymap
-
-  " letter characters with spaces
-  call feedkeys(":\"\<C-_>a A b c C d D e f g G h i j J k l m n N o p q r s S t u v V w x X y z Z ; \\ , [ ]\<CR>", 'tx')
-  call assert_equal("\"\x88 Ç ß ë Ú Õ Õ × Ô Ô Ò Í Í Ö Ø û Ð Ù Ó É Ê Ë Ë Ä Ý Þ ü Å à Á ø Ü Ã Æ þ á Ï Î Ì ù Ñ", getreg(':'))
-  " letter characters without spaces
-  call feedkeys(":\"\<C-_>aAbcCdDefgGhijJklmnNopqrsStuvVwxXyzZ;\\,[]\<CR>", 'tx')
-  call assert_equal("\"\x88\x87ßëÚÕÕ\x93ÔÔ\x8dÍÍ\x90\x95ì\x8b\x96\x8e\x89\x8aËË\x84\x9b\x9c\x80\x85\x9dÁøÜ\x83\x86î\x9fÏÎÌù\x8c", getreg(':'))
-  " other characters with spaces
-  call feedkeys(":\"\<C-_>0 1 2 3 4 5 6 7 8 9 ` .  !  \" $ % ^ & / () = \\ ?  + - _ * : # ~ @ < > { } | B E F H I K L M O P Q R T U W Y\<CR>", 'tx')
-  call assert_equal("\"ñ õ ð ò ó ÷ ] [ Â ç æ ö À ú ô ¡ ê } { ¼ ¾ § ~ ® º è é ­ «  ¿ ë ½ ©¨ ¯ ¬ ª ¥ ¤ »  £  ¦ ¢ ¹ ¸ · ¶ µ ´ ³ ² ± °", getreg(':'))
-
-  " other characters without spaces
-  call feedkeys(":\"\<C-_>0123456789`.!\"$%^&/()=\\?+-_*:#~@<>{}|BEFHIKLMOPQRTUWY\<CR>", 'tx')
-  call assert_equal("\"ñõðòó÷][ÂçæöÀúô¡ê}{¼¾§~®ºèé­«¿ë½©¨¯¬ª¥¤»£¦¢¹¸·¶µ´³²±°", getreg(':'))
-
-  set noallowrevins noaltkeymap
-endfunc
index 00c63e53ce536eb456dcb1000d4d85aaca3fdbad..aa73ebd87832b51c4afda6c7ad4e7b5185cf58c1 100644 (file)
@@ -255,11 +255,7 @@ static char *(features[]) =
 #else
        "-extra_search",
 #endif
-#ifdef FEAT_FKMAP
-       "+farsi",
-#else
        "-farsi",
-#endif
 #ifdef FEAT_SEARCHPATH
        "+file_in_path",
 #else
@@ -783,6 +779,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    932,
 /**/
     931,
 /**/
index 7dc3848e422461528733863d20d0ddc60ee42aa7..c4b543de39586779ea75e3b70574696f3c4464a4 100644 (file)
@@ -3445,12 +3445,6 @@ win_init_empty(win_T *wp)
     wp->w_topfill = 0;
 #endif
     wp->w_botline = 2;
-#ifdef FEAT_FKMAP
-    if (wp->w_p_rl)
-       wp->w_farsi = W_CONV + W_R_L;
-    else
-       wp->w_farsi = W_CONV;
-#endif
 #ifdef FEAT_SYN_HL
     wp->w_s = &wp->w_buffer->b_s;
 #endif