При нажатии ENTER внутри многострочного комментария автоматически добавлять "//" в начало новой строки

tormozit Открыто

При нажатии ENTER внутри многострочного комментария автоматически добавлять "//" в начало новой строки аналогично тому, как обрабатывается нажатие ENTER внутри строкового литерала.

//.
// Возвращаемое значение:
//   Соответствие - 
Функция НедоступныеТипы() Экспорт

В EDT так уже давно работает. Это удобно. Хотя изредка конечно бывает что приходится удалять эти символы.

Это практически не вредно только начиная с добавления 3-й строки. При добавлении 2-й строки вред относительно часто возникает.

Скрипт "Автозавершение текущей конструкции" не подходит

  1. По его названию и даже подсказке трудно догадаться, что он может это делать.
  2. Очень часто нажимать CTRL+ENTER неудобно.

Комментарии

tormozit
#1, 27 октября 2024 22:02

Добавил аналогичную функцию в редактор кода ИР https://www.hostedredmine.com/issues/994795
Не хотелось бы перехватывать своим скриптом нажатие ENTER в конфигураторе.
Поэтому надеюсь на ее добавление в ядро Турбоконфа.

tormozit изменил статус на Открыто


bolsun
#2, 27 октября 2024 22:07

(1) tormozit, такая возможность была, на деле оказалось не удобно. Когда хочется добавить пустую строку после комментария.


tormozit
#3, ред. 27 октября 2024 23:00

Еще раз проанализировал вредные условия срабатывания этой функции. Сделал ее применение более условным.
Обновил описание https://www.hostedredmine.com/issues/994795
Кажется в таком виде вредные срабатывания будут очень редки.
Вот код условия

	Если Истина
		И мКонечнаяСтрока > 1
		И Лев(СокрЛ(ПолеТекста.ПолучитьСтроку(мКонечнаяСтрока - 1)), 2) = "//"
		И Лев(СокрЛ(ПолеТекста.ПолучитьСтроку(мКонечнаяСтрока)), 2) <> "//"
		И мКонечнаяСтрока < ПолеТекста.КоличествоСтрок()
	Тогда
		СледующаяСтрока = СокрЛ(ПолеТекста.ПолучитьСтроку(мКонечнаяСтрока + 1));
		Если Ложь
			Или ирОбщий.СтрНачинаетсяСЛкс(СледующаяСтрока, "//")
			Или ирОбщий.СтрНачинаетсяСЛкс(СледующаяСтрока, "&")
			Или ирОбщий.СтрНачинаетсяСЛкс(СледующаяСтрока, "Асинх")
			Или ирОбщий.СтрНачинаетсяСЛкс(СледующаяСтрока, "Процедура")
			Или ирОбщий.СтрНачинаетсяСЛкс(СледующаяСтрока, "Функция")
		Тогда
			ПолеТекста.ВыделенныйТекст("// ");
		КонецЕсли;
	КонецЕсли;


tormozit
#4, 31 октября 2024 07:18

Кто то видит вред в таком алгоритме работы? Потестировать можно в ИР консоли кода.


amiralnar
#5, 31 октября 2024 16:19

(4) tormozit, Протестировал. Работает отлично!


bolsun
#6, 04 ноября 2024 12:00

(3) tormozit, попробуем


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера