Расширение VS Code для поддержки языка форматирования PFT (Print Format Table) системы ИРБИС с поддержкой функций UNIFOR и встроенных функций верхнего уровня.
- Библиотека функций UNIFOR — около 80 функций с документацией
- Встроенные функции —
s,val,f,rsum,rmax,rmin,ravr,l,ref(&перед ними необязателен — в реальных форматах чаще опускается) - Сниппеты — быстрая вставка часто используемых конструкций
- Hover-подсказки для функций UNIFOR, встроенных функций, проверок
присутствия
p()/a(), ключевых слов (if/then/else/fi/and/or/not/break), операторов сравнения (включая:— «содержит») и синтаксиса ссылок на поляv/d/n/gс разбором^подполе/*смещение/.длина - Категоризация функций по назначению
- Выделение функций UNIFOR (
&uf,&unifor) и встроенных функций - Подсветка ссылок на поля (
v200^a) и глобальных переменных - Выделение строковых литералов, комментариев и проверок наличия
p()/a() - Подсветка подключаемых форматов (
@name)
- Переход по F12/Ctrl+клик к подключаемому файлу:
@name→name.pft,&uf('K<справочник>\')/&uf('K<справочник>!')→<справочник>.mnu,&uf('6<формат>')→<формат>.pft - Проверка парности
if/fiв реальном времени - Проверка незакрытых скобок и строковых литералов
- Расстановка отступов по вложенности
if/fiи групп в скобках - Содержимое литералов и комментариев не изменяется
- Ctrl+Shift+U — показать функции по категориям
- Ctrl+Shift+I — форматировать документ
- Откройте Visual Studio Code
- Перейдите в раздел расширений (Ctrl+Shift+X)
- Найдите "Irbis Language Support"
- Нажмите "Установить"
- Скачайте файл
.vsix - Откройте VS Code
- Нажмите Ctrl+Shift+P
- Введите "Extensions: Install from VSIX"
- Выберите скачанный файл
- Создайте файл с расширением
.pft - Начните вводить код — автодополнение активируется автоматически
- Наведите курсор на функцию или ссылку на поле для просмотра документации
- Используйте Ctrl+Shift+I для форматирования кода
- Visual Studio Code версии 1.96.0 или выше
Файлы ИРБИС (.pft, а также служебные .fst, .mnu, .par, .wss, .stw, .ws, .gbl) в реальных
инсталляциях хранятся в кодировке Windows-1251, а не в UTF-8. Расширение прописывает это
по умолчанию через contributes.configurationDefaults, поэтому такие файлы открываются и
сохраняются в CP1251 без ручной настройки.
- Если в ваших пользовательских настройках (User Settings, не workspace) уже стоит
безусловный
"files.encoding", он имеет приоритет над дефолтом расширения, и.pftснова откроется как UTF-8. Чтобы это исправить, добавьте в свойsettings.json:"[irbis]": { "files.encoding": "windows1251" }
- Если конкретный файл на самом деле в другой кодировке (например, UTF-8), откройте его и выберите в статус-баре внизу текущую кодировку → Reopen with Encoding → нужную кодировку.
- Чтобы вернуть для
.pftкодировку по умолчанию (UTF-8), пропишите у себя"[irbis]": { "files.encoding": "utf8" }.
- Диагностика ограничена парностью конструкций; семантические ошибки не выявляются
.fst/.mnu/.par/.wss/.stw/.ws/.gblраспознаются только для корректной кодировки — подсветки, автодополнения и диагностики для них нет
Исходный код организован по слоям:
src/
domain/ язык PFT: токенизатор, форматтер, диагностика, справочники функций и полей
application/ сценарии: автодополнение, hover, переход по @include, выбор функции
infrastructure/vscode/ адаптеры к API VS Code и точка активации
Ключевое правило: domain и application не импортируют vscode. Весь контакт с API
редактора сосредоточен в infrastructure/vscode/. Это позволяет тестировать язык, форматтер,
диагностику и справочники функций обычными mocha-тестами без запуска редактора; правило
проверяется автоматически тестом src/test/architecture.test.ts.
npm install # установка зависимостей
npm run compile # сборка в out/
npm run watch # сборка в фоновом режиме при изменениях
npm test # компиляция + запуск тестов (mocha)
npm run package # сборка .vsix через @vscode/vsce
Для отладки в самом VS Code — открыть проект и нажать F5 (Extension Development Host).
- Исправлено:
&больше не обязателен передs/val/f/rsum/rmax/rmin/ravr/l/refдля hover и подсветки синтаксиса — в реальных форматах эти функции почти всегда вызываются без& - Добавлены hover-подсказки для
break/if/then/else/fi/and/or/not, операторов сравнения (включая:— «содержит») и синтаксиса ссылок на поляv/d/n/gс разбором^подполе/*смещение/.длина
- Файлы
.pftи служебные форматы ИРБИС (.fst,.mnu,.par,.wss,.stw,.ws,.gbl) открываются и сохраняются в кодировке Windows-1251 по умолчанию (см. раздел «Кодировка») - Форматирование (Ctrl+Shift+I) больше не переводит CRLF в LF
- Диагностика пересчитывается с задержкой 300 мс после последнего изменения, а не на каждое нажатие клавиши
- Подсветка повторяющихся литералов
|...|и|...|+ - Добавлены ESLint и
.editorconfig - Удалён встроенный справочник и hover/автодополнение полей RUSMARC — покрывал лишь 11 полей из сотен возможных и создавал ложное впечатление полноты
- Исходный код реорганизован по слоям
domain/application/infrastructureс независимым отvscodeдоменным и прикладным слоем (см. раздел «Архитектура») - Сборка выводится в
out/, пакет.vsixбольше не содержит исходники TypeScript, тесты и служебные файлы - Значок расширения заменён на PNG 512×512
- Исправлена обработка комментариев:
/*действует до конца строки, конструкции*/и//в PFT нет - Список ключевых слов приведён к реальному синтаксису PFT (
if/then/else/fi/and/or/not/break);case,for,while,selectудалены как несуществующие - Библиотека UNIFOR расширена до ~80 функций, исправлены коды даты и времени и описание счётчика
S - Добавлены встроенные функции верхнего уровня:
&s,&val,&f,&rsum,&rmax,&rmin,&ravr,&l,&ref - Добавлены hover-подсказки по полям и подполям RUSMARC
- Добавлен переход к подключаемому формату (
@name) по F12 - Добавлена диагностика парности
if/fi, скобок и строковых литералов - Форматирование переписано: отступы по вложенности, содержимое литералов и комментариев не изменяется
- Удалён дублирующий legacy-список функций, добавлены модульные тесты (63, включая проверку архитектурных границ)
- Добавлена поддержка hover-подсказок
- Улучшено автодополнение функций
- Добавлены snippet'ы для часто используемых функций
- Исправлены ошибки в подсветке синтаксиса
- Добавлено автодополнение встроенных функций
- Улучшена подсветка синтаксиса
- Добавлено форматирование кода
- Первоначальный релиз
- Базовая подсветка синтаксиса для .pft файлов
Если у вас есть предложения по улучшению или вы нашли ошибку, пожалуйста, создайте issue в репозитории проекта.
Данное расширение распространяется под лицензией MIT.
Приятного использования! 🚀