summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2019-05-28 10:05:25 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2019-05-28 10:05:25 +0000
commit40b18b3adba6adcb6e40171e182fcf71b7c8dd67 (patch)
tree0d1a19221305333c1232ead4f296f1235d24fbb8
parentbcb36373eb31b2b8cc4f17544457775cd1388c42 (diff)
Add key bindings to open the window and pane menus (C-m and M-m for now).
-rw-r--r--usr.bin/tmux/key-bindings.c98
1 files changed, 53 insertions, 45 deletions
diff --git a/usr.bin/tmux/key-bindings.c b/usr.bin/tmux/key-bindings.c
index e63aea45eb6..a2e5a6139cd 100644
--- a/usr.bin/tmux/key-bindings.c
+++ b/usr.bin/tmux/key-bindings.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: key-bindings.c,v 1.96 2019/05/28 09:50:54 nicm Exp $ */
+/* $OpenBSD: key-bindings.c,v 1.97 2019/05/28 10:05:24 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -24,6 +24,52 @@
#include "tmux.h"
+#define DEFAULT_CLIENT_MENU \
+ " 'Detach' 'd' {detach-client}" \
+ " 'Detach & Kill' 'X' {detach-client -P}" \
+ " 'Detach Others' 'o' {detach-client -a}" \
+ " ''" \
+ " 'Lock' 'l' {lock-client}"
+#define DEFAULT_SESSION_MENU \
+ " 'Next' 'n' {switch-client -n}" \
+ " 'Previous' 'p' {switch-client -p}" \
+ " ''" \
+ " 'Renumber' 'N' {move-window -r}" \
+ " 'Rename' 'n' {command-prompt -I \"#S\" \"rename-session -- '%%'\"}" \
+ " ''" \
+ " 'New Session' 's' {new-session}" \
+ " 'New Window' 'w' {new-window}"
+#define DEFAULT_WINDOW_MENU \
+ " 'Swap Left' 'l' {swap-window -t:-1}" \
+ " 'Swap Right' 'r' {swap-window -t:+1}" \
+ " '#{?pane_marked_set,,-}Swap Marked' 's' {swap-window}" \
+ " ''" \
+ " 'Kill' 'X' {kill-window}" \
+ " 'Respawn' 'R' {respawn-window -k}" \
+ " '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m}" \
+ " 'Rename' 'n' {command-prompt -I \"#W\" \"rename-window -- '%%'\"}" \
+ " ''" \
+ " 'New After' 'w' {new-window -a}" \
+ " 'New At End' 'W' {new-window}"
+#define DEFAULT_PANE_MENU \
+ " '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"}" \
+ " '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \"#{q:mouse_word}\"}" \
+ " '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \"#{q:mouse_word}\"}" \
+ " '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \"#{q:mouse_line}\"}" \
+ " ''" \
+ " 'Horizontal Split' 'h' {split-window -h}" \
+ " 'Vertical Split' 'v' {split-window -v}" \
+ " ''" \
+ " 'Swap Up' 'u' {swap-pane -U}" \
+ " 'Swap Down' 'd' {swap-pane -D}" \
+ " '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane}" \
+ " ''" \
+ " 'Kill' 'X' {kill-pane}" \
+ " 'Respawn' 'R' {respawn-pane -k}" \
+ " '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m}" \
+ " '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}"
+
+
static int key_bindings_cmp(struct key_binding *, struct key_binding *);
RB_GENERATE_STATIC(key_bindings, key_binding, entry, key_bindings_cmp);
static int key_table_cmp(struct key_table *, struct key_table *);
@@ -281,50 +327,12 @@ key_bindings_init(void)
"bind -n MouseDown3Pane if -Ft= '#{||:mouse_any_flag,pane_in_mode}' 'select-pane -t=; send-keys -M' 'select-pane -mt='",
"bind -n WheelUpPane if -Ft= '#{mouse_any_flag}' 'send-keys -M' 'if -Ft= \"#{pane_in_mode}\" \"send-keys -M\" \"copy-mode -et=\"'",
- "bind -n MouseDown3StatusRight display-menu -t= -xM -yS -T \"#[align=centre]#{client_name}\""
- " 'Detach' 'd' {detach-client}"
- " 'Detach & Kill' 'X' {detach-client -P}"
- " 'Detach Others' 'o' {detach-client -a}"
- " ''"
- " 'Lock' 'l' {lock-client}",
- "bind -n MouseDown3StatusLeft display-menu -t= -xM -yS -T \"#[align=centre]#{session_name}\""
- " 'Next' 'n' {switch-client -n}"
- " 'Previous' 'p' {switch-client -p}"
- " ''"
- " 'Renumber' 'N' {move-window -r}"
- " 'Rename' 'n' {command-prompt -I \"#S\" \"rename-session -- '%%'\"}"
- " ''"
- " 'New Session' 's' {new-session}"
- " 'New Window' 'w' {new-window}",
- "bind -n MouseDown3Status display-menu -t= -xW -yS -T \"#[align=centre]#{window_index}:#{window_name}\""
- " 'Swap Left' 'l' {swap-window -t:-1}"
- " 'Swap Right' 'r' {swap-window -t:+1}"
- " '#{?pane_marked_set,,-}Swap Marked' 's' {swap-window}"
- " ''"
- " 'Kill' 'X' {kill-window}"
- " 'Respawn' 'R' {respawn-window -k}"
- " '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m}"
- " 'Rename' 'n' {command-prompt -I \"#W\" \"rename-window -- '%%'\"}"
- " ''"
- " 'New After' 'w' {new-window -a}"
- " 'New At End' 'W' {new-window}",
- "bind -n M-MouseDown3Pane display-menu -t= -xM -yM -T \"#[align=centre]#{pane_index} (#{pane_id})\""
- " '#{?mouse_word,Search For #[underscore]#{=/9/...:mouse_word},}' 'C-r' {copy-mode -t=; send -Xt= search-backward \"#{q:mouse_word}\"}"
- " '#{?mouse_word,Type #[underscore]#{=/9/...:mouse_word},}' 'C-y' {send-keys -l -- \"#{q:mouse_word}\"}"
- " '#{?mouse_word,Copy #[underscore]#{=/9/...:mouse_word},}' 'c' {set-buffer -- \"#{q:mouse_word}\"}"
- " '#{?mouse_line,Copy Line,}' 'l' {set-buffer -- \"#{q:mouse_line}\"}"
- " ''"
- " 'Horizontal Split' 'h' {split-window -h}"
- " 'Vertical Split' 'v' {split-window -v}"
- " ''"
- " 'Swap Up' 'u' {swap-pane -U}"
- " 'Swap Down' 'd' {swap-pane -D}"
- " '#{?pane_marked_set,,-}Swap Marked' 's' {swap-pane}"
- " ''"
- " 'Kill' 'X' {kill-pane}"
- " 'Respawn' 'R' {respawn-pane -k}"
- " '#{?pane_marked,Unmark,Mark}' 'm' {select-pane -m}"
- " '#{?window_zoomed_flag,Unzoom,Zoom}' 'z' {resize-pane -Z}",
+ "bind -n MouseDown3StatusRight display-menu -t= -xM -yS -T \"#[align=centre]#{client_name}\" " DEFAULT_CLIENT_MENU,
+ "bind -n MouseDown3StatusLeft display-menu -t= -xM -yS -T \"#[align=centre]#{session_name}\" " DEFAULT_SESSION_MENU,
+ "bind -n MouseDown3Status display-menu -t= -xW -yS -T \"#[align=centre]#{window_index}:#{window_name}\" " DEFAULT_WINDOW_MENU,
+ "bind C-m display-menu -xW -yS -T \"#[align=centre]#{window_index}:#{window_name}\" " DEFAULT_WINDOW_MENU,
+ "bind -n M-MouseDown3Pane display-menu -t= -xM -yM -T \"#[align=centre]#{pane_index} (#{pane_id})\" " DEFAULT_PANE_MENU,
+ "bind M-m display-menu -xP -yP -T \"#[align=centre]#{pane_index} (#{pane_id})\" " DEFAULT_PANE_MENU,
"bind -Tcopy-mode C-Space send -X begin-selection",
"bind -Tcopy-mode C-a send -X start-of-line",