CodeInspector. Проверка при помощи bsl ls выделенного фрагмента текста

Хотелось бы иметь возможность проверки выделенного фрагмента кода. Сейчас при нажатии горячей клавиши Ctrl+I проверяется весь модуль.

Комментарии

nytlenc
#1, 21 марта 2024 11:49

Проголосую. Было бы удобно проверять отдельный фрагменты. Например, написал новую функцию в общем модуле и надо проинспектировать только её, а не весь модуль целиком. Было бы удобно чтобы CodeInspector мог, в случае выделения текст инспектировать только выделенное, в ином же случае (если не выделено ничего) весь модуль целиком.


bolsun
#2, 21 марта 2024 11:52

(1) nytlenc, конкретно про проверку BSL - скрипт открыт, достаточно несложно доработать его так, что бы он проверял только выделенный фрагмент.


bolsun
#3, 21 марта 2024 11:54

Встроенные проверки CodeInspector - посмотрю насколько это возможно сделать.
Еще про BSL, нужно будет учесть то, что нужно будет добавить смещение для строк с предупреждениями, чтобы переход выполнился правильно.


nytlenc
#4, 21 марта 2024 11:58

(3) bolsun, может проще пройти от "обратного"?

  1. Инспектировать весь модуль
  2. Удалить все строки выше и ниже выделения из результата?


bolsun
#5, 21 марта 2024 12:00

(4) nytlenc, посчитать смещение несложно ведь? Просто кол-во символов переноса строки слева от позиции начала выделения.


nytlenc
#6, 21 марта 2024 12:04

(5) bolsun, а потом еще пройтись и в каждую результирующую строку это приплюсовать. В общем суть понятна, попробую скрипт дописать.


bolsun
#7, 21 марта 2024 12:05

(6) nytlenc, да. Плюс таким образом проверка будет значительно быстрее, если редактируется огромный модуль.


nytlenc
#8, 21 марта 2024 12:07

(7) bolsun, на счёт больших модулей тоже подумал. Твой метод будет быстрее и более правильным. Спасибо.


bolsun
#9, ред. 21 марта 2024 12:09

(6) nytlenc, проходиться даже не нужно отдельно. Уже есть обход, просто добавить смещение

Для каждого Диагностика Из Диагностики Цикл

	НомерСтроки = Диагностика.Получить("range").Получить("start").Получить("line") + 1;
	Описание = "" + НомерСтроки + " : " + Диагностика.Получить("message");

	ЭлементСписка = Новый Соответствие();
	ЭлементСписка.Вставить("Представление", Описание);
	ЭлементСписка.Вставить("НомерСтроки", НомерСтроки);

	Элементы.Добавить(ЭлементСписка);

КонецЦикла;


nytlenc
#10, 21 марта 2024 13:44

@mbolsun доработанный скрипт из TurboConf\settings\BslServer\ для инспектора который проверяет выделенные фрагмент. Если ничего не выделяли будет проверять весь модуль целиком
BslServerDefault.os
Думаю можно распространить на всех


amiralnar
#11, 22 марта 2024 08:45

(10) nytlenc, Подскажите, пожалуйста, как его установить?


nytlenc
#12, 22 марта 2024 09:49

(11) amiralnar, открыть в каталоге TurboConf
каталог settings\BslServer

и там точно такой же файл BslServerDefault.os
нужно его заменить на этот


bolsun
#13, 22 марта 2024 12:23

(10) nytlenc, предлагаю выводить всплывающее уведомление что выполняется проверка именно выделенного текста, т.к. может быть выделен текст где-то в модуле, но не в видимой области.


bolsun
#14, 22 марта 2024 12:24

Если ПроверкаВыделенного Тогда
	ТекстМодуля = ВыделенныйТекст;
	ТурбоКонф.ПоказатьВсплывающееУведомление("BSL LS", "Выполняется проверка выделенного фрагмента кода...", 4000);
КонецЕсли;


nytlenc
#15, 22 марта 2024 12:45

@mbolsun
хорошая идея, вот скрипт с сообщением:
BslServerDefault.os


bolsun
#16, 31 марта 2024 20:28

bolsun изменил статус на Закрыто


Александр Тарасюк
#17, 02 апреля 2024 11:07

(15) nytlenc, Огонь. Не знал, что куча функционала на OScript. Дочего дошел прогресс ). Но я так понимаю, что лучше рядом с типовым BslServerDefault.os положить BslServer.os


nytlenc
#18, ред. 02 апреля 2024 12:44

(17) Александр Тарасюк, все верно. Но это если сам дорабатывал скрипт где-то локально. Иначе при следующем обновлении стандартный скрипт затрется.
В случае же с этой задачей, я согласова с автором TC это изменение и он уже распространил это изменение на всех.
Тоесть все теперь могут выполнять проверку по BSL с выделением текста мышью.


Александр Тарасюк
#19, 02 апреля 2024 13:18

Отлично! Спасибо


Андрей Чернов
#20, 14 апреля 2024 12:56

Только начал пользоваться, инспектор заценил, удобно!
Вопрос - может есть ли какие-то скрипты которые базовые вещи исправляют?
Напримир, пробел перед комментарием после //, замена на канонические операторы, удаление двойных ;; и т.д.?


bolsun
#21, ред. 14 апреля 2024 16:06

(20) Андрей Чернов, нужно смотреть скрипт Форматтер кода BSL
https://turboconf.ru/Store/8287

Если BSL умеет, значит можно.


Андрей Чернов
#22, 15 апреля 2024 15:25

(21) bolsun, поставил, не умеет.
Если конкретно рассматривать случаи - пробел после //, пробел после запятой, замена на канонические операторы - наверное это можно регуляркой через os скрипт сделать?


bolsun
#23, 15 апреля 2024 15:31

(22) Андрей Чернов, // можно регуляркой. Все остальное уже сложнее, т.к. будет заменять там где нужно и не нужно (в строковых литералах например).
Для серьезного форматирования нужно использовать какой-нибудь парсер.
В ядре TurboConf есть конечно разные методы для работы с модулем, но они не вынесены пока в API.


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера