Hmm, code looks fine but we already have things that are different from
both vi and emacs and I'm not sure such a small thing is worth making
copy mode even more complicated...
I guess the change is small so it can't do too much harm and both vi and
emacs modes do get tested.
On Fri, Apr 15, 2011 at 12:15:06PM -0300, Tiago Resende wrote:
> On Friday, 2011-04-15, at 08:31:26 +0200, Hannes von Haugwitz wrote:
> > > Since there is already a means of altering a user's key binding
> > > preference using the mode-keys option, I thought it would be a nice if
> > > tmux would adjust the selection behavior based on that value as well.
> >
> > I second this feature request.
>
> Possible patch attached. As far as I tested, it only behaves differently
> from vim when ending the selection at a line break (tmux will consume
> that last break, vim will not). I didn't want to mess with
> window_copy_copy_line() just to correct that small detail, though.
>
> Could you guys test this and see if it's correct? Could you also test it
> in emacs mode, if it isn't too much trouble?
> diff -Ndur tmux-orig//window-copy.c tmux/window-copy.c
> --- tmux-orig//window-copy.c 2011-04-06 19:18:56.000000000 -0300
> +++ tmux/window-copy.c 2011-04-15 10:46:48.199849693 -0300
> @@ -1218,6 +1218,7 @@
> size_t off;
> u_int i, xx, yy, sx, sy, ex, ey, limit;
> u_int firstsx, lastex, restex, restsx;
> + int keys;
>
> if (!s->sel.flag)
> return;
> @@ -1254,6 +1255,13 @@
> * end (restex) of all other lines.
> */
> xx = screen_size_x(s);
> + /*
> + * Behave according to mode-keys. If it is emacs, copy like emacs,
> + * keeping the top-left-most character, and dropping the
> + * bottom-right-most, regardless of copy direction. If it is vi, also
> + * keep bottom-right-most character.
> + */
> + keys = options_get_number(&wp->window->options, "mode-keys");
> if (data->rectflag) {
> /*
> * Need to ignore the column with the cursor in it, which for
> @@ -1261,8 +1269,14 @@
> */
> if (data->selx < data->cx) {
> /* Selection start is on the left. */
> - lastex = data->cx;
> - restex = data->cx;
> + if (keys == MODEKEY_EMACS) {
> + lastex = data->cx;
> + restex = data->cx;
> + }
> + else {
> + lastex = data->cx + 1;
> + restex = data->cx + 1;
> + }
> firstsx = data->selx;
> restsx = data->selx;
> } else {
> @@ -1273,11 +1287,10 @@
> restsx = data->cx;
> }
> } else {
> - /*
> - * Like emacs, keep the top-left-most character, and drop the
> - * bottom-right-most, regardless of copy direction.
> - */
> - lastex = ex;
> + if (keys == MODEKEY_EMACS)
> + lastex = ex;
> + else
> + lastex = ex + 1;
> restex = xx;
> firstsx = sx;
> restsx = 0;
> ------------------------------------------------------------------------------
> Benefiting from Server Virtualization: Beyond Initial Workload
> Consolidation -- Increasing the use of server virtualization is a top
> priority.Virtualization can reduce costs, simplify management, and improve
> application availability and disaster protection. Learn more about boosting
> the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
> _______________________________________________
> tmux-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/tmux-users
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve
application availability and disaster protection. Learn more about boosting
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
tmux-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tmux-users