Commit Graph

378 Commits

Author SHA1 Message Date
Nicholas Marriott
cc9cc1aea8 Some tweaks for Solaris.
Get rid of vis.* in favour of a small replacement function.
2009-04-29 22:25:20 +00:00
Tiago Cunha
c80ad456cc Avoid using the prompt history when the server is locked, and prevent any
input entered from being added to the client's prompt history. From nicm.
2009-04-27 13:56:51 +00:00
Tiago Cunha
058772e4e6 - confirm-before command.
- Bound "&" and "x" by default to confirm-before "kill-window" and
  confirm-before "kill-pane", respectively.
2009-04-27 13:21:16 +00:00
Nicholas Marriott
7d6896ae79 Support NEL. 2009-04-23 21:28:45 +00:00
Nicholas Marriott
5fbdca890a Use the xenl terminfo flag to detect early-wrap terminals like the FreeBSD
console. Many thanks for a very informative email from Christian Weisgerber.
2009-04-23 21:09:17 +00:00
Nicholas Marriott
a91ecf44fa Note it. 2009-04-23 17:51:57 +00:00
Nicholas Marriott
750b8106f7 Remove the right number of characters from the buffer when escape then a cursor
key (or other key prefixed by \033) is pressed. Reported by Stuart Henderson.
2009-04-17 12:36:21 +00:00
Nicholas Marriott
325d43e417 rotate-window command. 2009-04-03 17:21:46 +00:00
Nicholas Marriott
dbf52facd2 Change scroll/pane redraws to only redraw the single pane affected rather than
the entire window.
2009-04-02 21:08:15 +00:00
Nicholas Marriott
84cde92c8f If redrawing the region would mean redrawing > half the pane, just schedule to
redraw the entire window. Also add a flag to skip updating the window any
further if it is scheduled to be redrawn. This has the effect of batching
multiple redraws together.
2009-04-02 20:30:23 +00:00
Nicholas Marriott
a45e33114a Tweak to CHANGES. 2009-04-01 18:22:31 +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
c4ac39f67a +UTF-8 fixed to CHANGES. 2009-03-31 23:14:22 +00:00
Nicholas Marriott
92594c8029 Update CHANGES. 2009-03-31 21:30:03 +00:00
Nicholas Marriott
6c27f1c335 Draw vertical line on the right when window size is limited. 2009-03-31 18:39:45 +00:00
Nicholas Marriott
cf7b384c43 Better UTF-8 support, including combined characters. Unicode data is now stored
as UTF-8 in a separate array, the code does a lookup into this every time it
gets to a UTF-8 cell. Zero width characters are just appended onto the UTF-8
data for the previous cell. This also means that almost no bytes extra are
wasted non-Unicode data (yay).

