[MonoDevelop] [Monodevelop-devel] Refactoring and navigation commands

Michael Hutchinson m.j.hutchinson at gmail.com
Fri Jan 9 20:29:43 EST 2009


On Thu, Jan 8, 2009 at 2:13 PM, Michael Hutchinson
<m.j.hutchinson at gmail.com> wrote:
> On Thu, Jan 8, 2009 at 12:39 PM, Lluis Sanchez Gual <lluis at novell.com> wrote:
>> I think we should check how those refactoring commands are presented in
>> other IDEs and tools. In any case, I don't think the submenus add much
>> value. The editor context menu could have a "Go to declaration" command
>> at the top, maybe a "Go to declaring type" (for type members), and a
>> "Refactoring" menu with all other refactoring commands.
>
> Yes, I'll take a look at how some other IDEs present these commands
> and post a summary later.

VS Express
=========
Pretty simple, context menu is as follows:

Refactor >
    Rename...
    Extract Method...
Organise Usings > (submenu operating on the file's usings)
---
Insert Snippet...
Surround With...
--
Go to Definition
Find All References

None of these commands are contextualised; running them when not over
a valid symbol causes an error. Some commands show up via contexual
smart tags. The Refactor menu is also a main menu, and the other
commands can be found in Edit > IntelliSense

Eclipse
=====
Ctrl-1 brings up a list of "Quick assists"
HUGE context menu with submenus "Refactor" and "Source" each
containing a ton of refactoring commands. They do not seem to be
contextually enabled, and hence many can error when you try to run
them. These commands (and more) are in a "Refactor" main menu, which
is similarly non-contextualised.
Very few navigation commands are in the context menu (only "open
declaration"); they seem mostly to be in the "Navigation" main menu,
and again are not contextually enabled. Instead they have context menu
commands for jumping to the class pad, breadcrumb bar, etc. And, once
again, the commands are not contextualised; even "open declaration"
can error out (with a message in the status bar).

Netbeans
=======
Context menu has "Navigate" and "Refactor" submenus,
non-contextualised. They also have main menus with the same names and
commands, but with additional commands. "Find usages", "Call
Hierarchy", "Insert Code" and "Fix Imports" are the only top-level
navigation/refactoring commands in the context menu.

Visual Assist X
===========
AFAICT from docs, it adds a "refactor" menu invoked by a special key,
which shown contextual refactoring commands and "find references". Go
to definition is invoked by another shortcut. It appears they don't
want to hook into the IDE's usual context menu.

Refactor! Pro / CodeRush
===================
AFAICT from docs, Refactor! uses smart tags and a contextual
"refactor" menu with a keyboard shortcut. CodeRush adds a "jump to"
menu to the VS context menu.

ReSharper
========
Adds "Refactor" and "navigation" contextual menus accessible via
keyboard shortcuts.

Later I'll post thoughts on this and how I think we should proceed.

-- 
Michael Hutchinson
http://mjhutchinson.com


More information about the Monodevelop-list mailing list