aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-08-30 00:16:19 +0200
committerJustin M. Keyes <justinkz@gmail.com>2019-08-30 08:33:14 +0200
commitb6192a9920a75d787e256453a841b9742a7f0599 (patch)
tree79f2a4fd4a9eec18c1ae650b418f28def3e4de0b /src
parent4b8a16153e79644a5df9f6dc94215ac009c26c33 (diff)
downloadrneovim-b6192a9920a75d787e256453a841b9742a7f0599.tar.gz
rneovim-b6192a9920a75d787e256453a841b9742a7f0599.tar.bz2
rneovim-b6192a9920a75d787e256453a841b9742a7f0599.zip
API: nvim_paste: add `crlf` parameter
Diffstat (limited to 'src')
-rw-r--r--src/nvim/api/vim.c7
-rw-r--r--src/nvim/tui/input.c2
2 files changed, 5 insertions, 4 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index 8063a6f1fd..a39ee5d038 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -1211,7 +1211,7 @@ Dictionary nvim_get_namespaces(void)
/// Pastes at cursor, in any mode.
///
/// Invokes the `vim.paste` handler, which handles each mode appropriately.
-/// Sets redo/undo. Faster than |nvim_input()|.
+/// Sets redo/undo. Faster than |nvim_input()|. Lines break at LF ("\n").
///
/// Errors ('nomodifiable', `vim.paste()` failure, …) are reflected in `err`
/// but do not affect the return value (which is strictly decided by
@@ -1219,6 +1219,7 @@ Dictionary nvim_get_namespaces(void)
/// the next paste is initiated (phase 1 or -1).
///
/// @param data Multiline input. May be binary (containing NUL bytes).
+/// @param crlf Also break lines at CR and CRLF.
/// @param phase -1: paste in a single call (i.e. without streaming).
/// To "stream" a paste, call `nvim_paste` sequentially with
/// these `phase` values:
@@ -1229,7 +1230,7 @@ Dictionary nvim_get_namespaces(void)
/// @return
/// - true: Client may continue pasting.
/// - false: Client must cancel the paste.
-Boolean nvim_paste(String data, Integer phase, Error *err)
+Boolean nvim_paste(String data, Boolean crlf, Integer phase, Error *err)
FUNC_API_SINCE(6)
{
static bool draining = false;
@@ -1247,7 +1248,7 @@ Boolean nvim_paste(String data, Integer phase, Error *err)
// Skip remaining chunks. Report error only once per "stream".
goto theend;
}
- Array lines = string_to_array(data, true);
+ Array lines = string_to_array(data, crlf);
ADD(args, ARRAY_OBJ(lines));
ADD(args, INTEGER_OBJ(phase));
rv = nvim_execute_lua(STATIC_CSTR_AS_STRING("return vim.paste(...)"), args,
diff --git a/src/nvim/tui/input.c b/src/nvim/tui/input.c
index c74ef58ba1..1f67e6ce13 100644
--- a/src/nvim/tui/input.c
+++ b/src/nvim/tui/input.c
@@ -108,7 +108,7 @@ static void tinput_wait_enqueue(void **argv)
if (input->paste) {
Error err = ERROR_INIT;
// Paste phase: "continue" (unless handler canceled).
- input->paste = !nvim_paste(keys, input->paste, &err)
+ input->paste = !nvim_paste(keys, true, input->paste, &err)
? 0 : (1 == input->paste ? 2 : input->paste);
rbuffer_consumed(input->key_buffer, len);
rbuffer_reset(input->key_buffer);