Still some oddities, such as copy mode skips over wide characters in a strange
way, and the code could do with some tidying.
2009-03-28 20:17:29 +00:00
Nicholas Marriott
cb2ac5c269 Key repeating is now a property of the key binding not of the command. Repeat
is turned on when the key is bound with the -r flag to bind-key. next/previous-
window no longer repeat by default as it turned out to annoy me.
2009-03-28 14:08:09 +00:00
Nicholas Marriott
587badecdb Clear using ED when redrawing the screen. I foolishly assumed using spaces
would be equivalent and terminals would pick up on this, but apparently
not. This fixes copy and paste in xterm/rxvt.
2009-03-28 10:15:01 +00:00
Nicholas Marriott
be0c79f3ad Sockets in /tmp are now created in a subdirectory named, tmux-UID, eg
tmux-1000. The default socket is thus /tmp/tmux-UID/default. To start a
separate server, the new -L command line option should be used: this creates a
socket in the same directory with a different name ("-L main" will create
socket called "main"). -S should only be used to place the socket outside
/tmp. This makes sockets a little more secure and a bit more convenient to use
multiple servers.
2009-03-27 15:57:10 +00:00
Nicholas Marriott
f5f04a9344 * New session flag "set-remain-on-exit" to set remain-on-exit flag for new windows created in that session (like "remain-by-default" used to do). Not perfectly happy about this, but until I can think of a good way to introduce it generically (maybe a set of options in the session) this will do. Fixes SF request 2527847. 2009-03-21 12:44:06 +00:00
Nicholas Marriott
e6d35b6aa4 Support for 88 colour terminals. 2009-03-07 10:29:06 +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
57f5f44d0f Sort out escape key handling so it works. 2009-03-02 16:55:23 +00:00
Nicholas Marriott
95c8c049f5 Redo mode keys slightly more cleanly and apply them to command prompt editing. vi or emacs mode is controlled by the session option status-keys. 2009-02-13 21:39:45 +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
5a04f74d81 Only use RI at the top of the screen. 2009-02-12 00:03:58 +00:00
Nicholas Marriott
959eeef505 FreeBSD's console wraps lines at $COLUMNS - 1 rather than $COLUMNS (the cursor can never be beyond $COLUMNS - 1) and does not appear to support changing this behaviour, or any of the obvious possibilities (turning off right margin wrapping, insert mode). This is irritating, most notably because it impossible to write to the very bottom-right of the screen without scrolling. To work around this, if built on FreeBSD and run with a "cons" $TERM, the bottom-right cell on the screen is omitted. 2009-02-11 23:16:45 +00:00
Nicholas Marriott
d5eaf3a9f6 Emulate CSR with existing screen data on old/stupid terminals which don't support it. 2009-02-11 19:06:58 +00:00
Nicholas Marriott
b37399304f Don't redraw status line unless it has actually changed. Stops extraneous
updates between clock/#() changes and doesn't require manual status-interval 0
when no updates are occuring.
2009-02-10 00:18:06 +00:00
Nicholas Marriott
dd1ebf1b9d Handle "" properly. 2009-02-08 16:38:19 +00:00
Nicholas Marriott
85fd2147af Move to 0.8. 2009-02-08 14:11:37 +00:00
Tiago Cunha
4213ff8faa copy-buffer command. 2009-02-03 17:21:19 +00:00
Tiago Cunha
804beb9266 Support commands with right parenthesis. From nicm and me. 2009-02-01 18:14:49 +00:00
Nicholas Marriott
0127137bbe move-window bound to ., from joshe. 2009-01-30 21:10:10 +00:00
Nicholas Marriott
e16ed21e5d Format. 2009-01-30 00:39:06 +00:00
Nicholas Marriott
6fb9d4dfee Tweak example. 2009-01-30 00:27:00 +00:00
Nicholas Marriott
882316ad6a Set colour of window entry in status line based on window options. 2009-01-30 00:24:49 +00:00
Tiago Cunha
2bb499c8af Support #(command) in status-left, and status-right. 2009-01-29 23:35:14 +00:00
Nicholas Marriott
2057e666a2 Mouse in copy mode. 2009-01-28 22:00:22 +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
2af52440ba -u to start with screen scrolled up. 2009-01-27 23:35:44 +00:00
Nicholas Marriott
c6bd9e2063 Allow status, mode and message attributes to be changed by three new options: status-attr, mode-attr, message-attr. A comma-separataed list is accepted containing: bright, dim, underscore, blink, reverse, hidden, italics, for example: set -g status-attr bright,blink
From Josh Elsasser, thanks!
2009-01-27 20:22:33 +00:00
Nicholas Marriott
9cde0c2477 Be more clever about picking window name. 2009-01-26 22:57:20 +00:00
Nicholas Marriott
4d7e555a48 Don't screw up UTF-8 combined characters. 2009-01-26 20:57:45 +00:00
Tiago Cunha
f62ed6aaa3 load-buffer command 2009-01-25 19:00:10 +00:00
Nicholas Marriott
32903241a2 +CHANGES. 2009-01-23 20:53:18 +00:00
Nicholas Marriott
4d9af27b0b Better error messages for fork. 2009-01-23 16:59:14 +00:00
Nicholas Marriott
3f171917f6 Return 1 on error. Doh. 2009-01-23 16:19:56 +00:00
Nicholas Marriott
392e135349 Handle SIGTERM (and kill-server which uses it), a bit more neatly - tidy up
properly and print a nicer message. Same effect though :-)
2009-01-21 22:47:31 +00:00
Nicholas Marriott
9acc26711d new-window -k. 2009-01-21 22:21:49 +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
7118baa340 Allow a selection in vi keys mode... 2009-01-21 18:19:32 +00:00
Nicholas Marriott
8c259f562b Darwin support for automatic-rename, from joshe. 2009-01-20 22:17:53 +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
2afa8ebc02 Fix various silly problems with status line off. 2009-01-19 20:14:55 +00:00
Nicholas Marriott
94471aab82 Use reverse rather than background which doesn't show up when terminal doesn't
support colours.
2009-01-19 19:01:11 +00:00
Nicholas Marriott
93230a64bc Pass return code from _exec; allow command sequences to work from the command line. 2009-01-19 18:23:40 +00:00
Nicholas Marriott
5f6a351df7 Start the first client with a special socketpair so it is already known to the
server rather than playing silly games to get them synchronised before doing
anything.

