Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs

This commit is contained in:
Bryan Ashby 2015-05-20 23:07:46 -06:00
commit c00fa67b94
3 changed files with 45 additions and 4 deletions

View File

@ -8,6 +8,7 @@
// * http://ansi-bbs.org/ // * http://ansi-bbs.org/
// * http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/ansisys.txt // * http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/ansisys.txt
// * http://en.wikipedia.org/wiki/ANSI_escape_code // * http://en.wikipedia.org/wiki/ANSI_escape_code
// * https://github.com/chjj/term.js/blob/master/src/term.js
// //
var assert = require('assert'); var assert = require('assert');
@ -66,6 +67,9 @@ var CONTROL = {
hideCursor : '?25l', // Nonstandard - cterm.txt hideCursor : '?25l', // Nonstandard - cterm.txt
showCursor : '?25h', // Nonstandard - cterm.txt showCursor : '?25h', // Nonstandard - cterm.txt
// :TODO: see https://code.google.com/p/conemu-maximus5/wiki/AnsiEscapeCodes
// apparently some terms can report screen size and text area via 18t and 19t
}; };
/* /*

View File

@ -10,6 +10,35 @@ var assert = require('assert');
var _ = require('lodash'); var _ = require('lodash');
var GapBuffer = require('gapbuffer').GapBuffer; var GapBuffer = require('gapbuffer').GapBuffer;
//
// Notes
// * options.tabSize can be used to resolve \t
// * See https://github.com/dominictarr/hipster/issues/15 about insert/delete lines
//
// Blessed
// insertLine: CSR(top, bottom) + CUP(y, 0) + IL(1) + CSR(0, height)
// deleteLine: CSR(top, bottom) + CUP(y, 0) + DL(1) + CSR(0, height)
// Quick Ansi -- update only what was changed:
// https://github.com/dominictarr/quickansi
//
// This thread is awesome:
// https://github.com/dominictarr/hipster/issues/15
//
// See Atom's implementations
// Newer TextDocument
// https://github.com/atom/text-document
//
// Older TextBuffer
// http://www.oscon.com/oscon2014/public/schedule/detail/37593
//
// Span Skip List could be used for mappings of rows/cols (display) to
// character offsets in a buffer
// https://github.com/atom/span-skip-list
//
// Buffer: Actual text buffer
// Transform: Display of soft wrap & tab expansion (e.g. tab -> ' ' * tabWidth)
//
// //
// General Design // General Design
@ -34,7 +63,15 @@ exports.MultiLineEditTextView = MultiLineEditTextView;
// //
// Syncronet // Syncronet
// //
//
// Projects of use/interest:
//
// https://github.com/atom/text-buffer
// http://danieltao.com/lazy.js/
// http://www.jbox.dk/downloads/edit.c
// https://github.com/slap-editor/slap
// https://github.com/chjj/blessed
//
function MultiLineEditTextView(options) { function MultiLineEditTextView(options) {

View File

@ -60,10 +60,10 @@ util.inherits(VerticalMenuView, MenuView);
VerticalMenuView.prototype.redraw = function() { VerticalMenuView.prototype.redraw = function() {
VerticalMenuView.super_.prototype.redraw.call(this); VerticalMenuView.super_.prototype.redraw.call(this);
var x = this.position.row; var row = this.position.row;
for(var i = this.viewWindow.top; i <= this.viewWindow.bottom; ++i) { for(var i = this.viewWindow.top; i <= this.viewWindow.bottom; ++i) {
this.items[i].row = x; this.items[i].row = row;
x += this.itemSpacing + 1; row += this.itemSpacing + 1;
this.items[i].focused = this.focusedItemIndex === i; this.items[i].focused = this.focusedItemIndex === i;
this.drawItem(i); this.drawItem(i);
} }