Tiago Cunha
6708ad19c5
Sync OpenBSD patchset 165:
...
window_add_pane cannot fail, so remove the unused cause argument and don't
bother to check for a NULL return.
2009-07-23 13:10:38 +00:00
Tiago Cunha
d29b57f597
Sync OpenBSD patchset 155:
...
Make some functions which return unused values void (mostly found by lint) and
tweak a redundant expression in window_pane_set_mode.
2009-07-22 17:46:53 +00:00
Nicholas Marriott
94e2339842
OpenSolaris ioctl(TIOCSWINSZ) appears to be broken and can return EINVAL here
...
despite sx, sy and fd being fine (an fcntl on the fd succeeds). No problems on
other platforms so ignore the error under #ifdef __sun__.
2009-07-22 12:42:57 +00:00
Tiago Cunha
545893df73
Sync OpenBSD patchset 142:
...
Each window now has a tree of layout cells associated with it. In this tree,
each node is either a horizontal or vertical cell containing a list of other
cells running from left-to-right or top-to-bottom, or a leaf cell which is
associated with a pane.
The major functional changes are:
- panes may now be split arbitrarily both horizontally (splitw -h, C-b %) and
vertically (splitw -v, C-b ");
- panes may be resized both horizontally and vertically (resizep -L/-R/-U/-D,
bound to C-b left/right/up/down and C-b M-left/right/up/down);
- layouts are now applied and then may be modified by resizing or splitting
panes, rather than being fixed and reapplied when the window is resized or
panes are added;
- manual-vertical layout is no longer necessary, and active-only layout is gone
(but may return in future);
- the main-pane layouts now reduce the size of the main pane to fit all panes
if possible.
Thanks to all who tested.
2009-07-20 15:42:05 +00:00
Tiago Cunha
ae7dda10ce
- New command display-message (alias display) to display a message in the
...
status line (bound to "i" by default).
- Add support for including the window index, pane index, and window name
in status-left, or status-right.
- Bump protocol version.
2009-07-17 18:32:54 +00:00
Nicholas Marriott
8bfbc8c61d
The man page says that kill-window removes the window entirely, unlinking it
...
from any sessions. In fact the implementation only affected the current
session, making it the same as unlink-window but destroying the window if it
was linked into only one session (unlinkw gives an error). Change the behaviour
to match what it documented and was originally intended.
2009-07-15 17:45:09 +00:00
Nicholas Marriott
ad1945c278
Don't accept input to a window if it not visible.
2009-07-15 17:43:21 +00:00
Nicholas Marriott
1e574bb70c
Get rid of the PANE_HIDDEN flag in favour of a function, and moving the
...
decision for whether or not a pane should be drawn out of the layout code and
into the redraw code.
This is needed for the new layout design, getting it in now to make that easier
to work on.
2009-07-15 17:42:44 +00:00
Nicholas Marriott
e63567d51c
Support "alternate screen" mode (terminfo smcup/rmcup) typically used by full
...
screen interactive programs to preserve the screen contents. When activated, it
saves a copy of the visible grid and disables scrolling into and resizing out
of the history; when deactivated the visible data is restored and the history
reenabled.
2009-07-14 06:40:33 +00:00
Nicholas Marriott
2ddcb51df3
Fix $Id$.
2009-07-08 18:03:03 +00:00
Nicholas Marriott
86504af149
Rename the global options variables to be shorter and to make session options
...
clear. No functional change, getting this out of the way to make later options
changes easier.
2009-07-08 18:01:31 +00:00
Nicholas Marriott
08c7249636
Change default_window_name to use window_default_command if the actual cmd is
...
empty. From Josh Elsasser.
2009-07-02 18:17:46 +00:00
Nicholas Marriott
22d1b9412e
Using -l to specify a login shell is non-POSIX and causes problems with shells
...
that do not support it. Instead, set an empty default-command to invoke $SHELL
with - prefixed to argv[0], and make this the default setting.
2009-07-01 19:42:55 +00:00
Nicholas Marriott
a9e3d5c56a
More diff-to-OpenBSD reduction. Move a lot of compat stuff into compat.h.
2009-06-25 16:47:00 +00:00
Nicholas Marriott
a5830b9603
Restore $Id$ and add script to do so.
2009-06-25 16:21:32 +00:00
Nicholas Marriott
582660bdf3
Miscellaneous unused functions, including one which was basically a
...
duplicate. Found by lint.
2009-06-25 16:09:11 +00:00
Nicholas Marriott
f7a9eb46fc
Change find-window and monitor-content to use fnmatch(3). For convenience and
...
compatibility, *s are implicitly added at the start and end of the pattern.
2009-06-25 16:04:24 +00:00
Nicholas Marriott
853ad68162
Add a dedicated function to convert a line into a string and use it to simplify the search window function.
2009-06-25 16:02:37 +00:00
Nicholas Marriott
7eff7f7629
If a pane is "zombified" (remain-on-exit flag), don't continue to queue key and
...
mouse input for it (otherwise they are processed after respawn).
2009-06-25 16:00:25 +00:00
Nicholas Marriott
fbcee9f114
strdup the input to putenv to avoid in one case passing a string that is later
...
freed and in the other const strings.
2009-06-25 15:58:58 +00:00
Tiago Cunha
80af85a102
- New window option monitor-content to search for a string in a window, and
...
highlight the status line if it matches.
- To make this possible, the function cmd_find_window_search from
cmd-find-window.c had to be moved to window.c and renamed window_pane_search.
- While there use three new functions in server.c to check for bell, activity,
and content, to avoid too much nesting.
2009-05-19 13:32:55 +00:00
Nicholas Marriott
ab4e5e8574
Clean up manual layout code:
...
- change the one layout function into two _refresh and _resize
- create layout-manual.c for manual layout code
- move the fit panes/update panes code from window.c to the new file as it is only used by manual layout now
- move the resize pane code into layout-manual.c as well
- get rid of the direct calls to fit/update and make them go through layout
- rename a couple of variables
This is mainly as a first step before reworking the manual layout code to see if anything breaks.
2009-05-18 21:01:38 +00:00
Nicholas Marriott
92de1ad6c8
putenv can be char *.
2009-05-15 12:58:56 +00:00
Nicholas Marriott
4b64bd7b01
It is HAVE_PTY_H, also add a cast to shut gcc up.
2009-05-14 07:58:38 +00:00
Nicholas Marriott
c8cf438d44
Rename all feature flags to HAVE_* and move out of makefiles into a configure
...
script which must be run before building.
Still two makefiles but they are a hell of a lot simpler.
HAVE_* also will make it easier to move to $buildsystem if necessary later.
2009-05-13 23:27:00 +00:00
Nicholas Marriott
143aa718e5
Space trimmage mega-diff.
2009-05-04 17:58:27 +00:00
Nicholas Marriott
673290d019
Adjust mouse for x offset.
2009-04-01 18:46:03 +00:00
Nicholas Marriott
b6450b167b
Basic horizontal splitting and layout management. Still some redraw and other
...
issues - particularly, don't mix with manual pane resizing and be careful when
viewing from multiple clients; generally cycling the layout a few times will
fix most problems. Getting this in for testing while I think about how to deal
with manual mode.
Split window as normal and cycle the layouts with C-b space. Some of the
layouts will work better when swap-pane comes along.
2009-04-01 18:21:42 +00:00
Nicholas Marriott
56f80a5b09
break-pane command to split a pane off into a new window; bound to ! by default.
2009-03-07 09:29:54 +00:00
Nicholas Marriott
792b4db4a7
Doh. Set a message when pane is too small rather than dying...
2009-03-01 22:05:35 +00:00
Nicholas Marriott
cce03e138b
Looking up argv[0] is expensive, so just use p_comm for the window name which is good enough. Also increase name update time to 500 ms.
2009-02-13 00:43:04 +00:00
Nicholas Marriott
3a7f3bd292
Reset name when clearing mode.
2009-02-12 17:31:23 +00:00
Nicholas Marriott
c9cfc9a9f3
Don't try to change the window name unless the pid of the process chosen has
...
changed. Reduces CPU use.
osdep-* stuff is a bit horrible now but there we go :-/.
2009-02-09 18:08:01 +00:00
Nicholas Marriott
62d2ab3e68
Continue process if suspended.
2009-02-08 16:11:26 +00:00
Nicholas Marriott
4428987e95
* Better support for at least the most common variant of mouse input: parse it and adjust for different panes. Also support mouse in window/session choice mode.
...
* Bring back the fancy window titles with session/window names: it is easy to work around problems with elinks (see FAQ).
2009-01-28 19:52:21 +00:00
Nicholas Marriott
9cde0c2477
Be more clever about picking window name.
2009-01-26 22:57:20 +00:00
Nicholas Marriott
4d9af27b0b
Better error messages for fork.
2009-01-23 16:59:14 +00:00
Nicholas Marriott
19987feaaa
Bring back -p and -l to splitw to specify height as % or nlines.
2009-01-21 19:38:51 +00:00
Nicholas Marriott
2d15f59859
Try to change the window title to match the command running it in. This is done
...
by reading argv[0] from the process group leader of the group that owns the tty
(tcgetpgrp()). This can't be done portably so some OS-dependent code is
introduced (ugh); OpenBSD, FreeBSD and Linux are supported at the moment.
A new window flag, automatic-rename, is available: if this is set to off, the
window name is not changed. Specifying a name with the new-window, new-session
or rename-window commands will automatically set this flag to off for the
window in question. To disable it entirely set the option to off globally (setw
-g automatic-rename off).
2009-01-20 19:35:03 +00:00
Nicholas Marriott
d1a5fde3d0
-a flags to next/previous window.
2009-01-18 18:31:45 +00:00
Nicholas Marriott
b4ac8c1342
Multiple window splitting.
2009-01-14 19:29:32 +00:00
Nicholas Marriott
f85559144f
kill-pane command.
2009-01-13 06:50:10 +00:00
Nicholas Marriott
7cd3cf0ead
Make the window pane code handle panes of different sizes, and add a -l and -p arguments to split-window to specify the new window size in lines or as a percentage.
2009-01-12 18:22:47 +00:00
Nicholas Marriott
162bacdcd9
Window splitting. Two vertical panes fixed 50% each. This is a huge diff, still a couple of bugs (notably heap corruption somewhere causing segfault on exit).
2009-01-11 23:31:46 +00:00
Nicholas Marriott
4d71164826
Pick up cwd from environment,.
2009-01-10 19:37:35 +00:00
Nicholas Marriott
fd05d07c2b
Change server-info format.
2009-01-10 14:43:43 +00:00
Nicholas Marriott
7a82e86827
Make window options work the same was as session options, add mode-fg/mode-bg options, force -g for global on set/show/setw/showw/
2008-12-08 16:19:51 +00:00
Nicholas Marriott
46f5e42145
Keep stack of previous windows.
...
Check for op (orig_pair) for default colours.
2008-11-16 10:10:26 +00:00
Nicholas Marriott
62457bce0b
Trim.
2008-09-26 06:45:28 +00:00
Nicholas Marriott
f07cedf048
Rename some functions.
2008-09-10 19:15:06 +00:00
Nicholas Marriott
e5cf8594e8
long for pid.
2008-07-01 20:35:16 +00:00
Nicholas Marriott
80a594cae3
Document zombie window stuff.
2008-06-30 18:27:14 +00:00
Nicholas Marriott
d90d646ca8
Zombie windows, requested by Will Maier.
2008-06-29 07:04:31 +00:00
Nicholas Marriott
4e4f71febb
Swap in new paste buffer code and add a couple more commands.
2008-06-20 17:31:48 +00:00
Nicholas Marriott
99df48d70f
Trimify.
2008-06-18 22:21:51 +00:00
Nicholas Marriott
be53d7f298
More Sun OS crap.
2008-06-18 20:11:25 +00:00
Nicholas Marriott
19b7946a85
Start of Solaris port.
2008-06-18 19:34:50 +00:00
Nicholas Marriott
0f403474aa
New window options: force-width and force-height. This will force a window to
...
an arbitrary width and height (0 for the default unlimited). This is neat for
emacs which doesn't have a sensible way to force hard wrapping at 80
columns. Also, don't try to be clever and use clr_eol when redrawing the
whole screen, it causes trouble since the redraw functions are used to draw
the blank areas too.
2008-06-14 16:47:20 +00:00
Nicholas Marriott
b044d0951f
ifdef RB_PREV since 4.3 misses it too.
2008-06-04 20:17:25 +00:00
Nicholas Marriott
0f95671fe3
Disable/enable window activity monitoring with set-window-option command.
2008-06-04 17:54:27 +00:00
Nicholas Marriott
9e6090a7a2
Per-session configuration options.
2008-06-03 21:42:37 +00:00
Nicholas Marriott
85d520c41e
tree.h has RB_PREV now, yay!
2008-06-03 18:38:51 +00:00
Nicholas Marriott
5569ff9723
Don't hang when window closes early; also add lots more debugging.
2008-05-31 20:04:15 +00:00
Nicholas Marriott
ccfeb316a6
Don't attempt to reset tty if it is dead.
2008-01-02 19:22:21 +00:00
Nicholas Marriott
7dc18f68e3
set/reset mode window functions.
2007-12-06 10:04:43 +00:00
Nicholas Marriott
103748d6ad
Major reorganisation of screen handling.
2007-12-06 09:46:23 +00:00
Nicholas Marriott
76c8a590db
Big internal reorganisation to move tty control into parent.
2007-11-27 19:23:34 +00:00
Nicholas Marriott
d0984b890b
Sort out cursors with a new flag - BACKGROUND - for window modes. Free text on more exit.
2007-11-21 19:53:57 +00:00
Nicholas Marriott
24c39950ff
Redo screen.c functions to make them readable and more flexible. Make scroll mode only redraw waht it needs.
2007-11-21 18:24:49 +00:00
Nicholas Marriott
d5edaf988e
Horizontal history/scrolling.
2007-11-21 15:35:53 +00:00
Nicholas Marriott
9a6e47cfa8
Initial history support.
2007-11-21 13:11:41 +00:00
Nicholas Marriott
ceab127fac
Mass screen.c rename/tidy. Add a actual size (ysize) as distinct from display size (now dx,dy). Move functions which work on the displayed area into screen-display.c and tidy. Use macros consistently when accessing screen data (may want to move everything about again later!). This the first step on the road to scrollback.
2007-11-20 21:42:29 +00:00
Nicholas Marriott
35591ecd4e
Try write even if read gets signal, some other tweaks.
2007-11-07 19:41:17 +00:00
Nicholas Marriott
08d9f46aae
Make it build/run on Linux.
2007-10-31 14:26:26 +00:00
Nicholas Marriott
4ba3cf60be
Reorg window data structures. Add an intermediate data type (struct winlink) to hold index and make sessions hold a RB tree of them rather than a fixed array.
2007-10-26 12:29:07 +00:00
Nicholas Marriott
ebeb14211d
Handle DSR for resize(1).
2007-10-24 15:29:29 +00:00
Nicholas Marriott
810a8846b7
A couple of close-on-exec flags.
2007-10-24 11:30:02 +00:00
Nicholas Marriott
ab02144e3d
Don't need ttydefchars here.
2007-10-23 11:25:32 +00:00
Nicholas Marriott
cf77c80b93
FreeBSD's util.h is libutil.h.
2007-10-19 20:47:09 +00:00
Nicholas Marriott
4add09eab7
Wrong size.
2007-10-04 20:33:16 +00:00
Nicholas Marriott
7ba01f6843
New window command.
2007-10-03 23:32:26 +00:00
Nicholas Marriott
a5a17b40ee
Skip exec on cmds. Also use xmemstrdup where appropriate.
2007-10-03 13:07:42 +00:00
Nicholas Marriott
9bb907f2a7
Move command handling into the server and tidy up some bits.
2007-10-03 10:18:32 +00:00
Nicholas Marriott
9d563c340b
Destroy screens properly.
2007-10-01 14:15:48 +00:00
Nicholas Marriott
1e316cfc7c
Lose intermediate handling (unused). Change argument parsing to work properly over multiple buffers by saving a copy of the argument (we can't just save off/len since the buffer may vanish at any point).
2007-09-29 14:25:49 +00:00
Nicholas Marriott
0bbe838b25
Window flags, currently only bell.
2007-09-29 09:15:49 +00:00
Nicholas Marriott
aafee17de6
New input parser via state machine.
2007-09-28 22:47:22 +00:00
Nicholas Marriott
3fa8f16364
Adjust $TMUX environ var to include session index, and don't compact session list on release. Also fix some argument types.
2007-09-27 09:15:58 +00:00
Nicholas Marriott
5ea2ac36e4
Stop crashing when exiting windows.
2007-09-21 20:45:06 +00:00
Nicholas Marriott
33f5f84f99
Whoops. Other way round.
2007-09-21 18:20:44 +00:00
Nicholas Marriott
1702a781bb
Be more careful about destroying windows.
2007-09-21 18:11:25 +00:00
Nicholas Marriott
2cd99f0ebb
Reset ignored signals after forkpty.
2007-09-20 09:43:33 +00:00
Nicholas Marriott
b1782e1b3d
Truncate array if last window is closed.
2007-09-19 16:00:55 +00:00
Nicholas Marriott
e3440e017d
Don't renumber on close.
2007-09-19 15:16:23 +00:00
Nicholas Marriott
5cb483680f
Use after free.
2007-08-27 11:41:00 +00:00
Nicholas Marriott
b9de906ad9
We use screen now, not ansi.
2007-08-27 10:08:44 +00:00
Nicholas Marriott
4b62b1d16c
Sync with fdm.
2007-07-25 23:13:18 +00:00
Nicholas Marriott
a41ece5ff0
Initial import to CVS. Basic functions are working, albeit with a couple of showstopper memory bugs and many missing features. Detaching, reattaching, creating new sessions, listing sessions work acceptably for using with shells. Simple curses programs (top, systat, tetris) and more complicated ones (mutt, emacs) that don't require scrolling regions (ESC[r) mostly work fine (including mutt, emacs). No status bar yet and no key remapping or other customisation.
2007-07-09 19:04:12 +00:00