Change attach-session to start the server.
2009-01-19 17:16:09 +00:00
Nicholas Marriott
4cdc228353 Unbreak UTF-8. 2009-01-18 21:46:30 +00:00
Nicholas Marriott
d1a5fde3d0 -a flags to next/previous window. 2009-01-18 18:31:45 +00:00
Nicholas Marriott
3efd1f5014 find-window command. 2009-01-18 17:20:52 +00:00
Nicholas Marriott
a15f8fc4a6 Support command sequences separated by " ; ". Also clean up command printing. 2009-01-18 14:40:48 +00:00
Nicholas Marriott
efb62d423b Show (attached) for attached sessions. 2009-01-18 12:13:21 +00:00
Nicholas Marriott
8ea49712fd suspend-client command and suspend client when ^Z key binding is used. 2009-01-18 12:09:42 +00:00
Nicholas Marriott
c623d42df4 Update. 2009-01-17 19:08:12 +00:00
Nicholas Marriott
5aa3098bb6 Support #S #H in status-left/right. 2009-01-15 23:42:21 +00:00
Nicholas Marriott
601667f35a Be a bit more helpful. 2009-01-15 19:30:21 +00:00
Nicholas Marriott
d29ca39e0e Two new commands, choose-window and choose-session which work only when bound to a key and allow the window or session to be selected from a list. 2009-01-15 19:27:31 +00:00
Nicholas Marriott
f57891d006 Spell check. 2009-01-14 23:00:18 +00:00
Nicholas Marriott
3ad1fec9a9 Repeat for last-window is useless and annoying, take it off. 2009-01-14 22:40:17 +00:00
Nicholas Marriott
d4296cb558 Make last-window repeatable too; update my configuration backup, er, example. 2009-01-14 22:36:07 +00:00
Nicholas Marriott
97fef895f2 Rework the prefix-time stuff. The option is now call repeat-time and defaults to 500 ms. However, it only applies to a small subset of commands, currently: up-pane, down-pane, next-window, previous-window, resize-pane-up, resize-pane-down. These are the commands for which it is obviously useful, having it for everything else was just bloody annoying. 2009-01-14 22:13:30 +00:00
Nicholas Marriott
0a99ba0b30 Alt-up/down to resize by five lines. 2009-01-14 21:08:52 +00:00
Nicholas Marriott
d1eb153368 switch-pane is now select-pane. 2009-01-14 19:56:55 +00:00
Nicholas Marriott
3f51dcdfc3 up-pane and down-pane commands. 2009-01-14 19:41:15 +00:00
Nicholas Marriott
b4ac8c1342 Multiple window splitting. 2009-01-14 19:29:32 +00:00
Nicholas Marriott
bc56751692 Disable lock-after-time by default. 2009-01-14 18:41:55 +00:00
Nicholas Marriott
f85559144f kill-pane command. 2009-01-13 06:50:10 +00:00
Nicholas Marriott
98c85cf989 command-prompt now accepts a single argument, a template string. Any occurrences of %% in this string are replaced by whatever is entered at the prompt and the result is executed as a command. This allows things like (now bound by default):
bind , command-prompt "rename-window %%"

Or my favourite:

         bind x command-prompt "split-window 'man %%'"
