如何在长行的返回关键字后阻止 Resharper 换行?
Posted
技术标签:
【中文标题】如何在长行的返回关键字后阻止 Resharper 换行?【英文标题】:How to stop Resharper from line breaking after return keyword for long lines? 【发布时间】:2013-12-28 20:57:05 【问题描述】:当我使用 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()
);
【问题讨论】:
您是否已将此错误报告给 JetBrains? 我很高兴这绝对是一个错误,而不仅仅是我的设置不正确......? 这绝对是一个错误。 已经报告了类似的问题,尽管没有一个得到修复 - 请参阅 youtrack.jetbrains.com/issue/RSRP-274953 【参考方案1】:Resharper -> Options -> (Code Editing) C# -> Formatting Style -> Line Breaks and Wrapping
换行有很多设置。 Wrap long lines
的默认值通常是 120
字符。这可能会触发您的休息,因为您设置为80
或 Resharper 8.0 可能有更新的退货选项。上面的路径是针对 7.0 的,但我相信它与 8.0 相同或至少相似。
很好的是,它们向您展示了您所做更改的示例,因此您不必立即对其进行测试。
【讨论】:
我正在寻找一个选项来阻止 R# 将“return”关键字单独放在一行中(如我上面的示例所示)。我在您所指的部分中找不到该选项。 这只会降低问题出现的可能性。它不能解决它。我将 ReSharper 设置为在 120 个字符后中断,但很长的行仍然会在尴尬的地方中断。 另外,我在 150 个字符处换行(非常适合我的 1920x1200 屏幕和大字体),但当然我仍然偶尔会换行,我发现自己手动引入中间变量只是为了避免换行R# 中的“gunk”,这太可怕了,我讨厌自己这样做...... 是的,我并不是说可以做到。只是指向换行的选项。您可能需要申请 JetBrains 未来版本的选项。【参考方案2】:没有特殊选项可以关闭“返回后包装”。
1) 我无法重现第一个代码 sn-p 中所示的类似代码格式。但是,我建议您尝试将此设置更改为“简单包装”:
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"
。
【讨论】:
我已将它们全部更改为“Simple Wrap”,这并没有修复返回后的中断... 然后我也将它们全部改回“如果长则切”,这也无济于事(返回本身仍然在线)。 然后,当我转到“始终切”时,我得到了正确的行为(即它不会将返回单独放在一行上)! #WINNING,但是我的所有代码看起来都很糟糕,因为它是 always 切碎的,这使得应该是一个小的链式方法调用或对象/集合初始化程序(即应该放在一行上)占用 3-4不必要的行... 我真正想要的是a)“如果长则切”+ c)“但不要将'return'单独放在一条线上”......这对我来说似乎是一个缺陷,因为它在“总是切碎”上做正确的事情,但在“如果长时间切碎”上做错事...... 在上面添加了更新,显示了“始终切”和“如果长切”之间的行为差异...以上是关于如何在长行的返回关键字后阻止 Resharper 换行?的主要内容,如果未能解决你的问题,请参考以下文章
一个可能的 Resharper 错误还是我只是错过了一些微妙的东西?