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".
Related
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 :)
I've been using BBEdit for years, but I've just started using TextMate because I find it has better support for Ruby on Rails than BBEdit (please don't start a flame-war over this!).
One thing I really miss is that BBEdit can add 1/2 or 1/1 page of empty space below the document (without adding lines to the actual document). This means that I will never have to write code at the very bottom of the window/screen, but I can always scroll the page to get the current line at a comfortable hight on the screen, even if it is the last line in the document.
Now, this might seem minor, but after using TextMate for a few days, missing this feature is really starting to bug me.
On the off chance that there is a setting I missed, or that there is a plugin or something out there, I thought I'd throw the question out here. If you know of any way to replicate this behaviour in TextMate, please share!
There is now an option in TextMate 2 to scroll past the end of the document.
This might be rather a late answer but i am posting b/c this question is high in google. Looking for the same issue i found:
PageFeed
PageFeed is a TextMate plugin that allows one to scroll past the last line of a document.
Its not perfect but for most cases its all you need: https://github.com/ampt/PageFeed
I don't think I've ever witnessed a flame war involving BBEdit.
No, TextMate doesn't allow that.
You could create a macro/snippet to add a bunch of \n at the bottom of the file.
Vim, Emacs and Sublime Text all allow this and have better RoR support than BBEdit.
Lacking a scrolling margin, especially at the bottom, when searching in text, is the most frustraing thing in Notepad, Word, Excel, etc. and is enough by itself to make me hate the products on almost a daily basis. EDT, TPU, etc, were great text editors which had this feature (maybe they introduced it) and, now that I've found Emacs emulates them, I use it all the time, and text editing life is good again. I can't understand how most of the world accepts the crazy situation of using a text editor that is worse than those in vogue 20 years ago.
For those who aren't clear about the concept or benefits of a scrolling bottom margin, it is not just about adding empty space below the document, but it also lets you see the context of text found in a search. Without a scrolling margin, the cursor is almost invariably positioned at the bottom line of the screen on the item found, and then to see what comes next you have to manually scroll further down. With a scrolling margin, the cursor and found text are repositioned above the bottom of the screen by the margin amount, letting you see the found text and all the text surrounding it. With repeated searches of the same text, this is a huge timesaver.
Can anyone tell me if there's a quick way to format your code in Text Mate, similar to pressing ctrl K+D in Visual studio?
Thanks!
Edit by Damien_The_Unbeliever:
For those not familiar with Ctrl K+D, it doesn't just indent code - it reformats it using the generally established formatting conventions in the editor - it may replace spaces with tabs or vice-versa for the indentation, ensure code is consistently indented, move braces to separate lines, etc.
TextMate reindenting and reformatting varies a little depending on the language you're using.
You can generally use the Text menu, that depending wether you have an active selection or not it will show you different commands under it. For example, if you have selected a section of code, there will be a Indent Selection menu item. If you have no active selection, it will be Indent Line.
To have this working properly, be sure to select the current language, if it isn't assigned yet (like on unsaved documents). If you're working with HTML, it will simply indent the lines depending on what's above it. It will keep line breaks intact.
If you need something to break out tags on new lines and properly format the document, you should use the Tidy command that is found in the Bundles menu, under HTML (or simply by using the shortcut CTRL+SHIFT+H. If you have a selection active at the moment that you use it, it will simply reindent that section. If instead you have no selection, it will properly reformat the whole document, including checking for tag validity and other errors.
The Bundles for other language have similar commands, like XML (still Tidy) and Javascript (that has a Reformat Document command).
As an ending note, I simply suggest to look into the Bundles menu; there are many little gems in it. ;)
Did you look in the menu bar? Under Text you have a couple of Reformat… entries that may fit your needs.
Beside these native features, some bundles — like the JavaScript one — have custom Reformat… commands : click on the little cog button at the bottom and explore your current language's bundle's content.
It'd be really handy to have collection KVC accessor snippets in xcode, as they're a pain to do by hand. Has anyone who's been using 4 for a while worked out how to add new ones?
(...we're allowed to talk about it now, right?)
Yes, it's quite easy - you just highlight text you want to use as a snippet and drag it into the snippets area (dragging selected text can be difficult, I find it works better if you drag from the left edge of the editor). It brings up a dialog box asking you to name it.
Also, you can have custom parameters in snippets - if you put the text <#paramName#> anywhere in the code you are dragging, when you use the snippet it will come up as a replaceable parameter that you can tab between just like in the official Snippets.
Also make sure to set a completion prefix, which makes it shorter to activate the snippet as you are typing. The nice thing about using Snippets over other solutions like global system text expanders, is that snippets can also be limited to being valid in a certain area of code - so for example a snippet that filled out a string formatting line can be marked as valid only within a block, not outside a method. That way the completion prefix only hits in areas where it's valid to use.
You can edit a snippet by clicking once on it, a box will come up with the snippet text and some other snippet settings you can edit.
A tip to help you drag the code every time, select text then click + hold (do not move mouse) until mouse pointer changes from "I" to pointer. You'll then be able to drag the selected text to the Code Snippet Library.
Drag the highlighted code to the Snippet library. (It can be stubborn and not want to drag. Holding the mouse button down for a moment before dragging seems to help.)
You can use Snippets to manage code snippets in Xcode. Check out this demo http://www.youtube.com/watch?v=il4kE4diy0k
Simply select the code, the press ALT key and drag it into the code snippets library and rename it there, Make sure to press the ALT key, other than this you won'n be able to drag it.
Okay, I'll bite.
I've got really pleasant code/window colors set up in Xcode. Ordinarily, my selection color is very visible.
When I am doing a project search and iterating through the results, however, the results list stays in focus and the found text remains out of focus, using a different background color. This color is extremely hard to detect, especially when the text is embedded in a larger code block and the view is shifting around as it scrolls to the results.
Here's an example:
Left side is in focus (just normal selection), right side is out of focus (during project find)
Often it takes a few seconds to find where the heck the selected text is.
Unless I'm just missing it, Xcode seems to offer no way to change this particular selection color. Interestingly, it also doesn't seem to follow the selection color from the Appearance panel.
Does anyone know a way to change this color or force it to be more visible, short of changing my entire color scheme around?
Use this Xcode plugin:
http://github.com/tjw/XcodeSelectionColorFix
Instructions for using it are here: http://github.com/tjw/XcodeSelectionColorFix/blob/master/README.markdown
You can manually edit the theme file, which might allow a different selection color. If I recall (not on my dev machine), personal themes are in ~/Library/Application Support/Xcode/(should be intuitive from here/can't remember)
You can edit them in Property List Editor, if I remember right. The Xcode preferences don't expose all of the options available in the theme file.