2009-01-13 01:08:40 +00:00
Nicholas Marriott
60bfaf5bae prefix-time option to allow multiple commands without additional prefixes. 2009-01-12 23:37:02 +00:00
Nicholas Marriott
a88eba3805 More hacks for key handling. 2009-01-12 22:48:00 +00:00
Nicholas Marriott
dbbc314cc9 Handle ctrl/shift modifiers better. 2009-01-12 21:47:03 +00:00
Nicholas Marriott
c35a50b21a Commands to resize panes; also a pane generic cmd, not used yet. 2009-01-12 19:23:14 +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
440a84b2aa Use -O0 to prevent copy issues. 2009-01-12 00:52:37 +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
d78bc5dfc4 save-buffer command, from Tiago Cunha. 2009-01-11 23:14:57 +00:00
Nicholas Marriott
ccf5784bcf Add a couple of bits. 2009-01-11 01:01:05 +00:00
Nicholas Marriott
e3feb067a5 Server locking. set-password and lock-server commands, plus automatic locking. 2009-01-11 00:48:42 +00:00
Nicholas Marriott
4d71164826 Pick up cwd from environment,. 2009-01-10 19:37:35 +00:00
Nicholas Marriott
88ab74ac20 Clock mode. 2009-01-10 19:35:40 +00:00
Nicholas Marriott
a1b43faa43 Trim spaces. 2009-01-10 01:51:22 +00:00
Nicholas Marriott
fb6c8ecae6 New command, server-info, to show server info + terminal details. Also tweak term stuff a bit. 2009-01-10 01:30:38 +00:00
Nicholas Marriott
3ed5aa3e72 Build array of codes, stop using ncurses global variables and push ncurses crap into tty-term.c. 2009-01-09 23:57:42 +00:00
Nicholas Marriott
ed1031b358 Update key handling code. Simplify, support ctrl properly and add a new window option (xterm-keys) to output xterm key codes including ctrl and, if available, alt and shift. 2009-01-09 16:45:58 +00:00
Nicholas Marriott
a9f0418255 Update CHANGES. 2009-01-08 21:59:24 +00:00
Nicholas Marriott
a3e3051742 Whoops. New stuff goes at the top. Doh! 2009-01-07 20:15:20 +00:00
Nicholas Marriott
18312fa6fd Some options tidying/code shrinkage. Also add -u option to unset non-global options (allowing them to inherit), and some extra info. 2009-01-07 19:53:17 +00:00
Nicholas Marriott
4817468e92 +TODO +CHANGES. 2009-01-06 18:24:37 +00:00
Nicholas Marriott
4af8db90e8 Complete option names as well. 2009-01-06 17:04:56 +00:00
Nicholas Marriott
9cddd796ff Prompt history. 2009-01-06 15:37:15 +00:00
Nicholas Marriott
ca1ee21702 Switch to splay tree for key bindings. 2009-01-06 14:10:32 +00:00
Nicholas Marriott
b457479904 Make home and end work. 2008-12-22 17:26:51 +00:00
Nicholas Marriott
db39fd8503 Add vim mode. 2008-12-20 09:09:57 +00:00
Nicholas Marriott
5445918b3e source-file command from Tiago Cunha. 2008-12-15 21:21:56 +00:00
Nicholas Marriott
75f043fedb Work around lack of dch. 2008-12-13 17:41:49 +00:00
Nicholas Marriott
a1a8e0ce7a Tidy formatting. 2008-12-10 20:26:41 +00:00
Nicholas Marriott
5c3d973a4a Import OpenBSD's getopt(3) to workaround broken glibc version. 2008-12-10 20:25:42 +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
d0342f4a04 Ability to show window title on status line. 2008-12-05 20:04:06 +00:00
Nicholas Marriott
8f163b8caa Support dfly, from joshe. 2008-11-27 18:55:47 +00:00
Nicholas Marriott
5ca710d9e3 Disable UTF-8 by default and add options to enable it. 2008-11-16 13:28:59 +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
4e4aefaf7e Don't try to redraw status line in prompt mode. 2008-11-04 20:55:58 +00:00
Nicholas Marriott
0ba0fd389c Translate 256 colours to 16. 2008-10-09 22:00:33 +00:00
Nicholas Marriott
185f7297e8 Better OSC support for title setting, and support APC as well. 2008-10-09 21:22:16 +00:00
Nicholas Marriott
62457bce0b Trim. 2008-09-26 06:45:28 +00:00
Nicholas Marriott
efe557313a Internal screen data rewrite for better 256 colour/UTF-8 support. 2008-09-25 20:08:57 +00:00
Nicholas Marriott
ded348064a Split colour functions from screen. 2008-09-10 18:59:29 +00:00
Nicholas Marriott
19a2c87f04 Initial UTF-8 support. 2008-09-09 22:16:37 +00:00
Nicholas Marriott
4235ddb4e8 Initial 256 colour support, lightly tested. 2008-09-08 17:40:51 +00:00
Nicholas Marriott
33aa931541 Support OS X by moving to gettimeofday(2) and adding poll compat from OpenSSH. 2008-08-28 17:45:30 +00:00
Nicholas Marriott
de0e1c6284 Lose ensure* stuff. 2008-08-07 20:20:52 +00:00
Nicholas Marriott
ba597da72e Environment variables in configuration file. 2008-07-25 17:20:40 +00:00
Nicholas Marriott
3337dfcae5 Support keypad mode, and get rid of SCREEN_DEF*. Meant to commit these separately but forgot :-/. 2008-07-24 21:42:40 +00:00
Nicholas Marriott
ee8a9d2458 Handle kcursor+kkeypad (switch to OA from [A). 2008-07-24 00:03:15 +00:00
Nicholas Marriott
e00736b811 Revert this, it breaks emacs. 2008-07-23 23:46:51 +00:00
Nicholas Marriott
97212771b5 Support keypad. Change cursor key output. 2008-07-23 23:44:50 +00:00
Nicholas Marriott
403b1b27ab Handle exact match properly. 2008-07-19 10:07:50 +00:00
Nicholas Marriott
892d1b534e Split emacs/vi keys into seperate tables. 2008-07-02 21:22:57 +00:00
Nicholas Marriott
dd41035a4d Protocol versioning, version is checked on identify message. 2008-07-01 19:47:02 +00:00
Nicholas Marriott
bd1a705bbe 0.4 released. 2008-07-01 05:43:01 +00:00
Nicholas Marriott
d90d646ca8 Zombie windows, requested by Will Maier. 2008-06-29 07:04:31 +00:00
Nicholas Marriott
571935c823 Handle bad session/client properly. 2008-06-27 17:10:01 +00:00
Nicholas Marriott
b87789707b Oops, forgot to commit move-window. Also add select-prompt to allow index to be typed. 2008-06-25 20:43:14 +00:00
Nicholas Marriott
7836298f29 Allow use of alt keys. move-window command. 2008-06-25 20:33:20 +00:00
Nicholas Marriott
eb5638f3e7 Only lowercase key bindings. 2008-06-25 19:18:20 +00:00
Nicholas Marriott
26792fc3a8 Tweak. 2008-06-25 19:12:30 +00:00
Nicholas Marriott
758efb3947 Handle escaped keys properly and use M-f/M-b in copy mode. 2008-06-25 07:30:08 +00:00
Nicholas Marriott
cb6c14502b Next/previous word in copy-mode. 2008-06-24 07:00:39 +00:00
Nicholas Marriott
59da4dce67 list-commands command. 2008-06-23 22:24:16 +00:00
Nicholas Marriott
c24d849fa4 Split options into a table to allow abbreviations. 2008-06-23 07:41:21 +00:00
Nicholas Marriott
46383e33f8 Don't be clever and translate default colour. 2008-06-22 16:54:08 +00:00
Nicholas Marriott
e70e9513a8 Simple tab completion of option names in command prompt. 2008-06-21 14:11:39 +00:00
Nicholas Marriott
456ff329c3 Only set title if TERM looks vaguely okay. Also use newline for, er, newline rather than cursor_down. 2008-06-21 13:11:28 +00:00
Nicholas Marriott
a65238e98c Strip padding from terminfo strings. 2008-06-21 12:41:05 +00:00
Nicholas Marriott
3128de3f19 buffer-limit option. 2008-06-20 18:45:35 +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
e9000e4c34 Wake up every 100 ms instead of 500. Add note. 2008-06-19 23:24:40 +00:00
Nicholas Marriott
a1db273dc2 display-time option to set message display time. 2008-06-19 23:20:45 +00:00