Display session data in textarea instead of prompt

This commit is contained in:
斟酌 鵬兄 2017-01-28 14:37:58 +08:00
parent f85e65c23e
commit 9f7c0c4b7d
3 changed files with 47 additions and 4 deletions

View File

@ -27,9 +27,9 @@
this.__cursor.unsuppressEvent();
};
VA_REC.prototype.handler = function( e, endReplay )
VA_REC.prototype.handler = function( e, args, range )
{
if( endReplay )
if( args == true )
{
var msg = Mesg( "VA_REC_END" );
var lastLine = Mesg( "WAIT_FOR_INPUT" );
@ -60,9 +60,16 @@
if( session.started )
{
session.__dispose();
this.__msg = "Exported Session Data";
var head = "Press Escape to conitnue edit\n===\n";
var data = JSON.stringify( session.data );
var element = sender.element;
setTimeout( function() {
window.prompt( "Session data ( Ctrl + C )", JSON.stringify( session.data ) );
inst.display(
head + data, function(){
element.selectionStart = head.length;
element.selectionEnd = element.selectionStart + data.length;
} );
}, 1 );
return;
}

View File

@ -267,6 +267,40 @@
this.dispatchEvent( new BotanEvent( "Visualized" ) );
};
VimArea.prototype.display = function( data, handler )
{
var _self = this;
var stage = this.stage;
var cursor = this.__cursor;
var evts = this.__stagedEvents;
for( var i in evts ) stage.removeEventListener( evts[ i ] );
cursor.suppressEvent();
this.__active = false;
stage.removeAttribute( "data-vimarea" );
setTimeout( function() {
stage.element.value = data;
if( handler ) handler();
}, 100 );
var ContinueEdit = new EventKey( "KeyDown", function( e ) {
var evt = new ActionEvent( _self, e );
if( evt.kMap( "Escape" ) )
{
stage.removeEventListener( ContinueEdit );
stage.setAttribute( new DataKey( "vimarea", 1 ) );
stage.addEventListeners( _self.__stagedEvents );
cursor.unsuppressEvent();
cursor.feeder.dispatcher.dispatchEvent( new BotanEvent( "VisualUpdate" ) );
_self.__active = true;
stage.element.focus();
}
} );
stage.addEventListener( ContinueEdit );
};
VimArea.prototype.demo = function( seq )
{
if( this.__demoActive ) return;

View File

@ -14,6 +14,8 @@ Components.Vim.VimArea.statusBar;
/** @type Function */
Components.Vim.VimArea.demo;
/** @type Function */
Components.Vim.VimArea.display;
/** @type Number */
Components.Vim.VimArea.index;