Разорбрался. Но вопрос такой - курсор не мигает. все остально работает, а вот курсор не видно. вот и приходиться мышкой тыкать в окно. И попутно вопрос - есть шаблон вообще для таких мелентких скриптов? типа того что бы только нужную часть писать а вся обвязка была бы более-менее стандартной? И еще вопрос - код закритикуйте - где неправильно сделал? как придать коду совершенства? код $engine JScript $uname warn_45lines $dname warn_45lines $addin global $addin stdlib $addin stdcommands
stdlib.require('TextWindow.js', SelfScript); stdlib.require('SyntaxAnalysis.js', SelfScript); global.connectGlobals(SelfScript);
function onSyntaxCheck(cmd) { var mdObj, av = windows.getActiveView() if(!av || !(mdObj = av.mdObj)) return macrosanalizeModule(); }
function macrosanalizeModule(){ var tw = GetTextWindow(); if (!tw) return; var parser = snegopat.parseSources(tw.text());
for(var i = 0, c = parser.lexemCount; i < c; i++) { var lex = parser.lexem(i) if(lex.type==40 ) i+= analizeFunction(parser,i,lex); } }
function onClick_45Lines(param) { if (!param['wnd']) return if (!param['wnd'].IsActive()) return param['wnd'].setCaretPos(param['line']+1,1); var view = param['wnd'].GetView(); if (!view){} else view.activate(); }
function analizeFunction(parser,start,startlex){
line = 0; name = parser.lexem(start+1).text; lastline = startlex.line; var i,c, wnd = GetTextWindow(); for(i = start, c = parser.lexemCount; i< c; i++){ var lex = parser.lexem(i); var maxLines = 45; if(lex.type==42){ if(line > maxLines) { var param = {}; param['wnd'] = wnd; param['line'] = startlex.line; message("Функция "+name+" большая. Лишних "+(line - maxLines)+" строк ",mExc1, onClick_45Lines, param); } break; } if (lex.type == 1) // коменты не считаются кодом. continue; line+= (lastline==lex.line) ? 0:1; // смениться после прочтения перевода строки. а это может только при честном переводе или если прочли многострочную строку lastline =lex.line; } return (i - start); }
// Добавим обработчик команды сохранения файла stdcommands.Frntend.SyntaxCheck.addHandler(SelfScript.self, "onSyntaxCheck");
|