diff --git a/src/evalfunc.c b/src/evalfunc.c
index 21b75c1..bee58ee 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -307,6 +307,7 @@
 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_remove(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);
@@ -741,6 +742,7 @@
     {"remote_peek",	1, 2, f_remote_peek},
     {"remote_read",	1, 1, f_remote_read},
     {"remote_send",	2, 3, f_remote_send},
+    {"remote_startserver", 1, 1, f_remote_startserver},
     {"remove",		2, 3, f_remove},
     {"rename",		2, 2, f_rename},
     {"repeat",		2, 2, f_repeat},
@@ -8487,7 +8489,7 @@
     make_connection();
     if (X_DISPLAY == NULL)
     {
-	EMSG(_("E240: No connection to Vim server"));
+	EMSG(_("E240: No connection to the X server"));
 	return FAIL;
     }
     return OK;
@@ -8690,6 +8692,33 @@
 }
 
 /*
+ * "remote_startserver()" function
+ */
+    static void
+f_remote_startserver(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
+{
+#ifdef FEAT_CLIENTSERVER
+    char_u	*server = get_tv_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
+}
+
+/*
  * "remove()" function
  */
     static void
diff --git a/src/if_xcmdsrv.c b/src/if_xcmdsrv.c
index fa91c3e..18c208b 100644
--- a/src/if_xcmdsrv.c
+++ b/src/if_xcmdsrv.c
@@ -399,27 +399,7 @@
 
     /* Execute locally if no display or target is ourselves */
     if (dpy == NULL || (serverName != NULL && STRICMP(name, serverName) == 0))
-    {
-	if (asExpr)
-	{
-	    char_u *ret;
-
-	    ret = eval_client_expr_to_string(cmd);
-	    if (result != NULL)
-	    {
-		if (ret == NULL)
-		    *result = vim_strsave((char_u *)_(e_invexprmsg));
-		else
-		    *result = ret;
-	    }
-	    else
-		vim_free(ret);
-	    return ret == NULL ? -1 : 0;
-	}
-	else
-	    server_to_input_buf(cmd);
-	return 0;
-    }
+	return sendToLocalVim(cmd, asExpr, result);
 
     /*
      * Bind the server name to a communication window.
@@ -800,6 +780,7 @@
 WaitForReply(void *p)
 {
     Window  *w = (Window *) p;
+
     return ServerReplyFind(*w, SROP_Find) != NULL;
 }
 
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 1663052..cfa2084 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -2409,6 +2409,10 @@
     int		retcode = 0;
     char_u	altname_buf[MAX_PATH];
 
+    /* Execute locally if no display or target is ourselves */
+    if (serverName != NULL && STRICMP(name, serverName) == 0)
+	return sendToLocalVim(cmd, asExpr, result);
+
     /* If the server name does not end in a digit then we look for an
      * alternate name.  e.g. when "name" is GVIM the we may find GVIM2. */
     if (STRLEN(name) > 1 && !vim_isdigit(name[STRLEN(name) - 1]))
diff --git a/src/proto/main.pro b/src/proto/main.pro
index 958e1f3..f8abb94 100644
--- a/src/proto/main.pro
+++ b/src/proto/main.pro
@@ -11,5 +11,6 @@
 void time_msg(char *mesg, void *tv_start);
 void server_to_input_buf(char_u *str);
 char_u *eval_client_expr_to_string(char_u *expr);
+int sendToLocalVim(char_u *cmd, int asExpr, char_u **result);
 char_u *serverConvert(char_u *client_enc, char_u *data, char_u **tofree);
 /* vim: set ft=c : */
diff --git a/src/testdir/test_clientserver.vim b/src/testdir/test_clientserver.vim
index 55cc98e..55f440f 100644
--- a/src/testdir/test_clientserver.vim
+++ b/src/testdir/test_clientserver.vim
@@ -30,6 +30,31 @@
   call WaitFor('remote_expr("' . name . '", "testvar") == "yes"')
   call assert_equal('yes', remote_expr(name, "testvar"))
 
+  if has('unix') && has('gui') && !has('gui_running')
+    " Running in a terminal and the GUI is avaiable: Tell the server to open
+    " the GUI and check that the remote command still works.
+    " Need to wait for the GUI to start up, otherwise the send hangs in trying
+    " to send to the terminal window.
+    call remote_send(name, ":gui -f\<CR>")
+    sleep 500m
+    call remote_send(name, ":let testvar = 'maybe'\<CR>")
+    call WaitFor('remote_expr("' . name . '", "testvar") == "maybe"')
+    call assert_equal('maybe', remote_expr(name, "testvar"))
+  endif
+
+  call assert_fails('call remote_send("XXX", ":let testvar = ''yes''\<CR>")', 'E241')
+
+  " Expression evaluated locally.
+  if v:servername == ''
+    call remote_startserver('MYSELF')
+    call assert_equal('MYSELF', v:servername)
+  endif
+  let g:testvar = 'myself'
+  call assert_equal('myself', remote_expr(v:servername, 'testvar'))
+
+  call remote_send(name, ":call server2client(expand('<client>'), 'got it')\<CR>", 'g:myserverid')
+  call assert_equal('got it', remote_read(g:myserverid))
+
   call remote_send(name, ":qa!\<CR>")
   call WaitFor('job_status(g:job) == "dead"')
   if job_status(g:job) != 'dead'
diff --git a/src/version.c b/src/version.c
index 72c8e78..18ba30e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    475,
+/**/
     474,
 /**/
     473,
