如何使Resharper在完成camelcase代码时尊重大写字母?

时间:2012-03-22 22:17:34

标签: resharper code-completion camelcasing

在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-&gt;选项 - &gt;编辑器下检查了CamelHumps。我也将热键设置为Resharper默认值,而不是VS.

我知道过去这种行为存在于IntelliJ中,但自从ReSharper开始以来,这个问题一直让我感到恼火。

我还需要在选项中选择/设置其他内容吗?这在ReSharper中甚至可能吗?

我尝试寻找其他类似的问题,但我只看到关于所有小写完成或骆驼案例选择的评论/问题。

编辑:请注意,两个logOutput方法都存在于完成选项列表中,但是当我按Enter键时,它不会选择它们作为要插入的完成。我必须输入其他字符以强制它选择其中一个。所以问题是,以前在IntelliJ lO中足以使它选择logOutput作为要插入的因为大写O;在ReSharper中是可能的,如果是这样的话?

2 个答案:

答案 0 :(得分:1)

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

例如,如果您将logOutput的名称更改为storeOutput,然后键入sO,则会显示您所期望的提示(证明CamelCase匹配正在运行)

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

您可以随时点击Alt+Space后面的向下箭头,显示logOutput(...)的提示。那样可以得到你想要的结果,而且只是一个额外的按键。

答案 1 :(得分:0)

在这里等待了几天以获得更多回复之后,我继续在JetBrains上的ReSharper论坛上发布了这个问题以及这里的链接。简短的回答是,它在ReSharper 5.1及以上版本中是不可能的。

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