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

Добавил: Сергей, 11 января 2019 10:34, обновлено: 16 февраля 2021 15:48

Раздел: Скрипты пользователей

SDK Скрипты Скрипты OneScript

Скачать

Иногда, при чтении кода, бывает нужно заглянуть в функцию или процедуру, чтобы понять, что там выполняется, но при этом приходится перепрыгивать в другое место модуля и терять фокус с текущей строки. Данный скрипт показывает текст функции под курсором в виде всплывающей подсказки. Лучше всего подходит для чтения небольших функций или процедур.

Image https://turboconf.ru/Content/Files/1EF741C1CFA8A905F5EF1CB5339AC236E018F6AB/%D0%94%D0%BE%20%D0%BF%D0%BE%D0%B4%D1%81%D0%BA%D0%B0%D0%B7%D0%BA%D0%B8.png

Нажимаем

Control+Shift+H Image https://turboconf.ru/Content/Files/1EF741C1CFA8A905F5EF1CB5339AC236E018F6AB/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%20%D0%BF%D0%BE%D0%B4%D1%81%D0%BA%D0%B0%D0%B7%D0%BA%D0%B8.png
//@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].Значение));
		КонецЕсли;
		Прервать;
	КонецЦикла;
КонецЕсли;

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

Файл


Скачать К списку тем

Комментарии

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

Класс! :) попробую


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

Предлагаю улучшения )) Получение текста функции можно попробовать сделать по другому. ТурбоКонф.Клавиша(Keys.F12); ТурбоКонф.ControlShiftKey(Keys.OemCloseBrackets); ТурбоКонф.Копировать(); ТурбоКонф.ControlKey(Keys.OemMinus); ТурбоКонф.ControlKey(Keys.OemMinus); ТурбоКонф.ПоказатьПодсказку(ТурбоКонф.ПолучитьБуферОбмена()); Будет работать и для методов, расположенных в других модулях


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

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


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

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


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

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


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

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


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

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


bolsun
11 января 2019 14:18: #8

Нужно добавить задержку после копирования в буфер Можно так попробовать, у меня вроде работает //@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
16 февраля 2021 15:44: #9

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


TurboConf

Расширение возможностей

Конфигуратора 1С

Скачать

Бесплатный пробный период 14 дней