mirror of
https://github.com/tmux/tmux.git
synced 2025-09-01 20:57:00 +00:00
When creating a new session from the command-line where there is an external
terminal, copy the termios(4) special characters and use them for new windows created in the new session. Suggested by Theo.
This commit is contained in:
11
window.c
11
window.c
@ -269,7 +269,8 @@ window_create1(u_int sx, u_int sy)
|
||||
|
||||
struct window *
|
||||
window_create(const char *name, const char *cmd, const char *cwd,
|
||||
struct environ *env, u_int sx, u_int sy, u_int hlimit, char **cause)
|
||||
struct environ *env, struct termios *tio, u_int sx, u_int sy, u_int hlimit,
|
||||
char **cause)
|
||||
{
|
||||
struct window *w;
|
||||
struct window_pane *wp;
|
||||
@ -277,7 +278,7 @@ window_create(const char *name, const char *cmd, const char *cwd,
|
||||
w = window_create1(sx, sy);
|
||||
wp = window_add_pane(w, hlimit);
|
||||
layout_init(w);
|
||||
if (window_pane_spawn(wp, cmd, cwd, env, cause) != 0) {
|
||||
if (window_pane_spawn(wp, cmd, cwd, env, tio, cause) != 0) {
|
||||
window_destroy(w);
|
||||
return (NULL);
|
||||
}
|
||||
@ -470,8 +471,8 @@ window_pane_destroy(struct window_pane *wp)
|
||||
}
|
||||
|
||||
int
|
||||
window_pane_spawn(struct window_pane *wp,
|
||||
const char *cmd, const char *cwd, struct environ *env, char **cause)
|
||||
window_pane_spawn(struct window_pane *wp, const char *cmd,
|
||||
const char *cwd, struct environ *env, struct termios *tio, char **cause)
|
||||
{
|
||||
struct winsize ws;
|
||||
int mode;
|
||||
@ -505,7 +506,7 @@ window_pane_spawn(struct window_pane *wp,
|
||||
tv.tv_usec = NAME_INTERVAL * 1000L;
|
||||
timeradd(&wp->window->name_timer, &tv, &wp->window->name_timer);
|
||||
|
||||
switch (wp->pid = forkpty(&wp->fd, wp->tty, NULL, &ws)) {
|
||||
switch (wp->pid = forkpty(&wp->fd, wp->tty, tio, &ws)) {
|
||||
case -1:
|
||||
wp->fd = -1;
|
||||
xasprintf(cause, "%s: %s", cmd, strerror(errno));
|
||||
|
Reference in New Issue
Block a user