From fe26f977e6fe81c1bedf251cc1da6cf3792a9f97 Mon Sep 17 00:00:00 2001
From: nicm <nicm>
Date: Mon, 1 Jan 2018 11:03:54 +0000
Subject: [PATCH 1/2] Add C-g at command prompt for emacs people, GitHub issue
 1213.

---
 status.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/status.c b/status.c
index fffdb327..2f6fc4cb 100644
--- a/status.c
+++ b/status.c
@@ -1339,6 +1339,7 @@ process_key:
 		break;
 	case '\033': /* Escape */
 	case '\003': /* C-c */
+	case '\007': /* C-g */
 		if (c->prompt_inputcb(c, c->prompt_data, NULL, 1) == 0)
 			status_prompt_clear(c);
 		break;

From d17c90583a2cbbb15ec1a357380b0985e6472a5f Mon Sep 17 00:00:00 2001
From: nicm <nicm>
Date: Mon, 1 Jan 2018 11:19:08 +0000
Subject: [PATCH 2/2] Prefer PWD for current directory if present in client,
 from Wei Zhao in GitHub issue 1183.

---
 client.c | 8 ++++----
 tmux.c   | 7 ++++---
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/client.c b/client.c
index 6feafc93..aa6b596f 100644
--- a/client.c
+++ b/client.c
@@ -279,10 +279,10 @@ client_main(struct event_base *base, int argc, char **argv, int flags)
 	client_peer = proc_add_peer(client_proc, fd, client_dispatch, NULL);
 
 	/* Save these before pledge(). */
-	if ((cwd = getcwd(path, sizeof path)) == NULL) {
-		if ((cwd = find_home()) == NULL)
-			cwd = "/";
-	}
+	if ((cwd = getenv("PWD")) == NULL &&
+	    (cwd = getcwd(path, sizeof path)) == NULL &&
+	    (cwd = find_home()) == NULL)
+		cwd = "/";
 	if ((ttynam = ttyname(STDIN_FILENO)) == NULL)
 		ttynam = "";
 
diff --git a/tmux.c b/tmux.c
index b8a73fd9..b8ecfecc 100644
--- a/tmux.c
+++ b/tmux.c
@@ -193,7 +193,7 @@ main(int argc, char **argv)
 {
 	char					*path, *label, **var;
 	char					 tmp[PATH_MAX];
-	const char				*s, *shell;
+	const char				*s, *shell, *cwd;
 	int					 opt, flags, keys;
 	const struct options_table_entry	*oe;
 
@@ -294,8 +294,9 @@ main(int argc, char **argv)
 	global_environ = environ_create();
 	for (var = environ; *var != NULL; var++)
 		environ_put(global_environ, *var);
-	if (getcwd(tmp, sizeof tmp) != NULL)
-		environ_set(global_environ, "PWD", "%s", tmp);
+	if ((cwd = getenv("PWD")) == NULL &&
+	    (cwd = getcwd(tmp, sizeof tmp)) != NULL)
+		environ_set(global_environ, "PWD", "%s", cwd);
 
 	global_options = options_create(NULL);
 	global_s_options = options_create(NULL);