diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2015-07-15 13:59:05 +0200 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2015-07-20 20:24:27 -0400 |
commit | c30f2ac25de1235e4cd743fe1a16be20c14e140b (patch) | |
tree | 7374f67e53b6e3d1e8c8e2ddf3f67c81f4a1028d | |
parent | 0e39b2c93637af3e79bc29b97cffde5b9cd7cd2e (diff) | |
download | rneovim-c30f2ac25de1235e4cd743fe1a16be20c14e140b.tar.gz rneovim-c30f2ac25de1235e4cd743fe1a16be20c14e140b.tar.bz2 rneovim-c30f2ac25de1235e4cd743fe1a16be20c14e140b.zip |
clipboard: handle middle-click paste correctly.
Also handle clipboard errors more like vim: paste from unnamed register
if clipboard provider fails.
-rw-r--r-- | src/nvim/normal.c | 6 | ||||
-rw-r--r-- | src/nvim/ops.c | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/nvim/normal.c b/src/nvim/normal.c index a5eb54bb68..95e1c3d113 100644 --- a/src/nvim/normal.c +++ b/src/nvim/normal.c @@ -2016,6 +2016,9 @@ do_mouse ( if (regname == '.') insert_reg(regname, true); else { + if (regname == 0 && eval_has_provider("clipboard")) { + regname = '*'; + } if ((State & REPLACE_FLAG) && !yank_register_mline(regname)) insert_reg(regname, true); else { @@ -2279,6 +2282,9 @@ do_mouse ( * Middle mouse click: Put text before cursor. */ if (which_button == MOUSE_MIDDLE) { + if (regname == 0 && eval_has_provider("clipboard")) { + regname = '*'; + } if (yank_register_mline(regname)) { if (mouse_past_bottom) dir = FORWARD; diff --git a/src/nvim/ops.c b/src/nvim/ops.c index 063ad154f1..8a7ced138b 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -765,7 +765,10 @@ yankreg_T *get_yank_register(int regname, int mode) if (mode == YREG_PASTE && get_clipboard(regname, ®, false)) { // reg is set to clipboard contents. return reg; - } else if (mode != YREG_YANK && (regname == 0 || regname == '"') && y_previous != NULL) { + } else if (mode != YREG_YANK + && (regname == 0 || regname == '"' || regname == '*' || regname == '+') + && y_previous != NULL) { + // in case clipboard not available, paste from previous used register return y_previous; } |