Как заставить Resharper уважать прописные буквы при завершении кода верблюда? - PullRequest
0 голосов
/ 23 марта 2012

В ReSharper 5.1, работающем на VS 2008, я пытаюсь дополнить имя метода с помощью 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, и оно должно работать.У меня есть CamelHumps, проверенные в Resharper-> Options-> Editor.У меня также есть горячие клавиши, установленные по умолчанию для Resharper, а не VS.

Я знаю, что такое поведение существовало в IntelliJ в прошлом, но эта проблема раздражала меня с тех пор, как я начал с ReSharper.

Есть ли что-то еще, что мне нужно выбрать / установить в настройках?Возможно ли это даже в ReSharper?

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

Изменить: Обратите внимание, что оба метода logOutput присутствуют в списке параметров для завершения, но он не выбирает их в качестве завершения для вставки, когда я нажимаю Enter.Мне пришлось бы вводить дополнительные символы, чтобы заставить его выбрать один из них.Таким образом, проблема в том, что ранее в IntelliJ lO было достаточно, чтобы он выбрал logOutput в качестве вставляемого из-за заглавной буквы O;возможно ли это в ReSharper, и если да, то как?

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Я думаю, что причина, по которой вы не получаете ожидаемый результат, связана с именем переменной logLines.Поскольку первые 2 буквы этой переменной lo, она имеет приоритет над любым соответствием CamelCase.Поэтому я думаю, что в системе сопоставления Resharpers должна быть какая-то логика, которая предпочитает последовательные символы по сравнению с совпадениями CamelCase.

Например, если вы измените имя logOutput на что-то вроде storeOutput, а затем наберете sO он покажет вам ожидаемый запрос (доказательство того, что сопоставление CamelCase работает).

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

Вы всегда можете просто нажать стрелку вниз после Alt+Space, чтобы вызвать подсказки для logOutput(...).Это даст вам желаемый результат, и это всего лишь одно дополнительное нажатие клавиши.

0 голосов
/ 28 марта 2012

После нескольких дней ожидания дополнительных ответов я отправил вопрос на форумах ReSharper в JetBrains вместе со ссылкой сюда.Короткий ответ: это невозможно в ReSharper 5.1 и выше.

Полный текст ответа см. http://devnet.jetbrains.net/message/5455545

...