开发者

Resharper (or Visual Studio) auto completion

I'm using VS 2010 with resharper. If I have a class called ConfigParserTests and then write

new ConfigParser(

the code will auto complete to

new ConfigParserTests()

which is not what I want. Any idea how to disable this nasty feature.

[Edit]

What is want is to write out

new ConfigParser()

without pressing "Esc". In this case I am using TDD so 开发者_运维技巧ConfigParser does not exist.

[/Edit]

I have been looking around in both the resharper and VS intellisense menus without finding anything helpful.


Open Options window, navigate to Intellisense > Autopopup. You will see auto-complete options correspond to several cases and categorized according to language:

Resharper (or Visual Studio) auto completion


As you see, you can select for each single case:

  • Do not display.

  • Display but do not preselect. (seems proper for your case)

  • Display and preselect. (default)


Different options may be selected in different cases or languages. For example, you can specify different behaviours in C#:

  • After dot

  • After 'new'

  • In doc comments

  • Letter and digits

  • Where value is expected

HTH


It's not clear whether you're complaining about which class name it's filling in, or the parentheses. I'll address both.

If the class you're trying to use is in another namespace, and you haven't added the appropriate using yet, then the code completion is doing just what you would expect -- you told it which namespaces to use, and you didn't tell it to use the one with ConfigParser in it; so it uses the nearest match, as expected.

But ReSharper has shortcuts that can save you work by finding the class and adding the using for you. For this case, I would suggest that you look into the different Ctrl+Space options in ReSharper. You could write new cp <Ctrl+Alt+Space> and ReSharper will give you a pop-up menu asking whether you mean ConfigParser or ConfigParserTests. When you hit Enter to select the one you want, it will add the necessary using to the top of your file, and complete new ConfigParser() with the cursor between the parentheses.

(If the ConfigParser class doesn't exist yet, then that's one of the cases where you don't want code completion. Just type new ConfigParser and then hit Esc before typing your open paren.)

If your problem is that it adds a close paren, be aware that if you type ) ReSharper will not add a second close parenthesis -- it will recognize that you're typing a paren that it already added, so it will just move the cursor to the right. If for some reason you still don't want it to complete the open paren for you, @jdv-Jan de Vaan's answer explains where to change this preference.


When doing TDD you should put the VS intellisense into suggestion mode instead of the normal completion mode.

The difference is described here

Unfortunately Resharper takes over the intellisense so you can not change mode without deactivating resharper.


Select Resharper \ Options. From the list on the left, select Enirionment \ Intellisence \ Completion behavior.

Then disable the checkboxes under "Automatically complete single item with:"


If you are using resharper 6.0 I would upgrade to 6.1 as there were a lot of these sort of preselecting bugs introduced in 6.0 and fixed in 6.1.


CTRL+ALT+Space Bar

Gotta give props to Zain for showing us how to get around these issues when utilizing TDD

http://blogs.msdn.com/b/zainnab/archive/2010/01/22/intellisense-suggestion-mode-vstipedit0012.aspx


Select Resharper \ Options \ Environment\ Intellisence \ Completion Behavior Then Change the options under “Automatically insert parentheses after completion: can disable all together Really Old Man Voice I want to type my own (), Opening Only, or Young Hip Coder Dude I like resharper to do it all for me man

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