Compare commits

...
8 Commits
Author SHA1 Message Date
Paris 51fe17ee43 Mark version 0.30 2015-02-25 09:34:12 +02:00
Paris Kasidiaris 1d5737f843 Merge pull request #22 from sourcelair/issue/21
Introduce bufferred attaching to websocket
2015-02-25 09:31:35 +02:00
Paris 13103aecb2 [attach addon] Document with JSDoc 2015-02-24 22:28:47 +02:00
Paris e9d2c806ba [attach addon] Switch indentation to 4 spaces instead of 2 2015-02-24 20:57:28 +02:00
Paris 932ab00a53 Implement buffered attaching
Fixes #21
2015-02-24 20:55:52 +02:00
Paris Kasidiaris 6cfd957697 Merge pull request #20 from akalipetis/issue/19
Pressing Alt + ←/→ does not interfere now with browser
2015-01-28 11:52:55 +02:00
Antonis Kalipetis f00d8964c2 Replaced preventDefault with cancel 2015-01-28 11:20:47 +02:00
Antonis Kalipetis 9ef6b52352 Pressing Alt + ←/→ does not interfere now with browser
Previously, when on Chrome for Windows, if default was not prevented the browser history backward/forward was triggered.

Fixes #19
2015-01-28 11:04:38 +02:00
4 changed files with 69 additions and 31 deletions
+64 -28
View File
@@ -1,7 +1,7 @@
/*
* Implements the attach method, that
* attaches the terminal to a WebSocket stream.
*
*
* The bidirectional argument indicates, whether the terminal should
* send data to the socket as well and is true, by default.
*/
@@ -15,45 +15,81 @@
} else {
/*
* Plain browser environment
*/
*/
attach(this.Xterm);
}
})(function (Xterm) {
Xterm.prototype.attach = function (socket, bidirectional) {
var term = this;
/**
* Attaches the current terminal to the given socket
*
* @param {WebSocket} socket - The socket to attach the current terminal
* @param {boolean} bidirectional - Whether the terminal should send data
* to the socket as well
* @param {boolean} buffered - Whether the rendering of incoming data
* should happen instantly or at a maximum
* frequency of 1 rendering per 10ms
*/
Xterm.prototype.attach = function (socket, bidirectional, buffered) {
var term = this;
bidirectional = (typeof bidirectional == 'undefined') ? true : bidirectional;
this.socket = socket;
bidirectional = (typeof bidirectional == 'undefined') ? true : bidirectional;
this.socket = socket;
term._getMessage = function (ev) {
term.write(ev.data);
};
term._sendData = function (data) {
socket.send(data);
};
term._flushBuffer = function () {
term.write(term._attachSocketBuffer);
term._attachSocketBuffer = null;
clearTimeout(term._attachSocketBufferTimer);
term._attachSocketBufferTimer = null;
};
socket.addEventListener('message', term._getMessage);
term._pushToBuffer = function (data) {
if (term._attachSocketBuffer) {
term._attachSocketBuffer += data;
} else {
term._attachSocketBuffer = data;
setTimeout(term._flushBuffer, 10);
}
};
if (bidirectional) {
this.on('data', term._sendData);
}
socket.addEventListener('close', term.detach.bind(term, socket));
socket.addEventListener('error', term.detach.bind(term, socket));
term._getMessage = function (ev) {
if (buffered) {
term._pushToBuffer(ev.data);
} else {
term.write(ev.data);
}
};
term._sendData = function (data) {
socket.send(data);
};
socket.addEventListener('message', term._getMessage);
if (bidirectional) {
this.on('data', term._sendData);
}
socket.addEventListener('close', term.detach.bind(term, socket));
socket.addEventListener('error', term.detach.bind(term, socket));
};
/**
* Detaches the current terminal from the given socket
*
* @param {WebSocket} socket - The socket from which to detach the current
* terminal
*/
Xterm.prototype.detach = function (socket) {
var term = this;
var term = this;
term.off('data', term._sendData);
term.off('data', term._sendData);
socket = (typeof socket == 'undefined') ? term.socket : socket;
socket = (typeof socket == 'undefined') ? term.socket : socket;
if (socket) {
socket.removeEventListener('message', term._getMessage);
}
if (socket) {
socket.removeEventListener('message', term._getMessage);
}
delete term.socket;
delete term.socket;
};
});
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "xterm.js",
"version": "0.27",
"version": "0.30",
"ignore": ["demo", "docs", "test", ".gitignore"]
}
+2 -2
View File
@@ -51,9 +51,9 @@ copyright = u'2015, SourceLair Limited'
# built documents.
#
# The short X.Y version.
version = '0.29'
version = '0.30'
# The full version, including alpha/beta/rc tags.
release = '0.29 Alpha'
release = '0.30 Alpha'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
+2
View File
@@ -2201,6 +2201,7 @@
// left-arrow
case 37:
if (ev.altKey) {
this.cancel(ev, true);
key = '\x1bb' // Jump a word back
break;
} else if (this.applicationCursor) {
@@ -2212,6 +2213,7 @@
// right-arrow
case 39:
if (ev.altKey) {
this.cancel(ev, true);
key = '\x1bf' // Jump a word forward
break;
} else if (this.applicationCursor) {