Getting caret position in visual studio's editor - visual-studio

I am currently developing a Visual Studio extension, that needs to open a WPF form after firing a menuCommand.
I want to open the form relativly to the caret position, so I need to get the Caret's pixel position.
I've checked This article
but it didn't work.
Help please?

Once you've got a IWpfTextView, you can do view.TextViewLines.GetCaretBounds(view.Caret.Position.BufferPosition) which will give you the position in the "text coordinate system". Adjusting by view.ViewportTop/view.ViewportLeft should give you the position relative to the UIElement that is the view. From there, view.VisualElement.PointToScreen will probably get it to screen coordinates.
I assume you're already figured out that you don't want to embed this UI into the editor directly? Because that's (mildly) easier.

Related

Is there any extension to edit Visual Studio (2017/2019) theme colors easily

So, I was wondering if someone knows a program (VS extension) that you can for example, click on a button (aka option), than you select what element (in your code) you want to edit, pick a new color and save it...?
eg. you click on void, it says something like, selected Data Types, and a window to edit color. Or you click on a scroll bar, it says something like, selected scroll bar, and so one..
I was looking for it, but all I can find is basically like "Color picker", "Color theme editor for Visual Studio"...
Even if it's not extension, maybe program or web site...
Thanks in advance.
OK... So there is some way to make it easier, but it's still quite boring / hard / annoying task to do. (Works only with Visual Studio 2019)
Download Visual Studio Color Theme Designer.
You'll need some sort of capturing technique (eg. Snipping Tool - comes with Windows 10).
Launch your VS2019 and capture element/color you want to edit.
Extract the hex value of that color (eg. Paint 3D - comes with Windows 10).
Follow the instructions on VSCTD website (Marketplace) on creating theme and when you're done with opening solution, in "All elements" page, paste the value you got, and to make it easier to search, select "Sort by: Color".
Edit the color you think corresponds to desired element and check if that's the color that you were looking for.
Repeat until you're done.
This method is similar to using Color Theme Editor for Visual Studio 2019, but it gives you option to create automatically some theme and then you edit small parts of it (removes the trouble of editing huge amounts of colors)
You can edit color themes for types of keywords for a language in Visual Studio. For example, I've set mine so that interfaces are a light purple instead of the normal blue.
As far as I know, you can't set the colors for a specific object (like have variable 1 in orange, and variable 2 in gray), but you can set the font colors for code types (so structs are orange, and classes are gray).
You can read more about this here.

slow down scrolling adjustment when selecting a long line

I have a long line that I want to select a section in the middle. In Visual Studio, it would scroll all the way to the end of the line, passing where I want the selection to end, when I move pass the text area and move all the way back when I try to move back a little. Is there a way to slow down the Visual Studio scrolling adjustment?
If you are talking about selecting text using the mouse you can get fine grained control by combining the the mouse and keyboard. This should work in any application that allows text selection, not just Visual Studio.
First click the location where you want to begin selecting text.
Next scroll to the location where you want to end selecting text and hold down Shift on the keyboard while clicking with the mouse. The block of text between the first click and the shift+click will be selected without having to worry about the selection jumping around due to scrolling.
As for actually slowing down the scrolling; I know of no way to do that. Hopefully my tip should give you an alternate way to do what you actually want.

VS2012 Text Editor Width

Is it possible to change the width of the text editor in VS2012 - I've got a fairly wide screen and use fairly small text so I end up with a lot wasted real-estate in the middle of my screen.
I don't want to turn off word wrap - I just want the wrap to start further right on the line. If that makes sense!?
You can set this with HTML in Visual Studio 2012 but there is no global setting and it's missing in quite a few languages.
You can just put another "dummy" window next to the one you are writing in, so the actual editor window will be smaller. You can put it on the left if you want to pan the text to the right, and to the right if you want to shorten the lines.
I actually found the answer elsewhere; VS doesn't appear to provide this functionality but Resharper does. Resharper -> Options -> Code Editing -> C# -> Formatting Style -> Line Breaks and Wrapping -> Right margin (columns)
I put mine to 200 which fixed the issue
I know that this is not what you are looking for, but I believe it solves the same problem. I too have a fairly large screen and try to make use of it as optimally as possible.
I hate tabbing between code or design tabs and try to avoid that as much as possible.
VS has a feature that permits the user to create Horizontal or Vertical Tab groups and ever since I have started using it, I have found it very helpful. These options are present in the context menu by right clicking the tab or in the VS Window Menu (Menus are seen only if the tab groups feature is not active).
I have created a screenshot with Vertical Tab Groups created as shown below. In this example, I have a overview of both the designer and the code view at the same time.
We can use tab groups whenever there is a dependency such as comparing code, redesigning a module, etc. I know it takes a little time to get used to this feature but try it out and see :)

Is it possible to hook the copy and paste of Windows Phone Designer and change its behavior?

I like the windows phone 7 designer but the copy and paste of textbox is irritating. It just keep paste the textbox at the very top. It would be much more productive that it paste below the previous textbox.
So would it be possible to change this behavior by hooking this with some IDE API ?
If you are using the visual designer, rather than using copy and paste, you can drag a new control from the toolbox and drop it precisely where on the form you want it.
The IDE isn't arbitrarily dropping the control at the top of the screen, it places it at 0,0. You could argue that this is as good a place to put it as any. In a true copy and paste, the physical location should be exactly the same but that would be confusing.
I would expect it to be quite uncommon to place one textbox directly under another without a textblock or somethign else in between. In any case it would be necessary to change the position from where it was copied. At least with the current behaviour you'll always know where the new control is.
Not sure about hooking into the IDE, but you might find it easier to just use Blend for the UI aspects. For example, if you have a vertical stackpanel, you can copy and paste and have each control appear below each other in the correct position.

VS2010 - Can i extend the 2010 text editor window with Graphics?

I am developing an extension to add graphics around code (text).
I've searched around and came up with only one other post refering to IWpfTextView (and related) interfaces.
What i want is to "markup" the code with (ex) arrows, boxes and lines. I've read through the mdsn and it seems scrolling up and down does a complete redraw and the Top coordinate changes.
There's also http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.text.editor.aspx
But no complete text on the matter.
Are there any examples on the subject? Is this a supported scenario?
Yes, this is supported.
In the SDK, there is a project template for "Text Relative Adornment", which shows the general idea. That template places an adornment underneath text, like a highlight, but you can place text-relative adornments anywhere on the view ("text-relative" just means that the adornment scrolls with the text).
For examples, you can start with this AgentBadgeVisualManager.cs file, which is for displaying a user "badge" off to the right of a piece of text.
I recently wrote a blog article about text relative adornments, though it's more of "best practices" and less of "here is the code you need to put an arrow on the editor".

Resources