//@script_name ShowFunctionText
//@script_display_name Просмотр текста функции
//@script_description Показывает текст функции в виде всплывающей подсказки, чтобы не прыгать по тексту модуля и не терять фокус при чтении кода
//@script_author alonehobo
//@script_developer_url https://turboconf.ru
//@script_hotkey Control+Shift+H
//@retain_clipboard 1
//@enterprise_mode 1
//@hide_actions 1
//@turbomenu 0
//@turbobutton 0
Перем ТурбоКонф;
Перем ИмяФункции;
Перем ИсхКолонка;
Перем ИсхСтрока;
ТурбоКонф = Новый ТурбоКонф;
Поз = 0;
Текст = ТурбоКонф.ПолучитьТекстСПозицией(ИмяФункции, Поз, ИсхКолонка, ИсхСтрока);
ТурбоКонф.КонтролКлавиша(Keys.Left);
ТурбоКонф.КонтролШифтКлавиша(Keys.Right);
Текст = ТурбоКонф.ПолучитьТекстМодуля(ИмяФункции, Поз);
РегВыражение = Новый РегулярноеВыражение("(?:(?:(?:Процедура|Функция)\s" + Имяфункции + "\(.*\).*\n)((.*\n)*?)(?:КонецПроцедуры|КонецФункции))");
РегВыражение.ИгнорироватьРегистр = Истина;
РегВыражение.Многострочный = Истина;
СписокСовпадений = РегВыражение.НайтиСовпадения(Текст);
Если СписокСовпадений.Количество() = 0 Тогда
ТурбоКонф.ПоказатьПодсказку("Не удалось получить текст функции");
Иначе
Для Каждого ТекСовпадение Из СписокСовпадений Цикл
Если ТекСовпадение.Группы.Количество() > 0 Тогда
ТурбоКонф.ПоказатьПодсказку(СокрЛП(ТекСовпадение.Группы[0].Значение));
КонецЕсли;
Прервать;
КонецЦикла;
КонецЕсли;
ТурбоКонф.ПерейтиВПозицию(ИсхКолонка, ИсхСтрока)
Вывод текста функции в подсказке
31
|
|
|
1. Откройте маркетплейс из главного меню TurboConf или из меню в панели уведомлений.
2. Найдите нужную разработку.
3. Нажмите кнопку Установить.
TurboConf все установит автоматически!
Дополнительное документирование модулей
Переход к следующей/предыдущей процедуре/функции модуля
#1, 11 января 2019 12:58
Класс! 😃 попробую
#2, 11 января 2019 13:09
Предлагаю улучшения ))
Получение текста функции можно попробовать сделать по другому.
ТурбоКонф.Клавиша(Keys.F12);
ТурбоКонф.ControlShiftKey(Keys.OemCloseBrackets);
ТурбоКонф.Копировать();
ТурбоКонф.ControlKey(Keys.OemMinus);
ТурбоКонф.ControlKey(Keys.OemMinus);
ТурбоКонф.ПоказатьПодсказку(ТурбоКонф.ПолучитьБуферОбмена());
Будет работать и для методов, расположенных в других модулях
#3, 11 января 2019 13:22
Издеваетесь? Я весь мозг сломал с написанием регулярного выражения, а Вы... Так не делается....)))
#4, 11 января 2019 13:28
Тяжело в учении... (с) 😃
#5, 11 января 2019 14:09
Почему-то ваш метод не работает. Показывает последнее содержимое буфера и все. Если смотреть функцию другого модуля, то его окно открывается в фоне, т.е. все действия вроде бы выполняются, но показывает то, что было в буфере до вызова скрипта.
#6, 11 января 2019 14:10
Нужно будет еще после F12 проверить, что не появилось окно "Объект перехода"
Попытка
Указатель = ТурбоКонф.ЖдатьОкно("Объект перехода", 200, Истина);
ТурбоКонф.Клавиша(Keys.Enter);
//Переход занимает какое-то время
ТурбоКонф.Ждать(200);
Исключение
//Окна не было, продолжаем
КонецПопытки;
#7, 11 января 2019 14:10
Указатель = можно убрать
#8, ред. 12 января 2024 14:28
Нужно добавить задержку после копирования в буфер
Можно так попробовать, у меня вроде работает
#9, 16 февраля 2021 15:44
bolsun переместил тему в раздел Скрипты пользователей