1
0
mirror of https://github.com/salexdv/bsl_console.git synced 2024-11-24 08:33:29 +02:00

Генерация события перед показом всплывающей подсказки для слова closes #77

This commit is contained in:
salexdv 2021-05-04 14:40:20 +03:00
parent 4581dd3459
commit 4030393d98
5 changed files with 77 additions and 16 deletions

View File

@ -70,6 +70,7 @@
| [`enableSuggestActivationEvent`](docs/activation_event.md) | Включает/выключает генерацию события, возникающего активации пункта в списке подсказок|
| [`enableBeforeShowSuggestEvent`](docs/before_suggest_event.md) | Включает/выключает генерацию события, возникающего перед появлением списка подсказок|
| [`enableSelectSuggestEvent`](docs/select_suggest_event.md) | Включает/выключает генерацию события, возникающего при выборе пункта из списка подсказок|
| [`enableBeforeHoverEvent`](docs/before_hover_event.md) | Включает/выключает генерацию события, возникающего перед появлением всплывающей подсказки для слова|
| [`switchQueryMode`](docs/switch_query.md) | Переключение между режимом запроса и режимом редактирования кода |
| [`compare`](docs/compare.md) | Включает/выключает режим сравнения текстов |
| `nextDiff` | Переход с следующему изменению в режиме сравнения |
@ -114,6 +115,7 @@
| `EVENT_ON_ACTIVATE_SUGGEST_ROW`| При активации пункта в текущем списке подсказок [(подробнее)](docs/activation_event.md) |
| `EVENT_BEFORE_SHOW_SUGGEST` | Перед появлением списка подсказок [(подробнее)](docs/before_suggest_event.md) |
| `EVENT_ON_SELECT_SUGGEST_ROW` | При выборе пункта из списка подсказок [(подробнее)](docs/select_suggest_event.md) |
| `EVENT_BEFORE_HOVER` | Перед появлением всплывающей подсказки для слова [(подробнее)](docs/before_hover_event.md.md) |
*Перед началом работы с редактором из 1С Предпрития желательно вызвать функцию инициализации и передать в нее текущую версию платформы.*
Пример:

View File

@ -0,0 +1,29 @@
# Функция *enableBeforeHoverEvent*
## Назначение функции
Функция включает/выключает генерацию события *EVENT_BEFORE_HOVER*, которое возникает перед появлением всплывающей подсказки для слова при наведении мыши
## Параметры функции
* **enabled** - *boolean*, активность события
## Пример вызова
```javascript
// Включение генерации события
enableBeforeHoverEvent(true);
// Отключение генерации события
enableBeforeHoverEvent(false);
```
## Пример параметров генерируемого события
```json
{
"word": {
"word": "Документы",
"startColumn": 8,
"endColumn": 17
},
"token": "identifierbsl",
"line": 4,
"column": 12
}
```

View File

@ -4201,6 +4201,21 @@ class bslHelper {
*/
getHover() {
for (const [key, value] of Object.entries(customHovers)) {
if (key.toLowerCase() == this.word && value) {
return {
range: new monaco.Range(this.lineNumber, this.column, this.lineNumber, this.model.getLineMaxColumn(this.lineNumber)),
contents: [
{ value: value }
]
};
}
}
for (const [key, value] of Object.entries(bslGlobals)) {
for (const [ikey, ivalue] of Object.entries(value)) {
@ -4231,22 +4246,7 @@ class bslHelper {
}
}
for (const [key, value] of Object.entries(customHovers)) {
if (key.toLowerCase() == this.word && value) {
return {
range: new monaco.Range(this.lineNumber, this.column, this.lineNumber, this.model.getLineMaxColumn(this.lineNumber)),
contents: [
{ value: value }
]
};
}
}
return null;
}

View File

@ -427,8 +427,22 @@ define([], function () {
},
hoverProvider: {
provideHover: function (model, position) {
if (generateBeforeHoverEvent) {
let bsl = new bslHelper(model, position);
let token = bsl.getLastToken();
let params = {
word: model.getWordAtPosition(position),
token: token,
line: position.lineNumber,
column: position.column
}
sendEvent('EVENT_BEFORE_HOVER', params);
}
let bsl = new bslHelper(model, position);
return bsl.getHover();
}
},
formatProvider: {

View File

@ -21,6 +21,7 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
suggestObserver = null;
generateBeforeShowSuggestEvent = false;
generateSelectSuggestEvent = false;
generateBeforeHoverEvent = false;
statusBarWidget = null;
reserMark = function() {
@ -742,6 +743,12 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
}
enableBeforeHoverEvent = function(enabled) {
generateBeforeHoverEvent = enabled;
}
hideSuggestionsList = function() {
let widget = document.querySelector('.suggest-widget');
@ -750,6 +757,15 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
}
hideHoverList = function() {
let hovers = document.querySelectorAll('.monaco-editor-hover .hover-row');
hovers.forEach(function(hover){
hover.remove();
});
}
openSearchWidget = function() {
editor.trigger('', 'actions.find');