Okay, these diffs have been rebased to before the copy-output-merge
stuff (and to the latest OpenBSD changes), and reworked a bit. They
should be applied in the order: word-separators, then cmd-prefixes.

-- 
Micah J. Cowan
http://micah.cowan.name/
Index: mode-key.c
===================================================================
--- mode-key.c.orig
+++ mode-key.c
@@ -106,6 +106,7 @@ struct mode_key_cmdstr mode_key_cmdstr_c
 	{ MODEKEYCOPY_SEARCHDOWN, "search-forward" },
 	{ MODEKEYCOPY_SEARCHREVERSE, "search-reverse" },
 	{ MODEKEYCOPY_SEARCHUP, "search-backward" },
+	{ MODEKEYCOPY_STARTNUMBERPREFIX, "start-number-prefix" },
 	{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
 	{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
 	{ MODEKEYCOPY_TOPLINE, "top-line" },
@@ -178,6 +179,15 @@ const struct mode_key_entry mode_key_vi_
 	{ '$',			0, MODEKEYCOPY_ENDOFLINE },
 	{ '/',			0, MODEKEYCOPY_SEARCHDOWN },
 	{ '0',			0, MODEKEYCOPY_STARTOFLINE },
+	{ '1',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '2',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '3',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '4',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '5',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '6',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '7',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '8',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '9',			0, MODEKEYCOPY_STARTNUMBERPREFIX },
 	{ ':',			0, MODEKEYCOPY_GOTOLINE },
 	{ '?',			0, MODEKEYCOPY_SEARCHUP },
 	{ 'B',			0, MODEKEYCOPY_PREVIOUSSPACE },
@@ -280,6 +290,15 @@ struct mode_key_tree mode_key_tree_emacs
 /* emacs copy mode keys. */
 const struct mode_key_entry mode_key_emacs_copy[] = {
 	{ ' ',			0, MODEKEYCOPY_NEXTPAGE },
+	{ '1' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '2' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '3' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '4' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '5' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '6' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '7' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '8' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
+	{ '9' | KEYC_ESCAPE,	0, MODEKEYCOPY_STARTNUMBERPREFIX },
 	{ '<' | KEYC_ESCAPE,    0, MODEKEYCOPY_HISTORYTOP },
 	{ '>' | KEYC_ESCAPE,    0, MODEKEYCOPY_HISTORYBOTTOM },
 	{ 'R' | KEYC_ESCAPE,	0, MODEKEYCOPY_TOPLINE },
Index: tmux.h
===================================================================
--- tmux.h.orig
+++ tmux.h
@@ -476,6 +476,7 @@ enum mode_key_cmd {
 	MODEKEYCOPY_SEARCHDOWN,
 	MODEKEYCOPY_SEARCHREVERSE,
 	MODEKEYCOPY_SEARCHUP,
+	MODEKEYCOPY_STARTNUMBERPREFIX,
 	MODEKEYCOPY_STARTOFLINE,
 	MODEKEYCOPY_STARTSELECTION,
 	MODEKEYCOPY_TOPLINE,
Index: window-copy.c
===================================================================
--- window-copy.c.orig
+++ window-copy.c
@@ -28,6 +28,7 @@ void	window_copy_free(struct window_pane
 void	window_copy_resize(struct window_pane *, u_int, u_int);
 void	window_copy_key(struct window_pane *, struct client *, int);
 int	window_copy_key_input(struct window_pane *, int);
+int	window_copy_key_numeric_prefix(struct window_pane *, int);
 void	window_copy_mouse(
 	    struct window_pane *, struct client *, struct mouse_event *);
 
@@ -81,6 +82,7 @@ const struct window_mode window_copy_mod
 
 enum window_copy_input_type {
 	WINDOW_COPY_OFF,
+	WINDOW_COPY_NUMERICPREFIX,
 	WINDOW_COPY_SEARCHUP,
 	WINDOW_COPY_SEARCHDOWN,
 	WINDOW_COPY_GOTOLINE,
@@ -108,6 +110,8 @@ struct window_copy_mode_data {
 	const char     *inputprompt;
 	char   	       *inputstr;
 
+	u_int		numprefix;
+
 	enum window_copy_input_type searchtype;
 	char	       *searchstr;
 };
@@ -134,6 +138,7 @@ window_copy_init(struct window_pane *wp)
 	data->inputtype = WINDOW_COPY_OFF;
 	data->inputprompt = NULL;
 	data->inputstr = xstrdup("");
+	data->numprefix = 0;
 
 	data->searchtype = WINDOW_COPY_OFF;
 	data->searchstr = NULL;
@@ -222,11 +227,20 @@ window_copy_key(struct window_pane *wp, 
 	const char			*word_separators;
 	struct window_copy_mode_data	*data = wp->modedata;
 	struct screen			*s = &data->screen;
-	u_int				 n;
+	u_int				 n, np;
 	int				 keys;
 	enum mode_key_cmd		 cmd;
 
-	if (data->inputtype != WINDOW_COPY_OFF) {
+	np = data->numprefix;
+	if (np == 0)
+		np = 1;
+
+	if (data->inputtype == WINDOW_COPY_NUMERICPREFIX) {
+		if (window_copy_key_numeric_prefix(wp, key) == 0)
+			return;
+		data->inputtype = WINDOW_COPY_OFF;
+		window_copy_redraw_lines(wp, screen_size_y(s) - 1, 1);
+	} else if (data->inputtype != WINDOW_COPY_OFF) {
 		if (window_copy_key_input(wp, key) != 0)
 			goto input_off;
 		return;
@@ -235,55 +249,69 @@ window_copy_key(struct window_pane *wp, 
 	cmd = mode_key_lookup(&data->mdata, key);
 	switch (cmd) {
 	case MODEKEYCOPY_CANCEL:
-		window_pane_reset_mode(wp);
+		for (; np != 0; np--)
+			window_pane_reset_mode(wp);
 		break;
 	case MODEKEYCOPY_LEFT:
-		window_copy_cursor_left(wp);
-		return;
+		for (; np != 0; np--)
+			window_copy_cursor_left(wp);
+		break;
 	case MODEKEYCOPY_RIGHT:
-		window_copy_cursor_right(wp);
-		return;
+		for (; np != 0; np--)
+			window_copy_cursor_right(wp);
+		break;
 	case MODEKEYCOPY_UP:
-		window_copy_cursor_up(wp, 0);
-		return;
+		for (; np != 0; np--)
+			window_copy_cursor_up(wp, 0);
+		break;
 	case MODEKEYCOPY_DOWN:
-		window_copy_cursor_down(wp, 0);
-		return;
+		for (; np != 0; np--)
+			window_copy_cursor_down(wp, 0);
+		break;
 	case MODEKEYCOPY_SCROLLUP:
-		window_copy_cursor_up(wp, 1);
+		for (; np != 0; np--)
+			window_copy_cursor_up(wp, 1);
 		break;
 	case MODEKEYCOPY_SCROLLDOWN:
-		window_copy_cursor_down(wp, 1);
+		for (; np != 0; np--)
+			window_copy_cursor_down(wp, 1);
 		break;
 	case MODEKEYCOPY_PREVIOUSPAGE:
-		window_copy_pageup(wp);
+		for (; np != 0; np--)
+			window_copy_pageup(wp);
 		break;
 	case MODEKEYCOPY_NEXTPAGE:
 		n = 1;
 		if (screen_size_y(s) > 2)
 			n = screen_size_y(s) - 2;
-		if (data->oy < n)
-			data->oy = 0;
-		else
-			data->oy -= n;
+		for (; np != 0; np--) {
+			if (data->oy < n)
+				data->oy = 0;
+			else
+				data->oy -= n;
+		}
 		window_copy_update_selection(wp);
 		window_copy_redraw_screen(wp);
 		break;
 	case MODEKEYCOPY_HALFPAGEUP:
 		n = screen_size_y(s) / 2;
-		if (data->oy + n > screen_hsize(&wp->base))
-			data->oy = screen_hsize(&wp->base);
-		else
-			data->oy += n;
+		for (; np != 0; np--) {
+			if (data->oy + n > screen_hsize(&wp->base))
+				data->oy = screen_hsize(&wp->base);
+			else
+				data->oy += n;
+		}
 		window_copy_update_selection(wp);
 		window_copy_redraw_screen(wp);
 		break;
 	case MODEKEYCOPY_HALFPAGEDOWN:
 		n = screen_size_y(s) / 2;
-		if (data->oy < n)
-			data->oy = 0;
-		else
-			data->oy -= n;
+		for (; np != 0; np--) {
+			if (data->oy < n)
+				data->oy = 0;
+			else
+				data->oy -= n;
+		}
 		window_copy_update_selection(wp);
 		window_copy_redraw_screen(wp);
 		break;
@@ -343,28 +371,34 @@ window_copy_key(struct window_pane *wp, 
 		window_copy_cursor_end_of_line(wp);
 		break;
 	case MODEKEYCOPY_NEXTSPACE:
-		window_copy_cursor_next_word(wp, " ");
+		for (; np != 0; np--)
+			window_copy_cursor_next_word(wp, " ");
 		break;
 	case MODEKEYCOPY_NEXTSPACEEND:
-		window_copy_cursor_next_word_end(wp, " ");
+		for (; np != 0; np--)
+			window_copy_cursor_next_word_end(wp, " ");
 		break;
 	case MODEKEYCOPY_NEXTWORD:
 		word_separators =
 		    options_get_string(&wp->window->options, "word-separators");
-		window_copy_cursor_next_word(wp, word_separators);
+		for (; np != 0; np--)
+			window_copy_cursor_next_word(wp, word_separators);
 		break;
 	case MODEKEYCOPY_NEXTWORDEND:
 		word_separators =
 		    options_get_string(&wp->window->options, "word-separators");
-		window_copy_cursor_next_word_end(wp, word_separators);
+		for (; np != 0; np--)
+			window_copy_cursor_next_word_end(wp, word_separators);
 		break;
 	case MODEKEYCOPY_PREVIOUSSPACE:
-		window_copy_cursor_previous_word(wp, " ");
+		for (; np != 0; np--)
+			window_copy_cursor_previous_word(wp, " ");
 		break;
 	case MODEKEYCOPY_PREVIOUSWORD:
 		word_separators =
 		    options_get_string(&wp->window->options, "word-separators");
-		window_copy_cursor_previous_word(wp, word_separators);
+		for (; np != 0; np--)
+			window_copy_cursor_previous_word(wp, word_separators);
 		break;
 	case MODEKEYCOPY_SEARCHUP:
 		data->inputtype = WINDOW_COPY_SEARCHUP;
@@ -379,18 +413,29 @@ window_copy_key(struct window_pane *wp, 
 		switch (data->searchtype) {
 		case WINDOW_COPY_OFF:
 		case WINDOW_COPY_GOTOLINE:
+		case WINDOW_COPY_NUMERICPREFIX:
 			break;
 		case WINDOW_COPY_SEARCHUP:
-			if (cmd == MODEKEYCOPY_SEARCHAGAIN)
-				window_copy_search_up(wp, data->searchstr);
-			else
-				window_copy_search_down(wp, data->searchstr);
+			if (cmd == MODEKEYCOPY_SEARCHAGAIN) {
+				for (; np != 0; np--)
+					window_copy_search_up(
+					    wp, data->searchstr);
+			} else {
+				for (; np != 0; np--)
+					window_copy_search_down(
+					    wp, data->searchstr);
+			}
 			break;
 		case WINDOW_COPY_SEARCHDOWN:
-			if (cmd == MODEKEYCOPY_SEARCHAGAIN)
-				window_copy_search_down(wp, data->searchstr);
-			else
-				window_copy_search_up(wp, data->searchstr);
+			if (cmd == MODEKEYCOPY_SEARCHAGAIN) {
+				for (; np != 0; np--)
+					window_copy_search_down(
+					    wp, data->searchstr);
+			} else {
+				for (; np != 0; np--)
+					window_copy_search_up(
+					    wp, data->searchstr);
+			}
 			break;
 		}
 		break;
@@ -399,13 +444,26 @@ window_copy_key(struct window_pane *wp, 
 		data->inputprompt = "Goto Line";
 		*data->inputstr = '\0';
 		goto input_on;
+	case MODEKEYCOPY_STARTNUMBERPREFIX:
+		if ((key & 0xff) >= '0' && (key & 0xff) <= '9') {
+			data->inputtype = WINDOW_COPY_NUMERICPREFIX;
+			data->numprefix = 0;
+			window_copy_key_numeric_prefix(wp, key & 0xff);
+			return;
+		} else {
+			/* Ignore this command for non-digit keys. */
+		}
+		break;
 	case MODEKEYCOPY_RECTANGLETOGGLE:
 		window_copy_rectangle_toggle(wp);
-		return;
+		break;
 	default:
 		break;
 	}
 
+	/* Remove numeric prefix after processing the command. */
+	data->numprefix = 0;
+
 	return;
 
 input_on:
@@ -452,6 +510,7 @@ window_copy_key_input(struct window_pane
 	case MODEKEYEDIT_ENTER:
 		switch (data->inputtype) {
 		case WINDOW_COPY_OFF:
+		case WINDOW_COPY_NUMERICPREFIX:
 			break;
 		case WINDOW_COPY_SEARCHUP:
 			window_copy_search_up(wp, data->inputstr);
@@ -486,6 +545,25 @@ window_copy_key_input(struct window_pane
 	return (0);
 }
 
+int
+window_copy_key_numeric_prefix(struct window_pane *wp, int key)
+{
+	struct window_copy_mode_data	*data = wp->modedata;
+	struct screen			*s = &data->screen;
+
+	if (!(key >= '0' && key <= '9'))
+		return 1;
+
+	/* Limit the prefix to 3 digits (max is 999). */
+	if (data->numprefix >= 100)
+		return 0;
+
+	data->numprefix = data->numprefix * 10 + (key - '0');
+
+	window_copy_redraw_lines(wp, screen_size_y(s) - 1, 1);
+	return 0;
+}
+
 /* ARGSUSED */
 void
 window_copy_mouse(
@@ -755,8 +833,13 @@ window_copy_write_line(
 		screen_write_cursormove(ctx, screen_size_x(s) - size, 0);
 		screen_write_puts(ctx, &gc, "%s", hdr);
 	} else if (py == last && data->inputtype != WINDOW_COPY_OFF) {
-		xoff = size = xsnprintf(hdr, sizeof hdr,
-		    "%s: %s", data->inputprompt, data->inputstr);
+		if (data->inputtype == WINDOW_COPY_NUMERICPREFIX) {
+			xoff = size = xsnprintf(hdr, sizeof hdr,
+			    "(Prefix) %u", data->numprefix);
+		} else {
+			xoff = size = xsnprintf(hdr, sizeof hdr,
+			    "%s: %s", data->inputprompt, data->inputstr);
+		}
 		screen_write_cursormove(ctx, 0, last);
 		screen_write_puts(ctx, &gc, "%s", hdr);
 	} else
Index: tmux.1
===================================================================
--- tmux.1.orig
+++ tmux.1
@@ -661,6 +661,18 @@ next word and previous word to the start
 The three next and previous space keys work similarly but use a space alone as
 the word separator.
 .Pp
+Most key commands in copy mode may be prefaced by an optional
+repeat count.
+In the vi bindings, you may just type the number before the command you
+desire;
+in the emacs bindings, you must hold the Alt (meta) key while you press
+the first digit.
+For example, to move the cursor forward by ten words, you would type
+.Ql M-1 0 M-f
+in emacs mode, and
+.Ql 10w
+in vi.
+.Pp
 These key bindings are defined in a set of named tables:
 .Em vi-edit
 and
Index: tmux.c
===================================================================
--- tmux.c.orig	2010-02-17 19:05:50.000000000 -0800
+++ tmux.c	2010-02-17 19:13:49.000000000 -0800
@@ -421,6 +421,7 @@ main(int argc, char **argv)
 	options_set_number(wo, "window-status-fg", 8);
 	options_set_string(wo, "window-status-format", "#I:#W#F");
 	options_set_string(wo, "window-status-current-format", "#I:#W#F");
+	options_set_string(wo, "word-separators", " -_@");
 	options_set_number(wo, "xterm-keys", 0);
 	options_set_number(wo, "remain-on-exit", 0);
 	options_set_number(wo, "synchronize-panes", 0);
Index: window-copy.c
===================================================================
--- window-copy.c.orig	2010-02-17 19:06:19.000000000 -0800
+++ window-copy.c	2010-02-17 19:18:40.000000000 -0800
@@ -219,7 +219,7 @@ window_copy_resize(struct window_pane *w
 void
 window_copy_key(struct window_pane *wp, struct client *c, int key)
 {
-	const char			*word_separators = " -_@";
+	const char			*word_separators;
 	struct window_copy_mode_data	*data = wp->modedata;
 	struct screen			*s = &data->screen;
 	u_int				 n;
@@ -349,15 +349,21 @@ window_copy_key(struct window_pane *wp, 
 		window_copy_cursor_next_word_end(wp, " ");
 		break;
 	case MODEKEYCOPY_NEXTWORD:
+		word_separators =
+		    options_get_string(&wp->window->options, "word-separators");
 		window_copy_cursor_next_word(wp, word_separators);
 		break;
 	case MODEKEYCOPY_NEXTWORDEND:
+		word_separators =
+		    options_get_string(&wp->window->options, "word-separators");
 		window_copy_cursor_next_word_end(wp, word_separators);
 		break;
 	case MODEKEYCOPY_PREVIOUSSPACE:
 		window_copy_cursor_previous_word(wp, " ");
 		break;
 	case MODEKEYCOPY_PREVIOUSWORD:
+		word_separators =
+		    options_get_string(&wp->window->options, "word-separators");
 		window_copy_cursor_previous_word(wp, word_separators);
 		break;
 	case MODEKEYCOPY_SEARCHUP:
@@ -1242,30 +1248,33 @@ window_copy_cursor_next_word(struct wind
 	struct window_copy_mode_data	*data = wp->modedata;
 	struct screen			*base_s = &wp->base;
 	u_int				 px, py, xx, yy;
+	int				 expected = 0;
 
 	px = data->cx;
 	py = screen_hsize(base_s) + data->cy - data->oy;
 	xx = window_copy_find_length(wp, py);
 	yy = screen_hsize(base_s) + screen_size_y(base_s) - 1;
 
-	/* Are we in a word? Skip it! */
-	while (!window_copy_in_set(wp, px, py, separators))
-		px++;
-
-	/* Find the start of a word. */
-	while (px > xx || window_copy_in_set(wp, px, py, separators)) {
-		/* Past the end of the line? Nothing but spaces. */
-		if (px > xx) {
-			if (py == yy)
-				return;
-			window_copy_cursor_down(wp, 0);
-			px = 0;
-
-			py = screen_hsize(base_s) + data->cy - data->oy;
-			xx = window_copy_find_length(wp, py);
-		} else
-			px++;
-	}
+	/* First skip past any non-word chars, then skip past any word
+	 * chars. */
+	do {
+		while (px > xx
+		       || (window_copy_in_set(wp, px, py, separators)
+			   == expected)) {
+			/* Move down if we're past the end of the line. */
+			if (px > xx) {
+				if (py == yy)
+					return;
+				window_copy_cursor_down(wp, 0);
+				px = 0;
+
+				py = screen_hsize(base_s) + data->cy - data->oy;
+				xx = window_copy_find_length(wp, py);
+			} else
+				px++;
+  		}
+		expected = !expected;
+	} while (expected == 1);
 
 	window_copy_update_cursor(wp, px, data->cy);
 	if (window_copy_update_selection(wp))
@@ -1278,30 +1287,33 @@ window_copy_cursor_next_word_end(struct 
 	struct window_copy_mode_data	*data = wp->modedata;
 	struct screen			*base_s = &wp->base;
 	u_int				 px, py, xx, yy;
+	int				 expected = 1;
 
 	px = data->cx;
 	py = screen_hsize(base_s) + data->cy - data->oy;
 	xx = window_copy_find_length(wp, py);
 	yy = screen_hsize(base_s) + screen_size_y(base_s) - 1;
 
-	/* Are we on spaces? Skip 'em! */
-	while (px > xx || window_copy_in_set(wp, px, py, separators)) {
-		/* Nothing but spaces past the end of the line, so move down. */
-		if (px > xx) {
-			if (py == yy)
-				return;
-			window_copy_cursor_down(wp, 0);
-			px = 0;
-
-			py = screen_hsize(base_s) + data->cy - data->oy;
-			xx = window_copy_find_length(wp, py);
-		} else
-			px++;
-	}
-
-	/* Find the end of this word. */
-	while (!window_copy_in_set(wp, px, py, separators))
-		px++;
+	/* First skip past any non-word chars, then skip past any word
+	 * chars. */
+	do {
+		while (px > xx
+		       || (window_copy_in_set(wp, px, py, separators)
+			   == expected)) {
+			/* Move down if we're past the end of the line. */
+			if (px > xx) {
+				if (py == yy)
+					return;
+				window_copy_cursor_down(wp, 0);
+				px = 0;
+
+				py = screen_hsize(base_s) + data->cy - data->oy;
+				xx = window_copy_find_length(wp, py);
+			} else
+				px++;
+  		}
+		expected = !expected;
+	} while (expected == 0);
 
 	window_copy_update_cursor(wp, px, data->cy);
 	if (window_copy_update_selection(wp))
Index: cmd-set-option.c
===================================================================
--- cmd-set-option.c.orig	2010-02-17 19:05:50.000000000 -0800
+++ cmd-set-option.c	2010-02-17 19:13:49.000000000 -0800
@@ -165,6 +165,7 @@ const struct set_option_entry set_window
 	{ "window-status-current-format", SET_OPTION_STRING, 0, 0, NULL },
 	{ "window-status-fg", SET_OPTION_COLOUR, 0, 0, NULL },
 	{ "window-status-format", SET_OPTION_STRING, 0, 0, NULL },
+	{ "word-separators", SET_OPTION_STRING, 0, 0, NULL },
 	{ "xterm-keys", SET_OPTION_FLAG, 0, 0, NULL },
 	{ NULL, 0, 0, 0, NULL }
 };
Index: tmux.1
===================================================================
--- tmux.1.orig	2010-02-17 19:06:19.000000000 -0800
+++ tmux.1	2010-02-17 19:13:49.000000000 -0800
@@ -649,11 +649,13 @@ The following keys are supported as appr
 .Pp
 The next and previous word keys use space and the
 .Ql - ,
-.Ql _ ,
-.Ql \&"
+.Ql _
 and
 .Ql @
-characters as word delimiters.
+characters as word delimiters by default, but this can be adjusted by
+setting the
+.Em word-separators
+window option.
 Next word moves to the start of the next word, next word end to the end of the
 next word and previous word to the start of the previous word.
 The three next and previous space keys work similarly but use a space alone as
@@ -2031,6 +2033,13 @@ Like
 .Ar window-status-format ,
 but is the format used when the window is the current window.
 .Pp
+.It Ic word-separators Ar string
+Sets the window's conception of what characters are considered word
+separators, for the purposes of the next and previous word commands in
+copy mode.
+The default is
+.Ql \ -_@ .
+.Pp
 .It Xo Ic xterm-keys
 .Op Ic on | off
 .Xc
------------------------------------------------------------------------------
Download Intel&reg; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs 
proactively, and fine-tune applications for parallel performance. 
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to