summaryrefslogtreecommitdiffstats
path: root/src/evalfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-09-15 21:00:54 +0200
committerBram Moolenaar <Bram@vim.org>2019-09-15 21:00:54 +0200
commit9c658c9eacbd97e2c071f652a0155f71db94c0f3 (patch)
tree2f321ccf7e6576d1b9a4a0df27d913702b2cc1f4 /src/evalfunc.c
parent248fdb33320641804afed4bdf5dc5cddb1cf64f5 (diff)
patch 8.1.2042: the evalfunc.c file is too bigv8.1.2042
Problem: The evalfunc.c file is too big. Solution: Move getchar() and parse_queued_messages() to getchar.c.
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r--src/evalfunc.c121
1 files changed, 0 insertions, 121 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c
index b352ea9f89..af72edb18d 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -90,8 +90,6 @@ static void f_function(typval_T *argvars, typval_T *rettv);
static void f_garbagecollect(typval_T *argvars, typval_T *rettv);
static void f_get(typval_T *argvars, typval_T *rettv);
static void f_getchangelist(typval_T *argvars, typval_T *rettv);
-static void f_getchar(typval_T *argvars, typval_T *rettv);
-static void f_getcharmod(typval_T *argvars, typval_T *rettv);
static void f_getcharsearch(typval_T *argvars, typval_T *rettv);
static void f_getcmdwintype(typval_T *argvars, typval_T *rettv);
static void f_getenv(typval_T *argvars, typval_T *rettv);
@@ -2857,125 +2855,6 @@ f_getchangelist(typval_T *argvars, typval_T *rettv)
}
#endif
}
-/*
- * "getchar()" function
- */
- static void
-f_getchar(typval_T *argvars, typval_T *rettv)
-{
- varnumber_T n;
- int error = FALSE;
-
-#ifdef MESSAGE_QUEUE
- // vpeekc() used to check for messages, but that caused problems, invoking
- // a callback where it was not expected. Some plugins use getchar(1) in a
- // loop to await a message, therefore make sure we check for messages here.
- parse_queued_messages();
-#endif
-
- /* Position the cursor. Needed after a message that ends in a space. */
- windgoto(msg_row, msg_col);
-
- ++no_mapping;
- ++allow_keys;
- for (;;)
- {
- if (argvars[0].v_type == VAR_UNKNOWN)
- /* getchar(): blocking wait. */
- n = plain_vgetc();
- else if (tv_get_number_chk(&argvars[0], &error) == 1)
- /* getchar(1): only check if char avail */
- n = vpeekc_any();
- else if (error || vpeekc_any() == NUL)
- /* illegal argument or getchar(0) and no char avail: return zero */
- n = 0;
- else
- /* getchar(0) and char avail: return char */
- n = plain_vgetc();
-
- if (n == K_IGNORE)
- continue;
- break;
- }
- --no_mapping;
- --allow_keys;
-
- set_vim_var_nr(VV_MOUSE_WIN, 0);
- set_vim_var_nr(VV_MOUSE_WINID, 0);
- set_vim_var_nr(VV_MOUSE_LNUM, 0);
- set_vim_var_nr(VV_MOUSE_COL, 0);
-
- rettv->vval.v_number = n;
- if (IS_SPECIAL(n) || mod_mask != 0)
- {
- char_u temp[10]; /* modifier: 3, mbyte-char: 6, NUL: 1 */
- int i = 0;
-
- /* Turn a special key into three bytes, plus modifier. */
- if (mod_mask != 0)
- {
- temp[i++] = K_SPECIAL;
- temp[i++] = KS_MODIFIER;
- temp[i++] = mod_mask;
- }
- if (IS_SPECIAL(n))
- {
- temp[i++] = K_SPECIAL;
- temp[i++] = K_SECOND(n);
- temp[i++] = K_THIRD(n);
- }
- else if (has_mbyte)
- i += (*mb_char2bytes)(n, temp + i);
- else
- temp[i++] = n;
- temp[i++] = NUL;
- rettv->v_type = VAR_STRING;
- rettv->vval.v_string = vim_strsave(temp);
-
-#ifdef FEAT_MOUSE
- if (is_mouse_key(n))
- {
- int row = mouse_row;
- int col = mouse_col;
- win_T *win;
- linenr_T lnum;
- win_T *wp;
- int winnr = 1;
-
- if (row >= 0 && col >= 0)
- {
- /* Find the window at the mouse coordinates and compute the
- * text position. */
- win = mouse_find_win(&row, &col, FIND_POPUP);
- if (win == NULL)
- return;
- (void)mouse_comp_pos(win, &row, &col, &lnum, NULL);
-# ifdef FEAT_TEXT_PROP
- if (WIN_IS_POPUP(win))
- winnr = 0;
- else
-# endif
- for (wp = firstwin; wp != win && wp != NULL;
- wp = wp->w_next)
- ++winnr;
- set_vim_var_nr(VV_MOUSE_WIN, winnr);
- set_vim_var_nr(VV_MOUSE_WINID, win->w_id);
- set_vim_var_nr(VV_MOUSE_LNUM, lnum);
- set_vim_var_nr(VV_MOUSE_COL, col + 1);
- }
- }
-#endif
- }
-}
-
-/*
- * "getcharmod()" function
- */
- static void
-f_getcharmod(typval_T *argvars UNUSED, typval_T *rettv)
-{
- rettv->vval.v_number = mod_mask;
-}
/*
* "getcharsearch()" function