summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Filelist2
-rw-r--r--src/Make_bc5.mak2
-rw-r--r--src/Make_cyg_ming.mak2
-rw-r--r--src/Make_dice.mak10
-rw-r--r--src/Make_ivc.mak10
-rw-r--r--src/Make_manx.mak18
-rw-r--r--src/Make_morph.mak4
-rw-r--r--src/Make_mvc.mak8
-rw-r--r--src/Make_sas.mak10
-rw-r--r--src/Makefile34
-rw-r--r--src/arabic.c11
-rw-r--r--src/farsi.c8
-rw-r--r--src/main.c14
-rw-r--r--src/proto.h6
-rw-r--r--src/proto/arabic.pro3
-rw-r--r--src/proto/farsi.pro12
-rw-r--r--src/proto/main.pro11
-rw-r--r--src/version.c2
18 files changed, 123 insertions, 44 deletions
diff --git a/Filelist b/Filelist
index a6b159ea2f..1b70cf2f08 100644
--- a/Filelist
+++ b/Filelist
@@ -116,6 +116,7 @@ SRC_ALL = \
src/testdir/bench*.vim \
src/testdir/samples/*.txt \
src/proto.h \
+ src/proto/arabic.pro \
src/proto/blowfish.pro \
src/proto/buffer.pro \
src/proto/channel.pro \
@@ -131,6 +132,7 @@ 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/fold.pro \
src/proto/getchar.pro \
diff --git a/src/Make_bc5.mak b/src/Make_bc5.mak
index 532160f61f..3a11c8f869 100644
--- a/src/Make_bc5.mak
+++ b/src/Make_bc5.mak
@@ -537,6 +537,7 @@ vimwinmain = \
!endif
vimobj = \
+ $(OBJDIR)\arabic.obj \
$(OBJDIR)\blowfish.obj \
$(OBJDIR)\buffer.obj \
$(OBJDIR)\charset.obj \
@@ -551,6 +552,7 @@ vimobj = \
$(OBJDIR)\ex_docmd.obj \
$(OBJDIR)\ex_eval.obj \
$(OBJDIR)\ex_getln.obj \
+ $(OBJDIR)\farsi.obj \
$(OBJDIR)\fileio.obj \
$(OBJDIR)\fold.obj \
$(OBJDIR)\getchar.obj \
diff --git a/src/Make_cyg_ming.mak b/src/Make_cyg_ming.mak
index 490ae0b78a..005df196ae 100644
--- a/src/Make_cyg_ming.mak
+++ b/src/Make_cyg_ming.mak
@@ -594,6 +594,7 @@ LIB = -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion
GUIOBJ = $(OUTDIR)/gui.o $(OUTDIR)/gui_w32.o $(OUTDIR)/gui_beval.o $(OUTDIR)/os_w32exe.o
CUIOBJ = $(OUTDIR)/iscygpty.o
OBJ = \
+ $(OUTDIR)/arabic.o \
$(OUTDIR)/blowfish.o \
$(OUTDIR)/buffer.o \
$(OUTDIR)/charset.o \
@@ -608,6 +609,7 @@ OBJ = \
$(OUTDIR)/ex_docmd.o \
$(OUTDIR)/ex_eval.o \
$(OUTDIR)/ex_getln.o \
+ $(OUTDIR)/farsi.o \
$(OUTDIR)/fileio.o \
$(OUTDIR)/fold.o \
$(OUTDIR)/getchar.o \
diff --git a/src/Make_dice.mak b/src/Make_dice.mak
index c20ba89ee4..708fdfb81c 100644
--- a/src/Make_dice.mak
+++ b/src/Make_dice.mak
@@ -26,6 +26,7 @@ LD = dcc
${CC} ${PRE} ${CFLAGS} $< -o $@
SRC = \
+ arabic.c \
blowfish.c \
buffer.c \
charset.c \
@@ -40,6 +41,7 @@ SRC = \
ex_docmd.c \
ex_eval.c \
ex_getln.c \
+ farsi.c \
fileio.c \
fold.c \
getchar.c \
@@ -75,7 +77,8 @@ SRC = \
window.c \
version.c
-OBJ = o/blowfish.o \
+OBJ = o/arabic.o \
+ o/blowfish.o \
o/buffer.o \
o/charset.o \
o/crypt.o \
@@ -89,6 +92,7 @@ OBJ = o/blowfish.o \
o/ex_docmd.o \
o/ex_eval.o \
o/ex_getln.o \
+ o/farsi.o \
o/fileio.o \
o/fold.o \
o/getchar.o \
@@ -143,6 +147,8 @@ $(SYMS) : vim.h globals.h keymap.h macros.h ascii.h term.h os_amiga.h structs.h
###########################################################################
+o/arabic.o: arabic.c $(SYMS)
+
o/blowfish.o: blowfish.c $(SYMS)
o/buffer.o: buffer.c $(SYMS)
@@ -171,6 +177,8 @@ 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/fold.o: fold.c $(SYMS)
diff --git a/src/Make_ivc.mak b/src/Make_ivc.mak
index 2dbe95768c..f3251c3edf 100644
--- a/src/Make_ivc.mak
+++ b/src/Make_ivc.mak
@@ -210,6 +210,7 @@ ALL : .\$(VIM).exe vimrun.exe install.exe uninstal.exe xxd/xxd.exe GvimExt/gvime
LINK32_OBJS= \
$(EXTRAS) \
+ "$(INTDIR)/arabic.obj" \
"$(INTDIR)/blowfish.obj" \
"$(INTDIR)/buffer.obj" \
"$(INTDIR)/charset.obj" \
@@ -224,6 +225,7 @@ LINK32_OBJS= \
"$(INTDIR)/ex_docmd.obj" \
"$(INTDIR)/ex_eval.obj" \
"$(INTDIR)/ex_getln.obj" \
+ "$(INTDIR)/farsi.obj" \
"$(INTDIR)/fileio.obj" \
"$(INTDIR)/fold.obj" \
"$(INTDIR)/getchar.obj" \
@@ -330,6 +332,10 @@ GvimExt/gvimext.dll: GvimExt/gvimext.cpp GvimExt/gvimext.rc GvimExt/gvimext.h
# Begin Source File
+SOURCE=.\arabic.c
+# End Source File
+# Begin Source File
+
SOURCE=.\blowfish.c
# End Source File
# Begin Source File
@@ -386,6 +392,10 @@ 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
diff --git a/src/Make_manx.mak b/src/Make_manx.mak
index 1574f056ef..38fef5679d 100644
--- a/src/Make_manx.mak
+++ b/src/Make_manx.mak
@@ -36,7 +36,8 @@ SHELL = csh
REN = $(SHELL) -c mv -f
DEL = $(SHELL) -c rm -f
-SRC = blowfish.c \
+SRC = arabic.c \
+ blowfish.c \
buffer.c \
charset.c \
crypt.c \
@@ -50,6 +51,7 @@ SRC = blowfish.c \
ex_docmd.c \
ex_eval.c \
ex_getln.c \
+ farsi.c \
fileio.c \
fold.c \
getchar.c \
@@ -87,7 +89,8 @@ SRC = blowfish.c \
INCL = vim.h feature.h keymap.h macros.h ascii.h term.h structs.h os_amiga.h
-OBJ = obj/blowfish.o \
+OBJ = obj/arabic.o \
+ obj/blowfish.o \
obj/buffer.o \
obj/charset.o \
obj/crypt.o \
@@ -101,6 +104,7 @@ OBJ = obj/blowfish.o \
obj/ex_docmd.o \
obj/ex_eval.o \
obj/ex_getln.o \
+ obj/farsi.o \
obj/fileio.o \
obj/fold.o \
obj/getchar.o \
@@ -136,7 +140,8 @@ OBJ = obj/blowfish.o \
obj/window.o \
$(TERMLIB)
-PRO = proto/blowfish.pro \
+PRO = proto/arabic.pro \
+ proto/blowfish.pro \
proto/buffer.pro \
proto/charset.pro \
proto/crypt.pro \
@@ -150,6 +155,7 @@ PRO = proto/blowfish.pro \
proto/ex_docmd.pro \
proto/ex_eval.pro \
proto/ex_getln.pro \
+ proto/farsi.pro \
proto/fileio.pro \
proto/fold.pro \
proto/getchar.pro \
@@ -229,6 +235,9 @@ CCNOSYM = $(CC) $(CFLAGS) -o
$(OBJ): $(SYMS)
+obj/arabic.o: arabic.c
+ $(CCSYM) $@ arabic.c
+
obj/blowfish.o: blowfish.c
$(CCSYM) $@ blowfish.c
@@ -272,6 +281,9 @@ 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
diff --git a/src/Make_morph.mak b/src/Make_morph.mak
index 2f2f08b8e2..33342eba12 100644
--- a/src/Make_morph.mak
+++ b/src/Make_morph.mak
@@ -24,7 +24,8 @@ RM = rm
.c.o:
${CC} ${CFLAGS} $< -o $@
-SRC = blowfish.c \
+SRC = arabic.c \
+ blowfish.c \
buffer.c \
charset.c \
crypt.c \
@@ -38,6 +39,7 @@ SRC = blowfish.c \
ex_docmd.c \
ex_eval.c \
ex_getln.c \
+ farsi.c \
fileio.c \
fold.c \
getchar.c \
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index b1a643c426..dc27809b22 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -548,6 +548,7 @@ INCL = vim.h os_win32.h ascii.h feature.h globals.h keymap.h macros.h \
$(NBDEBUG_INCL)
OBJ = \
+ $(OUTDIR)\arabic.obj \
$(OUTDIR)\blowfish.obj \
$(OUTDIR)\buffer.obj \
$(OUTDIR)\charset.obj \
@@ -562,6 +563,7 @@ OBJ = \
$(OUTDIR)\ex_docmd.obj \
$(OUTDIR)\ex_eval.obj \
$(OUTDIR)\ex_getln.obj \
+ $(OUTDIR)\farsi.obj \
$(OUTDIR)\fileio.obj \
$(OUTDIR)\fold.obj \
$(OUTDIR)\getchar.obj \
@@ -1148,6 +1150,8 @@ testclean:
!ENDIF
$(CC) $(CFLAGS) $<
+$(OUTDIR)/arabic.obj: $(OUTDIR) arabic.c $(INCL)
+
$(OUTDIR)/blowfish.obj: $(OUTDIR) blowfish.c $(INCL)
$(OUTDIR)/buffer.obj: $(OUTDIR) buffer.c $(INCL)
@@ -1176,6 +1180,8 @@ $(OUTDIR)/ex_eval.obj: $(OUTDIR) ex_eval.c $(INCL) ex_cmds.h
$(OUTDIR)/ex_getln.obj: $(OUTDIR) ex_getln.c $(INCL)
+$(OUTDIR)/farsi.obj: $(OUTDIR) farsi.c $(INCL)
+
$(OUTDIR)/fileio.obj: $(OUTDIR) fileio.c $(INCL)
$(OUTDIR)/fold.obj: $(OUTDIR) fold.c $(INCL)
@@ -1346,6 +1352,7 @@ auto:
# End Custom Build
proto.h: \
+ proto/arabic.pro \
proto/blowfish.pro \
proto/buffer.pro \
proto/charset.pro \
@@ -1360,6 +1367,7 @@ proto.h: \
proto/ex_docmd.pro \
proto/ex_eval.pro \
proto/ex_getln.pro \
+ proto/farsi.pro \
proto/fileio.pro \
proto/getchar.pro \
proto/hardcopy.pro \
diff --git a/src/Make_sas.mak b/src/Make_sas.mak
index 6d2ca844f4..6ebd7d0847 100644
--- a/src/Make_sas.mak
+++ b/src/Make_sas.mak
@@ -89,6 +89,7 @@ CFLAGS4 = $(DEFINES) DATAMEMORY=$(MEMORYTYPE)
PROPT = DEF=PROTO GPROTO GPPARM MAXIMUMERRORS=999 GENPROTOSTATICS GENPROTOPARAMETERS
SRC = \
+ arabic.c \
blowfish.c \
buffer.c \
charset.c \
@@ -103,6 +104,7 @@ SRC = \
ex_docmd.c \
ex_eval.c \
ex_getln.c \
+ farsi.c \
fileio.c \
fold.c \
getchar.c \
@@ -139,6 +141,7 @@ SRC = \
version.c
OBJ = \
+ arabic.o \
blowfish.o \
buffer.o \
charset.o \
@@ -153,6 +156,7 @@ OBJ = \
ex_docmd.o \
ex_eval.o \
ex_getln.o \
+ farsi.o \
fileio.o \
fold.o \
getchar.o \
@@ -189,6 +193,7 @@ OBJ = \
$(TERMLIB)
PRO = \
+ proto/arabic.pro \
proto/blowfish.pro \
proto/buffer.pro \
proto/charset.pro \
@@ -203,6 +208,7 @@ PRO = \
proto/ex_docmd.pro \
proto/ex_eval.pro \
proto/ex_getln.pro \
+ proto/farsi.pro \
proto/fileio.pro \
proto/fold.pro \
proto/getchar.pro \
@@ -293,6 +299,8 @@ $(PRO): $(GST) vim.h
$(CC) $(CFLAGS) GPFILE=proto/$*.pro $(PROPT) $*.c
# dependencies
+arabic.o: arabic.c
+proto/arabic.pro: arabic.c
blowfish.o: blowfish.c
proto/blowfish.pro: blowfish.c
buffer.o: buffer.c
@@ -321,6 +329,8 @@ 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
fold.o: fold.c
diff --git a/src/Makefile b/src/Makefile
index 79e2992002..3aeac7dce0 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1478,6 +1478,7 @@ DEST_MAN_RU_U = $(DEST_MAN_TOP)/ru.UTF-8$(MAN1DIR)
TAGS_INCL = *.h
BASIC_SRC = \
+ arabic.c \
blowfish.c \
buffer.c \
charset.c \
@@ -1492,6 +1493,7 @@ BASIC_SRC = \
ex_docmd.c \
ex_eval.c \
ex_getln.c \
+ farsi.c \
fileio.c \
fold.c \
getchar.c \
@@ -1575,6 +1577,7 @@ LINT_SRC = $(BASIC_SRC) $(GUI_SRC) $(HANGULIN_SRC) \
#LINT_SRC = $(BASIC_SRC)
OBJ_COMMON = \
+ objects/arabic.o \
objects/buffer.o \
objects/blowfish.o \
objects/charset.o \
@@ -1589,6 +1592,7 @@ OBJ_COMMON = \
objects/ex_docmd.o \
objects/ex_eval.o \
objects/ex_getln.o \
+ objects/farsi.o \
objects/fileio.o \
objects/fold.o \
objects/getchar.o \
@@ -1652,6 +1656,7 @@ MEMFILE_TEST_OBJ = $(OBJ_COMMON) \
objects/memfile_test.o
PRO_AUTO = \
+ arabic.pro \
blowfish.pro \
buffer.pro \
charset.pro \
@@ -1666,6 +1671,7 @@ PRO_AUTO = \
ex_docmd.pro \
ex_eval.pro \
ex_getln.pro \
+ farsi.pro \
fileio.pro \
fold.pro \
getchar.pro \
@@ -2749,6 +2755,9 @@ auto/gui_gtk_gresources.h: gui_gtk_res.xml $(GUI_GTK_RES_INPUTS)
objects:
mkdir objects
+objects/arabic.o: arabic.c
+ $(CCC) -o $@ arabic.c
+
objects/blowfish.o: blowfish.c
$(CCC) -o $@ blowfish.c
@@ -2791,6 +2800,9 @@ 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
@@ -3110,6 +3122,10 @@ $(APPDIR)/Contents:
###############################################################################
### (automatically generated by 'make depend')
### Dependencies:
+objects/arabic.o: arabic.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+ ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+ gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h \
+ farsi.h arabic.h
objects/blowfish.o: blowfish.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
@@ -3166,6 +3182,10 @@ objects/ex_getln.o: ex_getln.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
globals.h farsi.h arabic.h
+objects/farsi.o: farsi.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+ ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+ gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h \
+ farsi.h arabic.h
objects/fileio.o: fileio.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h \
@@ -3201,7 +3221,7 @@ objects/json.o: json.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
objects/main.o: main.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h \
- farsi.h arabic.h farsi.c arabic.c
+ farsi.h arabic.h
objects/mark.o: mark.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h \
@@ -3314,10 +3334,10 @@ objects/window.o: window.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h
objects/gui.o: gui.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.h \
keymap.h term.h macros.h option.h structs.h regexp.h gui.h gui_beval.h \
proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h farsi.h arabic.h
-objects/gui_gtk.o: gui_gtk.c gui_gtk_f.h vim.h auto/config.h feature.h os_unix.h \
- auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
- regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h
+objects/gui_gtk.o: gui_gtk.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h \
+ ascii.h keymap.h term.h macros.h option.h structs.h regexp.h gui.h \
+ gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h globals.h \
+ farsi.h arabic.h gui_gtk_f.h
objects/gui_gtk_f.o: gui_gtk_f.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
@@ -3394,11 +3414,11 @@ objects/pty.o: pty.c vim.h auto/config.h feature.h os_unix.h auto/osdef.h ascii.
objects/json_test.o: json_test.c main.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
- globals.h farsi.h arabic.h farsi.c arabic.c json.c
+ globals.h farsi.h arabic.h json.c
objects/memfile_test.o: memfile_test.c main.c vim.h auto/config.h feature.h \
os_unix.h auto/osdef.h ascii.h keymap.h term.h macros.h option.h \
structs.h regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h \
- ex_cmds.h proto.h globals.h farsi.h arabic.h farsi.c arabic.c memfile.c
+ ex_cmds.h proto.h globals.h farsi.h arabic.h memfile.c
objects/hangulin.o: hangulin.c vim.h auto/config.h feature.h os_unix.h \
auto/osdef.h ascii.h keymap.h term.h macros.h option.h structs.h \
regexp.h gui.h gui_beval.h proto/gui_beval.pro alloc.h ex_cmds.h proto.h \
diff --git a/src/arabic.c b/src/arabic.c
index 1c30598392..818aae61da 100644
--- a/src/arabic.c
+++ b/src/arabic.c
@@ -10,14 +10,13 @@
/*
* arabic.c: functions for Arabic language
*
- * Included by main.c, when FEAT_ARABIC & FEAT_GUI is defined.
- *
- * --
- *
* Author: Nadim Shaikli & Isam Bayazidi
- *
*/
+#include "vim.h"
+
+#if defined(FEAT_ARABIC) || defined(PROTO)
+
static int A_is_a(int cur_c);
static int A_is_s(int cur_c);
static int A_is_f(int cur_c);
@@ -1148,3 +1147,5 @@ A_is_special(int c)
{
return (c == a_HAMZA || c == a_s_HAMZA);
}
+
+#endif /* FEAT_ARABIC */
diff --git a/src/farsi.c b/src/farsi.c
index b082829220..eed7e40ec4 100644
--- a/src/farsi.c
+++ b/src/farsi.c
@@ -9,10 +9,12 @@
/*
* farsi.c: functions for Farsi language
- *
- * Included by main.c, when FEAT_FKMAP is defined.
*/
+#include "vim.h"
+
+#if defined(FEAT_FKMAP) || defined(PROTO)
+
static int toF_Xor_X_(int c);
static int F_is_TyE(int c);
static int F_is_TyC_TyD(int c);
@@ -2189,3 +2191,5 @@ farsi_f9(cmdarg_T *cap UNUSED)
conv_to_pstd();
}
}
+
+#endif /* FEAT_FKMAP */
diff --git a/src/main.c b/src/main.c
index 989c78efe6..dcede31e45 100644
--- a/src/main.c
+++ b/src/main.c
@@ -4186,17 +4186,3 @@ serverConvert(
return res;
}
#endif
-
-/*
- * When FEAT_FKMAP is defined, also compile the Farsi source code.
- */
-#if defined(FEAT_FKMAP) || defined(PROTO)
-# include "farsi.c"
-#endif
-
-/*
- * When FEAT_ARABIC is defined, also compile the Arabic source code.
- */
-#if defined(FEAT_ARABIC) || defined(PROTO)
-# include "arabic.c"
-#endif
diff --git a/src/proto.h b/src/proto.h
index d975f924d1..f4f647641f 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -92,6 +92,12 @@ 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
/* These prototypes cannot be produced automatically. */
int
diff --git a/src/proto/arabic.pro b/src/proto/arabic.pro
new file mode 100644
index 0000000000..a004ef9344
--- /dev/null
+++ b/src/proto/arabic.pro
@@ -0,0 +1,3 @@
+/* arabic.c */
+int arabic_shape(int c, int *ccp, int *c1p, int prev_c, int prev_c1, int next_c);
+/* vim: set ft=c : */
diff --git a/src/proto/farsi.pro b/src/proto/farsi.pro
new file mode 100644
index 0000000000..b6e1836511
--- /dev/null
+++ b/src/proto/farsi.pro
@@ -0,0 +1,12 @@
+/* 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 : */
diff --git a/src/proto/main.pro b/src/proto/main.pro
index 06b3a4db25..6964b6c997 100644
--- a/src/proto/main.pro
+++ b/src/proto/main.pro
@@ -10,15 +10,4 @@ void time_msg(char *mesg, void *tv_start);
void server_to_input_buf(char_u *str);
char_u *eval_client_expr_to_string(char_u *expr);
char_u *serverConvert(char_u *client_enc, char_u *data, char_u **tofree);
-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);
-int arabic_shape(int c, int *ccp, int *c1p, int prev_c, int prev_c1, int next_c);
/* vim: set ft=c : */
diff --git a/src/version.c b/src/version.c
index 8d9995aef1..e83eaf7611 100644
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1983,
+/**/
1982,
/**/
1981,