Вывод текста функции в подсказке

2 11 января 2019 10:34
Сергей

TurboConf SDK Скрипты OneScript


Иногда, при чтении кода, бывает нужно заглянуть в функцию или процедуру, чтобы понять, что там выполняется, но при этом приходится перепрыгивать в другое место модуля и терять фокус с текущей строки. Данный скрипт показывает текст функции под курсором в виде всплывающей подсказки. Лучше всего подходит для чтения небольших функций или процедур. Нажимаем Control+Shift+H
//@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].Значение));
		КонецЕсли;
		Прервать;
	КонецЦикла;
КонецЕсли;

ТурбоКонф.ПерейтиВПозицию(ИсхКолонка, ИсхСтрока)

Товары

Вывод текста функции в подсказке

35
9

Автоматическая установка с TurboConf

1. Откройте маркетплейс из главного меню TurboConf или из меню в панели уведомлений.

Откройте маркетплейс

2. Найдите нужную разработку.

Найдите нужную разработку

3. Нажмите кнопку Установить.

Нажмите кнопку Установить

TurboConf все установит автоматически!

См. также

Дополнительное документирование модулей

Объявление переменной из выделенного текста

Переход к следующей/предыдущей процедуре/функции модуля

Подсистема "Инструменты разработчика" для 1С 8.2 и 8.3

Перейти к началу/концу метода

Комментарии

bolsun
#1, 11 января 2019 12:58

Класс! 😃 попробую


bolsun
#2, 11 января 2019 13:09

Предлагаю улучшения ))

Получение текста функции можно попробовать сделать по другому.

ТурбоКонф.Клавиша(Keys.F12);
ТурбоКонф.ControlShiftKey(Keys.OemCloseBrackets);
ТурбоКонф.Копировать();
ТурбоКонф.ControlKey(Keys.OemMinus);
ТурбоКонф.ControlKey(Keys.OemMinus);

ТурбоКонф.ПоказатьПодсказку(ТурбоКонф.ПолучитьБуферОбмена());

Будет работать и для методов, расположенных в других модулях


Сергей
#3, 11 января 2019 13:22

Издеваетесь? Я весь мозг сломал с написанием регулярного выражения, а Вы... Так не делается....)))


bolsun
#4, 11 января 2019 13:28

Тяжело в учении... (с) 😃


Сергей
#5, 11 января 2019 14:09

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


bolsun
#6, 11 января 2019 14:10

Нужно будет еще после F12 проверить, что не появилось окно "Объект перехода"

Попытка
Указатель = ТурбоКонф.ЖдатьОкно("Объект перехода", 200, Истина);
ТурбоКонф.Клавиша(Keys.Enter);
//Переход занимает какое-то время
ТурбоКонф.Ждать(200);
Исключение
//Окна не было, продолжаем
КонецПопытки;


bolsun
#7, 11 января 2019 14:10

Указатель = можно убрать


bolsun
#8, ред. 12 января 2024 14:28

Нужно добавить задержку после копирования в буфер

Можно так попробовать, у меня вроде работает

//@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

ТурбоКонф = Новый ТурбоКонф;

ТурбоКонф.Клавиша(Keys.F12);

Попытка
	Указатель = ТурбоКонф.ЖдатьОкно("Объект перехода", 200, Истина);
	ТурбоКонф.Клавиша(Keys.Enter);
	ТурбоКонф.Ждать(200);
Исключение
	//Окна не было, продолжаем
КонецПопытки;

ТурбоКонф.ControlShiftKey(Keys.OemCloseBrackets);
ТурбоКонф.ControlKey(Keys.C);
ТурбоКонф.Ждать(200);

ТекстМетода = ТурбоКонф.ПолучитьБуферОбмена();

Сообщить("ТекстМетода: "+ТекстМетода);

ТурбоКонф.ControlKey(Keys.OemMinus);
ТурбоКонф.ControlKey(Keys.OemMinus);

//Подождем пока вернемся обратно
ТурбоКонф.Ждать(200);

ТурбоКонф.ПоказатьПодсказку(ТекстМетода);


bolsun
#9, 16 февраля 2021 15:44

bolsun переместил тему в раздел Скрипты пользователей


Модератору