hterm: Implement bracketed paste mode.
* DECSET/DECRST mode 2004 toggles bracketed paste mode. When
enabled, pastes are sent as
"ESC [ 2 0 0 ~ <paste-data> ESC [ 2 0 1 ~".
* Add test.
Change-Id: Ibacf433c4bc3fe71566b78f26b374224d6704c32
Reviewed-on: https://chromium-review.googlesource.com/209156
Reviewed-by: Marvelous Marius <mschilder@chromium.org>
Reviewed-by: Robert Ginda <rginda@chromium.org>
Tested-by: Robert Ginda <rginda@chromium.org>
diff --git a/hterm/js/hterm_terminal.js b/hterm/js/hterm_terminal.js
index 02d92e5..fe53b81 100644
--- a/hterm/js/hterm_terminal.js
+++ b/hterm/js/hterm_terminal.js
@@ -493,6 +493,12 @@
return this.prefs_;
};
+/**
+ * Enable or disable bracketed paste mode.
+ */
+hterm.Terminal.prototype.setBracketedPaste = function(state) {
+ this.options_.bracketedPaste = state;
+};
/**
* Set the color for the cursor.
@@ -2809,7 +2815,11 @@
* React when text is pasted into the scrollPort.
*/
hterm.Terminal.prototype.onPaste_ = function(e) {
- this.onVTKeystroke(e.text.replace(/\n/mg, '\r'));
+ var data = e.text.replace(/\n/mg, '\r');
+ if (this.options_.bracketedPaste)
+ data = '\x1b[200~' + data + '\x1b[201~';
+
+ this.io.sendString(data);
};
/**