Как остановить Resharper от разрыва строки после ключевого слова return для длинных строк?

Когда я автоматически форматирую с помощью Resharper CTRL + ALT + SHIFT + F для строк длиннее максимальной длины строки (в моем случае это 80 символов), я получаю следующее:

    return
        View(new ViewModel
        {
            Identifier = identifier,
            Files = service.AllFiles()
        });

Но что я действительно хочу, так это не обертывать после ключевого слова "return" (т.е. не иметь ключевого слова return в отдельной строке), например так:

    return View(new ViewModel
    {
        Identifier = identifier,
        Files = service.AllFiles()
    });

Кто-нибудь знает, как «настроить» Resharper, чтобы это произошло? :)

Вот еще пример, вот что я сейчас вижу:

    return
        repository.Session.CreateCriteria(typeof(SomeType))
                  .Add(Expression.Eq("Identifier", identifier))
                  .UniqueResult<SomeType>();

Когда я очень хочу увидеть:

    return repository.Session.CreateCriteria(typeof(SomeType))
                     .Add(Expression.Eq("Identifier", identifier))
                     .UniqueResult<SomeType>();

ОБНОВЛЕНИЕ:

Вот "руби всегда":

    return View(new OrganisationFileLoadViewModel
    {
        Identifier = identifier,
        AllExistingOrganisationFiles = nmdsOrganisationFileLoadService.AllNMDSOrganisationFiles()
    });

Вот "рубить, если длинно":

    return
        View(new OrganisationFileLoadViewModel
        {
            Identifier = identifier,
            AllExistingOrganisationFiles = nmdsOrganisationFileLoadService.AllNMDSOrganisationFiles()
        });

person Tod Thomson    schedule 11.12.2013    source источник
comment
Вы сообщили об этой ошибке в JetBrains?   -  person Lessneek    schedule 29.10.2014
comment
Буду рад, если это точно ошибка, а не просто неправильная настройка...?   -  person Tod Thomson    schedule 30.10.2014
comment
Это определенно ошибка.   -  person Lessneek    schedule 31.10.2014
comment
О подобных проблемах уже сообщалось, хотя ни одна из них не была исправлена ​​— см. youtrack.jetbrains.com/issue. /РСРП-274953   -  person Dresel    schedule 12.01.2015


Ответы (2)


Resharper -> Options -> (Code Editing) C# -> Formatting Style -> Line Breaks and Wrapping

Есть много настроек для переноса строк. По умолчанию для Wrap long lines обычно используется 120 символа. Это может вызвать ваш перерыв, так как вы установили 80 или Resharper 8.0 может иметь более новый вариант возврата. Путь выше предназначен для 7.0, но я считаю, что он такой же или, по крайней мере, похож на 8.0.

Приятно то, что они показывают вам примеры внесенных вами изменений, поэтому вам не нужно сразу их тестировать.

person TyCobb    schedule 11.12.2013
comment
Я ищу возможность запретить R# помещать ключевое слово return в строку отдельно (как показано в моем примере выше). Я не могу найти эту опцию в разделе, на который вы ссылаетесь. - person Tod Thomson; 11.12.2013
comment
Это просто уменьшит вероятность появления проблемы. Это не исправить. Я настроил ReSharper на разрыв после 120 символов, но очень длинные строки все равно прерываются в неудобных местах. - person siride; 11.12.2013
comment
Кроме того, я оборачиваю на 150 символов (хорошо подходит для моего экрана 1920x1200 с большим шрифтом), но, конечно, я все еще время от времени получаю обтекание, и мне приходится вручную вводить промежуточные переменные, чтобы избежать оборачивающей грязи в R #, которая просто ужасно, и я ненавижу себя за это... - person Tod Thomson; 11.12.2013
comment
Да, я не обязательно говорил, что это может быть сделано. Просто указал, где были варианты переноса строк. Вы можете запросить опцию для будущего выпуска с JetBrains. - person TyCobb; 11.12.2013

Специальной опции для отключения «упаковки после возврата» нет.

1) Мне не удалось воспроизвести форматирование кода, подобное показанному в первом фрагменте кода. Однако я рекомендую вам попробовать изменить этот параметр на «Простой перенос»: ReSharper | Options | Code Editing | C# | Formatting Style | Line Breaks and Wrapping | Line Wrapping | Wrap invocation arguments.

2) В моем случае мне помогает следующее изменение: ReSharper | Options | Code Editing | C# | Formatting Style | Line Breaks and Wrapping | Line Wrapping | Wrap chained method calls | Select "Chop always".

person Alexander Kurakin    schedule 11.12.2013
comment
Я поменял их все на Simple Wrap, что не исправило обрыв после возврата... - person Tod Thomson; 13.12.2013
comment
Затем я также изменил их все обратно, чтобы отбить, если долго, это тоже не помогает (возврат все еще находится на отдельной строке). - person Tod Thomson; 13.12.2013
comment
Затем, когда я перехожу к отбивке, я всегда получаю правильное поведение (т. Е. Он не ставит возврат в строку сам по себе)! #ПОБЕДА, но тогда весь мой код выглядит ужасно, поскольку он всегда обрывается, из-за чего то, что должно быть небольшим цепным вызовом метода или инициализатором объекта/коллекции (т.е. должно помещаться в одну строку), занимает 3-4 линии без надобности... - person Tod Thomson; 13.12.2013
comment
То, что я действительно хочу, это а) отрезать, если длинно + в), но не помещать «возврат» в строку сам по себе... Мне это кажется дефектом, так как он всегда делает правильную вещь при отбивной, но неправильную вещь на отбивную, если долго... - person Tod Thomson; 13.12.2013
comment
Добавлено ОБНОВЛЕНИЕ выше, которое показывает разницу в поведении между всегда и постоянно прерыванием... - person Tod Thomson; 13.12.2013