Снегопат
https://snegopat.ru/forum/

Как выводить текст что бы работал переход?
https://snegopat.ru/forum/viewtopic.php?f=5&t=552
Страница 1 из 1

Автор:  quest [ 04 окт 2013, 00:47 ]
Заголовок сообщения:  Как выводить текст что бы работал переход?

При проверке модуля вызываемого по Ctrl-F7 если есть ошибки то 2 клик по строке с ошибкой приводит к переходу на нажную строку.
Что нужно написать в скрипте что бы мой вывод в это окно работал также?
пока использую тупо message

Автор:  artbear [ 04 окт 2013, 08:45 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

Да, объектная модель позволяет.
Посмотри описание объектной модели.

Автор:  quest [ 04 окт 2013, 21:09 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

а ссылку, для облегчения поиска? понимаю что нагло, но мое гугл-фу - очень плохо....

Автор:  quest [ 04 окт 2013, 21:42 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

Вот только это нашел. Есть что-то еще или придется самому дописыфвать обрабочик?

Метод Message

Выводит сообщение в окно сообшений.
Синтаксис:

Message(Текст, [Пиктограмма], [Обработчик], [Параметр для обработчика])

Параметры:

Текст. Обязательный. Строка. Текст выводимого сообщения. Пустой текст движком 1С не выводится.

[Пиктограмма]. Не обязательный. Число или объект Картинка. Указывает пиктограмму для выводимого сообщения. Если передано число, выводится одна из стандартных пиктограмм:
mNone = 0, без пиктограммы
mTriangle = 1, Треугольник
mExc1 = 2, !
mExc2 = 3, !!
mExc3 = 4, !!!
mInfo = 5, Информация

Также может быть передана картинка, кроме картинок из стандартной библиотеки. По умолчанию выводится без пиктограммы.

[Обработчик]. Необязательный. Функция, которая будет вызвана при клике или нажатии Enter на выведенном сообщении.

[Параметр для обработчика]. Необязательный. Любого типа. Будет передан аргументом в функцию-обработчик нажатия при ее вызове.

Автор:  quest [ 04 окт 2013, 22:21 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

Разорбрался.
Но вопрос такой - курсор не мигает. все остально работает, а вот курсор не видно. вот и приходиться мышкой тыкать в окно.
И попутно вопрос - есть шаблон вообще для таких мелентких скриптов? типа того что бы только нужную часть писать а вся обвязка была бы более-менее стандартной?
И еще вопрос - код закритикуйте - где неправильно сделал? как придать коду совершенства?
код
$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");

Автор:  orefkov [ 07 окт 2013, 13:28 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

Конструкции param['wnd'] лучше замени на param.wnd
А так, как я понял, пишет о слишком длинных функциях?

Автор:  quest [ 07 окт 2013, 13:33 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

ну да. Кандидаты для анализа и под нож рефакторинга.
Пользуясь случаем - автору этого скрипта - респект и уважуха.

Автор:  sosnae [ 07 окт 2013, 13:52 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

Давай тогда добавлю с настройкой в расширенную проверку. Типа в настройках выбираешь тип проверки:
синтаксис проверка
орфографическая проверка
длинна в функции/процедуры и параметром задаем количество строк для проверки.

Автор:  quest [ 07 окт 2013, 14:27 ]
Заголовок сообщения:  Re: Как выводить текст что бы работал переход?

Да, я только за.
и про двиения функций по списку не забудь

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/