Git Product home page Git Product logo

bsl-language-server's Introduction

1c-syntax

Join the chat at https://gitter.im/xDrivenDevelopment/1c-syntax Build Status

Syntax definition rules for 1C:Enterprise 8 for tmLanguage-based text editors (Sublime Text, Atom and VS Code).

Цель репозитория

Данный репозиторий создан для консолидации работ по развитию пакетов, добавляющих поддержку языка 1С:Предприятие 8 для текстовых редакторов Atom, Sublime Text и Visual Studio Code.
Под каждый из редакторов создан отдельный репозиторий и опубликован соответствующий пакет на площадке распространения пакетов:

Репозиторий Пакет
Sublime Text Package control
Atom Atom.io/packages
VS Code Marketplace

Разработка описания грамматики языка на основе формата TextMate ведется в специальном YAML-файле, описание которого и примеры использования вы можете найти здесь.

Связи с другими проектами

Проект 1c-syntax не органичивается репозиториями с описанием грамматики. В рамках наших активностей так же выполнялись/выполняются работы по направлениям:

  • Подсветка синтаксиса для Github: библиотека linguist
  • Подсветка синтаксиса GitLab: библиотека rouge и братский проект 1c-syntax-for-GitLab
  • Подсветка синтаксиса в редакторе Ace: репозиторий ace
  • Подсветка синтаксиса в редакторе Vim: репозиторий vim-language-1c-bsl за авторством @andreevlex
  • Подсветка синтаксиса в редакторах с поддержкой GtkSourceView: библиотека GtkSourceView, репозиторий gtksourceview-1c-bsl
  • Запуск скриптов OneScript в редакторе Atom: пакеты atom-script и atom-build
  • Модули подсветки brush-bsl и brush-sdbl для js библиотеки syntaxhighlighter. Эти модули должны работать в JIRA.

Планируются работы по направлениям:

  • Подсветка синтаксиса в редакторе CodeMirror - для поддержки подсветки в git-сервере BitBucket
  • Обновление подсветки в редакторе Highlight.js - для улучшенной поддержки подсветки в git-сервере Gogs и приведения идентификаторов языка к единому виду

Дополнительные возможности

Помимо, собственно, грамматики, мы пытаемся добавить в редакторы дополнительные возможности, которые могут упростить работу с 1С.
На данный момент список таких фич выглядит вот так:

Функциональность \ Поддержка в редакторах Atom Sublime Text VS Code
Подсветка текста запроса внутри модуля и отдельно Есть Есть Есть
Блочное комментирование через // Есть Есть Есть
Список процедур и функций текущего файла Есть Есть Есть
Список процедур и функций рабочего каталога Есть Есть Есть
Переход к определению процедур и функций Есть Есть Есть
Автодополнение процедур и функций глобального контекста Есть Есть Есть
Автодополнение процедур и функций, уникальных для OneScript Нет Нет Есть
Сниппеты (шаблоны текста) Есть Есть Есть
Использование автоматических отступов по ключевым словам Есть Есть Есть
Автоматическое выравнивание блока кода или файла целиком Есть Есть Есть
Разворачивание конструкций вида ++/+= и подобных по нажатию Tab Есть Есть Есть
Автоматическое добавление символа | при добавлении новой строки во время редактирования строкового литерала Есть Есть Есть
Автоматическое добавление символов // при добавлении новой строки во время редактирования комментария по нажатию Shift-Enter Есть Есть Есть
Запуск скриптов .os/.bsl с помощью OneScript Есть Есть Есть
Линтер на базе oscript -check Есть Есть Есть
Использование отступов в виде 4х-символьных табов Есть Есть Есть
Поиск мест использования процедур Нет Нет Есть
Информация о процедуре Нет Нет Есть
Предварительный просмотр определения процедуры Нет Нет Есть
Автодополнение через точку Нет Нет Есть
Подсказка по параметрам процедур Нет Нет Есть
Поиск определения Нет Нет Есть
Поддержка английского языка конфигурации Нет Нет Есть
Создание описания метода Нет Нет Есть
Синтакс-помощник по функциям глобального контекста Нет Нет Есть
Синтакс-помощник по методам oscript Нет Нет Есть
Автоматическая вставка скобок Нет Нет Есть
Динамические шаблоны Нет Нет Есть

