Авторские комментарии

Добавил: bolsun, 16 мая 2018 17:24, обновлено: 07 августа 2024 23:00

Раздел: Обсуждение TurboConf

Новости SDK Расширения Скрипты Уроки OneScript Обучение


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

Добавлен блок Alt+A

Изменен блок Alt+C

Удален блок Alt+D

Либо можно вызвать функцию ТурбоКнопкой

Image https://turboconf.ru/Content/images/AuthorComments.gif

Шаблоны полностью настраиваются. Настройки скрипта хранятся в папке .\settings

Код скрипта

//@script_name AuthorComments
//@script_display_name  Авторские комментарии
//@script_description Вставляет в модуль комментарии об авторе добавления, изменения и удаления кода
//@script_author m.bolsun
//@script_developer_url https://turboconf.ru
//@script_hotkey Alt+A ВставитьДобавление
//@script_hotkey Alt+D ВставитьУдаление
//@script_hotkey Alt+C ВставитьИзменение
//@retain_clipboard 1
//@enterprise_mode 0
//@hide_actions 1
//@script_version 2

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

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

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

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

Функция ЗакомментироватьТекст(Текст)
	РегВыражение = Новый РегулярноеВыражение("^");
	РегВыражение.Многострочный  = Истина;
	Возврат РегВыражение.Заменить(Текст,"// ");
КонецФункции

Процедура ВставитьКомментарий(ВидКомментария)
	
	ТК = Новый ТурбоКонф; 

	Поз = 0;
	ВыделенныйТекст = "";
	
	Текст = ТК.ПолучитьТекстМодуля(ВыделенныйТекст, Поз);

	Если ВидКомментария = "добавление" Тогда
		ТекстШаблона = Настройки.ШаблонДобавлено;
	ИначеЕсли ВидКомментария = "изменение" Тогда
		ТекстШаблона = Настройки.ШаблонИзменено;
	ИначеЕсли ВидКомментария = "удаление" Тогда
		ТекстШаблона = Настройки.ШаблонУдалено;
	КонецЕсли;

	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ИмяПользователя%", Настройки.ИмяПользователя);
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%CurrentUser%", ПеременныеСреды()["USERNAME"]);
	
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%Компания%", Настройки.Компания);
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%CurrentUserDomain%", ПеременныеСреды()["USERDNSDOMAIN"]);

	ТекДата = Формат(ТекущаяДата(), Настройки.ФорматДаты);
	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ТекДата%", ТекДата);

	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ВставляемыйТекст%", СокрП(ВыделенныйТекст));

	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ЗакомментированныйТекст%", ЗакомментироватьТекст(СокрП(ВыделенныйТекст)));	

	ПозКурсора = СтрНайти(ТекстШаблона, "%_SetCursorPos_%");

	ТекстШаблона = СтрЗаменить(ТекстШаблона, "%_SetCursorPos_%", "");

	ПозКурсораX = 0;
	ПозКурсораY = 0;

	ТекСтрока = ТК.ПолучитьПозициюПоИндексу(Текст, Поз, ПозКурсораX, ПозКурсораY);

	ТК.ВставитьТекст(ТекстШаблона);
	
	Если ПозКурсора > 0 Тогда
		НомКолонки = 0;
		НомСтроки = 0;
	
		ТК.ПолучитьПозициюПоИндексу(ТекстШаблона, ПозКурсора, НомКолонки, НомСтроки);

		ТК.ПерейтиВПозицию(1, ПозКурсораY+НомСтроки) 
	КонецЕсли;

КонецПроцедуры

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

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

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

Страница разработки в соцсетях: https://vk.com/turboconf


К списку тем

Комментарии

Mikeware
17 мая 2018 13:25: #1

Почти отлично. только нужно в каждую Настройки.Вставить("Шаблон***********%ТекДата%") добавить "+ Символы.ПС". т.е. Настройки.Вставить("Шаблон***********%ТекДата%"+ Символы.ПС). Иначе съедает строчку за выделенным блоком.


bolsun
18 мая 2018 11:51: #2

Я специально обрезаю лишние строки ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ВставляемыйТекст%", СокрП(ВыделенныйТекст)); ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ЗакомментированныйТекст%", ЗакомментироватьТекст(СокрП(ВыделенныйТекст))); Зачем их вставлять?


