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

Выделение строки, при выполнении которой произошла ошибка

Обновление readme closes #14
changelog
This commit is contained in:
salexdv 2020-07-29 20:19:03 +03:00
parent 0aa5a9d34c
commit 054d5cc0c2
7 changed files with 82 additions and 1 deletions

View File

@ -1,3 +1,11 @@
## 0.1.7 (29.07.2020)
### Новое:
* Выделение строки, при выполнении которой произошла ошибка.
### Улучшения:
* Частичная поддержка веб-клиента
## 0.1.6 (28.07.2020)
### Новое:

View File

@ -13,10 +13,27 @@
* Автокомплит для метаданных (Справочники, Документы и т.п.)
* Автокомплит для объектов метаданных (СправочникСсылка, ДокументОбъект и т.п.)
* Подсказка параметров конструкторов и методов
* Подсказка для типов
* Вставка готовых блоков кода (сниппеты)
* Вызов конструктора запроса и конструктора форматной строки
* Загрузка пользовательских функций и сниппетов
* Выделение строки, при выполнении которой произошла ошибка
* Сворачивание циклов, условий и текстов запросов
* Всплывающие подсказки для глобальных функций, перечислений и классов
## Как запускать?
Для запуска достаточно открыть **index.html** из каталога **src**.
1. Для запуска в браузере достаточно открыть **index.html** из каталога **src**, либо воспользоваться [ссылкой](https://salexdv.github.io/bsl_console/src/index.html)
2. Для запуска в 1С можно использовать обработку **console.epf**, выкладываемую в [релизах](https://github.com/salexdv/bsl_console/releases) или сделать свою.
## Проверенные платформы:
* 8.3.15.1830
* 8.3.16.1148
* 8.3.17.1386
## Известные проблемы:
* На платформах до 8.3.16 могут не работать горячие клавиши CTRL+C, CTRL+V и CTRL+Z и т.п.
* В веб-клиенте недоступно любое взаимодействие редактора и 1С. Можно попробовать только набор кода. Иногда для этого в браузере надо предварительно открыть данную [ссылку](https://salexdv.github.io/bsl_console/src/index.html)
* Работа в linux на данный момент не поддерживается.
## Благодарности
Выражаю благодарность команде [1c-syntax](https://github.com/1c-syntax) и их [проекту для VSCode](https://github.com/1c-syntax/vsc-language-1c-bsl) за подробное описание внутренних конструкций языка в JSON, а также за коллекцию сниппетов.

View File

@ -1656,4 +1656,24 @@ class bslHelper {
}
/**
* Finds text in model and returns first line number
*
* @param {string} string - searching string
*
* @returns {int} line number
*/
findText(string) {
let lineNumber = 0;
const matches = this.model.findMatches(string);
if (matches.length)
lineNumber = matches[0].range.startLineNumber;
return lineNumber;
}
}

9
src/decorations.css Normal file
View File

@ -0,0 +1,9 @@
.error-string {
background-color: #ffa07a;
}
.error-mark {
background: #ff0000;
width: 5px !important;
margin-left: 3px;
}

View File

@ -2,6 +2,7 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
selectionText = '';
engLang = false;
decorations = [];
sendEvent = function(eventName, eventParams) {
@ -91,6 +92,30 @@ define(['bslGlobals', 'bslMetadata', 'snippets', 'bsl_language', 'vs/editor/edit
}
markError = function (line) {
let count = 12;
let tid = setInterval(function() {
let newDecor = [];
if (!decorations.length) {
newDecor = [
{ range: new monaco.Range(line,1,line), options: { isWholeLine: true, inlineClassName: 'error-string' }},
{ range: new monaco.Range(line,1,line), options: { isWholeLine: true, linesDecorationsClassName: 'error-mark' }},
];
}
decorations = editor.deltaDecorations(decorations, newDecor);
count--;
if (count == 0) {
clearInterval(tid);
}
}, 300);
editor.revealLineInCenter(line);
}
findText = function (string) {
let bsl = new bslHelper(editor.getModel(), editor.getPosition());
return bsl.findText(string);
}
// Register a new language
monaco.languages.register({ id: language.id });

View File

@ -5,6 +5,7 @@
<title>BSL-editor</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<link href="./decorations.css" rel="stylesheet">
<style>
html,
body {

View File

@ -10,6 +10,7 @@
mocha.setup('bdd');
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/2.0.0/chai.js"></script>
<link href="./decorations.css" rel="stylesheet">
</head>
<body>