salexdv / bsl_console

Консоль кода для 1С 8.3 (Управляемые и обычные формы)
MIT License
297 stars 55 forks source link

Клавиши курсора Up/Down захватываются окном подсказки по вызову метода, если в ней несколько сигнатур #177

Closed tormozit closed 3 years ago

tormozit commented 3 years ago
УстановитьПривилегированныйРежим(истина);
Параметры = Новый Структура("RUB", Справочники.Валюты.ПустаяСсылка());

изображение

Ожидал что только сочетания CTRL+Up/Down будут переключать сигнатуры. А по факту и Up/Down тоже переключают. Хотелось бы убрать этот захват.

salexdv commented 3 years ago

Навигация стрелками интуитивнее, чем стрелки + CTRL. Это родное поведение редактора, которое я трогать не буду.

tormozit commented 3 years ago

Прошу рассмотреть еще один аргумент. Пусть есть текст

УстановитьПривилегированныйРежим(истина);
Параметры = Новый Структура("RUB", Справочники.Валюты.ПустаяСсылка());
ТЗ = НайтиПоСсылкам(ирОбщий.БыстрыйМассивЛкс(Параметры.RUB));

Каретка стоит на первой строке. Нажимаю CTRL+SHIFT+SPACE. Открывается подсказка по вызову метода.

изображение

Нажимаю клавишу "Вниз". Каретка переходит на следующую строку и попадает в вызов конструктора с двумя сигнатурами (вариантами).

изображение

Нажимаю клавишу "Вниз". Каретка неожиданно не двигается, но переключаются сигнатуры. Считаю что в этом сценарии вероятность что пользователь захочет двигать каретку вниз заметно выше, чем то, что он хочет переключать сигнатуры.

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

salexdv commented 3 years ago

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

Это придумали ребята из Microsoft. Количество пользователей у VSCode, наверно, больше будет, чем пользователей у наших консолей и конфигуратора. Они считают такое поведение правильным. Мне оно тоже не кажется ошибочным. Исправить его, не залезая в дебри ядра нельзя.

Вот как это работает в самой последней версии monaco: QoC55yRUHm

tormozit commented 3 years ago

Переключение сигнатур в коде 1С заметно менее частотная операция, чем в других языках. Если уж возникла такая потребность, то первым делом пользователь вспомнит как это делалось в конфигураторе и попробует. И у него сразу получится. Не вижу тут потери удобства по отношению к встроенному редактору.

Если отключать привязку этих клавиш в этом случае сложно, то возможно получится отключить автовызов подсказки по вызову метода при смене вызываемого метода при перемещении каретки. Т.е. в моем примере после перехода на следующую строку сделать, чтобы окно подсказки по вызову метода закрылось. Но важно оставить его, если следующая строка также относится к текущему вызову метода.

salexdv commented 3 years ago

Если отключать привязку этих клавиш в этом случае сложно, то возможно получится отключить автовызов подсказки по вызову метода при смене вызываемого метода при перемещении каретки.

Невозможно однозначно определить, вызвана подсказка через смещение каретки на строку вниз или нет. Можно отследить, что последней была нажата Up/Down, но это ничего не дает т.к. есть еще CTRL+Up/Down. В теории, конечно, можно построить велосипед из всяких перехватчиков, но не стоит оно того.