aboutsummaryrefslogtreecommitdiff
path: root/src/farsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/farsi.c')
-rw-r--r--src/farsi.c3815
1 files changed, 2297 insertions, 1518 deletions
diff --git a/src/farsi.c b/src/farsi.c
index 31e62e2510..9a22b3f364 100644
--- a/src/farsi.c
+++ b/src/farsi.c
@@ -46,83 +46,108 @@ 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();
+ case BE:
+ return _BE;
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
- tempc = _HE_;
+ case PE:
+ return _PE;
- dec_cursor();
- }
- if (!p_ri && STRLEN(ml_get_curline())) {
- dec_cursor();
+ case TE:
+ return _TE;
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
- tempc = _HE_;
+ case SE:
+ return _SE;
- inc_cursor();
- }
+ case JIM:
+ return _JIM;
- return tempc;
+ 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;
}
@@ -133,71 +158,98 @@ static int toF_Xor_X_(int c)
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;
+ 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;
}
@@ -211,44 +263,45 @@ static int F_is_TyB_TyC_TyD(int src, int offset)
{
int c;
- if (src == SRC_EDT)
+ if (src == SRC_EDT) {
c = gchar_cursor();
- else
- c = cmd_gchar(AT_CURSOR+offset);
+ } 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;
+ 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;
}
@@ -259,17 +312,17 @@ static int F_is_TyB_TyC_TyD(int src, int offset)
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;
+ 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;
}
@@ -280,18 +333,18 @@ static int F_is_TyE(int c)
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;
+ 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;
}
@@ -302,17 +355,38 @@ static int F_is_TyC_TyD(int c)
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;
+ 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;
}
@@ -324,15 +398,17 @@ static void put_curr_and_l_to_X(int c)
{
int tempc;
- if (curwin->w_p_rl && p_ri)
+ 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)
+ if (p_ri) {
dec_cursor();
- else
+ } else {
inc_cursor();
+ }
if (F_is_TyC_TyD((tempc = gchar_cursor()))) {
pchar_cursor(toF_TyB(tempc));
@@ -340,10 +416,11 @@ static void put_curr_and_l_to_X(int c)
AppendCharToRedobuff(tempc);
}
- if (p_ri)
+ if (p_ri) {
inc_cursor();
- else
+ } else {
dec_cursor();
+ }
}
}
@@ -360,184 +437,226 @@ static void put_and_redo(int c)
/*
** Change the char. under the cursor to a X_ or X type
*/
-static void chg_c_toX_orX(void) {
+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))
+ 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
+ } else {
tempc = (curc == _YE ? YE :
(curc == _IE ? IE : YEE));
- inc_cursor();
- } else
- tempc = (curc == _YE ? YE :
- (curc == _IE ? IE : YEE));
- }
- break;
- default:
- tempc = 0;
+ }
+ 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)
+ 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) {
+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;
+ 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)
+ 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) {
+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;
}
@@ -545,837 +664,1192 @@ static void chg_c_to_X_or_X(void) {
dec_cursor();
}
- if ((tempc = toF_Xor_X_(tempc)) != 0)
+ 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) {
+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())))
+ 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)
+ if (!curwin->w_cursor.col && p_ri) {
return;
+ }
- if (p_ri)
+ if (p_ri) {
dec_cursor();
- else
+ } 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;
+ 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)
+ if (tempc) {
put_and_redo(tempc);
+ }
- if (p_ri)
+ if (p_ri) {
inc_cursor();
- else
+ } else {
dec_cursor();
+ }
}
/*
** Change the character left to the cursor to a X or _X type
*/
-
-static void chg_l_toXor_X(void) {
+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())))
+ 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)
+ if (!curwin->w_cursor.col && p_ri) {
return;
+ }
- if (p_ri)
+ if (p_ri) {
dec_cursor();
- else
+ } 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;
+ 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)
+ if (tempc) {
put_and_redo(tempc);
+ }
- if (p_ri)
+ if (p_ri) {
inc_cursor();
- else
+ } else {
dec_cursor();
+ }
}
/*
** Change the character right to the cursor to a _X or _X_ type
*/
-
-static void chg_r_to_Xor_X_(void) {
+static void chg_r_to_Xor_X_(void)
+{
int tempc, c;
if (curwin->w_cursor.col) {
- if (!p_ri)
+ if (!p_ri) {
dec_cursor();
+ }
tempc = gchar_cursor();
-
- if ((c = toF_Xor_X_(tempc)) != 0)
+ if ((c = toF_Xor_X_(tempc)) != 0) {
put_and_redo(c);
+ }
- if (!p_ri)
+ if (!p_ri) {
inc_cursor();
-
+ }
}
}
/*
** Map Farsi keyboard when in fkmap mode.
*/
-
int fkmap(int c)
{
int tempc;
static int revins;
- if (IS_SPECIAL(c))
+ if (IS_SPECIAL(c)) {
return c;
+ }
- if (VIM_ISDIGIT(c) || ((c == '.' || c == '+' || c == '-' ||
- c == '^' || c == '%' || c == '#' ||
- c == '=') && revins)) {
+ if (VIM_ISDIGIT(c) ||
+ (((c == '.') ||
+ (c == '+') ||
+ (c == '-') ||
+ (c == '^') ||
+ (c == '%') ||
+ (c == '#') ||
+ (c == '=')) && revins)) {
if (!revins) {
if (curwin->w_cursor.col) {
- if (!p_ri)
+ if (!p_ri) {
dec_cursor();
+ }
- chg_c_toX_orX ();
- chg_l_toXor_X ();
-
- if (!p_ri)
+ 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)
+ if (!curwin->w_p_rl && revins) {
inc_cursor();
+ }
++revins;
- p_ri=1;
- } else {
+ p_ri = 1;
+ } else {
if (revins) {
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)
+ 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()))
+ 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 (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 == '}' ))
+ 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) {
- /*
- ** If the char before the cursor is _X_ or X_ do not change
- ** the one under the cursor with X type.
- */
-
- dec_cursor();
+ 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) {
+ /*
+ ** If the char before the cursor is _X_ or X_ do not change
+ ** the one under the cursor with X type.
+ */
- if (F_isalpha(gchar_cursor())) {
+ dec_cursor();
+ if (F_isalpha(gchar_cursor())) {
+ inc_cursor();
+ return NL;
+ }
inc_cursor();
- return NL;
}
- inc_cursor();
- }
+ if (!p_ri) {
+ if (!curwin->w_cursor.col) {
+ switch (c) {
+ case '0':
+ return FARSI_0;
- if (!p_ri)
- if (!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 (!p_ri)
- dec_cursor();
+ case '1':
+ return FARSI_1;
- 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_:
+ case '2':
+ return FARSI_2;
- if (!p_ri)
- if (!curwin->w_cursor.col) {
- put_curr_and_l_to_X(AYN);
+ 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 (p_ri)
- inc_cursor();
- else
+ 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;
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
- tempc = AYN_;
- else
- tempc = AYN;
+ 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;
- if (p_ri)
- dec_cursor();
- else
+ 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;
- put_curr_and_l_to_X(tempc);
+ 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 _GHAYN:
- case _GHAYN_:
- if (!p_ri)
+ 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) {
- put_curr_and_l_to_X(GHAYN);
- break;
+ return ALEF_U_H;
}
+ }
- if (p_ri)
- inc_cursor();
- else
+ if (!p_ri) {
dec_cursor();
+ }
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
- tempc = GHAYN_;
- else
- tempc = GHAYN;
+ 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)
- dec_cursor();
- else
+ if (!p_ri) {
inc_cursor();
+ }
- put_curr_and_l_to_X(tempc);
- break;
- case _YE:
- case _IE:
- case _YEE:
- if (!p_ri)
+ 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) {
- put_curr_and_l_to_X((tempc == _YE ? YE :
- (tempc == _IE ? IE : YEE)));
- break;
+ return ALEF;
}
+ }
- if (p_ri)
- inc_cursor();
- else
+ if (!p_ri) {
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 (gchar_cursor() == _LAM) {
+ chg_l_toXor_X();
+ del_char(FALSE);
+ AppendCharToRedobuff(K_BS);
- if (p_ri)
- dec_cursor();
- else
+ 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();
+ }
- put_curr_and_l_to_X(tempc);
- break;
- }
+ return tempc;
- if (!p_ri)
- inc_cursor();
+ case 'i':
- 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 (!curwin->w_cursor.col && STRLEN(ml_get_curline())) {
+ if (!p_ri && !F_is_TyE(tempc)) {
+ chg_c_to_X_orX_();
+ }
- if (!p_ri)
- if (!curwin->w_cursor.col)
- return ALEF_U_H;
+ if (p_ri) {
+ chg_c_to_X_or_X();
+ }
+ }
- if (!p_ri)
- dec_cursor();
+ if (!p_ri && !curwin->w_cursor.col) {
+ return _HE;
+ }
- 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) {
+ dec_cursor();
+ }
- if (!p_ri)
- inc_cursor();
+ if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR)) {
+ tempc = _HE_;
+ } else {
+ tempc = _HE;
+ }
- 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) {
+ inc_cursor();
+ }
+ break;
- }
+ case 'j':
+ tempc = _TE;
+ break;
- if (!p_ri)
- if (!curwin->w_cursor.col)
- return ALEF;
+ case 'J':
- if (!p_ri)
- dec_cursor();
+ if (!curwin->w_cursor.col && STRLEN(ml_get_curline())) {
+ if (p_ri) {
+ chg_c_to_X_or_X();
+ }
+ }
- if (gchar_cursor() == _LAM) {
- chg_l_toXor_X();
- del_char(FALSE);
- AppendCharToRedobuff(K_BS);
+ if (!p_ri) {
+ if (!curwin->w_cursor.col) {
+ return TEE;
+ }
+ }
- if (!p_ri)
+ 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;
- }
+ tempc = TEE_;
+ chg_l_toXor_X();
+ } else {
+ tempc = TEE;
+ }
- if (!p_ri)
- inc_cursor();
+ 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 ();
+ return tempc;
- }
+ case 'k':
+ tempc = _NOON;
+ break;
- if (!p_ri && !curwin->w_cursor.col)
- return _HE;
+ case 'l':
+ tempc = _MIM;
+ break;
- if (!p_ri)
- dec_cursor();
+ case 'm':
+ tempc = _PE;
+ break;
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
- tempc = _HE_;
- else
- tempc = _HE;
+ case 'n':
+ case 'N':
+ tempc = DAL;
+ break;
- 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 ();
+ case 'o':
+ tempc = _XE;
+ break;
- }
+ case 'p':
+ tempc = _HE_J;
+ break;
- if (!p_ri)
- if (!curwin->w_cursor.col)
- return TEE;
+ case 'q':
+ tempc = _ZAD;
+ break;
- if (!p_ri)
- dec_cursor();
+ case 'r':
+ tempc = _GHAF;
+ break;
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR)) {
- tempc = TEE_;
- chg_l_toXor_X ();
- } else
- tempc = TEE;
+ case 's':
+ tempc = _SIN;
+ break;
- if (!p_ri)
- inc_cursor();
+ case 'S':
+ tempc = _IE;
+ break;
- 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 ();
+ 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 && !curwin->w_cursor.col)
- return _AYN;
+ if (p_ri) {
+ chg_c_to_X_or_X();
+ }
+ }
- if (!p_ri)
- dec_cursor();
+ if (!p_ri && !curwin->w_cursor.col) {
+ return _AYN;
+ }
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
- tempc = _AYN_;
- else
- tempc = _AYN;
+ if (!p_ri) {
+ dec_cursor();
+ }
- 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 (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR)) {
+ tempc = _AYN_;
+ } else {
+ tempc = _AYN;
+ }
- }
+ if (!p_ri) {
+ inc_cursor();
+ }
+ break;
- if (!p_ri && !curwin->w_cursor.col)
- return _GHAYN;
+ case 'v':
+ case 'V':
+ tempc = RE;
+ break;
- if (!p_ri)
- dec_cursor();
+ case 'w':
+ tempc = _SAD;
+ break;
- if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))
- tempc = _GHAYN_;
- else
- tempc = _GHAYN;
+ case 'x':
+ case 'X':
+ tempc = _TA;
+ break;
- if (!p_ri)
- inc_cursor();
+ case 'y':
+ if (!curwin->w_cursor.col && STRLEN(ml_get_curline())) {
+ if (!p_ri && !F_is_TyE(tempc)) {
+ chg_c_to_X_orX_();
+ }
- 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 (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 && 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)
+ if (!p_ri) {
dec_cursor();
+ }
- if (F_is_TyE(tempc))
- chg_l_toXor_X ();
- else
- chg_l_to_X_orX_ ();
+ if (F_is_TyE(tempc)) {
+ chg_l_toXor_X();
+ } else {
+ chg_l_to_X_orX_();
+ }
- if (!p_ri)
+ if (!p_ri) {
inc_cursor();
+ }
}
}
- if (tempc)
+
+ if (tempc) {
return tempc;
+ }
return c;
}
@@ -1385,48 +1859,94 @@ int fkmap(int c)
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;
+ 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;
}
@@ -1437,50 +1957,97 @@ static int toF_leading(int c)
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;
+ 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;
}
@@ -1491,68 +2058,68 @@ static int toF_Rjoin(int c)
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;
+ 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;
}
@@ -1563,24 +2130,23 @@ static int canF_Ljoin(int c)
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;
+ 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);
-
}
/*
@@ -1589,20 +2155,20 @@ static int canF_Rjoin(int c)
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;
+ 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;
@@ -1613,72 +2179,101 @@ static int F_isterm(int c)
*/
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;
+ 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;
}
@@ -1686,30 +2281,33 @@ static int toF_ending(int c)
/*
** Convert the Farsi 3342 standard into Farsi VIM.
*/
-void conv_to_pvim(void) {
- char_u *ptr;
+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])) {
+ 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 (canF_Rjoin(ptr[i]) && i < llen) {
ptr[i] = toF_Rjoin(ptr[i]);
- if (F_isterm(ptr[i]) || !F_isalpha(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
+
+ if (!F_isalpha(ptr[i]) || !canF_Rjoin(ptr[i])) {
+ ptr[i - 1] = toF_ending(ptr[i - 1]);
+ }
+ } else {
ptr[i] = toF_TyA(ptr[i]);
+ }
}
}
@@ -1728,8 +2326,9 @@ void conv_to_pvim(void) {
/*
* Convert the Farsi VIM into Farsi 3342 standard.
*/
-void conv_to_pstd(void) {
- char_u *ptr;
+void conv_to_pstd(void)
+{
+ char_u *ptr;
int lnum, llen, i;
/*
@@ -1737,15 +2336,11 @@ void conv_to_pstd(void) {
*/
do_cmdline_cmd((char_u *)"%s/\232/\202\231/g");
-
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++) {
+ for (i = 0; i < llen; i++) {
ptr[i] = toF_TyA(ptr[i]);
-
}
}
@@ -1759,12 +2354,11 @@ void conv_to_pstd(void) {
*/
static void lrswapbuf(char_u *buf, int len)
{
- char_u *s, *e;
+ char_u *s, *e;
int c;
s = buf;
e = buf + len - 1;
-
while (e > s) {
c = *s;
*s = *e;
@@ -1777,32 +2371,34 @@ static void lrswapbuf(char_u *buf, int len)
/*
* swap all the characters in reverse direction
*/
-char_u *lrswap(char_u *ibuf)
+char_u* lrswap(char_u *ibuf)
{
- if (ibuf != NULL && *ibuf != NUL)
+ 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)
+char_u* lrFswap(char_u *cmdbuf, int len)
{
int i, cnt;
-
- if (cmdbuf == NULL)
+ if (cmdbuf == NULL) {
return cmdbuf;
+ }
- if (len == 0 && (len = (int)STRLEN(cmdbuf)) == 0)
+ 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)
- ;
+ 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;
@@ -1815,38 +2411,40 @@ char_u *lrFswap(char_u *cmdbuf, int len)
* accordingly.
* TODO: handle different separator characters. Use skip_regexp().
*/
-char_u *lrF_sub(char_u *ibuf)
+char_u* lrF_sub(char_u *ibuf)
{
- char_u *p, *ep;
+ 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] == '\\')
- ;
+ while (((p = vim_strchr(p + 1, '/')) != NULL) && p[-1] == '\\') {
+ }
- if (p == NULL)
+ if (p == NULL) {
return ibuf;
+ }
/* Reverse the Farsi characters in the search path. */
- lrFswap(ibuf, (int)(p-ibuf));
+ lrFswap(ibuf, (int)(p - ibuf));
/* Now find the boundary of the substitute section */
- if ((ep = (char_u *)strrchr((char *)++p, '/')) != NULL)
+ if ((ep = (char_u *)strrchr((char *)++p, '/')) != NULL) {
cnt = (int)(ep - p);
- else
+ } else {
cnt = (int)STRLEN(p);
+ }
/* Reverse the characters in the substitute section and take care of '\' */
- for (i = 0; i < cnt-1; i++)
+ for (i = 0; i < cnt - 1; i++) {
if (p[i] == '\\') {
- p[i] = p[i+1];
+ p[i] = p[i + 1];
p[++i] = '\\';
}
+ }
lrswapbuf(p, cnt);
-
return ibuf;
}
@@ -1858,246 +2456,426 @@ 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);
+ 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 _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;
- }
+ case 'a':
+ return _SHIN;
- 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;
- }
+ case 'A':
+ return WAW_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;
- }
+ case 'b':
+ return ZAL;
- 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;
+ 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;
@@ -2108,9 +2886,9 @@ int cmdl_fkmap(int c)
*/
int F_isalpha(int c)
{
- return ( c >= TEE_ && c <= _YE)
- || (c >= ALEF_A && c <= YE)
- || (c >= _IE && c <= YE_);
+ return (c >= TEE_ && c <= _YE) ||
+ (c >= ALEF_A && c <= YE) ||
+ (c >= _IE && c <= YE_);
}
/*
@@ -2139,7 +2917,7 @@ void farsi_fkey(cmdarg_T *cap)
p_fkmap = 0;
do_cmdline_cmd((char_u *)"set norl");
MSG("");
- } else {
+ } else {
p_fkmap = 1;
do_cmdline_cmd((char_u *)"set rl");
MSG("");
@@ -2152,10 +2930,11 @@ void farsi_fkey(cmdarg_T *cap)
if (c == K_F9) {
if (p_altkeymap && curwin->w_p_rl) {
curwin->w_farsi = curwin->w_farsi ^ W_CONV;
- if (curwin->w_farsi & W_CONV)
+ if (curwin->w_farsi & W_CONV) {
conv_to_pvim();
- else
+ } else {
conv_to_pstd();
+ }
}
}
}