Информацию об использовании каждой из возможностей вы найдете в README соответствующего редактора.

Сотрудничество

Если вы разработчик и хотите помочь с разработкой пакетов и/или грамматикой, пожалуйста, ознакомьтесь с гайдом для разработчиков.
Уже поставленные задачи по разработке можно найти на странице Issues данного репозитория.

bsl-language-server's People

Contributors

akabrr avatar alkoleft avatar artbear avatar asosnoviy avatar astrizhachuk avatar daabramov avatar dependabot[bot] avatar eightm avatar evgsychev avatar evilbeaver avatar gitlocalize-app[bot] avatar huxuxuya avatar kuzyara avatar lchagelishvili avatar minimajack avatar mironovdmitry avatar mt-gitlocalize avatar nivanchenko avatar nixel2007 avatar otymko avatar ovcharenko-di avatar qtlex avatar salexdv avatar sfaqer avatar stepa86 avatar theshadowco avatar transifex-integration[bot] avatar yansergey avatar zeegin avatar zeratulayuris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bsl-language-server's Issues

Использование объектов не доступных в Linux-клиенте

Ругаться на: Новый COMОбъект
Диагностика: Проверить, что задействованы аналоги COM объектов при работе в Linux-клиенте.

Ругаться на: Новый Почта
Диагностика: Проверить, что пользователю доступны аналоги объекта Почта при работе в Linux-клиенте.

LineLength на методах

Должно ли срабатывать на методах?

Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)

Имхо да, но даже на SSL зашкаливает количество срабатываний.

может под настройку?

Fp LineLength на Нстр()

ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Процедуре ЗаполнитьРеквизитСпособОтображенияПодсказки не удалось обработать некоторые вопросы шаблона анкеты (пропущены): %1'"),
ПроблемныхОбъектов);

(8.3.10+) ВариантОткрытияОкна. Использование устаревшего системного перечисления

8.3.10+
Диагностика: Использование устаревшего системного перечисления ВариантОткрытияОкна
Системное перечисление ВариантОткрытияОкна более не доступно.
Требуется переработать код с отказом от использования перечисления.

Приведение к числу в попытке

Например, неправильно:

Попытка
 КоличествоДнейРазрешения = Число(Значение);
Исключение
 КоличествоДнейРазрешения = 0; // значение по умолчанию
КонецПопытки;

Правильно:

ОписаниеТипа = Новый ОписаниеТипов("Число");
КоличествоДнейРазрешения = ОписаниеТипа.ПривестиЗначение(Значение);

(8.3.10+) Использование устаревшего метода клиентского приложения

Диагностика: Использован устаревший метод "%1" (актуальное - "%2").

Устаревший метод Актуальный метод
УстановитьКраткийЗаголовокПриложения КлиентскоеПриложение.УстановитьКраткийЗаголовок
ПолучитьКраткийЗаголовокПриложения КлиентскоеПриложение.ПолучитьКраткийЗаголовок
УстановитьЗаголовокКлиентскогоПриложения КлиентскоеПриложение.УстановитьЗаголовок
ПолучитьЗаголовокКлиентскогоПриложения КлиентскоеПриложение.ПолучитьЗаголовок
ТекущийВариантОсновногоШрифтаКлиентскогоПриложения КлиентскоеПриложение.ТекущийВариантОсновногоШрифта
ТекущийВариантИнтерфейсаКлиентскогоПриложения КлиентскоеПриложение.ТекущийВариантИнтерфейса

Поддержка толстого клиента, управляемое приложение, клиент-сервер

Поддержка стандарта Поддержка толстого клиента, управляемое приложение, клиент-сервер

