Авторские комментарии (с поддержкой EDT)

17 февраля 2021 12:56
bolsun

TurboConf Скрипты EDT

Скачать

Пример скрипта с адаптацией под EDT

Для работы скрипта необходима версия TurboConf 5.15.7718.26478 и выше

Пояснения к коду

Разрешаем скрипту работать в EDT

//@global_mode 1
//@filter - 1C:Enterprise Development Tools

Выполнение кода в зависимости от IDE

	Если ТК.ЭтоЕДТ Тогда
		ТК.КонтролКлавиша(Клавиши.OemQuestion);
	Иначе
		ТК.КонтролКлавиша(Клавиши.Divide);
	КонецЕсли;

Исходный код

//ВНИМАНИЕ! Этот файл будет перезаписан при следующем обновлении программы!
//Для настройки оформления комментариев, внесите необходимые изменения в файле ./settings/AuthorComments/Settings.os

//@script_name AuthorComments
//@script_display_name  Авторские комментарии
//@script_description Вставляет в модуль комментарии об авторе добавления, изменения и удаления кода
//@script_author m.bolsun
//@script_developer_url https://turboconf.ru
//@script_url https://turboconf.ru/Forum/Details/1524#AuthorComments
//@script_section Редактирование
//@script_hotkey Alt+A ВставитьДобавление Вставить добавление
//@script_hotkey Alt+X ВставитьУдаление Вставить удаление
//@script_hotkey Alt+C ВставитьИзменение Вставить изменение
//@retain_clipboard 1
//@enterprise_mode 0
//@hide_actions 1
//@script_version 3
//@global_mode 1
//@filter - 1C:Enterprise Development Tools

//Изменен nytlenc 05.06.18
//Изменен m.bolsun 09.10.18 Добавлена вставка идентификатора текущей задачи OneTracker
//Изменен m.bolsun 29.01.20 Идентификатор текущей задачи теперь вставляется через Настройки
//Изменен m.bolsun 11.02.20 Добавлена совместимость с предыдущей версией настроек пользователя Settings.os

Перем Настройки;

Процедура ВставитьДобавление()
	ВставитьКомментарий("добавление")
КонецПроцедуры

Процедура ВставитьИзменение()
	ВставитьКомментарий("изменение")
КонецПроцедуры

Процедура ВставитьУдаление()
	ВставитьКомментарий("удаление")
КонецПроцедуры

Процедура ВставитьКомментарий(ВидКомментария)
	
	ТК = Новый ТурбоКонф;
	
	Поз = 0;
	ВыделенныйТекст = "";
	
	// Комментируем весь выделенный текст с помощью платформы
	Если ТК.ЭтоЕДТ Тогда
		ТК.КонтролКлавиша(Клавиши.OemQuestion);
	Иначе
		ТК.КонтролКлавиша(Клавиши.Divide);
	КонецЕсли;	

	Текст = ТК.ПолучитьТекстМодуля(ВыделенныйТекст, Поз);
	
	// Вычисляем сколько нужно вставить символов табуляции
	ПозКурсораX = 0;
	ПозКурсораY = 0;
	ТекСтрока = ТК.ПолучитьПозициюПоИндексу(Текст, Поз, ПозКурсораX, ПозКурсораY);
	
	Табуляция = "";
	Для Индекс = 1 По СтрДлина(ТекСтрока) Цикл
		ТекСимвол = Сред(ТекСтрока, Индекс, 1);
		Если ТекСимвол = Символы.Таб Тогда
			Табуляция = Табуляция + ТекСимвол;
		Иначе
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если ВидКомментария = "добавление" Тогда
		ТекстШаблона = Настройки.ШаблонДобавлено;
	ИначеЕсли ВидКомментария = "изменение" Тогда
		ТекстШаблона = Настройки.ШаблонИзменено;
	ИначеЕсли ВидКомментария = "удаление" Тогда
		ТекстШаблона = Настройки.ШаблонУдалено;
	КонецЕсли;
	
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ИмяПользователя%", Настройки.ИмяПользователя);
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%CurrentUser%", ПеременныеСреды()["USERNAME"]);
	
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%Компания%", Настройки.Компания);
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%CurrentUserDomain%", ПеременныеСреды()["USERDNSDOMAIN"]);
	
	ТекДата = Формат(ТекущаяДата(), Настройки.ФорматДаты);
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ТекДата%", ТекДата);
	
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ЗакомментированныйТекст%", СокрП(ВыделенныйТекст));
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%Табуляция%", Табуляция);
	
	//Для совместимости со старыми версиями настроек, проверим наличие ИдентификаторТекущейЗадачи
	Если Настройки.Свойство("ИдентификаторТекущейЗадачи") Тогда
		ТекстШаблона = СтрЗаменить(ТекстШаблона, "%_CurrentTaskID_%", Настройки.ИдентификаторТекущейЗадачи);
	Иначе
		ИдентификаторТекущейЗадачи = ТК.ИдентификаторТекущейЗадачи;
		
		Если ИдентификаторТекущейЗадачи = "" Тогда
			ТекстШаблона = СтрЗаменить(ТекстШаблона, "%_CurrentTaskID_%", "");
		Иначе
			ТекстШаблона = СтрЗаменить(ТекстШаблона, "%_CurrentTaskID_%", " " + СокрЛП(ИдентификаторТекущейЗадачи));
		КонецЕсли;
	КонецЕсли;
	
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%Табуляция%", Табуляция);
	
	// Раскомментируем весь выделенный текст с помощью платформы
	Если ТК.ЭтоЕДТ Тогда
		ТК.КонтролКлавиша(Клавиши.OemQuestion);
	Иначе
		ТК.КонтролШифтКлавиша(Клавиши.OemQuestion);
	КонецЕсли;

	Текст = ТК.ПолучитьТекстМодуля(ВыделенныйТекст, Поз);
	
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ВставляемыйТекст%", СокрП(ВыделенныйТекст));
	
	ПозКурсора = СтрНайти(ТекстШаблона, "%_SetCursorPos_%");
	
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%_SetCursorPos_%", "");
	
	ТекСтрока = ТК.ПолучитьПозициюПоИндексу(Текст, Поз, ПозКурсораX, ПозКурсораY);
	
	ТК.ВставитьТекст(ТекстШаблона);
	
	Если ПозКурсора > 0 Тогда
		НомКолонки = 0;
		НомСтроки = 0;
		
		ТК.ПолучитьПозициюПоИндексу(ТекстШаблона, ПозКурсора, НомКолонки, НомСтроки);
		
		ТК.ПерейтиВПозицию(1, ПозКурсораY + НомСтроки)
	КонецЕсли;
	
КонецПроцедуры

ФайлНастроекПоУмолчанию = "settings/AuthorComments/DefaultSettings.os";
ФайлНастроекПользователя = "settings/AuthorComments/Settings.os";

Файл = Новый Файл(ФайлНастроекПользователя);

Если Файл.Существует() Тогда
	Настройки = ЗагрузитьСценарий(ФайлНастроекПользователя).Настройки;
Иначе
	Настройки = ЗагрузитьСценарий(ФайлНастроекПоУмолчанию).Настройки;
КонецЕсли;

Товары

Авторские комментарии (с поддержкой EDT)

Скачать 1

См. также

rabbitmq

Управление IT-отделом 8

Комментарии

bolsun
#1, 18 ноября 2021 15:45

123


Модератору