This commit is contained in:
gedion 2012-09-04 15:04:30 -07:00
commit d2e83ba29c
3 changed files with 83 additions and 16 deletions

View file

@ -200,6 +200,10 @@ function Ace2Inner(){
var authorInfos = {}; // presence of key determines if author is present in doc
function getAuthorInfos(){
return authorInfos;
};
editorInfo.ace_getAuthorInfos= getAuthorInfos;
function setAuthorInfo(author, info)
{
if ((typeof author) != "string")
@ -884,7 +888,12 @@ function Ace2Inner(){
editorInfo.ace_setEditable = setEditable;
editorInfo.ace_execCommand = execCommand;
editorInfo.ace_replaceRange = replaceRange;
editorInfo.ace_performDocumentReplaceRange = performDocumentReplaceRange;
editorInfo.ace_performDocumentReplaceCharRange = performDocumentReplaceCharRange;
editorInfo.ace_renumberList = renumberList;
editorInfo.ace_doReturnKey = doReturnKey;
editorInfo.ace_isBlockElement = isBlockElement;
editorInfo.ace_getLineListType = getLineListType;
editorInfo.ace_callWithAce = function(fn, callStack, normalize)
{
var wrapper = function()
@ -1683,14 +1692,32 @@ function Ace2Inner(){
p.mark("findsel");
// if the nodes that define the selection weren't encountered during
// content collection, figure out where those nodes are now.
if (selection && !selStart)
if (selection && !selStart)
{
//if (domChanges) dmesg("selection not collected");
selStart = getLineAndCharForPoint(selection.startPoint);
editorInfo.lineAndChar = null;
hooks.callAll('aceLineAndCharForPoint', {
callstack: currentCallStack,
editorInfo: editorInfo,
rep: rep,
root:root,
point:selection.startPoint,
documentAttributeManager: documentAttributeManager
});
selStart = editorInfo.lineAndChar || getLineAndCharForPoint(selection.startPoint);
}
if (selection && !selEnd)
{
selEnd = getLineAndCharForPoint(selection.endPoint);
editorInfo.lineAndChar = null;
hooks.callAll('aceLineAndCharForPoint', {
callstack: currentCallStack,
editorInfo: editorInfo,
rep: rep,
root:root,
point:selection.endPoint,
documentAttributeManager: documentAttributeManager
});
selEnd = editorInfo.lineAndChar || getLineAndCharForPoint(selection.endPoint);
}
// selection from content collection can, in various ways, extend past final
@ -1845,16 +1872,18 @@ function Ace2Inner(){
{
return rep.selStart[0];
}
editorInfo.ace_caretLine = caretLine;
function caretColumn()
{
return rep.selStart[1];
}
editorInfo.ace_caretColumn = caretColumn;
function caretDocChar()
{
return rep.lines.offsetOfIndex(caretLine()) + caretColumn();
}
editorInfo.ace_caretDocChar = caretDocChar;
function handleReturnIndentation()
{
@ -3447,7 +3476,7 @@ function Ace2Inner(){
{
return !!REGEX_WORDCHAR.exec(c);
}
editorInfo.ace_isWordChar = isWordChar;
function isSpaceChar(c)
{
return !!REGEX_SPACE.exec(c);
@ -3548,7 +3577,17 @@ function Ace2Inner(){
if (!stopped)
{
if (isTypeForSpecialKey && keyCode == 8)
editorInfo.specialHandled = null;
hooks.callAll('aceKeyEvent', {
callstack: currentCallStack,
editorInfo: editorInfo,
rep: rep,
specialHandled:specialHandled,
documentAttributeManager: documentAttributeManager,
evt:evt
});
specialHandled = editorInfo.specialHandled||specialHandled;
if ((!specialHandled) &&isTypeForSpecialKey && keyCode == 8)
{
// "delete" key; in mozilla, if we're at the beginning of a line, normalize now,
// or else deleting a blank line can take two delete presses.

View file

@ -372,7 +372,17 @@ function makeContentCollector(collectStyles, browser, apool, domInterface, class
_reachBlockPoint(node, 0, state);
if (dom.isNodeText(node))
{
var txt = dom.nodeValue(node);
var tname = dom.nodeAttr(node.parentNode,"name");
hooks.callAll('collectContentTblTd', {
cc: this,
state: state,
tname: tname,
node:node,
text:dom.nodeValue(node),
styl: null,
cls: null
});
var txt = this.text||dom.nodeValue(node);
var rest = '';
var x = 0; // offset into original text
if (txt.length == 0)
@ -440,7 +450,19 @@ function makeContentCollector(collectStyles, browser, apool, domInterface, class
var tname = (dom.nodeTagName(node) || "").toLowerCase();
if (tname == "br")
{
cc.startNewLine(state);
this.breakLine = true;
var tvalue = dom.nodeAttr(node, 'value');
hooks.callAll('collectContentBreak', {
cc: this,
state: state,
tname: tname,
tvalue:tvalue,
styl: null,
cls: null
});
if(this.breakLine){
cc.startNewLine(state);
}
}
else if (tname == "script" || tname == "style")
{

View file

@ -153,14 +153,20 @@ linestylefilter.getLineStyleFilter = function(lineLength, aline, textAndClassFun
// prevent infinite loop if something funny's going on
return nextAfterAuthorColors(txt, cls);
}
var spanSize = txt.length;
if (spanSize > leftInAuthor)
{
spanSize = leftInAuthor;
var spanSize = txt.length;
if(txt&&txt.indexOf('data-tables')!=-1){
spanSize = leftInAuthor = txt.length;
}
else if (spanSize > leftInAuthor){
spanSize = leftInAuthor;
}
var curTxt = txt.substring(0, spanSize);
txt = txt.substring(spanSize);
nextAfterAuthorColors(curTxt, (cls && cls + " ") + extraClasses);
if(curTxt&&curTxt.indexOf('data-tables')!=-1){
nextAfterAuthorColors(curTxt,extraClasses );
}else{
nextAfterAuthorColors(curTxt, (cls && cls + " ") + extraClasses);
}
curIndex += spanSize;
leftInAuthor -= spanSize;
if (leftInAuthor == 0)