Try to restore the previously opened buffer when converting to client mode

Fixes #483
This commit is contained in:
Maxime Coste 2015-11-16 13:52:33 +00:00
parent f028e6e8bb
commit 97cc166885

View File

@ -245,6 +245,7 @@ void register_options()
struct convert_to_client_mode struct convert_to_client_mode
{ {
String session; String session;
String buffer_name;
}; };
static Client* local_client = nullptr; static Client* local_client = nullptr;
@ -532,6 +533,8 @@ int run_server(StringView session, StringView init_command,
if (convert_to_client_pending) if (convert_to_client_pending)
{ {
String buffer_name = local_client->context().buffer().name();
ClientManager::instance().remove_client(*local_client, true); ClientManager::instance().remove_client(*local_client, true);
convert_to_client_pending = false; convert_to_client_pending = false;
@ -539,7 +542,7 @@ int run_server(StringView session, StringView init_command,
{ {
String session = server.session(); String session = server.session();
server.close_session(false); server.close_session(false);
throw convert_to_client_mode{ std::move(session) }; throw convert_to_client_mode{ std::move(session), std::move(buffer_name) };
} }
} }
} }
@ -736,7 +739,9 @@ int main(int argc, char* argv[])
catch (convert_to_client_mode& convert) catch (convert_to_client_mode& convert)
{ {
raise(SIGTSTP); raise(SIGTSTP);
return run_client(convert.session, "echo converted to client only mode"); return run_client(convert.session,
format("try %^buffer '{}'^; echo converted to client only mode",
escape(convert.buffer_name, "'^", '\\')));
} }
} }
} }