* Work on themes. Ability to use ANSI to detect screen size if NAWS/etc. fail

This commit is contained in:
Bryan
2014-10-29 05:30:20 -06:00
parent 1ef9a4a1ce
commit 14a321de2f
6 changed files with 107 additions and 50 deletions

View File

@@ -4,7 +4,9 @@
var ansi = require('../core/ansi_term.js');
var artwork = require('../core/art.js');
var modules = require('../core/modules.js');
var Log = require('../core/logger.js').log;
var packageJson = require('../package.json');
var util = require('util');
exports.moduleInfo = {
@@ -15,17 +17,55 @@ exports.moduleInfo = {
exports.entryPoint = entryPoint;
function entryPoint(client) {
/*var self = this;
this.client = client;
var term = this.client.term;*/
function ansiQueryTermSizeIfNeeded(client) {
if(client.term.termHeight > 0 || client.term.termWidth > 0) {
return;
}
var onCPR = function(pos) {
//
// If we've already found out, disregard
//
if(client.term.termHeight > 0 || client.term.termWidth > 0) {
return;
}
client.term.termHeight = pos[0];
client.term.termWidth = pos[1];
Log.debug({ termWidth : client.term.termWidth, termHeight : client.term.termHeight, updateSource : 'ANSI CPR' }, 'Window size updated');
};
client.once('cursor position report', onCPR);
// give up after 2s
setTimeout(function onTimeout() {
client.removeListener('cursor position report', onCPR);
}, 2000);
client.term.write(ansi.queryScreenSize());
}
function entryPoint(client) {
var term = client.term;
//
// If we don't yet know the client term width/height,
// try with a nonstandard ANSI DSR type request.
//
ansiQueryTermSizeIfNeeded(client);
term.write(ansi.normal());
term.write(ansi.disableVT100LineWrapping());
//
// If we don't yet know the client term width/height, try
// a nonstandard ANSI query
//
// :TODO: set xterm stuff -- see x84/others
// :TODO: add URL to banner