Mikeware
21 мая 2018 07:29: #3

Зачем вставлять? в вашем примере выделите не весь текст, а только 4 строки из него. и отметьте заменой или удалением. пятая - останется? или будет закомментирована? :-)


bolsun
21 мая 2018 08:56: #4

Вы правы, съедается перенос )) Добавлю ПС в настройки по умолчанию. Спасибо!


Mikeware
24 мая 2018 09:31: #5

Есть еще одно дополнение. Подскажите, как вычислить длину строки (СтрДлина() не работает, других функций в мануале по 1Script не нашел ), и как получить текущую строку (на которой стоит курсор) - попытаюсь реализовать...


bolsun
24 мая 2018 11:19: #6

Почему не работает СтрДлина? Я попробовал работает. ТК.ПоказатьПодсказку("СтрДлина="+СтрДлина(ВыделенныйТекст));


bolsun
24 мая 2018 11:29: #7

| Получить текущую строку (на которой стоит курсор) Номер строки или текст строки?


Mikeware
24 мая 2018 13:52: #8

Хм. заработало . хотя до того жаловалось на "неизвестный символ" в СтрДлина(ВыделеныйТекст) Надо еще текст строки, на которой стоит курсор


bolsun
24 мая 2018 15:07: #9

У меня есть такая функция, но она не проброшена в API, постараюсь сегодня сделать. Можете сказать, какую функцию пытаетесь реализовать? ))


Mikeware
24 мая 2018 15:49: #10

реализовать - просто еще один вид авторских комментариев. если ничего не выделено, то "добавлением" просто добавляется шаблонный коммент в конце строки, если удаление - то в конец добавляется коммент, и вся строка "комментится" т.е. если добавил или удалил не блок, а одну строку - она не "оборачивается" в комментарии.


bolsun
30 мая 2018 09:52: #11

Про функцию текущей строки я не забыл. Просто работы навалилось )) Сейчас вроде стало посвободнее - займусь.


bolsun
30 мая 2018 14:20: #12

В новой бета-версии метод ПолучитьПозициюПоИндексу кроме позиции курсора, возвращает текущую строку по индексу ТекСтрока = ТК.ПолучитьПозициюПоИндексу(Текст, Поз, ПозКурсораX, ПозКурсораY);


Mikeware
31 мая 2018 08:00: #13

ок, сейчас попробую то, что хотел. но пока - пожалуюсь: турбоконф при попытке поставить АК (довльно многотекста нахренячил, строк 30. нажал ктрл-шифт+) - завесил пофигуратор. наглухо.


bolsun
31 мая 2018 08:27: #14

Если проблема воспроизводится, то смогу исправить. Но мне нужно будет понять последовательность действий, которые приводят к этому.


Mikeware
31 мая 2018 08:31: #15

отвис, но коммент не поставил. написал "не удалось выполнить скрипт. в строке 41 модуля


bolsun
31 мая 2018 14:42: #16

пока не могу предположить почему это произошло, предлагаю понаблюдать.


bolsun
02 июня 2018 14:34: #17

Изменены хоткеи, т.к. старые совпадали со штатными


Stepan_Kapusta
04 июня 2018 06:55: #18

А можно вынести хоткеи в настройки?


Mikeware
04 июня 2018 08:39: #19

Ну, триал закончился, о покупке пока размышляю - поэтому понаблюдать не смогу.


bolsun
04 июня 2018 09:31: #20

(18) да, вынесу обязательно. Задача уже в списке :)


bolsun
04 июня 2018 09:33: #21

(#19) что Вас сдерживает от покупки? Если есть какие-то сомнения поделитесь - может я их развею ))


Mikeware
04 июня 2018 11:41: #22

сдерживает трата _личных_ денег. (контора зажлобилась, и как-то задумался в том числе и о конторе ).


Pit
07 августа 2024 14:00: #23

Привет
Хочу сюда добавить ещё один вид коммента
Где это делается?


bolsun
07 августа 2024 23:00: #24

(23) Pit, в этот раздел не добавить свои элементы, только в свой раздел или в раздел Скрипты


TurboConf

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

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

Скачать

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