В модулях объектов, наборов записей и т.п.

  1. в модулях [из списка по стандарту] есть области препроцессора
  2. область #Иначе для коревой области препроцессора существует (нужно убедиться что проверка не дает фолс позитив на #Иначе в не корневой области)
  3. в области #Иначе должен быть райз и только он, ничего больше ничего меньше

Ошибка

#Если Сервер Тогда
// ЧтоТо
#Иначе
ВызватьИсключение "Текст";
#КонецЕсли

Правильный модуль

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// ЧтоТо
#Иначе
ВызватьИсключение "Текст";
#КонецЕсли

Ошибка

Процедура МояПроцедура()
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// ЧтоТо
#Иначе
ВызватьИсключение "Текст";
#КонецЕсли
КонецПроцедуры

Ошибка

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// ЧтоТо
#Иначе
#КонецЕсли

Ошибка

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// ЧтоТо
#КонецЕсли

Модуль сеанса и все модули менеджеров заключены в конструкцию

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// ЧтоТо
#КонецЕсли

(8.3.6+) Найти -> СтрНайти

8.3.6+
Диагностика: Использование устаревшего метода глобального контекста

Использован устаревший глобальный метод "Найти" (актуальный - "СтрНайти").

ЭтаФорма -> ЭтотОбъект

Диагностика: Использовано устаревшее имя свойства "ЭтаФорма" (актуальное - "ЭтотОбъект").
8.3.3+

(8.3.12+) ОриентацияМетокДиаграммы. Использование устаревшего системного перечисления

Совместимость 8.3.12+
Диагностика: Использование устаревшего системного перечисления
Системное перечисление ОриентацияМетокДиаграммы более не доступно.
Актуальный вариант ОриентацияПодписейДиаграммы.

Настройки диагностик

Какие диагностики применять/исключать при анализе.

  • Конкретный список
  • По важности
  • По области действия

Индивидуальные настройки, у каждой диагностики свои параметры

  • Максимальная длинна строки
  • Разрешить однотипные присваивания в одной строке
  • и т.д.

Неиспользуемый экспортный метод

Метод экспортный, но не вызывается из другим модулей. Лишнее слово "Экспорт".

Дополнительная сложность с обработчиками оповещений.

Неиспользуемый параметр

С ошибкой:

Функция СложитьДваЧисла(Знач ПервоеЧисло, Знач ВтороеЧисло, Знач ЛишнийПараметр)

    Возврат ПервоеЧисло+ВтороеЧисло;

КонецФункции

С ошибкой 2

Функция СложитьДваЧисла(Знач ПервоеЧисло, Знач ВтороеЧисло, Знач ЛишнийПараметр = Неопределено)

Возврат ПервоеЧисло+ВтороеЧисло;

КонецФункции

Без ошибки

Функция СложитьДваЧисла(Знач ПервоеЧисло, Знач ВтороеЧисло)

Возврат ПервоеЧисло+ВтороеЧисло;

КонецФункции

Проверка на модальность

Диагностика: Использование модальных окон

