mirror of
https://github.com/tmux/tmux.git
synced 2026-03-11 11:05:46 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
80d9964a30 | ||
|
|
150ef86800 | ||
|
|
315d45a0eb | ||
|
|
2a412fad04 | ||
|
|
fe6f520054 | ||
|
|
c7f3599ebc | ||
|
|
b7589750a1 | ||
|
|
c310212d28 | ||
|
|
94d99d5462 | ||
|
|
9120df33ef | ||
|
|
1ab0745f8e | ||
|
|
d325104d10 | ||
|
|
3aadc9d665 |
11
CHANGES
11
CHANGES
@@ -1,3 +1,14 @@
|
||||
CHANGES FROM 1.9 to 1.9a 22 February 2014
|
||||
|
||||
NOTE: This is a bug-fix release to address some important bugs which just
|
||||
missed the 1.9 deadline, but were found afterwards.
|
||||
|
||||
Normal Changes
|
||||
==============
|
||||
|
||||
* Fix crash due to uninitialized lastwp member of layout_cell
|
||||
* Fix -fg/-bg/-style with 256 colour terminals.
|
||||
|
||||
CHANGES FROM 1.8 to 1.9, 20 February 2014
|
||||
|
||||
NOTE: This release has bumped the tmux protocol version. It is therefore
|
||||
|
||||
25
FAQ
25
FAQ
@@ -238,6 +238,31 @@ would be welcome.
|
||||
|
||||
vim users may also want to set the "ttyfast" option inside tmux.
|
||||
|
||||
* How do I make ctrl and shift arrow keys work in emacs?
|
||||
|
||||
The terminal-init-screen function in term/screen.el is called for new frames,
|
||||
but it doesn't configure any function keys.
|
||||
|
||||
If the tmux xterm-keys option is on, it is enough to define the same keys as
|
||||
xterm. Add the following to init.el or .emacs to do this:
|
||||
|
||||
(defadvice terminal-init-screen
|
||||
;; The advice is named `tmux', and is run before `terminal-init-screen' runs.
|
||||
(before tmux activate)
|
||||
;; Docstring. This describes the advice and is made available inside emacs;
|
||||
;; for example when doing C-h f terminal-init-screen RET
|
||||
"Apply xterm keymap, allowing use of keys passed through tmux."
|
||||
;; This is the elisp code that is run before `terminal-init-screen'.
|
||||
(if (getenv "TMUX")
|
||||
(let ((map (copy-keymap xterm-function-map)))
|
||||
(set-keymap-parent map (keymap-parent input-decode-map))
|
||||
(set-keymap-parent input-decode-map map))))
|
||||
|
||||
And ensure .tmux.conf contains "set -g xterm-keys on".
|
||||
|
||||
Alternatively, the screen.el file can be copied to the load path and
|
||||
customized.
|
||||
|
||||
* Why doesn't elinks set the window title inside tmux?
|
||||
|
||||
There isn't a way to detect if a terminal supports setting the window title, so
|
||||
|
||||
@@ -9,6 +9,7 @@ EXTRA_DIST = \
|
||||
CHANGES FAQ README TODO COPYING examples compat \
|
||||
array.h compat.h tmux.h osdep-*.c mdoc2man.awk tmux.1
|
||||
dist-hook:
|
||||
make clean
|
||||
grep "^#found_debug=" configure
|
||||
find $(distdir) -name .svn -type d|xargs rm -Rf
|
||||
|
||||
|
||||
2
TODO
2
TODO
@@ -119,7 +119,7 @@
|
||||
|
||||
- miscellaneous
|
||||
* way to keep a job running just read its last line of output for #()
|
||||
link panes into multiple windows
|
||||
* link panes into multiple windows
|
||||
* live update: server started with -U connects to server, requests
|
||||
sessions and windows, receives file descriptors
|
||||
* there are inconsistencies in what we get from old shell and what
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# $Id$
|
||||
|
||||
# Miscellaneous autofoo bullshit.
|
||||
AC_INIT(tmux, 1.9)
|
||||
AC_INIT(tmux, 1.9a)
|
||||
|
||||
AC_CONFIG_AUX_DIR(etc)
|
||||
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||
|
||||
@@ -31,59 +31,237 @@ syn keyword tmuxAction any current none
|
||||
syn keyword tmuxBoolean off on
|
||||
|
||||
syn keyword tmuxCmds
|
||||
\ attach[-session] bind[-key] break-pane breakp capture-pane capturep
|
||||
\ choose-buffer choose-client choose-list choose-session choose-tree
|
||||
\ choose-window clear-history clearhist clock-mode command-prompt
|
||||
\ confirm[-before] copy-mode delete-buffer deleteb detach[-client]
|
||||
\ display[-message] display-panes displayp find-window findw
|
||||
\ has[-session] if[-shell] join-pane joinp kill-pane killp kill-server
|
||||
\ kill-session kill-window killw last-pane lastp last[-window]
|
||||
\ link-window linkw list-buffers lsb list-clients lsc
|
||||
\ list-commands lscm list-keys lsk list-panes lsp list-sessions ls
|
||||
\ list-windows lsw load-buffer loadb lock-client lockc lock[-server]
|
||||
\ lock-session locks move-pane movep move-window movew new[-session]
|
||||
\ next-layout nextl next[-window] paste-buffer pasteb pipe-pane pipep
|
||||
\ previous-layout prevl prev[ious-window] refresh[-client]
|
||||
\ rename[-session] rename-window renamew resize-pane resizep
|
||||
\ respawn-pane respawnp respawn-window respawnw rotate-window rotatew
|
||||
\ run[-shell] save-buffer saveb select-layout selectl
|
||||
\ select-pane selectp select-window selectw send[-keys] send-prefix
|
||||
\ server-info info set-buffer setb set-environment setenv set[-option]
|
||||
\ set-window-option setw show-buffer showb show-environment showenv
|
||||
\ show-messages showmsgs show[-options] show-window-options showw
|
||||
\ source[-file] split-window splitw start[-server]
|
||||
\ suspend-client suspendc swap-pane swapp swap-window swapw
|
||||
\ switch-client switchc unbind[-key] unlink-window unlinkw wait[-for]
|
||||
\ attach[-session]
|
||||
\ bind[-key]
|
||||
\ break-pane
|
||||
\ breakp
|
||||
\ capture-pane
|
||||
\ capturep
|
||||
\ choose-buffer
|
||||
\ choose-client
|
||||
\ choose-list
|
||||
\ choose-session
|
||||
\ choose-tree
|
||||
\ choose-window
|
||||
\ clear-history
|
||||
\ clearhist
|
||||
\ clock-mode
|
||||
\ command-prompt
|
||||
\ confirm[-before]
|
||||
\ copy-mode
|
||||
\ delete-buffer
|
||||
\ deleteb
|
||||
\ detach[-client]
|
||||
\ display[-message]
|
||||
\ display-panes
|
||||
\ displayp
|
||||
\ find-window
|
||||
\ findw
|
||||
\ has[-session]
|
||||
\ if[-shell]
|
||||
\ join-pane
|
||||
\ joinp
|
||||
\ kill-pane
|
||||
\ killp
|
||||
\ kill-server
|
||||
\ kill-session
|
||||
\ kill-window
|
||||
\ killw
|
||||
\ last-pane
|
||||
\ lastp
|
||||
\ last[-window]
|
||||
\ link-window
|
||||
\ linkw
|
||||
\ list-buffers
|
||||
\ lsb
|
||||
\ list-clients
|
||||
\ lsc
|
||||
\ list-commands
|
||||
\ lscm
|
||||
\ list-keys
|
||||
\ lsk
|
||||
\ list-panes
|
||||
\ lsp
|
||||
\ list-sessions
|
||||
\ ls
|
||||
\ list-windows
|
||||
\ lsw
|
||||
\ load-buffer
|
||||
\ loadb
|
||||
\ lock-client
|
||||
\ lockc
|
||||
\ lock[-server]
|
||||
\ lock-session
|
||||
\ locks
|
||||
\ move-pane
|
||||
\ movep
|
||||
\ move-window
|
||||
\ movew
|
||||
\ new[-session]
|
||||
\ next-layout
|
||||
\ nextl
|
||||
\ next[-window]
|
||||
\ paste-buffer
|
||||
\ pasteb
|
||||
\ pipe-pane
|
||||
\ pipep
|
||||
\ previous-layout
|
||||
\ prevl
|
||||
\ prev[ious-window]
|
||||
\ refresh[-client]
|
||||
\ rename[-session]
|
||||
\ rename-window
|
||||
\ renamew
|
||||
\ resize-pane
|
||||
\ resizep
|
||||
\ respawn-pane
|
||||
\ respawnp
|
||||
\ respawn-window
|
||||
\ respawnw
|
||||
\ rotate-window
|
||||
\ rotatew
|
||||
\ run[-shell]
|
||||
\ save-buffer
|
||||
\ saveb
|
||||
\ select-layout
|
||||
\ selectl
|
||||
\ select-pane
|
||||
\ selectp
|
||||
\ select-window
|
||||
\ selectw
|
||||
\ send[-keys]
|
||||
\ send-prefix
|
||||
\ server-info
|
||||
\ info
|
||||
\ set-buffer
|
||||
\ setb
|
||||
\ set-environment
|
||||
\ setenv
|
||||
\ set[-option]
|
||||
\ set-window-option
|
||||
\ setw
|
||||
\ show-buffer
|
||||
\ showb
|
||||
\ show-environment
|
||||
\ showenv
|
||||
\ show-messages
|
||||
\ showmsgs
|
||||
\ show[-options]
|
||||
\ show-window-options
|
||||
\ showw
|
||||
\ source[-file]
|
||||
\ split-window
|
||||
\ splitw
|
||||
\ start[-server]
|
||||
\ suspend-client
|
||||
\ suspendc
|
||||
\ swap-pane
|
||||
\ swapp
|
||||
\ swap-window
|
||||
\ swapw
|
||||
\ switch-client
|
||||
\ switchc
|
||||
\ unbind[-key]
|
||||
\ unlink-window
|
||||
\ unlinkw
|
||||
\ wait[-for]
|
||||
|
||||
syn keyword tmuxOptsSet
|
||||
\ buffer-limit escape-time exit-unattached exit-unattached focus-events
|
||||
\ quiet set-clipboard
|
||||
\ assume-paste-time base-index bell-action bell-on-alert default-command
|
||||
\ default-shell default-terminal destroy-unattached detach-on-destroy
|
||||
\ display-panes-active-colour display-panes-colour display-panes-time
|
||||
\ display-time history-limit lock-after-time lock-command lock-server
|
||||
\ message-command-style message-limit message-style mouse-resize-pane
|
||||
\ mouse-select-pane mouse-select-window mouse-utf8
|
||||
\ pane-active-border-style pane-border-style prefix prefix2
|
||||
\ renumber-windows repeat-time set-remain-on-exit set-titles
|
||||
\ set-titles-string status status-interval status-justify status-keys
|
||||
\ status-left status-left-length status-left-style status-position
|
||||
\ status-right status-right-length staus-right-style status-utf8
|
||||
\ terminal-overrides update-environment visual-activity visual-bell
|
||||
\ visual-content visual-silence word-separators
|
||||
\ assume-paste-time
|
||||
\ base-index
|
||||
\ bell-action
|
||||
\ bell-on-alert
|
||||
\ buffer-limit
|
||||
\ default-command
|
||||
\ default-shell
|
||||
\ default-terminal
|
||||
\ destroy-unattached
|
||||
\ detach-on-destroy
|
||||
\ display-panes-active-colour
|
||||
\ display-panes-colour
|
||||
\ display-panes-time
|
||||
\ display-time
|
||||
\ escape-time
|
||||
\ exit-unattached
|
||||
\ focus-events
|
||||
\ history-limit
|
||||
\ lock-after-time
|
||||
\ lock-command
|
||||
\ lock-server
|
||||
\ message-command-style
|
||||
\ message-limit
|
||||
\ message-style
|
||||
\ mouse-resize-pane
|
||||
\ mouse-select-pane
|
||||
\ mouse-select-window
|
||||
\ mouse-utf8
|
||||
\ pane-active-border-style
|
||||
\ pane-border-style
|
||||
\ prefix
|
||||
\ prefix2
|
||||
\ quiet
|
||||
\ renumber-windows
|
||||
\ repeat-time
|
||||
\ set-clipboard
|
||||
\ set-remain-on-exit
|
||||
\ set-titles
|
||||
\ set-titles-string
|
||||
\ status
|
||||
\ status-interval
|
||||
\ status-justify
|
||||
\ status-keys
|
||||
\ status-left
|
||||
\ status-left-length
|
||||
\ status-left-style
|
||||
\ status-position
|
||||
\ status-right
|
||||
\ status-right-length
|
||||
\ status-utf8
|
||||
\ staus-right-style
|
||||
\ terminal-overrides
|
||||
\ update-environment
|
||||
\ visual-activity
|
||||
\ visual-bell
|
||||
\ visual-content
|
||||
\ visual-silence
|
||||
\ word-separators
|
||||
|
||||
syn keyword tmuxOptsSetw
|
||||
\ aggressive-resize allow-rename alternate-screen automatic-rename
|
||||
\ c0-change-interval c0-change-trigger clock-mode-colour
|
||||
\ clock-mode-style force-height force-width force-height
|
||||
\ force-width main-pane-height main-pane-width mode-keys
|
||||
\ mode-mouse mode-style monitor-activity monitor-content monitor-silence
|
||||
\ other-pane-height other-pane-width pane-base-index remain-on-exit
|
||||
\ synchronize-panes utf8 window-status-activity-style
|
||||
\ window-status-bell-style window-status-content-style
|
||||
\ window-status-current-format window-status-current-style
|
||||
\ window-status-format window-status-last-style window-status-separator
|
||||
\ window-status-style wrap-search xterm-keys
|
||||
\ aggressive-resize
|
||||
\ allow-rename
|
||||
\ alternate-screen
|
||||
\ automatic-rename
|
||||
\ c0-change-interval
|
||||
\ c0-change-trigger
|
||||
\ clock-mode-colour
|
||||
\ clock-mode-style
|
||||
\ force-height
|
||||
\ force-width
|
||||
\ main-pane-height
|
||||
\ main-pane-width
|
||||
\ mode-keys
|
||||
\ mode-mouse
|
||||
\ mode-style
|
||||
\ monitor-activity
|
||||
\ monitor-content
|
||||
\ monitor-silence
|
||||
\ other-pane-height
|
||||
\ other-pane-width
|
||||
\ pane-base-index
|
||||
\ remain-on-exit
|
||||
\ synchronize-panes
|
||||
\ utf8
|
||||
\ window-status-activity-style
|
||||
\ window-status-bell-style
|
||||
\ window-status-content-style
|
||||
\ window-status-current-format
|
||||
\ window-status-current-style
|
||||
\ window-status-format
|
||||
\ window-status-last-style
|
||||
\ window-status-separator
|
||||
\ window-status-style
|
||||
\ wrap-search
|
||||
\ xterm-keys
|
||||
|
||||
syn keyword tmuxTodo FIXME NOTE TODO XXX contained
|
||||
|
||||
|
||||
51
examples/xterm-keys.vim
Normal file
51
examples/xterm-keys.vim
Normal file
@@ -0,0 +1,51 @@
|
||||
" tmux.vim - Set xterm input codes passed by tmux
|
||||
" Author: Mark Oteiza
|
||||
" License: Public domain
|
||||
" Description: Simple plugin that assigns some xterm(1)-style keys to escape
|
||||
" sequences passed by tmux when "xterm-keys" is set to "on". Inspired by an
|
||||
" example given by Chris Johnsen at:
|
||||
" https://stackoverflow.com/a/15471820
|
||||
"
|
||||
" Documentation: help:xterm-modifier-keys man:tmux(1)
|
||||
|
||||
if exists("g:loaded_tmux") || &cp
|
||||
finish
|
||||
endif
|
||||
let g:loaded_tmux = 1
|
||||
|
||||
function! s:SetXtermCapabilities()
|
||||
set ttymouse=sgr
|
||||
|
||||
execute "set <xUp>=\e[1;*A"
|
||||
execute "set <xDown>=\e[1;*B"
|
||||
execute "set <xRight>=\e[1;*C"
|
||||
execute "set <xLeft>=\e[1;*D"
|
||||
|
||||
execute "set <xHome>=\e[1;*H"
|
||||
execute "set <xEnd>=\e[1;*F"
|
||||
|
||||
execute "set <Insert>=\e[2;*~"
|
||||
execute "set <Delete>=\e[3;*~"
|
||||
execute "set <PageUp>=\e[5;*~"
|
||||
execute "set <PageDown>=\e[6;*~"
|
||||
|
||||
execute "set <xF1>=\e[1;*P"
|
||||
execute "set <xF2>=\e[1;*Q"
|
||||
execute "set <xF3>=\e[1;*R"
|
||||
execute "set <xF4>=\e[1;*S"
|
||||
|
||||
execute "set <F5>=\e[15;*~"
|
||||
execute "set <F6>=\e[17;*~"
|
||||
execute "set <F7>=\e[18;*~"
|
||||
execute "set <F8>=\e[19;*~"
|
||||
execute "set <F9>=\e[20;*~"
|
||||
execute "set <F10>=\e[21;*~"
|
||||
execute "set <F11>=\e[23;*~"
|
||||
execute "set <F12>=\e[24;*~"
|
||||
|
||||
execute "set t_kP=^[[5;*~"
|
||||
execute "set t_kN=^[[6;*~"
|
||||
endfunction
|
||||
|
||||
if exists('$TMUX')
|
||||
call s:SetXtermCapabilities()
|
||||
1
layout.c
1
layout.c
@@ -53,6 +53,7 @@ layout_create_cell(struct layout_cell *lcparent)
|
||||
lc->yoff = UINT_MAX;
|
||||
|
||||
lc->wp = NULL;
|
||||
lc->lastwp = NULL;
|
||||
|
||||
return (lc);
|
||||
}
|
||||
|
||||
26
style.c
26
style.c
@@ -203,8 +203,14 @@ style_apply(struct grid_cell *gc, struct options *oo, const char *name)
|
||||
|
||||
memcpy(gc, &grid_default_cell, sizeof *gc);
|
||||
gcp = options_get_style(oo, name);
|
||||
colour_set_fg(gc, gcp->fg);
|
||||
colour_set_bg(gc, gcp->bg);
|
||||
if (gcp->flags & GRID_FLAG_FG256)
|
||||
colour_set_fg(gc, gcp->fg | 0x100);
|
||||
else
|
||||
colour_set_fg(gc, gcp->fg);
|
||||
if (gcp->flags & GRID_FLAG_BG256)
|
||||
colour_set_bg(gc, gcp->bg | 0x100);
|
||||
else
|
||||
colour_set_bg(gc, gcp->bg);
|
||||
gc->attr |= gcp->attr;
|
||||
}
|
||||
|
||||
@@ -215,10 +221,18 @@ style_apply_update(struct grid_cell *gc, struct options *oo, const char *name)
|
||||
struct grid_cell *gcp;
|
||||
|
||||
gcp = options_get_style(oo, name);
|
||||
if (gcp->fg != 8)
|
||||
colour_set_fg(gc, gcp->fg);
|
||||
if (gcp->bg != 8)
|
||||
colour_set_bg(gc, gcp->bg);
|
||||
if (gcp->fg != 8) {
|
||||
if (gcp->flags & GRID_FLAG_FG256)
|
||||
colour_set_fg(gc, gcp->fg | 0x100);
|
||||
else
|
||||
colour_set_fg(gc, gcp->fg);
|
||||
}
|
||||
if (gcp->bg != 8) {
|
||||
if (gcp->flags & GRID_FLAG_BG256)
|
||||
colour_set_bg(gc, gcp->bg | 0x100);
|
||||
else
|
||||
colour_set_bg(gc, gcp->bg);
|
||||
}
|
||||
if (gcp->attr != 0)
|
||||
gc->attr |= gcp->attr;
|
||||
}
|
||||
|
||||
10
tmux.1
10
tmux.1
@@ -61,7 +61,7 @@ A window occupies the entire screen
|
||||
and may be split into rectangular panes,
|
||||
each of which is a separate pseudo terminal
|
||||
(the
|
||||
.Xr pty 4
|
||||
.Xr pty 7
|
||||
manual page documents the technical details of pseudo terminals).
|
||||
Any number of
|
||||
.Nm
|
||||
@@ -359,7 +359,7 @@ or
|
||||
These specify the client, session, window or pane which a command should affect.
|
||||
.Ar target-client
|
||||
is the name of the
|
||||
.Xr pty 4
|
||||
.Xr pty 7
|
||||
file to which the client is connected, for example either of
|
||||
.Pa /dev/ttyp1
|
||||
or
|
||||
@@ -710,7 +710,7 @@ and
|
||||
specify the size of the initial window (80 by 24 if not given).
|
||||
.Pp
|
||||
If run from a terminal, any
|
||||
.Xr termios 4
|
||||
.Xr termios 3
|
||||
special characters are saved and used for new windows in the new session.
|
||||
.Pp
|
||||
The
|
||||
@@ -1144,7 +1144,7 @@ interactively from a list.
|
||||
After a client is chosen,
|
||||
.Ql %%
|
||||
is replaced by the client
|
||||
.Xr pty 4
|
||||
.Xr pty 7
|
||||
path in
|
||||
.Ar template
|
||||
and the result executed as a command.
|
||||
@@ -3852,6 +3852,6 @@ bind-key / command-prompt "split-window 'exec man %%'"
|
||||
bind-key S command-prompt "new-window -n %1 'ssh %1'"
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr pty 4
|
||||
.Xr pty 7
|
||||
.Sh AUTHORS
|
||||
.An Nicholas Marriott Aq Mt nicm@users.sourceforge.net
|
||||
|
||||
5
window.c
5
window.c
@@ -407,8 +407,9 @@ window_pane_active_set(struct window_pane *wp, struct window_pane *nextwp)
|
||||
* Previously active pane, if any, must not be the same as the source
|
||||
* pane.
|
||||
*/
|
||||
if (nextwp->layout_cell->parent != NULL) {
|
||||
lastwp = nextwp->layout_cell->parent->lastwp;
|
||||
lc = nextwp->layout_cell->parent;
|
||||
if (lc != NULL && lc->lastwp != NULL) {
|
||||
lastwp = lc->lastwp;
|
||||
if (lastwp != wp && window_pane_visible(lastwp))
|
||||
return (lastwp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user