|
Новая функция, которую неоднократно просили пользователи.
Добавлен блок Alt+A
Изменен блок Alt+C
Удален блок Alt+D
Либо можно вызвать функцию ТурбоКнопкой
Шаблоны полностью настраиваются. Настройки скрипта хранятся в папке .\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
Я специально обрезаю лишние строки ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ВставляемыйТекст%", СокрП(ВыделенныйТекст)); ТекстШаблона = СтрЗаменить(ТекстШаблона, "%ЗакомментированныйТекст%", ЗакомментироватьТекст(СокрП(ВыделенныйТекст))); Зачем их вставлять?
Зачем вставлять? в вашем примере выделите не весь текст, а только 4 строки из него. и отметьте заменой или удалением. пятая - останется? или будет закомментирована? :-)
Вы правы, съедается перенос )) Добавлю ПС в настройки по умолчанию. Спасибо!
Есть еще одно дополнение. Подскажите, как вычислить длину строки (СтрДлина() не работает, других функций в мануале по 1Script не нашел ), и как получить текущую строку (на которой стоит курсор) - попытаюсь реализовать...
Почему не работает СтрДлина? Я попробовал работает. ТК.ПоказатьПодсказку("СтрДлина="+СтрДлина(ВыделенныйТекст));
| Получить текущую строку (на которой стоит курсор) Номер строки или текст строки?
Хм. заработало . хотя до того жаловалось на "неизвестный символ" в СтрДлина(ВыделеныйТекст) Надо еще текст строки, на которой стоит курсор
У меня есть такая функция, но она не проброшена в API, постараюсь сегодня сделать. Можете сказать, какую функцию пытаетесь реализовать? ))
реализовать - просто еще один вид авторских комментариев. если ничего не выделено, то "добавлением" просто добавляется шаблонный коммент в конце строки, если удаление - то в конец добавляется коммент, и вся строка "комментится" т.е. если добавил или удалил не блок, а одну строку - она не "оборачивается" в комментарии.
Про функцию текущей строки я не забыл. Просто работы навалилось )) Сейчас вроде стало посвободнее - займусь.
В новой бета-версии метод ПолучитьПозициюПоИндексу кроме позиции курсора, возвращает текущую строку по индексу ТекСтрока = ТК.ПолучитьПозициюПоИндексу(Текст, Поз, ПозКурсораX, ПозКурсораY);
ок, сейчас попробую то, что хотел. но пока - пожалуюсь: турбоконф при попытке поставить АК (довльно многотекста нахренячил, строк 30. нажал ктрл-шифт+) - завесил пофигуратор. наглухо.
Если проблема воспроизводится, то смогу исправить. Но мне нужно будет понять последовательность действий, которые приводят к этому.
отвис, но коммент не поставил. написал "не удалось выполнить скрипт. в строке 41 модуля
пока не могу предположить почему это произошло, предлагаю понаблюдать.
Изменены хоткеи, т.к. старые совпадали со штатными
А можно вынести хоткеи в настройки?
Ну, триал закончился, о покупке пока размышляю - поэтому понаблюдать не смогу.
(18) да, вынесу обязательно. Задача уже в списке :)
(#19) что Вас сдерживает от покупки? Если есть какие-то сомнения поделитесь - может я их развею ))
сдерживает трата _личных_ денег. (контора зажлобилась, и как-то задумался в том числе и о конторе ).
Привет
Хочу сюда добавить ещё один вид коммента
Где это делается?
(23) Pit, в этот раздел не добавить свои элементы, только в свой раздел или в раздел Скрипты
Почти отлично. только нужно в каждую Настройки.Вставить("Шаблон***********%ТекДата%") добавить "+ Символы.ПС". т.е. Настройки.Вставить("Шаблон***********%ТекДата%"+ Символы.ПС). Иначе съедает строчку за выделенным блоком.