Форматирование текста

Обсуждение возникших проблем, предложений и ошибок dbForge for SQL Server
Закрыто
deas
Сообщения: 161
Зарегистрирован: Чт 21 ноя 2013 10:54

Форматирование текста

Сообщение deas » Чт 28 ноя 2013 11:17

Здравствуйте.

Не нашел в настройках, есть ли возможность не применять форматирование для запросов написанных в одну строку.

Не удобно видеть:

Код: Выделить всё

IF EXISTS (SELECT *
           FROM
             sys.objects
           WHERE
             object_id = object_id(N'dbo.procedure1')
             AND type IN (N'P', N'PC'))
  DROP PROCEDURE dbo.procedure1;
Лучше когда:

Код: Выделить всё

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = object_id(N'dbo.procedure1') AND type IN (N'P', N'PC')) 
  DROP PROCEDURE dbo.procedure1;
Или такие, тоже не удобно:

Код: Выделить всё

IF EXISTS (SELECT *
             FROM
               dbo.mytable)

Alexander

Re: Форматирование текста

Сообщение Alexander » Чт 28 ноя 2013 12:56

Вы можете выполнить следующее:

1. Выберите 'Сервис -> Параметры' из основного меню.
2. В открывшемся окне 'Параметры' откройте раздел 'Текстовый редактор -> Форматирование -> Общие'.
3. Отключите опции 'Автоматически форматировать при вставке' и 'Автоматически форматировать при вводе разделителя'.
4. Нажмите 'OK'.

Возможность полностью отключить автоматическое форматирование при наборе текста появится в следующей версии продукта.

deas
Сообщения: 161
Зарегистрирован: Чт 21 ноя 2013 10:54

Re: Форматирование текста

Сообщение deas » Чт 28 ноя 2013 13:29

Я имел в виду отключение форматирования только для запросов в одну строку и в любой момент, а не только при вводе. В Visual Studio есть подобная функциональность и очень удобно.

Мне очень нравится кнопка отформатировать весь документ и большая часть давно написанного кода становится более читаемой, за исключением описанных моментов.

Было бы здорово иметь галочку типа, не разбивать на строки для запросов менее правой границы.

Alexander

Re: Форматирование текста

Сообщение Alexander » Чт 28 ноя 2013 15:04

Вы можете выполнить следующее:

1. Выберите 'Сервис -> Параметры' из основного меню.
2. В открывшемся окне 'Параметры' откройте раздел 'Текстовый редактор -> Форматирование -> Общие'.
3. Задайте значение в поле 'Правая граница' (по умолчанию - 80).
4. Перейдите в раздел 'Текстовый редактор -> Форматирование -> Перенос строк'.
5. Выберите опцию 'Переносить текст, когда он превышает размер границы справа'.
6. Нажмите 'OK'.

deas
Сообщения: 161
Зарегистрирован: Чт 21 ноя 2013 10:54

Re: Форматирование текста

Сообщение deas » Пт 29 ноя 2013 08:47

Я это пробовал, это другое. Он переносит текст который по другим правилам должен остаться в одной строке, а я имею в виду галочку которая бы игнорировала все остальные правила, если запрос поместился с одну строку.
Я не хочу отключать никакие существующие правила для всех запросов.

Что бы запросы типа:

Код: Выделить всё

IF EXISTS (SELECT * FROM client WHERE clid = @clid AND unload = 1)
Не превращались в:

Код: Выделить всё

IF EXISTS (SELECT *
            FROM
              client
            WHERE
              clid = @clid
              AND unload = 1)
Слишком в таком случае увеличивается скроллинг одной процедуры, а остальные запросы, хорошо что превращаются. Я думаю такая функция очень полезна.

Alexander

Re: Форматирование текста

Сообщение Alexander » Пт 29 ноя 2013 10:28

В Visual Studio есть подобная функциональность и очень удобно.
Не могли бы Вы сообщить, как называется данная опция в Visual Studio?

Также, хотим сообщить Вам, что в новой версии dbForge Studio for SQL Server функциональность 'Форматирование' будет полностью переделана и будет иметь вид аналогичной функциональности другого нашего продукта dbForge SQL Complete http://www.devart.com/dbforge/sql/sqlco ... nload.html, а также нашего онлайн сервиса http://www.sql-format.com/

Также, мы могли бы реализовать опцию вида 'Leave subquery on single line', которая будет оставлять подзапрос на той же строке, что и основной запрос, если же конечно данный подзапрос не был перенесён пользователем на следующую строку.

