DSH-CodeEditor_BSL
其他 活跃维护

DSH-CodeEditor_BSL

Mempemp/DSH-CodeEditor_BSL

Web技术构建的BSL语言可交互代码编辑器,支持语法高亮、代码补全、实时运行与错误提示,界面轻量易用,无需复杂配置即可直接在浏览器中编写、调试BSL代码,降低BSL使用门槛。

1
Stars 标星
0
Forks 分支
1
Watchers 关注
0
Open Issues
JavaScript
主要语言
None
开源协议
266 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Mempemp/DSH-CodeEditor_BSL
git clone https://github.com/Mempemp/DSH-CodeEditor_BSL.git
git clone git@github.com:Mempemp/DSH-CodeEditor_BSL.git
README.md main

dsh-bsl-editor

Редактор кода 1С (BSL) внутри DeepSeek Harness.

Выгрузка конфигурации 1С открывается во вкладке чата DSH: дерево метаданных, редактор Monaco с раскраской BSL, вкладки файлов, фильтр изменённых файлов, переход к определениям и отправка кода в чат.

Возможности

🌲 Дерево метаданных 1С

Левая панель переключается между деревом файлов и деревом метаданных 1С:Предприятия с иконками типов — Подсистемы, Справочники, Документы, Регистры, Общие модули, … → объекты → Реквизиты / Табличные части / Формы / Команды / Макеты / Модули. Клик по модулю открывает его в редакторе. Есть поиск по имени объекта.

Поддерживаются три формата выгрузки: EDT (.mdo), XML-выгрузка из Конфигуратора (ConfigDumpInfo.xml) и пообъектная XML-выгрузка. Формат определяется автоматически. Дерево ленивое: узел парсится при раскрытии.

image

🗂 Вкладки файлов

Каждый открытый файл — вкладка в верхней полосе редактора: имя файла, индикатор несохранённых правок, закрытие крестиком или средней кнопкой мыши. При переключении вкладок сохраняются текст правок, позиция курсора и скролл; состояние вкладок восстанавливается при повторном открытии редактора. Справа — кнопки «перечитать с диска» и «сохранить»; Ctrl+S сохраняет файл.

🔎 Изменённые файлы

Переключатель «Все файлы» / «Изменённые» над деревом: в режиме «Изменённые» показывается плоский список файлов с git-статусом (M / A / D). Наведение показывает полный путь; клик открывает файл во вкладке. Untracked-файлы скрыты по умолчанию (включаются настройкой).

Статусы также отображаются у файлов в дереве; изменённые строки помечаются маркерами в редакторе.

🌆 Тема Monokai

Редактор использует палитру Monokai: фон #272822, ключевые слова — розовые, функции и классы — зелёные, строки — жёлтые, числа — фиолетовые.

🎨 Раскраска BSL

Раскраска построена на официальной TextMate-грамматике 1С (1c-syntax) через monaco-textmate + onigasm. Грамматики включены в плагин. Подсветка охватывает ключевые слова, строки, комментарии, &Аннотации, #Область. Monaco загружается с CDN (jsdelivr → unpkg → cdnjs).

⚡ Переход к определению

Definition-провайдер работает на модели метаданных: F12, Ctrl+Click и «Go to Definition» в контекстном меню.

  • ОбщийМодуль.Метод() / Справочники.Товары.Метод() → модуль и позиция;
  • имя метода без точки → поиск в текущем модуле;
  • повторный F12 переключает между кандидатами.

«Peek Definition» из контекстного меню доступен только при включённом LSP.

💬 Отправка кода в чат

Выделите фрагмент в редакторе → правый клик → «Добавить к обсуждению» → код попадает в композер DSH.

image

🔌 LSP

Поддержка bsl-language-server (диагностика, автодополнение, hover, форматирование) через WebSocket. По умолчанию выключена; включается в Settings DSH → «1С-редактор». Плагин не скачивает bsl-language-server — ожидается установленный бинарник. На больших конфигурациях сервер может зависать при построении модели конфигурации.

⚙️ Настройки

Раздел «1С-редактор» в настройках DSH:

Настройка По умолчанию Значение
LSP выключен bsl-language-server
Показывать в изменениях untracked-файлы выключено файлы вне git в списке «Изменённые»
Порт сервера 8025 порт WebSocket bsl-language-server
Путь к bsl-language-server.exe (пусто) явный путь к бинарнику

Установка

Скачайте dsh-bsl-editor-0.1.1.tgz со страницы релизов (или соберите сами: cd dsh-bsl-editor && npm pack) и установите:

dsh plugin --profile web add dsh-bsl-editor-0.1.1.tgz

Либо по прямой ссылке на архив релиза:

dsh plugin --profile web add https://github.com/Mempemp/DSH-CodeEditor_BSL/releases/download/v0.1.1/dsh-bsl-editor-0.1.1.tgz

Затем перезапустите dsh web и обновите вкладку браузера.

Если pnpm сообщает об ошибке стора (ERR_PNPM_UNEXPECTED_STORE) — добавьте --store-dir="<путь к вашему pnpm store>" к команде установки.

По умолчанию путь к бинарнику: %LOCALAPPDATA%\Programs\bsl-language-server\bsl-language-server\bsl-language-server.exe. Другой путь задаётся в настройках.

Требования

  • DeepSeek Harness (dsh web)
  • Node.js ≥ 20

Поддерживаемые форматы выгрузки

Формат Признак Примечания
EDT Configuration/Configuration.mdo объекты из файлов .mdo (реквизиты, табличные части, формы, команды, макеты)
XML-выгрузка (Конфигуратор) ConfigDumpInfo.xml + Configuration.xml дерево из списка метаданных
Пообъектная XML-выгрузка корневой Configuration.xml + папки типов (Catalogs/, Documents/, …) разделы восстанавливаются из файловой системы: Формы / Команды / Макеты / Модули / Предопределённые

Сопоставление модулей: CommonModules/<Имя>/Ext/Module.bsl, Catalogs/<Имя>/Ext/ObjectModule.bsl, Forms/<Форма>/Ext/Form/Module.bsl, корневой Ext/ManagedApplicationModule.bsl и т.д.

Структура репозитория

  • lib/index.js — host-часть (ESM): маршруты /bsl/* (tree, read, search, git, meta, find-symbol), запуск bsl-language-server.
  • lib/metadata.js — модель метаданных 1С: определение формата, парсеры трёх форматов, статическое разрешение символов.
  • lib/client.js — клиентская часть: вкладка «Редактор» в conversation-view (вкладки файлов, дерево, Monaco, фильтр изменений).
  • resources/ — иконки узлов метаданных, TextMate-грамматики 1С.
  • tests/ — HTTP и LSP smoke-тесты.

Благодарности

Структура дерева метаданных и иконки узлов адаптированы из
zerobig/vscode-1c-metadata-viewer
(MIT License, © Ilya Bushin).