Skip to content

Repository files navigation

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+клик к подключаемому файлу: @namename.pft, &uf('K<справочник>\') / &uf('K<справочник>!')<справочник>.mnu, &uf('6<формат>')<формат>.pft
  • Проверка парности if/fi в реальном времени
  • Проверка незакрытых скобок и строковых литералов

📐 Форматирование

  • Расстановка отступов по вложенности if/fi и групп в скобках
  • Содержимое литералов и комментариев не изменяется

⚡ Команды и горячие клавиши

  • Ctrl+Shift+U — показать функции по категориям
  • Ctrl+Shift+I — форматировать документ

Установка

  1. Откройте Visual Studio Code
  2. Перейдите в раздел расширений (Ctrl+Shift+X)
  3. Найдите "Irbis Language Support"
  4. Нажмите "Установить"

Альтернативная установка из VSIX

  1. Скачайте файл .vsix
  2. Откройте VS Code
  3. Нажмите Ctrl+Shift+P
  4. Введите "Extensions: Install from VSIX"
  5. Выберите скачанный файл

Использование

  1. Создайте файл с расширением .pft
  2. Начните вводить код — автодополнение активируется автоматически
  3. Наведите курсор на функцию или ссылку на поле для просмотра документации
  4. Используйте 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).

История версий

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.


Приятного использования! 🚀

About

Дополнение для VSCode для внутреннего языка разметки Ирбис64.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages