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 > tmux-users@lists.sourceforge.net > 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 tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users