diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-04-05 20:21:03 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-04-05 20:21:03 +0200 |
commit | f87a0400fd81862c33d6ad2291a56e178db7dddd (patch) | |
tree | 2a1ef72193db1883d8aa81c158d99148b5412fb6 /src/evalfunc.c | |
parent | b8ed3aa9e708ec0af4e9ee8921ad198f0e949c0d (diff) |
patch 8.2.0516: client-server code is spread outv8.2.0516
Problem: Client-server code is spread out.
Solution: Move client-server code to a new file. (Yegappan Lakshmanan,
closes #5885)
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r-- | src/evalfunc.c | 324 |
1 files changed, 0 insertions, 324 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c index f43ac082c1..5a5daaa5af 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -168,12 +168,6 @@ static void f_rand(typval_T *argvars, typval_T *rettv); static void f_range(typval_T *argvars, typval_T *rettv); static void f_reg_executing(typval_T *argvars, typval_T *rettv); static void f_reg_recording(typval_T *argvars, typval_T *rettv); -static void f_remote_expr(typval_T *argvars, typval_T *rettv); -static void f_remote_foreground(typval_T *argvars, typval_T *rettv); -static void f_remote_peek(typval_T *argvars, typval_T *rettv); -static void f_remote_read(typval_T *argvars, typval_T *rettv); -static void f_remote_send(typval_T *argvars, typval_T *rettv); -static void f_remote_startserver(typval_T *argvars, typval_T *rettv); static void f_rename(typval_T *argvars, typval_T *rettv); static void f_repeat(typval_T *argvars, typval_T *rettv); #ifdef FEAT_FLOAT @@ -193,8 +187,6 @@ static void f_searchdecl(typval_T *argvars, typval_T *rettv); static void f_searchpair(typval_T *argvars, typval_T *rettv); static void f_searchpairpos(typval_T *argvars, typval_T *rettv); static void f_searchpos(typval_T *argvars, typval_T *rettv); -static void f_server2client(typval_T *argvars, typval_T *rettv); -static void f_serverlist(typval_T *argvars, typval_T *rettv); static void f_setcharsearch(typval_T *argvars, typval_T *rettv); static void f_setenv(typval_T *argvars, typval_T *rettv); static void f_setfperm(typval_T *argvars, typval_T *rettv); @@ -6335,275 +6327,6 @@ f_reg_recording(typval_T *argvars UNUSED, typval_T *rettv) return_register(reg_recording, rettv); } -#if defined(FEAT_CLIENTSERVER) && defined(FEAT_X11) - static void -make_connection(void) -{ - if (X_DISPLAY == NULL -# ifdef FEAT_GUI - && !gui.in_use -# endif - ) - { - x_force_connect = TRUE; - setup_term_clip(); - x_force_connect = FALSE; - } -} - - static int -check_connection(void) -{ - make_connection(); - if (X_DISPLAY == NULL) - { - emsg(_("E240: No connection to the X server")); - return FAIL; - } - return OK; -} -#endif - -#ifdef FEAT_CLIENTSERVER - static void -remote_common(typval_T *argvars, typval_T *rettv, int expr) -{ - char_u *server_name; - char_u *keys; - char_u *r = NULL; - char_u buf[NUMBUFLEN]; - int timeout = 0; -# ifdef MSWIN - HWND w; -# else - Window w; -# endif - - if (check_restricted() || check_secure()) - return; - -# ifdef FEAT_X11 - if (check_connection() == FAIL) - return; -# endif - if (argvars[2].v_type != VAR_UNKNOWN - && argvars[3].v_type != VAR_UNKNOWN) - timeout = tv_get_number(&argvars[3]); - - server_name = tv_get_string_chk(&argvars[0]); - if (server_name == NULL) - return; // type error; errmsg already given - keys = tv_get_string_buf(&argvars[1], buf); -# ifdef MSWIN - if (serverSendToVim(server_name, keys, &r, &w, expr, timeout, TRUE) < 0) -# else - if (serverSendToVim(X_DISPLAY, server_name, keys, &r, &w, expr, timeout, - 0, TRUE) < 0) -# endif - { - if (r != NULL) - { - emsg((char *)r); // sending worked but evaluation failed - vim_free(r); - } - else - semsg(_("E241: Unable to send to %s"), server_name); - return; - } - - rettv->vval.v_string = r; - - if (argvars[2].v_type != VAR_UNKNOWN) - { - dictitem_T v; - char_u str[30]; - char_u *idvar; - - idvar = tv_get_string_chk(&argvars[2]); - if (idvar != NULL && *idvar != NUL) - { - sprintf((char *)str, PRINTF_HEX_LONG_U, (long_u)w); - v.di_tv.v_type = VAR_STRING; - v.di_tv.vval.v_string = vim_strsave(str); - set_var(idvar, &v.di_tv, FALSE); - vim_free(v.di_tv.vval.v_string); - } - } -} -#endif - -/* - * "remote_expr()" function - */ - static void -f_remote_expr(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv->v_type = VAR_STRING; - rettv->vval.v_string = NULL; -#ifdef FEAT_CLIENTSERVER - remote_common(argvars, rettv, TRUE); -#endif -} - -/* - * "remote_foreground()" function - */ - static void -f_remote_foreground(typval_T *argvars UNUSED, typval_T *rettv UNUSED) -{ -#ifdef FEAT_CLIENTSERVER -# ifdef MSWIN - // On Win32 it's done in this application. - { - char_u *server_name = tv_get_string_chk(&argvars[0]); - - if (server_name != NULL) - serverForeground(server_name); - } -# else - // Send a foreground() expression to the server. - argvars[1].v_type = VAR_STRING; - argvars[1].vval.v_string = vim_strsave((char_u *)"foreground()"); - argvars[2].v_type = VAR_UNKNOWN; - rettv->v_type = VAR_STRING; - rettv->vval.v_string = NULL; - remote_common(argvars, rettv, TRUE); - vim_free(argvars[1].vval.v_string); -# endif -#endif -} - - static void -f_remote_peek(typval_T *argvars UNUSED, typval_T *rettv) -{ -#ifdef FEAT_CLIENTSERVER - dictitem_T v; - char_u *s = NULL; -# ifdef MSWIN - long_u n = 0; -# endif - char_u *serverid; - - if (check_restricted() || check_secure()) - { - rettv->vval.v_number = -1; - return; - } - serverid = tv_get_string_chk(&argvars[0]); - if (serverid == NULL) - { - rettv->vval.v_number = -1; - return; // type error; errmsg already given - } -# ifdef MSWIN - sscanf((const char *)serverid, SCANF_HEX_LONG_U, &n); - if (n == 0) - rettv->vval.v_number = -1; - else - { - s = serverGetReply((HWND)n, FALSE, FALSE, FALSE, 0); - rettv->vval.v_number = (s != NULL); - } -# else - if (check_connection() == FAIL) - return; - - rettv->vval.v_number = serverPeekReply(X_DISPLAY, - serverStrToWin(serverid), &s); -# endif - - if (argvars[1].v_type != VAR_UNKNOWN && rettv->vval.v_number > 0) - { - char_u *retvar; - - v.di_tv.v_type = VAR_STRING; - v.di_tv.vval.v_string = vim_strsave(s); - retvar = tv_get_string_chk(&argvars[1]); - if (retvar != NULL) - set_var(retvar, &v.di_tv, FALSE); - vim_free(v.di_tv.vval.v_string); - } -#else - rettv->vval.v_number = -1; -#endif -} - - static void -f_remote_read(typval_T *argvars UNUSED, typval_T *rettv) -{ - char_u *r = NULL; - -#ifdef FEAT_CLIENTSERVER - char_u *serverid = tv_get_string_chk(&argvars[0]); - - if (serverid != NULL && !check_restricted() && !check_secure()) - { - int timeout = 0; -# ifdef MSWIN - // The server's HWND is encoded in the 'id' parameter - long_u n = 0; -# endif - - if (argvars[1].v_type != VAR_UNKNOWN) - timeout = tv_get_number(&argvars[1]); - -# ifdef MSWIN - sscanf((char *)serverid, SCANF_HEX_LONG_U, &n); - if (n != 0) - r = serverGetReply((HWND)n, FALSE, TRUE, TRUE, timeout); - if (r == NULL) -# else - if (check_connection() == FAIL - || serverReadReply(X_DISPLAY, serverStrToWin(serverid), - &r, FALSE, timeout) < 0) -# endif - emsg(_("E277: Unable to read a server reply")); - } -#endif - rettv->v_type = VAR_STRING; - rettv->vval.v_string = r; -} - -/* - * "remote_send()" function - */ - static void -f_remote_send(typval_T *argvars UNUSED, typval_T *rettv) -{ - rettv->v_type = VAR_STRING; - rettv->vval.v_string = NULL; -#ifdef FEAT_CLIENTSERVER - remote_common(argvars, rettv, FALSE); -#endif -} - -/* - * "remote_startserver()" function - */ - static void -f_remote_startserver(typval_T *argvars UNUSED, typval_T *rettv UNUSED) -{ -#ifdef FEAT_CLIENTSERVER - char_u *server = tv_get_string_chk(&argvars[0]); - - if (server == NULL) - return; // type error; errmsg already given - if (serverName != NULL) - emsg(_("E941: already started a server")); - else - { -# ifdef FEAT_X11 - if (check_connection() == OK) - serverRegisterName(X_DISPLAY, server); -# else - serverSetName(server); -# endif - } -#else - emsg(_("E942: +clientserver feature not available")); -#endif -} - /* * "rename({from}, {to})" function */ @@ -7374,53 +7097,6 @@ f_searchpos(typval_T *argvars, typval_T *rettv) } static void -f_server2client(typval_T *argvars UNUSED, typval_T *rettv) -{ -#ifdef FEAT_CLIENTSERVER - char_u buf[NUMBUFLEN]; - char_u *server = tv_get_string_chk(&argvars[0]); - char_u *reply = tv_get_string_buf_chk(&argvars[1], buf); - - rettv->vval.v_number = -1; - if (server == NULL || reply == NULL) - return; - if (check_restricted() || check_secure()) - return; -# ifdef FEAT_X11 - if (check_connection() == FAIL) - return; -# endif - - if (serverSendReply(server, reply) < 0) - { - emsg(_("E258: Unable to send to client")); - return; - } - rettv->vval.v_number = 0; -#else - rettv->vval.v_number = -1; -#endif -} - - static void -f_serverlist(typval_T *argvars UNUSED, typval_T *rettv) -{ - char_u *r = NULL; - -#ifdef FEAT_CLIENTSERVER -# ifdef MSWIN - r = serverGetVimNames(); -# else - make_connection(); - if (X_DISPLAY != NULL) - r = serverGetVimNames(X_DISPLAY); -# endif -#endif - rettv->v_type = VAR_STRING; - rettv->vval.v_string = r; -} - - static void f_setcharsearch(typval_T *argvars, typval_T *rettv UNUSED) { dict_T *d; |