[MonoDevelop] Hidden/Not so obvious features

Michael Hutchinson m.j.hutchinson at gmail.com
Wed Jun 24 00:31:22 EDT 2009


On Sat, Jun 20, 2009 at 2:57 AM, Anirudh
Sanjeev<anirudh at anirudhsanjeev.org> wrote:
>
> I tried to override the ToString method to make watching my object
> easier. The IDE immediately generated a method to print out the values
> of all my public properties, which was super awesome as it saved me some
> time. Needless to say, I'm going to be using this feature a lot more.
>
> There are so many features like this (like the interface/abstract class
> implementer tool) which I discover more by accident.
>
> Firstly, I wanted to ask the community if they know of any other such
> neat features.

My current favourites:
* "Go to file" (Alt-Shift-O) dialog.
* override completion
* "Resolve" context menu command - you can use it to insert a missing
"using" statement without going to the top of the document.
* Code templates. Activate templates by typing the template name and
hitting tab (you have to hit tab twice if the completion list is
open), or pick them from the toolbox pad, or use the "Insert Template"
or "Surround With" commands. I use "cw" a lot for printf debugging...
* "Outline Pad" (I keep it auto-hidden at the side of the screen) for
getting the high-level view of a file, and jumping around.
* The Alt modifier key, with left/right/shift, for navigating &
selecting *parts* of camelCase words.
* Shift-enter for starting a new line from anywhere within the current
line (try ctrl-enter too)
* Ctrl-c,Ctrl-v without a selection, for duplicating whole lines.

> Secondly, I wanted to know where this is implemented in the MD codebase.
> I've been writing a bit of database code and since my tables use the
> same properties as my object does, it would be nice to be able to
> generate strings to create tables, update values, etc - where I don't
> need to type in the strings (on a related note, anybody know any good
> ORM which allows me to work with objects and translates it into
> XML/Sqlite).

That particular feature's handled in
main/src/addins/CSharpBinding/Gui/NewOverrideCompletionData.cs

However, rather than baking more features into the C# completion
engine, you could use Code Templates. Take a look at the "itar"
template for an example of what you can do with linked fields and
template functions. You could add new functions if you need them.

I'm not familiar with any lightweight ORMs. I supposes there's DBLinq
in Mono trunk. NHibernate is probably too heavyweight.

-- 
Michael Hutchinson
http://mjhutchinson.com


More information about the Monodevelop-list mailing list