aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/CMakeLists.txt4
-rw-r--r--src/nvim/edit.c8
-rw-r--r--src/nvim/ex_getln.c2
-rw-r--r--src/nvim/farsi.c2007
-rw-r--r--src/nvim/fold.c83
-rw-r--r--src/nvim/fold.h4
-rw-r--r--src/nvim/indent_c.c2
-rw-r--r--src/nvim/misc1.c2
-rw-r--r--src/nvim/move.c52
-rw-r--r--src/nvim/ops.c4
-rw-r--r--src/nvim/option.c12
-rw-r--r--src/nvim/popupmnu.c26
12 files changed, 656 insertions, 1550 deletions
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index 47782e8b6b..09b709b6ce 100644
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -58,9 +58,7 @@ set(CONV_SOURCES
ex_cmds.c
ex_docmd.c
ex_getln.c
- farsi.c
fileio.c
- fold.c
getchar.c
if_cscope.c
mbyte.c
@@ -68,11 +66,9 @@ set(CONV_SOURCES
menu.c
message.c
misc1.c
- move.c
normal.c
ops.c
path.c
- popupmnu.c
quickfix.c
regexp.c
screen.c
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index 8b2ac1943f..ec0f136d8d 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -7354,9 +7354,9 @@ static int ins_bs(int c, int mode, int *inserted_space_p)
*inserted_space_p = FALSE;
if (p_sta && in_indent)
- ts = (int)get_sw_value(curbuf);
+ ts = get_sw_value(curbuf);
else
- ts = (int)get_sts_value();
+ ts = get_sts_value();
/* Compute the virtual column where we want to be. Since
* 'showbreak' may get in the way, need to get the last column of
* the previous character. */
@@ -7826,9 +7826,9 @@ static int ins_tab(void)
AppendToRedobuff((char_u *)"\t");
if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */
- temp = (int)get_sw_value(curbuf);
+ temp = get_sw_value(curbuf);
else if (curbuf->b_p_sts != 0) /* use 'softtabstop' when set */
- temp = (int)get_sts_value();
+ temp = get_sts_value();
else /* otherwise use 'tabstop' */
temp = (int)curbuf->b_p_ts;
temp -= get_nolist_virtcol() % temp;
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index f0beef87e7..6b74e85acb 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -1784,7 +1784,7 @@ getexmodeline (
}
if (c1 == Ctrl_T) {
- long sw = get_sw_value(curbuf);
+ int sw = get_sw_value(curbuf);
p = (char_u *)line_ga.ga_data;
p[line_ga.ga_len] = NUL;
diff --git a/src/nvim/farsi.c b/src/nvim/farsi.c
index 2ca581ebd3..f9d6b14edc 100644
--- a/src/nvim/farsi.c
+++ b/src/nvim/farsi.c
@@ -2,6 +2,7 @@
///
/// Functions for Farsi language
+#include <assert.h>
#include <stdbool.h>
#include "nvim/cursor.h"
@@ -29,26 +30,23 @@
// Special Farsi text messages
const char_u farsi_text_1[] = {
- YE_, _SIN, RE, ALEF_, _FE, ' ', 'V', 'I', 'M',
- ' ', F_HE, _BE, ' ', SHIN, RE, _GAF, DAL, ' ', NOON,
- ALEF_, _YE, ALEF_, _PE, '\0'
+ YE_, _SIN, RE, ALEF_, _FE, ' ', 'V', 'I', 'M', ' ', F_HE, _BE, ' ', SHIN, RE,
+ _GAF, DAL, ' ', NOON, ALEF_, _YE, ALEF_, _PE, '\0'
};
const char_u farsi_text_2[] = {
- 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'
+ 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'
};
const char_u farsi_text_3[] = {
- 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'
+ 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'
};
const char_u farsi_text_5[] = {
@@ -65,93 +63,41 @@ const char_u farsi_text_5[] = {
/// @param c The character to convert.
///
/// @return Farsi character converted to a _X or _X_ type.
-static int toF_Xor_X_(int c)
+static char_u toF_Xor_X_(int c)
{
- int tempc;
+ char_u 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:
+ 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 AYN : tempc = _AYN ; break;
+ case AYN_ : tempc = _AYN_ ; break;
+ case GHAYN : tempc = _GHAYN ; break;
+ case GHAYN_ : tempc = _GHAYN_ ; break;
+ case FE : tempc = _FE ; break;
+ case GHAF : tempc = _GHAF ; break;
+ case KAF : tempc = _KAF ; break;
+ case GAF : tempc = _GAF ; break;
+ case LAM : tempc = _LAM ; break;
+ case MIM : tempc = _MIM ; break;
+ case NOON : tempc = _NOON ; break;
+ case YE :
+ case YE_ : tempc = _YE ; break;
+ case YEE :
+ case YEE_ : tempc = _YEE ; break;
+ case IE :
+ case IE_ : tempc = _IE ; break;
+ case F_HE :
tempc = _HE;
if (p_ri &&
@@ -171,9 +117,13 @@ static int toF_Xor_X_(int c)
inc_cursor();
}
- return tempc;
+ break;
+
+ default:
+ tempc = 0;
}
- return 0;
+
+ return tempc;
}
/// Convert the given Farsi character into Farsi capital character.
@@ -181,104 +131,51 @@ static int toF_Xor_X_(int c)
/// @param c The character to convert.
///
/// @return Character converted to the Farsi capital leter.
-int toF_TyA(int c)
+char_u toF_TyA(char_u 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;
+ char_u tempc;
- 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;
+ switch (c) {
+ case ALEF_ : tempc = ALEF ; break;
+ case ALEF_U_H_ : tempc = ALEF_U_H ; break;
+ 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 _AYN :
+ case AYN_ :
+ case _AYN_ : tempc = AYN ; break;
+ case _GHAYN :
+ case GHAYN_ :
+ case _GHAYN_ : tempc = GHAYN ; break;
+ case _FE : tempc = FE ; break;
+ case _GHAF : tempc = GHAF ; break;
+ case _KAF : tempc = KAF ; break;
+ case _GAF : tempc = GAF ; break;
+ case _LAM : tempc = LAM ; break;
+ case _MIM : tempc = MIM ; break;
+ case _NOON : tempc = NOON ; break;
+ case _YE :
+ case YE_ : tempc = YE ; break;
+ case _YEE :
+ case YEE_ : tempc = YEE ; break;
+ case TEE_ : tempc = TEE ; break;
+ case _IE :
+ case IE_ : tempc = IE ; break;
+ case _HE :
+ case _HE_ : tempc = F_HE ; break;
+ default : tempc = c ;
}
- return c;
+
+ return tempc;
}
/// Is the character under the cursor+offset in the given buffer a join type.
@@ -388,51 +285,34 @@ static bool F_is_TyC_TyD(int c)
/// @param c The character to convert.
///
/// @return The character converted into a leading type.
-static int toF_TyB(int c)
+static char_u toF_TyB(int c)
{
- switch (c) {
- case ALEF_:
- return ALEF;
-
- case ALEF_U_H_:
- return ALEF_U_H;
-
- case _AYN_:
- return _AYN;
-
- case AYN_:
- // exception - there are many of them
- return AYN;
-
- case _GHAYN_:
- return _GHAYN;
-
- case GHAYN_:
- // exception - there are many of them
- return GHAYN;
-
- case _HE_:
- return _HE;
-
- case YE_:
- return YE;
-
- case IE_:
- return IE;
-
- case TEE_:
- return TEE;
+ char_u tempc;
- case YEE_:
- return YEE;
+ switch (c) {
+ case ALEF_ : tempc = ALEF ; break;
+ case ALEF_U_H_ : tempc = ALEF_U_H ; break;
+ case _AYN_ : tempc = _AYN ; break;
+ case AYN_ : tempc = AYN ; break; // exception - there are many
+ case _GHAYN_ : tempc = _GHAYN ; break;
+ case GHAYN_ : tempc = GHAYN ; break; // exception - there are many
+ 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:
+ assert(c >= 0 && c <= UCHAR_MAX);
+ tempc = (char_u)c;
}
- return c;
+
+ return tempc;
}
/// Overwrite the current redo and cursor characters + left adjust
///
/// @param c
-static void put_curr_and_l_to_X(int c)
+static void put_curr_and_l_to_X(char_u c)
{
int tempc;
@@ -465,7 +345,7 @@ static void put_curr_and_l_to_X(int c)
put_and_redo(c);
}
-static void put_and_redo(int c)
+static void put_and_redo(char_u c)
{
pchar_cursor(c);
AppendCharToRedobuff(K_BS);
@@ -475,110 +355,39 @@ 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)
{
- int tempc, curc;
+ int curc;
+ char_u tempc;
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:
+ 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();
@@ -621,55 +430,21 @@ static void chg_c_toX_orX(void)
/// Change the char. under the cursor to a _X_ or X_ type
static void chg_c_to_X_orX_(void)
{
- int tempc;
+ char_u 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) {
@@ -689,15 +464,14 @@ static void chg_c_to_X_or_X(void)
if ((tempc == F_HE) && (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR))) {
tempc = _HE_;
dec_cursor();
- put_and_redo(tempc);
+ put_and_redo((char_u)tempc);
return;
}
-
dec_cursor();
}
if ((tempc = toF_Xor_X_(tempc)) != 0) {
- put_and_redo(tempc);
+ put_and_redo((char_u)tempc);
}
}
@@ -722,56 +496,22 @@ static void chg_l_to_X_orX_(void)
}
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) {
- put_and_redo(tempc);
+ put_and_redo((char_u)tempc);
}
if (p_ri) {
@@ -784,7 +524,7 @@ static void chg_l_to_X_orX_(void)
/// Change the character left to the cursor to a X or _X type
static void chg_l_toXor_X(void)
{
- int tempc;
+ char_u tempc;
if ((curwin->w_cursor.col != 0) &&
(curwin->w_cursor.col + 1 == (colnr_T)STRLEN(get_cursor_line_ptr()))) {
@@ -802,52 +542,18 @@ static void chg_l_toXor_X(void)
}
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) {
@@ -864,7 +570,8 @@ static void chg_l_toXor_X(void)
/// Change the character right to the cursor to a _X or _X_ type
static void chg_r_to_Xor_X_(void)
{
- int tempc, c;
+ int tempc;
+ char_u c;
if (curwin->w_cursor.col) {
if (!p_ri) {
@@ -893,13 +600,13 @@ int fkmap(int c)
}
if (VIM_ISDIGIT(c)
- || (((c == '.')
- || (c == '+')
- || (c == '-')
- || (c == '^')
- || (c == '%')
- || (c == '#')
- || (c == '='))
+ || ((c == '.'
+ || c == '+'
+ || c == '-'
+ || c == '^'
+ || c == '%'
+ || c == '#'
+ || c == '=')
&& revins)) {
if (!revins) {
if (curwin->w_cursor.col) {
@@ -1060,158 +767,57 @@ int fkmap(int c)
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;
+ 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;
}
@@ -1246,7 +852,7 @@ int fkmap(int c)
case _HE_:
case _TA:
case _ZA:
- put_curr_and_l_to_X(toF_TyA(tempc));
+ put_curr_and_l_to_X(toF_TyA((char_u)tempc));
break;
case _AYN:
@@ -1276,7 +882,7 @@ int fkmap(int c)
inc_cursor();
}
- put_curr_and_l_to_X(tempc);
+ put_curr_and_l_to_X((char_u)tempc);
break;
case _GHAYN:
@@ -1307,7 +913,7 @@ int fkmap(int c)
inc_cursor();
}
- put_curr_and_l_to_X(tempc);
+ put_curr_and_l_to_X((char_u)tempc);
break;
case _YE:
@@ -1316,8 +922,8 @@ int fkmap(int c)
if (!p_ri) {
if (!curwin->w_cursor.col) {
- put_curr_and_l_to_X((tempc == _YE ? YE :
- (tempc == _IE ? IE : YEE)));
+ put_curr_and_l_to_X(
+ (tempc == _YE ? YE : tempc == _IE ? IE : YEE));
break;
}
}
@@ -1329,11 +935,9 @@ int fkmap(int c)
}
if (F_is_TyB_TyC_TyD(SRC_EDT, AT_CURSOR)) {
- tempc = (tempc == _YE ? YE_ :
- (tempc == _IE ? IE_ : YEE_));
+ tempc = (tempc == _YE ? YE_ : tempc == _IE ? IE_ : YEE_);
} else {
- tempc = (tempc == _YE ? YE :
- (tempc == _IE ? IE : YEE));
+ tempc = (tempc == _YE ? YE : tempc == _IE ? IE : YEE);
}
if (p_ri) {
@@ -1342,7 +946,7 @@ int fkmap(int c)
inc_cursor();
}
- put_curr_and_l_to_X(tempc);
+ put_curr_and_l_to_X((char_u)tempc);
break;
}
@@ -1353,200 +957,70 @@ int fkmap(int c)
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;
+ 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 '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(get_cursor_line_ptr())) {
@@ -1621,7 +1095,6 @@ int fkmap(int c)
return tempc;
case 'i':
-
if (!curwin->w_cursor.col && STRLEN(get_cursor_line_ptr())) {
if (!p_ri && !F_is_TyE(tempc)) {
chg_c_to_X_orX_();
@@ -1656,7 +1129,6 @@ int fkmap(int c)
break;
case 'J':
-
if (!curwin->w_cursor.col && STRLEN(get_cursor_line_ptr())) {
if (p_ri) {
chg_c_to_X_or_X();
@@ -1683,50 +1155,18 @@ int fkmap(int c)
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 '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(get_cursor_line_ptr())) {
@@ -1758,19 +1198,11 @@ int fkmap(int c)
}
break;
- case 'v':
- case 'V':
- tempc = RE;
- break;
-
- case 'w':
- tempc = _SAD;
- break;
-
- case 'x':
- case 'X':
- tempc = _TA;
- 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(get_cursor_line_ptr())) {
@@ -1803,33 +1235,13 @@ int fkmap(int c)
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;
+ 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))) {
@@ -1871,99 +1283,50 @@ int fkmap(int c)
/// @param c The character to convert.
///
/// @return The non-leading Farsi character converted to a leading type.
-static int toF_leading(int c)
+static char_u toF_leading(char_u c)
{
- switch (c) {
- case ALEF_:
- return ALEF;
-
- case ALEF_U_H_:
- return ALEF_U_H;
-
- case BE:
- return _BE;
-
- case PE:
- return _PE;
+ char_u tempc;
- 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;
+ switch (c) {
+ case ALEF_ : tempc = ALEF ; break;
+ case ALEF_U_H_ : tempc = ALEF_U_H ; break;
+ 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 AYN :
+ case AYN_ :
+ case _AYN_ : tempc = _AYN ; break;
+ case GHAYN :
+ case GHAYN_ :
+ case _GHAYN_ : tempc = _GHAYN ; break;
+ case FE : tempc = _FE ; break;
+ case GHAF : tempc = _GHAF ; break;
+ case KAF : tempc = _KAF ; break;
+ case GAF : tempc = _GAF ; break;
+ case LAM : tempc = _LAM ; break;
+ case MIM : tempc = _MIM ; break;
+ case NOON : tempc = _NOON ; break;
+ case _HE_ :
+ case F_HE : tempc = _HE ; break;
+ case YE :
+ case YE_ : tempc = _YE ; break;
+ case IE_ :
+ case IE : tempc = _IE ; break;
+ case YEE :
+ case YEE_ : tempc = _YEE ; break;
+ default : tempc = c;
}
- return c;
+
+ return tempc;
}
/// Convert a given Farsi char into right joining type.
@@ -1971,102 +1334,51 @@ static int toF_leading(int c)
/// @param c The character to convert.
///
/// @return The Farsi character converted into a right joining type
-static int toF_Rjoin(int c)
+static char_u toF_Rjoin(char_u 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;
+ char_u 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:
- 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;
+ switch (c) {
+ case ALEF : tempc = ALEF_ ; break;
+ case ALEF_U_H : tempc = ALEF_U_H_ ; break;
+ 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 AYN :
+ case AYN_ :
+ case _AYN : tempc = _AYN_ ; break;
+ case GHAYN :
+ case GHAYN_ :
+ case _GHAYN_ : tempc = _GHAYN_ ; break;
+ case FE : tempc = _FE ; break;
+ case GHAF : tempc = _GHAF ; break;
+ case KAF : tempc = _KAF ; break;
+ case GAF : tempc = _GAF ; break;
+ case LAM : tempc = _LAM ; break;
+ case MIM : tempc = _MIM ; break;
+ case NOON : tempc = _NOON ; break;
+ case _HE :
+ case F_HE : tempc = _HE_ ; break;
+ case YE :
+ case YE_ : tempc = _YE ; break;
+ case IE_ :
+ case IE : tempc = _IE ; break;
+ case TEE : tempc = TEE_ ; break;
+ case YEE :
+ case YEE_ : tempc = _YEE ; break;
+ default : tempc = c ;
}
- return c;
+
+ return tempc;
}
/// Can a given Farsi character join via its left edj.
@@ -2074,7 +1386,7 @@ static int toF_Rjoin(int c)
/// @param c The character to check.
///
/// @return true if the character can join via its left edj.
-static bool canF_Ljoin(int c)
+static bool canF_Ljoin(char_u c)
{
switch (c) {
case _BE:
@@ -2148,7 +1460,7 @@ static bool canF_Ljoin(int c)
/// @param c
///
/// @return true if the character can join via its right edj.
-static bool canF_Rjoin(int c)
+static bool canF_Rjoin(char_u c)
{
switch (c) {
case ALEF:
@@ -2174,7 +1486,7 @@ static bool canF_Rjoin(int c)
/// @param c
///
/// @return true if the character is a terminating type.
-static bool F_isterm(int c)
+static bool F_isterm(char_u c)
{
switch (c) {
case ALEF:
@@ -2200,105 +1512,48 @@ static bool F_isterm(int c)
/// @param c The character to convert.
///
/// @return The character converted into an ending type.
-static int toF_ending(int c)
+static char_u toF_ending(char_u 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;
+ char_u tempc;
- 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;
+ switch (c) {
+ 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 _AYN : tempc = AYN ; break;
+ case _AYN_ : tempc = AYN_ ; break;
+ case _GHAYN : tempc = GHAYN ; break;
+ case _GHAYN_ : tempc = GHAYN_ ; 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 _LAM : tempc = LAM ; break;
+ case _MIM : tempc = MIM ; break;
+ case _NOON : tempc = NOON ; break;
+ case _YE : tempc = YE_ ; break;
+ case YE_ : tempc = YE ; break;
+ case _YEE : tempc = YEE_ ; break;
+ case YEE_ : tempc = YEE ; break;
+ case TEE : tempc = TEE_ ; break;
+ case _IE : tempc = IE_ ; break;
+ case IE_ : tempc = IE ; break;
+ case _HE :
+ case _HE_ : tempc = F_HE ; break;
+ default : tempc = c ;
}
- return c;
+
+ return tempc;
}
/// Convert the Farsi 3342 standard into Farsi VIM.
@@ -2369,7 +1624,7 @@ void conv_to_pstd(void)
static void lrswapbuf(char_u *buf, int len)
{
char_u *s, *e;
- int c;
+ char_u c;
s = buf;
e = buf + len - 1;
@@ -2442,6 +1697,7 @@ char_u* lrF_sub(char_u *ibuf)
// Find the boundary of the search path
while (((p = vim_strchr(p + 1, '/')) != NULL) && p[-1] == '\\') {
+ // empty
}
if (p == NULL) {
@@ -2560,15 +1816,15 @@ int cmdl_fkmap(int c)
case _NOON:
case _HE:
case _HE_:
- cmd_pchar(toF_TyA(tempc), AT_CURSOR);
+ cmd_pchar(toF_TyA((char_u)tempc), AT_CURSOR);
break;
case _AYN_:
- cmd_pchar(AYN_, AT_CURSOR);
+ cmd_pchar(AYN_, AT_CURSOR);
break;
case _GHAYN_:
- cmd_pchar(GHAYN_, AT_CURSOR);
+ cmd_pchar(GHAYN_, AT_CURSOR);
break;
case _IE:
@@ -2596,190 +1852,70 @@ int cmdl_fkmap(int c)
}
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 '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 '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) {
@@ -2823,39 +1959,18 @@ int cmdl_fkmap(int c)
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 '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)) {
@@ -2864,16 +1979,11 @@ int cmdl_fkmap(int c)
return _AYN;
}
- case 'v':
- case 'V':
- return RE;
-
- case 'w':
- return _SAD;
-
- case 'x':
- case 'X':
- return _TA;
+ 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)) {
@@ -2882,24 +1992,13 @@ int cmdl_fkmap(int c)
return _GHAYN;
}
- case 'z':
- case 'Z':
- return _ZA;
-
- case ';':
- return _KAF;
-
- case '\'':
- return _GAF;
-
- case ',':
- return WAW;
-
- case '[':
- return _JIM;
-
- case ']':
- return _CHE;
+ case 'z' :
+ case 'Z' : return _ZA ;
+ case ';' : return _KAF ;
+ case '\'' : return _GAF ;
+ case ',' : return WAW ;
+ case '[' : return _JIM ;
+ case ']' : return _CHE ;
}
return c;
diff --git a/src/nvim/fold.c b/src/nvim/fold.c
index 267c586543..281e5b5768 100644
--- a/src/nvim/fold.c
+++ b/src/nvim/fold.c
@@ -114,9 +114,9 @@ static int prev_lnum_lvl = -1;
#define DONE_ACTION 1 /* did close or open a fold */
#define DONE_FOLD 2 /* did find a fold */
-static int foldstartmarkerlen;
+static size_t foldstartmarkerlen;
static char_u *foldendmarker;
-static int foldendmarkerlen;
+static size_t foldendmarkerlen;
/* Exported folding functions. {{{1 */
/* copyFoldingState() {{{2 */
@@ -622,7 +622,7 @@ void foldCreate(linenr_T start, linenr_T end)
if (end_rel < fp[cont - 1].fd_top + fp[cont - 1].fd_len - 1)
end_rel = fp[cont - 1].fd_top + fp[cont - 1].fd_len - 1;
/* Move contained folds to inside new fold. */
- memmove(fold_ga.ga_data, fp, sizeof(fold_T) * cont);
+ memmove(fold_ga.ga_data, fp, sizeof(fold_T) * (size_t)cont);
fold_ga.ga_len += cont;
i += cont;
@@ -634,7 +634,7 @@ void foldCreate(linenr_T start, linenr_T end)
/* Move remaining entries to after the new fold. */
if (i < gap->ga_len)
memmove(fp + 1, (fold_T *)gap->ga_data + i,
- sizeof(fold_T) * (gap->ga_len - i));
+ sizeof(fold_T) * (size_t)(gap->ga_len - i));
gap->ga_len = gap->ga_len + 1 - cont;
/* insert new fold */
@@ -1051,7 +1051,7 @@ static int foldFind(garray_T *gap, linenr_T lnum, fold_T **fpp)
low = 0;
high = gap->ga_len - 1;
while (low <= high) {
- int i = (low + high) / 2;
+ linenr_T i = (low + high) / 2;
if (fp[i].fd_top > lnum)
/* fold below lnum, adjust high */
high = i - 1;
@@ -1292,7 +1292,6 @@ static void deleteFoldEntry(garray_T *gap, int idx, int recursive)
{
fold_T *fp;
int i;
- long moved;
fold_T *nfp;
fp = (fold_T *)gap->ga_data + idx;
@@ -1301,12 +1300,12 @@ static void deleteFoldEntry(garray_T *gap, int idx, int recursive)
deleteFoldRecurse(&fp->fd_nested);
--gap->ga_len;
if (idx < gap->ga_len)
- memmove(fp, fp + 1, sizeof(fold_T) * (gap->ga_len - idx));
+ memmove(fp, fp + 1, sizeof(fold_T) * (size_t)(gap->ga_len - idx));
} else {
/* Move nested folds one level up, to overwrite the fold that is
* deleted. */
- moved = fp->fd_nested.ga_len;
- ga_grow(gap, (int)(moved - 1));
+ int moved = fp->fd_nested.ga_len;
+ ga_grow(gap, moved - 1);
{
/* Get "fp" again, the array may have been reallocated. */
fp = (fold_T *)gap->ga_data + idx;
@@ -1324,9 +1323,9 @@ static void deleteFoldEntry(garray_T *gap, int idx, int recursive)
/* move the existing folds down to make room */
if (idx + 1 < gap->ga_len)
memmove(fp + moved, fp + 1,
- sizeof(fold_T) * (gap->ga_len - (idx + 1)));
+ sizeof(fold_T) * (size_t)(gap->ga_len - (idx + 1)));
/* move the contained folds one level up */
- memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved));
+ memmove(fp, nfp, sizeof(fold_T) * (size_t)moved);
free(nfp);
gap->ga_len += moved - 1;
}
@@ -1584,17 +1583,16 @@ static void foldCreateMarkers(linenr_T start, linenr_T end)
/*
* Add "marker[markerlen]" in 'commentstring' to line "lnum".
*/
-static void foldAddMarker(linenr_T lnum, char_u *marker, int markerlen)
+static void foldAddMarker(linenr_T lnum, char_u *marker, size_t markerlen)
{
char_u *cms = curbuf->b_p_cms;
char_u *line;
- int line_len;
char_u *newline;
char_u *p = (char_u *)strstr((char *)curbuf->b_p_cms, "%s");
/* Allocate a new line: old-line + 'cms'-start + marker + 'cms'-end */
line = ml_get(lnum);
- line_len = (int)STRLEN(line);
+ size_t line_len = STRLEN(line);
if (u_save(lnum - 1, lnum + 1) == OK) {
newline = xmalloc(line_len + markerlen + STRLEN(cms) + 1);
@@ -1629,8 +1627,8 @@ deleteFoldMarkers (
}
}
foldDelMarker(fp->fd_top + lnum_off, curwin->w_p_fmr, foldstartmarkerlen);
- foldDelMarker(fp->fd_top + lnum_off + fp->fd_len - 1,
- foldendmarker, foldendmarkerlen);
+ foldDelMarker(fp->fd_top + lnum_off + fp->fd_len - 1, foldendmarker,
+ foldendmarkerlen);
}
/* foldDelMarker() {{{2 */
@@ -1640,7 +1638,7 @@ deleteFoldMarkers (
* If the marker is not found, there is no error message. Could a missing
* close-marker.
*/
-static void foldDelMarker(linenr_T lnum, char_u *marker, int markerlen)
+static void foldDelMarker(linenr_T lnum, char_u *marker, size_t markerlen)
{
char_u *newline;
char_u *cms = curbuf->b_p_cms;
@@ -1652,7 +1650,7 @@ static void foldDelMarker(linenr_T lnum, char_u *marker, int markerlen)
continue;
}
/* Found the marker, include a digit if it's there. */
- int len = markerlen;
+ size_t len = markerlen;
if (VIM_ISDIGIT(p[len]))
++len;
if (*cms != NUL) {
@@ -1662,7 +1660,7 @@ static void foldDelMarker(linenr_T lnum, char_u *marker, int markerlen)
&& STRNCMP(p - (cms2 - cms), cms, cms2 - cms) == 0
&& STRNCMP(p + len, cms2 + 2, STRLEN(cms2 + 2)) == 0) {
p -= cms2 - cms;
- len += (int)STRLEN(cms) - 2;
+ len += STRLEN(cms) - 2;
}
}
if (u_save(lnum - 1, lnum + 1) == OK) {
@@ -1781,27 +1779,23 @@ char_u *get_foldtext(win_T *wp, linenr_T lnum, linenr_T lnume,
*/
void foldtext_cleanup(char_u *str)
{
- char_u *cms_start; /* first part or the whole comment */
- int cms_slen = 0; /* length of cms_start */
- char_u *cms_end; /* last part of the comment or NULL */
- int cms_elen = 0; /* length of cms_end */
char_u *s;
char_u *p;
- int len;
int did1 = FALSE;
int did2 = FALSE;
/* Ignore leading and trailing white space in 'commentstring'. */
- cms_start = skipwhite(curbuf->b_p_cms);
- cms_slen = (int)STRLEN(cms_start);
+ char_u *cms_start = skipwhite(curbuf->b_p_cms);
+ size_t cms_slen = STRLEN(cms_start);
while (cms_slen > 0 && vim_iswhite(cms_start[cms_slen - 1]))
--cms_slen;
/* locate "%s" in 'commentstring', use the part before and after it. */
- cms_end = (char_u *)strstr((char *)cms_start, "%s");
+ char_u *cms_end = (char_u *)strstr((char *)cms_start, "%s");
+ size_t cms_elen = 0;
if (cms_end != NULL) {
- cms_elen = cms_slen - (int)(cms_end - cms_start);
- cms_slen = (int)(cms_end - cms_start);
+ cms_elen = cms_slen - (size_t)(cms_end - cms_start);
+ cms_slen = (size_t)(cms_end - cms_start);
/* exclude white space before "%s" */
while (cms_slen > 0 && vim_iswhite(cms_start[cms_slen - 1]))
@@ -1809,13 +1803,13 @@ void foldtext_cleanup(char_u *str)
/* skip "%s" and white space after it */
s = skipwhite(cms_end + 2);
- cms_elen -= (int)(s - cms_end);
+ cms_elen -= (size_t)(s - cms_end);
cms_end = s;
}
parseMarker(curwin);
for (s = str; *s != NUL; ) {
- len = 0;
+ size_t len = 0;
if (STRNCMP(s, curwin->w_p_fmr, foldstartmarkerlen) == 0)
len = foldstartmarkerlen;
else if (STRNCMP(s, foldendmarker, foldendmarkerlen) == 0)
@@ -1830,7 +1824,7 @@ void foldtext_cleanup(char_u *str)
;
if (p >= str + cms_slen
&& STRNCMP(p - cms_slen, cms_start, cms_slen) == 0) {
- len += (int)(s - p) + cms_slen;
+ len += (size_t)(s - p) + cms_slen;
s = p - cms_slen;
}
} else if (cms_end != NULL) {
@@ -2035,8 +2029,8 @@ static void foldUpdateIEMS(win_T *wp, linenr_T top, linenr_T bot)
if (fline.lvl > 0) {
invalid_top = fline.lnum;
invalid_bot = end;
- end = foldUpdateIEMSRecurse(&wp->w_folds,
- 1, start, &fline, getlevel, end, FD_LEVEL);
+ end = foldUpdateIEMSRecurse(&wp->w_folds, 1, start, &fline, getlevel, end,
+ FD_LEVEL);
start = fline.lnum;
} else {
if (fline.lnum == wp->w_buffer->b_ml.ml_line_count)
@@ -2095,7 +2089,7 @@ static linenr_T foldUpdateIEMSRecurse(garray_T *gap, int level,
linenr_T startlnum, fline_T *flp,
LevelGetter getlevel,
linenr_T bot,
- int topflags /* flags used by containing fold */
+ char topflags /* containing fold flags */
)
{
linenr_T ll;
@@ -2333,8 +2327,8 @@ static linenr_T foldUpdateIEMSRecurse(garray_T *gap, int level,
flp->off += fp->fd_top;
i = (int)(fp - (fold_T *)gap->ga_data);
bot = foldUpdateIEMSRecurse(&fp->fd_nested, level + 1,
- startlnum2 - fp->fd_top, flp, getlevel,
- bot - fp->fd_top, fp->fd_flags);
+ startlnum2 - fp->fd_top, flp, getlevel,
+ bot - fp->fd_top, fp->fd_flags);
fp = (fold_T *)gap->ga_data + i;
flp->lnum += fp->fd_top;
flp->lnum_save += fp->fd_top;
@@ -2468,7 +2462,7 @@ static void foldInsert(garray_T *gap, int i)
fp = (fold_T *)gap->ga_data + i;
if (i < gap->ga_len)
- memmove(fp + 1, fp, sizeof(fold_T) * (gap->ga_len - i));
+ memmove(fp + 1, fp, sizeof(fold_T) * (size_t)(gap->ga_len - i));
++gap->ga_len;
ga_init(&fp->fd_nested, (int)sizeof(fold_T), 10);
}
@@ -2649,9 +2643,7 @@ static void foldlevelIndent(fline_T *flp)
} else
flp->lvl = get_indent_buf(buf, lnum) / get_sw_value(curbuf);
if (flp->lvl > flp->wp->w_p_fdn) {
- flp->lvl = flp->wp->w_p_fdn;
- if (flp->lvl < 0)
- flp->lvl = 0;
+ flp->lvl = (int) MAX(0, flp->wp->w_p_fdn);
}
}
@@ -2768,8 +2760,8 @@ static void foldlevelExpr(fline_T *flp)
static void parseMarker(win_T *wp)
{
foldendmarker = vim_strchr(wp->w_p_fmr, ',');
- foldstartmarkerlen = (int)(foldendmarker++ - wp->w_p_fmr);
- foldendmarkerlen = (int)STRLEN(foldendmarker);
+ foldstartmarkerlen = (size_t)(foldendmarker++ - wp->w_p_fmr);
+ foldendmarkerlen = STRLEN(foldendmarker);
}
/* foldlevelMarker() {{{2 */
@@ -2822,9 +2814,8 @@ static void foldlevelMarker(fline_T *flp)
++flp->lvl_next;
++flp->start;
}
- } else if (*s == cend
- && STRNCMP(s + 1, foldendmarker + 1,
- foldendmarkerlen - 1) == 0) {
+ } else if (*s == cend && STRNCMP(s + 1, foldendmarker + 1,
+ foldendmarkerlen - 1) == 0) {
/* found endmarker: set flp->lvl_next */
s += foldendmarkerlen;
if (VIM_ISDIGIT(*s)) {
diff --git a/src/nvim/fold.h b/src/nvim/fold.h
index 1cbd7af5da..2ff10c0e91 100644
--- a/src/nvim/fold.h
+++ b/src/nvim/fold.h
@@ -1,14 +1,16 @@
#ifndef NVIM_FOLD_H
#define NVIM_FOLD_H
+#include "nvim/pos.h"
+
/*
* Info used to pass info about a fold from the fold-detection code to the
* code that displays the foldcolumn.
*/
typedef struct foldinfo {
+ linenr_T fi_lnum; /* line number where fold starts */
int fi_level; /* level of the fold; when this is zero the
other fields are invalid */
- int fi_lnum; /* line number where fold starts */
int fi_low_level; /* lowest fold level that starts in the same
line */
} foldinfo_T;
diff --git a/src/nvim/indent_c.c b/src/nvim/indent_c.c
index 8310f635c9..3b9214abc1 100644
--- a/src/nvim/indent_c.c
+++ b/src/nvim/indent_c.c
@@ -1332,7 +1332,7 @@ void parse_cino(buf_T *buf)
char_u *l;
int divider;
int fraction = 0;
- int sw = (int)get_sw_value(buf);
+ int sw = get_sw_value(buf);
/*
* Set the default values.
diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c
index 5d8b88601e..e58ec71e77 100644
--- a/src/nvim/misc1.c
+++ b/src/nvim/misc1.c
@@ -796,7 +796,7 @@ open_line (
) {
++curwin->w_cursor.lnum;
if (did_si) {
- int sw = (int)get_sw_value(curbuf);
+ int sw = get_sw_value(curbuf);
if (p_sr)
newindent -= newindent % sw;
diff --git a/src/nvim/move.c b/src/nvim/move.c
index 1ba064c65f..65f2853073 100644
--- a/src/nvim/move.c
+++ b/src/nvim/move.c
@@ -16,6 +16,7 @@
* The 'scrolloff' option makes this a bit complicated.
*/
+#include <assert.h>
#include <inttypes.h>
#include <stdbool.h>
@@ -135,13 +136,13 @@ void update_topline(void)
{
long line_count;
int halfheight;
- int n;
+ long n;
linenr_T old_topline;
int old_topfill;
linenr_T lnum;
int check_topline = FALSE;
int check_botline = FALSE;
- int save_so = p_so;
+ long save_so = p_so;
if (!screen_valid(TRUE))
return;
@@ -342,9 +343,9 @@ void update_topline_win(win_T* win)
*/
static int scrolljump_value(void)
{
- if (p_sj >= 0)
- return (int)p_sj;
- return (curwin->w_height * -p_sj) / 100;
+ long result = p_sj >= 0 ? p_sj : (curwin->w_height * -p_sj) / 100;
+ assert(result <= INT_MAX);
+ return (int)result;
}
/*
@@ -711,7 +712,7 @@ int win_col_off(win_T *wp)
{
return ((wp->w_p_nu || wp->w_p_rnu) ? number_width(wp) + 1 : 0)
+ (cmdwin_type == 0 || wp != curwin ? 0 : 1)
- + wp->w_p_fdc
+ + (int)wp->w_p_fdc
+ (wp->w_buffer->b_signlist != NULL ? 2 : 0)
;
}
@@ -831,9 +832,9 @@ curs_columns (
* If we get closer to the edge than 'sidescrolloff', scroll a little
* extra
*/
- off_left = (int)startcol - (int)curwin->w_leftcol - p_siso;
- off_right = (int)endcol - (int)(curwin->w_leftcol + curwin->w_width
- - p_siso) + 1;
+ assert(p_siso <= INT_MAX);
+ off_left = startcol - curwin->w_leftcol - (int)p_siso;
+ off_right = endcol - curwin->w_leftcol - curwin->w_width + (int)p_siso + 1;
if (off_left < 0 || off_right > 0) {
if (off_left < 0)
diff = -off_left;
@@ -845,8 +846,10 @@ curs_columns (
if (p_ss == 0 || diff >= textwidth / 2 || off_right >= off_left)
new_leftcol = curwin->w_wcol - extra - textwidth / 2;
else {
- if (diff < p_ss)
- diff = p_ss;
+ if (diff < p_ss) {
+ assert(p_ss <= INT_MAX);
+ diff = (int)p_ss;
+ }
if (off_left < 0)
new_leftcol = curwin->w_leftcol - diff;
else
@@ -902,8 +905,10 @@ curs_columns (
if (p_lines == 0)
p_lines = plines_win(curwin, curwin->w_cursor.lnum, FALSE);
--p_lines;
- if (p_lines > curwin->w_wrow + p_so)
- n = curwin->w_wrow + p_so;
+ if (p_lines > curwin->w_wrow + p_so) {
+ assert(p_so <= INT_MAX);
+ n = curwin->w_wrow + (int)p_so;
+ }
else
n = p_lines;
if ((colnr_T)n >= curwin->w_height + curwin->w_skipcol / width)
@@ -922,7 +927,8 @@ curs_columns (
curwin->w_skipcol = n * width;
} else if (extra == 1) {
/* less then 'scrolloff' lines above, decrease skipcol */
- extra = (curwin->w_skipcol + p_so * width - curwin->w_virtcol
+ assert(p_so <= INT_MAX);
+ extra = (curwin->w_skipcol + (int)p_so * width - curwin->w_virtcol
+ width - 1) / width;
if (extra > 0) {
if ((colnr_T)(extra * width) > curwin->w_skipcol)
@@ -974,7 +980,7 @@ scrolldown (
int byfold /* TRUE: count a closed fold as one line */
)
{
- long done = 0; /* total # of physical lines done */
+ int done = 0; /* total # of physical lines done */
int wrow;
int moved = FALSE;
@@ -1331,7 +1337,8 @@ void scroll_cursor_top(int min_scroll, int always)
linenr_T old_topline = curwin->w_topline;
linenr_T old_topfill = curwin->w_topfill;
linenr_T new_topline;
- int off = p_so;
+ assert(p_so <= INT_MAX);
+ int off = (int)p_so;
if (mouse_dragging > 0)
off = mouse_dragging - 1;
@@ -1472,7 +1479,7 @@ void scroll_cursor_bot(int min_scroll, int set_topbot)
int old_topfill = curwin->w_topfill;
int fill_below_window;
linenr_T old_botline = curwin->w_botline;
- linenr_T old_valid = curwin->w_valid;
+ int old_valid = curwin->w_valid;
int old_empty_rows = curwin->w_empty_rows;
linenr_T cln; /* Cursor Line Number */
@@ -1708,8 +1715,9 @@ void cursor_correct(void)
* How many lines we would like to have above/below the cursor depends on
* whether the first/last line of the file is on screen.
*/
- above_wanted = p_so;
- below_wanted = p_so;
+ assert(p_so <= INT_MAX);
+ above_wanted = (int)p_so;
+ below_wanted = (int)p_so;
if (mouse_dragging > 0) {
above_wanted = mouse_dragging - 1;
below_wanted = mouse_dragging - 1;
@@ -2040,14 +2048,14 @@ void halfpage(bool flag, linenr_T Prenum)
{
long scrolled = 0;
int i;
- int n;
int room;
if (Prenum)
curwin->w_p_scr = (Prenum > curwin->w_height) ?
curwin->w_height : Prenum;
- n = (curwin->w_p_scr <= curwin->w_height) ?
- curwin->w_p_scr : curwin->w_height;
+ assert(curwin->w_p_scr <= INT_MAX);
+ int n = curwin->w_p_scr <= curwin->w_height ? (int)curwin->w_p_scr
+ : curwin->w_height;
validate_botline();
room = curwin->w_empty_rows;
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
index 5921e27282..4c5a002f81 100644
--- a/src/nvim/ops.c
+++ b/src/nvim/ops.c
@@ -278,7 +278,7 @@ shift_line (
{
int count;
int i, j;
- int p_sw = (int)get_sw_value(curbuf);
+ int p_sw = get_sw_value(curbuf);
count = get_indent(); /* get current indent */
@@ -321,7 +321,7 @@ static void shift_block(oparg_T *oap, int amount)
int total;
char_u *newp, *oldp;
int oldcol = curwin->w_cursor.col;
- int p_sw = (int)get_sw_value(curbuf);
+ int p_sw = get_sw_value(curbuf);
int p_ts = (int)curbuf->b_p_ts;
struct block_def bd;
int incr;
diff --git a/src/nvim/option.c b/src/nvim/option.c
index 2d016d8350..929b96a3f8 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -7653,18 +7653,22 @@ int check_ff_value(char_u *p)
* Return the effective shiftwidth value for current buffer, using the
* 'tabstop' value when 'shiftwidth' is zero.
*/
-long get_sw_value(buf_T *buf)
+int get_sw_value(buf_T *buf)
{
- return buf->b_p_sw ? buf->b_p_sw : buf->b_p_ts;
+ long result = buf->b_p_sw ? buf->b_p_sw : buf->b_p_ts;
+ assert(result >= 0 && result <= INT_MAX);
+ return (int)result;
}
/*
* Return the effective softtabstop value for the current buffer, using the
* 'tabstop' value when 'softtabstop' is negative.
*/
-long get_sts_value(void)
+int get_sts_value(void)
{
- return curbuf->b_p_sts < 0 ? get_sw_value(curbuf) : curbuf->b_p_sts;
+ long result = curbuf->b_p_sts < 0 ? get_sw_value(curbuf) : curbuf->b_p_sts;
+ assert(result >= 0 && result <= INT_MAX);
+ return (int)result;
}
/*
diff --git a/src/nvim/popupmnu.c b/src/nvim/popupmnu.c
index 1ea12d6862..7ef962fa2f 100644
--- a/src/nvim/popupmnu.c
+++ b/src/nvim/popupmnu.c
@@ -2,6 +2,7 @@
///
/// Popup menu (PUM)
//
+#include <assert.h>
#include <inttypes.h>
#include <stdbool.h>
@@ -101,7 +102,7 @@ redo:
}
if ((p_ph > 0) && (pum_height > p_ph)) {
- pum_height = p_ph;
+ pum_height = (int)p_ph;
}
// Put the pum below "row" if possible. If there are few lines decide on
@@ -126,8 +127,8 @@ redo:
}
if ((p_ph > 0) && (pum_height > p_ph)) {
- pum_row += pum_height - p_ph;
- pum_height = p_ph;
+ pum_row += pum_height - (int)p_ph;
+ pum_height = (int)p_ph;
}
} else {
// pum below "row"
@@ -148,7 +149,7 @@ redo:
}
if ((p_ph > 0) && (pum_height > p_ph)) {
- pum_height = p_ph;
+ pum_height = (int)p_ph;
}
}
@@ -219,7 +220,9 @@ redo:
if (curwin->w_p_rl) {
pum_width = pum_col - pum_scrollbar + 1;
} else {
- pum_width = Columns - pum_col - pum_scrollbar;
+ assert(Columns - pum_col - pum_scrollbar >= INT_MIN
+ && Columns - pum_col - pum_scrollbar <= INT_MAX);
+ pum_width = (int)(Columns - pum_col - pum_scrollbar);
}
if ((pum_width > max_width + kind_width + extra_width + 1)
@@ -233,11 +236,13 @@ redo:
} else if (Columns < def_width) {
// not enough room, will use what we have
if (curwin->w_p_rl) {
- pum_col = Columns - 1;
+ assert(Columns - 1 >= INT_MIN);
+ pum_col = (int)(Columns - 1);
} else {
pum_col = 0;
}
- pum_width = Columns - 1;
+ assert(Columns - 1 >= INT_MIN);
+ pum_width = (int)(Columns - 1);
} else {
if (max_width > PUM_DEF_WIDTH) {
// truncate
@@ -247,7 +252,8 @@ redo:
if (curwin->w_p_rl) {
pum_col = max_width - 1;
} else {
- pum_col = Columns - max_width;
+ assert(Columns - max_width >= INT_MIN && Columns - max_width <= INT_MAX);
+ pum_col = (int)(Columns - max_width);
}
pum_width = max_width - pum_scrollbar;
}
@@ -345,7 +351,7 @@ void pum_redraw(void)
// Display the text that fits or comes before a Tab.
// First convert it to printable characters.
char_u *st;
- int saved = *p;
+ char_u saved = *p;
*p = NUL;
st = transstr(s);
@@ -535,7 +541,7 @@ static int pum_set_selected(int n, int repeat)
g_do_tagpreview = 3;
if ((p_pvh > 0) && (p_pvh < g_do_tagpreview)) {
- g_do_tagpreview = p_pvh;
+ g_do_tagpreview = (int)p_pvh;
}
RedrawingDisabled++;
resized = prepare_tagpreview(false);