deas
Сообщения: 161
Зарегистрирован: Чт 21 ноя 2013 10:54

Re: Форматирование текста

Сообщение deas » Пт 29 ноя 2013 10:52

Приложил скрин с настройками VS, в данном случае VS2008.
Вложения
Снимок.PNG
Снимок.PNG (29.15 КБ) 15871 просмотр

helgi
Devart Team
Сообщения: 10
Зарегистрирован: Вт 21 окт 2008 08:48
Откуда: Devart
Контактная информация:

Re: Форматирование текста

Сообщение helgi » Пт 29 ноя 2013 12:08

Ваша просьба касается только подзапросов или вообще любых SQL выражений? Устроит ли Вас вариант типа "Оставлять короткие подзапросы на одной строке", которая будет запрещать форматтеру вставлять переносы строк в подзапросы, которые изначально расположены на одной строке и не вылазят за указанную правую границу?

deas
Сообщения: 161
Зарегистрирован: Чт 21 ноя 2013 10:54

Re: Форматирование текста

Сообщение deas » Пт 29 ноя 2013 13:17

Да, я писал только про подзапросы и желательно обрамляющие их скобки тоже.

И если возможно такая же логика и в следующем случае:

Код: Выделить всё

SELECT
  *
  FROM Table1
  WHERE
    tID IN (SELECT tID FROM Table2 WHERE flag = 1)
Это пример, но суть я думаю понятна.

Alexander

Re: Форматирование текста

Сообщение Alexander » Пт 29 ноя 2013 14:04

Спасибо за ответ.

Мы добавили данное предложение в план разработки будущих версий продукта.

deas
Сообщения: 161
Зарегистрирован: Чт 21 ноя 2013 10:54

Re: Форматирование текста

Сообщение deas » Пн 02 дек 2013 09:42

И еще одно замечание к форматированию. Если конечно актуально будет в связи с переходом на другой движок.

При создании процедуры форматирую полностью текс и получаю:

Код: Выделить всё

CREATE PROCEDURE test
AS
BEGIN
  SELECT *
  FROM
    sys.objects o
END
Потом ставлю ; и получается так:

Код: Выделить всё

CREATE PROCEDURE test
AS
BEGIN
  SELECT *
FROM
  sys.objects o;
END
Что не очень удобно.

Alexander

Re: Форматирование текста

Сообщение Alexander » Пн 02 дек 2013 14:47

Мы исправим данную проблему в новой версии продукта.

deas
Сообщения: 161
Зарегистрирован: Чт 21 ноя 2013 10:54

Re: Форматирование текста

Сообщение deas » Вт 03 дек 2013 10:00

И еще одно замечание.
После нажатия "Ctrl+K,D", а затем сохранения (Ctrl+S) то курсор переходит на первую строку процедуры. Причем не важно менял ли что то еще или нет.
Если честно, то очень сильно мешает процессу.

И в дополнение в VS есть такая комбинация как Ctrl+'-', которая показывает прошлое место где был курсор, очень удобная функциональность при разработке.

Alexander

Re: Форматирование текста

Сообщение Alexander » Ср 04 дек 2013 15:04

После нажатия "Ctrl+K,D", а затем сохранения (Ctrl+S) то курсор переходит на первую строку процедуры. Причем не важно менял ли что то еще или нет.
Мы исправим данную проблему в одной из следующих сборок.
в VS есть такая комбинация как Ctrl+'-', которая показывает прошлое место где был курсор, очень удобная функциональность при разработке.
Мы рассмотрим данное предложение при разработке будущих версий продукта.

Alexander

Re: Форматирование текста

Сообщение Alexander » Пт 27 дек 2013 16:54

При создании процедуры форматирую полностью текс и получаю:

Код: Выделить всё

    CREATE PROCEDURE test
    AS
    BEGIN
      SELECT *
      FROM
        sys.objects o
    END
Потом ставлю ; и получается так:

Код: Выделить всё

    CREATE PROCEDURE test
    AS
    BEGIN
      SELECT *
    FROM
      sys.objects o;
    END
Что не очень удобно.
Сообщаем Вам, что вышла новая сборка dbForge SQL Complete, v4.5.167 Beta, в которой данная проблема устранена http://www.devart.com/dbforge/sql/sqlco ... nload.html

Благодарим Вас за Вашу помощь в усовершенствовании dbForge SQL Complete.

Закрыто