Speculative/Potential Feature Request: Jump Box
Lately, I've been working with a lot of load modules with their own sets of classes/methods. The tasks these load modules are supporting is one-off configuration of various systems. In the example I'm going to reference, it's dealing with AWS DynamoDB tables we use to support holiday identification and system status. In developing the routines for the broader configuration/support case, I've had a need to jump around within the modules, but there's enough content in some modules that finding where I need to go has become a chore*.
What I've been missing in LINQPad is the VS Studio ability to select a class/method combo (or even just look at what's defined). Find can (and does) mitigate this to an extent, but fails for me often. Call it a personal persistent memory issue. Perhaps it's only affecting me, but I don't think so. As such, the first part of this post is a question: Is this something of interest in general?
The following are example UI mock-ups. The second question (mainly for Joe): Is this even feasible? If the answers for both questions tend toward "yes", I'll write up a UserVoice entry and point it back to here.
For this post, I've named the feature "Jump Box". Essentially, a jumping point to other portions within a module. And this is primarily valuable for the "Program" language modes. Display of the box through some key shortcut (repurpose Ctrl-G or Ctrl-J).
Selecting the Class dropdown displays the list of classes for selection (including the module) in alphabetical order (or whatever order gets "" displayed first and then other classes within the module).
Once a class is selected, selecting the Method dropdown displays the methods in the class in alphabetical order.
Ideally, selecting the class/method will move the cursor to the part of the module defining said class/module and bring it into the view area if not already present.
- Please leave aside discussions on how modules should never get big enough that moving around in them becomes an issue. It's a good practice/theory that often fails to real-world concerns. This the case here, though for the specific example, I've intentionally kept it small to demonstrate the request.
Comments
I rarely use Visual Studio's class/member dropdowns because they're awkward to navigate with the keyboard, don't support filtering, and require two actions to get to where you want to go: first, select the type, and then select the member. Instead, I tend to use "Go to Member", which is also supported in LINQPad.
The "Go to Member" dialog is not a complete replacement, though: what you're missing is the ability to see an outline. Sometimes it's useful to first see a list of types. Do you think it would help if it was enhanced with a TreeView? Or does this not address your use case?
"Go to Member" helps. Did not know about this feature. The shortcut isn't ideal, but workable (it requires both hands and Ctrl seems a better fit than Alt). Not thrilled with it being a pop-up dialog (have to deal with it or dismiss it), but that could be more that I am used to the class/member dropdowns in VS and they are always available/responsive to the editing surface.
An outline could be useful, but it suggests an "in code order" view of the items instead of alphabetical. I'll play around with GtM a bit to see if that does the trick. The only thing that stands out as a knit within the dialog at first blush is the ordering of module-level methods below other class methods.