Пытаюсь сделать фикс, который преобразовывал не валидную функцию в валидную. Но что-то не получается.
Блок новой функции не меняется и стирается пустая строчка сверху.
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;
}