0

在 VS 2008 上运行的 ReSharper 5.1 中,我尝试使用 CamelHumps 使用以下代码完成方法名称:

public bool debugMode { get; private set; }
public DebugWindow()
{
    InitializeComponent();
}

public void logOutput(List<String> logLines)
{
    foreach(string line in logLines)
    {
        <- cursor is here
    }
}

public void logOutput(String logLine)
{
    debugTextBox.Text += "\n" + logLine;
}

在上面提到的光标点上,我键入lO并按 Ctrl+Space。我希望它向我显示该logOutput(String)方法的提示,但它向我logLines显示了我希望在下拉框中显示的方法的提示。如果我改为键入lOu它会给我突出显示的正确提示(与 相同lou),但我认为我应该能够只键入lO并且它应该可以工作。我在 Resharper->Options->Editor 下检查了 CamelHumps。我还将热键设置为 Resharper 默认值,而不是 VS 热键。

我知道过去 IntelliJ 中存在这种行为,但自从使用 ReSharper 以来,这个问题就让我很恼火。

我还需要在选项中选择/设置其他东西吗?这在 ReSharper 中是否可行?

我尝试搜索其他类似的问题,但我只看到关于全小写完成或驼峰式选择的评论/问题。

编辑:请注意,这两种logOutput方法都存在于完成选项列表中,但是当我按 Enter 时,它没有选择它们作为要插入的完成。我将不得不输入额外的字符来强制它选择其中一个。所以问题是,以前在 IntelliJlO中足以将其选为logOutput要插入的,因为大写 O;这在 ReSharper 中是否可行,如果可以,怎么办?

4

2 回答 2

1

我认为您没有得到预期结果的原因是因为logLines变量的名称。因为该变量的前 2 个字母是lo,所以它优先于任何 CamelCase 匹配。所以我想在 Resharpers 匹配系统中一定有一些逻辑支持顺序字符而不是 CamelCase 匹配。

例如,如果您将名称更改为logOutput类似的名称,storeOutput然后键入sO,它将向您显示您期望的提示(证明 CamelCase 匹配有效)。

我从未使用过 IntelliJ,但我希望这可能是相同的逻辑,您只是没有注意到,因为您没有冲突的变量名。

Alt+Space您总是可以在弹出提示之后点击向下箭头logOutput(...)。这会给你你想要的结果,而且只是一个额外的按键。

于 2012-03-25T23:16:22.610 回答
0

在这里等待了几天的其他回复后,我继续在 JetBrains 的 ReSharper 论坛上发布了这个问题,并附上了这里的链接。简短的回答是在 ReSharper 5.1 及更高版本中是不可能的。

有关完整答案文本,请参阅:http ://devnet.jetbrains.net/message/5455545

于 2012-03-27T21:41:26.977 回答