From 386c508042e80aeab4fb388816babee9f74466ce Mon Sep 17 00:00:00 2001 From: nightwing Date: Fri, 22 May 2015 22:14:15 +0400 Subject: [PATCH] convert paste into command --- lib/ace/commands/default_commands.js | 12 ++++++++++++ lib/ace/editor.js | 13 +++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/ace/commands/default_commands.js b/lib/ace/commands/default_commands.js index f1e267c1..de14df85 100644 --- a/lib/ace/commands/default_commands.js +++ b/lib/ace/commands/default_commands.js @@ -423,6 +423,12 @@ exports.commands = [{ exec: function() {}, passEvent: true, readOnly: true +}, { + name: "copy", + exec: function(editor) { + // placeholder for replay macro + }, + readOnly: true }, // commands disabled in readOnly mode @@ -439,6 +445,12 @@ exports.commands = [{ }, scrollIntoView: "cursor", multiSelectAction: "forEach" +}, { + name: "paste", + exec: function(editor, args) { + editor.$handlePaste(args); + }, + scrollIntoView: "cursor" }, { name: "removeline", bindKey: bindKey("Ctrl-D", "Command-D"), diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 22b43dd2..5da8a961 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -916,13 +916,15 @@ var Editor = function(renderer, session) { * **/ this.onPaste = function(text, event) { - // todo this should change when paste becomes a command - if (this.$readOnly) - return; - var e = {text: text, event: event}; + this.commands.exec("paste", this, e); + }; + + this.$handlePaste = function(e) { + if (typeof e == "string") + e = {text: e}; this._signal("paste", e); - text = e.text; + var text = e.text; if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { this.insert(text); } else { @@ -940,7 +942,6 @@ var Editor = function(renderer, session) { this.session.insert(range.start, lines[i]); } } - this.renderer.scrollCursorIntoView(); }; this.execCommand = function(command, args) {