Nicholas Marriott wrote:
> It could be much smaller by doing:
>
> if (!options_get_number(&wp->window->options, "app-private-window"))
> break;
>
> In both cases, instead of putting everything inside the if.
Yes, but I often introduce error checking, where a function is supposed
to collect status info. At the end it should do whatever cleanup is
needed and return a meaningful status code. So I tend to have one entry
and one exit, and even use gotos to stick to this principle.
I've seen the many sideways exits in the code, and I don't mind as long
as I don't have to repair anything.
> You also need to set a default value in tmux.c or tmux will die with
> a fatal error the first time this code is hit, because the option
> isn't set.
Ah, thanks! Will do ASAP.
> I'm not sure about the option name, I think it should be something
> like use-alternate-screen.
Ok, this is a better name.
> Can't you change your editor to use tabs instead of spaces or enter
> a literal tab?
Sure. I grew tired of the tab+spaces-mix found in many sources and
use spaces, but patches should be as small as possible.
clemens
Index: cmd-set-option.c
===================================================================
--- cmd-set-option.c.orig
+++ cmd-set-option.c
@@ -155,6 +155,7 @@ const struct set_option_entry set_window
{ "monitor-content", SET_OPTION_STRING, 0, 0, NULL },
{ "remain-on-exit", SET_OPTION_FLAG, 0, 0, NULL },
{ "synchronize-panes", SET_OPTION_FLAG, 0, 0, NULL },
+ { "use-alternate-screen", SET_OPTION_FLAG, 0, 0, NULL },
{ "utf8", SET_OPTION_FLAG, 0, 0, NULL },
{ "window-status-attr", SET_OPTION_ATTRIBUTES, 0, 0, NULL },
{ "window-status-bg", SET_OPTION_COLOUR, 0, 0, NULL },
Index: input.c
===================================================================
--- input.c.orig
+++ input.c
@@ -1178,14 +1178,17 @@ input_handle_sequence_sm(struct input_ct
case 1049:
if (wp->saved_grid != NULL)
break;
- sx = screen_size_x(s);
- sy = screen_size_y(s);
+
+ if (! options_get_number(&wp->window->options,
"use-alternate-screen"))
+ break;
/*
* Enter alternative screen mode. A copy of the visible
* screen is saved and the history is not updated
*/
+ sx = screen_size_x(s);
+ sy = screen_size_y(s);
wp->saved_grid = grid_create(sx, sy, 0);
grid_duplicate_lines(
wp->saved_grid, 0, s->grid, screen_hsize(s), sy);
@@ -1254,14 +1257,17 @@ input_handle_sequence_rm(struct input_ct
case 1049:
if (wp->saved_grid == NULL)
break;
- sx = screen_size_x(s);
- sy = screen_size_y(s);
+
+ if (! options_get_number(&wp->window->options,
"use-alternate-screen"))
+ break;
/*
* Exit alternative screen mode and restore the copied
* grid.
*/
+ sx = screen_size_x(s);
+ sy = screen_size_y(s);
/*
* If the current size is bigger, temporarily resize
* to the old size before copying back.
Index: tmux.1
===================================================================
--- tmux.1.orig
+++ tmux.1
@@ -1893,6 +1893,17 @@ command.
Duplicate input to any pane to all other panes in the same window, except
for panes that are not in output mode.
.Pp
+.It Xo Ic use-alternate-screen
+.Op Ic on | off
+.Xc
+Every application initializing its window can have it all to itself.
+.Nm
+will save the previous window contents and restore it afterwards, the
+applications contents will not be saved in the history. This makes
+sense if full screen edit sessions are not supposed to clutter the
+history.
+The default is on.
+.Pp
.It Xo Ic utf8
.Op Ic on | off
.Xc
Index: tmux.c
===================================================================
--- tmux.c.orig
+++ tmux.c
@@ -409,6 +409,7 @@ main(int argc, char **argv)
options_set_number(wo, "xterm-keys", 0);
options_set_number(wo, "remain-on-exit", 0);
options_set_number(wo, "synchronize-panes", 0);
+ options_set_number(wo, "use-alternate-screen", 1);
if (flags & IDENTIFY_UTF8) {
options_set_number(so, "status-utf8", 1);
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users