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:
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
Related
Writing C# code in Visual Studio 2019. The constant popups as you type or position the mouse are very distracting. In Tools > Options > Text Editor > All Languages (or your language), you can disable all popups as you type by untciking Auto list members, but this is not what I need. Firstly I don't want to disable them completely and secondly this doesn't affect popups when you hover over a variable.
Ideally, I'd like popups more sparingly and only after a long-ish delay (say 1000ms). Currently they appear nearly instantly whenever I type any character or move the mouse over the code.
Can the delay be configured?
Update
According to a comment to this question, Visual Studio does not currently support a delay. But the experience for C# coding can be improved at Tools > Options > Text Editor > C# > Intellisense. Find the option Show completion list after a character is typed and untick it.
Actually, VS does not such feature to make a delay for code Intellisense.
Suggestion
So my suggestion is that you can disable the option Show completion list after a character is typed just as you said.
And then if you want to invoke Intellisense, you should type Ctrl + Space manually to invoke the Intellisense.
In this way, you can invoke the Intellisense anytime based on your needs.
Besides, if you still want this requirement, I suggest you could suggest your feature on our DC Forum.
Also, you can share the link here and anyone including us will vote it so that it will get more Microsoft's attention.
Update 1
I already suggested the feature for you and you can check the link.
You can vote on it and add any comments if I did not describe the issue in detail. Hope the Team will consider the idea carefully and give us a satisfactory reply.
Since the process would take a long time, so you have to use my workaround manually so far.
When I'm in peek preview, I sometimes wish to promote it to document. It's done by mousing on the icon as shown below.
On occasion (most of the occasion, in fact), my mouse is tired and wants me to use my keyboard for such promotion to document. According to the wisdom on the net, it's achieved by CtrlAltHome.
In my VS, there's nothing assigned to the key combination, so I'm guessing someone snack in and changed that without my permission. However, to restore it, I need to know what the command in Tools | Options | Environment |Keyboard is called.
I can't find anything appropriate there (I've tried different variations of the MS's description of the command: "Promote the Peek Definition window to a regular document tab").
So, what is it called? If it differs between versions, I'd like to know the name for each, where the peeking is avaialble (started in VS13, if I'm not mistaken).
Given the meaningful effort I've put into composing the image, every and each can clearly see that it's a crucial and important matter, given the circumstances.
In Visual Studio 2013 the command name is Window.KeepTabOpen.
I had the same issue but on reverse. I hate the Peek Definition and didn't know how to get rid of it. Well, I found it. In Visual Studio 2017 you need to go to Tools -> Options -> Productivity Power Tools -> General -> Control click options. There you need to check/uncheck the Control click shows definitions in Peek
Hope it helps!
PS. In order to see Productivity Power Tools you need to get it first using NuGet
A workaround for this (for Visual Studio 2015) is the following:
With focus on the peek window to open/dock:
Close peek window
Esc
Go to definition
F12
Pin tab
Alt+-, P
If there are multiple/nested peeks, then replace step 1 with:
Previous peek window
Ctrl+Alt+-
I reinstalled VS2010 (new PC), and also installed VS2012. Both have the same issue: pressing escape does not close Intellisense, nor the method list (when you type a method name and press bracket, that little popup that appears showing you all overloaded versions).
How do I reinstate this? I checked through my keyboard settings but didn't find anything for this.
The keyboard command for it is, oddly, Edit.SelectionCancel, particularly in the "Text Editor" context.
The command also doubles as a useless deselect. Quite puzzling, like many other things in VS. I'd call it "IntellisenseClose" (and provide documentation for the available commands).
I suspect it's a VS extension. Go into Tools/Extensions and disable them one by one.
Resetting my keyboard shortcuts fixed this:
Tools > Options
Environment > Keyboard
Click "Reset" and Yes
Fixed!
I am indebted to this answer (and comment) for an explanation:
I have a theory. You type very fast... possible your opened a wormhole into the options screen as a result of fast typing and blew away the settings by accident? Just a thought.
Do Eclipse have a plugin for type ahead autocompletion like Visual Studio, so I don't have to destroy my spacebar by pressing Ctrl+Space all the time? (If you don't know how it works in Visual Studio, please don't bother answering.)
And also, can I limit the autocomplete to imported packages, rather than every single Java class on earth? It's fustrating seeing suggestions from awt and swing etc., when I'm working with GWT. And I don't want to add every single Java class to the filter, that's just stupid. (Again, like how it's done in Visual Studio!)
Regarding your second part, yes you can
Open Eclipse
Select Window/Preferences from the menu
Expand Java/Appearance/Type Filters from the menu on the left
Click the "Add package" button, enter "java.awt" (without the quotes) and click OK
OK your way out
This will make Eclipse remove any matching classes from the java.awt package from your type ahead list. Very nice...
So "type-ahead" exists in Eclipse (mentioned in this status report in June 2006), but is synonym of auto-completion, most often triggered by CTRL+ Space... (which is not exactly what you are looking for)
To be more specific, the kind of automatic auto-completion (completion while you are typing, with a "Common" or "All" list of possible completions) you have in Visual Studio is not there in Eclipse (actually read below):
Original answer January 2010:
At least, not without a dedicating plugin.
And even with that plugin, it would have to follow a TemplateCompletionProcessor, meaning it would need a list of characters triggering said completion (again, not what you are looking for), by redefining method getCompletionProposalAutoActivationCharacters().
Update November 2011:
Cristi mentions in his answer (upvoted) a great workaround, which consists adding all the letters as Auto activation triggers for java.
See also "Automatically opening completion window in Eclipse".
From the thread "Eclipse auto-completion ":
Windows -> Preferences -> Java -> Editor -> Content Assist
Set delay to: 0 (actually >0 is better: 50, it avoids CPU picks because of constant listening)
Set triggers to:
.(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV WXYZ#
My answer may come too late, but maybe will help others searching this feature in eclipse.
This workaround works for me (eclipse helios):
Go to Windows -> Preferences -> Java -> Editor -> Content Assist.
Here, enable Auto activation and set Auto activation delay to a low value, let's say 50 ms.
Then comes the workaround: In Auto activation triggers for java, simply put all the characters: abcdefghijklmnopqrstuvwxyz.
And there you go, just type something.
Completion is triggered when pressing ".", if that is what you are referring to as "type-ahead autocompletion". This is what Visual Studio also does, unless you are referring to another Visual Studio feature I'm unaware of.
Limiting completion to only imported packages I think is a somewhat unorthodox thing to do; you are forced to rely on wildcard imports to define the set of types to complete on. I think most users would consider that less than useful. You're welcome to elaborate on your use case for this, though. For example, why would you want to exclude all Java classes from completion?
BTW, using "type filters" (as VonC suggests) doesn't require you to add every single class. I typically (globally) exclude java.awt.*, sun.com.*, org.omd.*, and a few others. Eclipse also sorts completion according to a (type-sensitive) heuristic which usually results in the most relevant types being displayed at the top. For example, auto-completion inside a method call will put the variables which matches the method type signature at the top.
I know that Claus spoke of Java in the second part of his question, but the general question is about any language in Eclipse (no Java tag here), so the following might be of use to python eclipse coders:
Go to Windows -> Preferences -> PyDev -> Editor -> Code Completion. Here, check the box next to "Request completion on all letter chars and '_'?".
(Purposefully similar to Cristi's answer.)
I'm not sure if what I'm asking for qualifies as a full-fledged add-in, but here goes...
I'd like to put an option in one of the menus (Edit, perhaps) that gives me the opportunity to clean my text-- namely, sometimes in the course of business my quotation marks around strings wind up "slanted" instead of straight up and down, a consequence of cutting and pasting from outside sources.
It would be great to have a "clean quotes" option in VS that does a search and replace in the current document and puts in the correct quotes. How might I go about doing this, and thanks for the advice.
The easiest way to do this is under the Tools menu. Click Tools->External Tools... You can specify any program you want using macros for the current directory/file etc. You will have to find/create the tool to do what you want, but it is pretty simple to add. You can also go to the Tools->Customize... dialog to add a toolbar button or key binding.
For your particular problem you could very simply write a little command line to to fixup your file for you or use use something like sed.
Are you saying you have different fonts in your code window? This doesn't happen to me. I can't make this happen to me. There is only one font for the code at a time.
Can you provide a concrete example?