salexdv / bsl_console

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

Прошу показывать в подсказке по вызову метода имя метода и имя сигнатуры #184

Closed tormozit closed 2 years ago

tormozit commented 3 years ago

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

изображение

Также у метода может быть несколько сигнатур и при их переключении хочется видеть название текущей сигнатуры. Например у конструктора объекта "Структура" они называются

tormozit commented 3 years ago

Пока прикрутил отображение имени метода и сигнатуры через свойство documentation. Неудобство в том, что если описание параметра достаточно большое, то переданные таким образом имя метода и сигнатуры не отображаются, т.к. располагаются за пределами видимой области в самом низу текста подсказки.

изображение

salexdv commented 3 years ago

Заголовок подсказки - это обычная строка. Мне неизвестен способ сделать его хотя бы многострочным, чтобы в первой строке выводить имя метода. Могу предложить только такой вариант: editor

tormozit commented 3 years ago

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

  1. Уменьшить размер шрифта этой подсказки по умолчанию и сделать этот размер настраиваемым.
  2. Имя метода показывать с обрезкой до 20 символов, включая "..." либо дать возможность отображаемое имя передавать явно через API.
salexdv commented 3 years ago
  1. Имя метода показывать с обрезкой до 20 символов, включая "..." либо дать возможность отображаемое имя передавать явно через API.

Ты и так передаешь label в setCustomSignatures. Можешь вместо вот этого

{
"label": "(Включить [Булево])",
}

передать это

{
"label": "ОписаниеТипов(Включить [Булево])",
}
salexdv commented 3 years ago
  1. Уменьшить размер шрифта этой подсказки по умолчанию и сделать этот размер настраиваемым.

Отдельной опции для размера шрифта в окне подсказки по вызову метода нет. Тут только с decorations.css играть

tormozit commented 3 years ago

По п. 2 согласен - свойства label достаточно. Про изменение размера штрифта не смог пока найти имя элемента стиля в 1С. Как искать в обычной форме, где не открывается консоль разработчика? Пришлось смотреть в браузере. Стиль - editor-widget parameter-hints-widget. Еще шрифт сейчас используется моноширинный. А для подсказки по вызову метода это не несет большой пользы и потому просто расточительно. Очень хотелось бы многоширинный шрифт, но не понял как его назначить через стиль.

tormozit commented 3 years ago

Все мои попытки влиять на шрифт (размер, семью и прочее) через стили окончились неудачей. Пробовал например так

    //РедакторHTML.setFontSize(13);
    //РедакторHTML.setFontFamily("Lucida Console");
    .editor-widget parameter-hints-widget {
        font-size: 10px;
    }

При этом шрифт в этом окне упорно продолжает использовать стандартные параметры.

salexdv commented 3 years ago

Как изменить шрифт через стили описал тут #194

tormozit commented 3 years ago

Появилась старая проблема неверного выделения текущего параметра в заголовке подсказки, если он содержит имя параметра. Все таки только явная передача положения (диапазонов) параметров в заголовке даст надежную работу этой функции. ЗначениеВСтрокуВнутр()

изображение

salexdv commented 3 years ago

Проверю

salexdv commented 2 years ago

Воспроизведение проблемы

setCustomSignatures(`{
    "ЗначениеВСтрокуВнутр": [
        {
            "label": "ЗначениеВСтрокуВнутр(Значение) [Строка]",
            "documentation": "Получает системное строковое представление переданного объекта",
            "parameters": [
                {
                    "label": "Значение",
                    "documentation": "Значение, представление которого необходимо получить"
                }
            ]
        }
    ]
}`)
salexdv commented 2 years ago

Проблема наблюдается и в самой последней версии monaco editor.

ZbcVBtlCTu

Причём проблема только при использовании кириллицы. Английские названия функции и параметров такого глюка не вызывают. Надо смотреть ядро.

salexdv commented 2 years ago

Проблема устранена