Модальный метод Немодальный аналог
Вопрос ПоказатьВопрос
Предупреждение ПоказатьПредупреждение
ОткрытьЗначение ПоказатьЗначение
ВвестиДату ПоказатьВводДаты
ВвестиЗначение ПоказатьВводЗначения
ВвестиСтроку ПоказатьВводСтроки
ВвестиЧисло ПоказатьВводЧисла
УстановитьВнешнююКомпоненту НачатьУстановкуВнешнейКомпоненты
УстановитьРасширениеРаботыСФайлами НачатьУстановкуРасширенияРаботыСФайлами
УстановитьРасширениеРаботыСКриптографией НачатьУстановкуРасширенияРаботыСКриптографией
ПоместитьФайл НачатьПомещениеФайла
ОткрытьФормуМодально ОткрытьФорму
СписокЗначений.ОтметитьЭлементы СписокЗначений.ПоказатьОтметкуЭлементов
СписокЗначений.ВыбратьЭлемент СписокЗначений.ПоказатьВыборЭлемента
УправляемаяФорма.ВыбратьИзМеню УправляемаяФорма.ПоказатьВыборИзМеню
УправляемаяФорма.ВыбратьИзСписка УправляемаяФорма.ПоказатьВыборИзСписка
УправляемаяФорма.ОткрытьМодально УправляемаяФорма.Открыть
ДиалогРасписанияРегламентногоЗадания.ОткрытьМодально ДиалогРасписанияРегламентногоЗадания.Показать
КонструкторФорматнойСтроки.ОткрытьМодально КонструкторФорматнойСтроки.Показать
ДиалогРедактированияСтандартногоПериода.Редактировать ДиалогРедактированияСтандартногоПериода.Показать
ДиалогВыбораШрифта.Выбрать ДиалогВыбораШрифта.Показать
ДиалогВыбораЦвета.Выбрать ДиалогВыбораЦвета.Показать
ОбработкаРасшифровкиКомпоновкиДанных.ВыбратьДействие ОбработкаРасшифровкиКомпоновкиДанных.ПоказатьВыборДействия

(8.3.12+) ОбластьПостроенияДиаграммы. Использование устаревшего свойства объекта

Совместимость 8.3.12+
Диагностика: Использование устаревшего свойства объекта ОбластьПостроенияДиаграммы: "%1" (актуальное - "%2").

Устаревший метод Актуальный метод
ОтображатьШкалу ОтображатьШкалы
ЛинииШкалы ЛинииШкал
ЦветШкалы ЦветШкал
ОтображатьПодписиШкалыСерии ШкалаСерий.ПоложениеПодписейШкалы = ПоложениеПодписейШкалыДиаграммы.Снаружи
ОтображатьПодписиШкалыТочек ШкалаТочек.ПоложениеПодписейШкалы = ПоложениеПодписейШкалыДиаграммы.Снаружи
ОтображатьПодписиШкалыЗначений ШкалаТочек.ПоложениеПодписейШкалы = ПоложениеПодписейШкалыДиаграммы.Снаружи
ОтображатьЛинииЗначенийШкалы ШкалаЗначений.ОтображениеЛинийСетки = ОтображениеЛинийСеткиДиаграммы.Отображать
ФорматШкалыЗначений ШкалаЗначений.ФорматПодписей
ОриентацияМеток ОриентацияПодписейДиаграммы.Горизонтально

(8.3.12+) Диаграмма. Использование устаревшего свойства объекта

Совместимость 8.3.12+
Диагностика: Использование устаревшего свойства объекта Диаграмма: "%1" (актуальное - "%2").

Устаревший метод Актуальный метод
ПалитраЦветов ОписаниеПалитрыЦветов.ПалитраЦветов
ЦветНачалаГрадиентнойПалитры ОписаниеПалитрыЦветов.ЦветНачалаГрадиентнойПалитры
ЦветКонцаГрадиентнойПалитры ОписаниеПалитрыЦветов.ЦветКонцаГрадиентнойПалитры
МаксимальноеКоличествоЦветовГрадиентнойПалитры ОписаниеПалитрыЦветов.МаксимальноеКоличествоЦветовГрадиентнойПалитры
ПолучитьПалитру ОписаниеПалитрыЦветов.ПолучитьПалитру
УстановитьПалитру ОписаниеПалитрыЦветов.УстановитьПалитру
ОтображатьЛегенду Задайте отображаемую область с помощью одного из свойств ОбластьЛегендыДиаграммы, ОбластьЛегендыДиаграммыГанта или ОбластьЛегендыСводнойДиаграммы
ОтображатьЗаголовок Задайте отображаемую область с помощью одного из свойств ОбластьЗаголовкаДиаграммы, ОбластьЗаголовкаДиаграммыГанта или ОбластьЗаголовкаСводнойДиаграммы

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.