R9 SDK question
От: ifle  
Дата: 12.04.15 11:30
Оценка:
Пытаюсь сделать фикс, который преобразовывал не валидную функцию в валидную. Но что-то не получается.
Блок новой функции не меняется и стирается пустая строчка сверху.
test01.js
var num1 = 1;

function window.onload()
{
     var xml = getXml();
}


test01.js.gold
var num1 = 1;

$(window).load(function() 
{
     var xml = getXml();
});


Написал такой фикс, который работает не правильно.
protected override Action<ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
{
    var windowOnloadStatement = _highlighting.Element;
    var errorElement          = windowOnloadStatement.NextSibling;
    var onloadExpression      = (IExpressionStatement)errorElement.GetMeaningfulRightSib();
    var block                 = (IBlock)onloadExpression.GetMeaningfulRightSib();
    var factory           = JavaScriptElementFactory.GetInstance(windowOnloadStatement);
    var jqueryWinLoad       = factory.CreateStatement(@"$(window).load(function(o_event) { });");
    
    using (WriteLockCookie.Create())
    {
        jqueryWinLoad.AddStatementBefore(windowOnloadStatement);
        var newBlock = block.Copy();
        ModificationUtil.DeleteChildRange(new TreeRange(windowOnloadStatement, block));
        var funcExpression = jqueryWinLoad.Descendants<IFunctionExpression>().First();
        funcExpression.SetBlock(newBlock);
    }
    
    return null;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.