IRBIS PFT Language Extension для VS Code
Расширение 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
- Скачайте файл
.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 без ручной настройки.
Известные проблемы
- Диагностика ограничена парностью конструкций; семантические ошибки не выявляются
.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).
История версий
0.1.2 (Текущая версия)
- Исправлено:
& больше не обязателен перед s/val/f/rsum/rmax/rmin/ravr/l/ref
для hover и подсветки синтаксиса — в реальных форматах эти функции почти всегда вызываются
без &
- Добавлены hover-подсказки для
break/if/then/else/fi/and/or/not, операторов
сравнения (включая : — «содержит») и синтаксиса ссылок на поля v/d/n/g с разбором
^подполе/*смещение/.длина
0.1.1
- Файлы
.pft и служебные форматы ИРБИС (.fst, .mnu, .par, .wss, .stw, .ws, .gbl) открываются и
сохраняются в кодировке Windows-1251 по умолчанию (см. раздел «Кодировка»)
- Форматирование (Ctrl+Shift+I) больше не переводит CRLF в LF
- Диагностика пересчитывается с задержкой 300 мс после последнего изменения, а не на каждое
нажатие клавиши
- Подсветка повторяющихся литералов
|...| и |...|+
- Добавлены ESLint и
.editorconfig
- Удалён встроенный справочник и hover/автодополнение полей RUSMARC — покрывал лишь 11 полей
из сотен возможных и создавал ложное впечатление полноты
0.1.0
- Исходный код реорганизован по слоям
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, включая проверку архитектурных границ)
0.0.3
- Добавлена поддержка hover-подсказок
- Улучшено автодополнение функций
- Добавлены snippet'ы для часто используемых функций
- Исправлены ошибки в подсветке синтаксиса
0.0.2
- Добавлено автодополнение встроенных функций
- Улучшена подсветка синтаксиса
- Добавлено форматирование кода
0.0.1
- Первоначальный релиз
- Базовая подсветка синтаксиса для .pft файлов
Обратная связь
Если у вас есть предложения по улучшению или вы нашли ошибку, пожалуйста, создайте issue в репозитории проекта.
Лицензия
Данное расширение распространяется под лицензией MIT.
Приятного использования! 🚀
| |