New Features in ModelMaker Code Explorer for VS 1.15

New features

  • Favorite Members optionally keep their regular position in the members view - instead of appearing first. Properties | Display Options.
  • Parameter wizards allow multiple selection delete. Clipboard operations Cut, Copy and Paste added. Copy includes a plain text clipboard format that can be pasted in source code. The parameter name has a full parameter history (drops down on F4) that allows selecting a parameter modifier name and type from the history at once.
  • IDE functions Find, Find In Files, Find References are available from inside the explorer window - pop up IDE sub menus. The interaction with the IDE is based on the "Use text at cursor" feature: MMX positions the cursor at the entity name and then invokes the IDE function.
  • Surround with template shows the pop up menu at editor cursor position rather than at mouse position.
  • When displaying sorting hints the members view allows sorting (multiple) classes. Available in members view pop up menu.
  • IntelliReplace optionally searches in associated comments and attributes and replaces inside comments, strings and directives in code. Defaults are set on the Properties | [Language] | IntelliReplace tabs. The Rename Local and Pascal Method / Property IntelliReplace dialogs allow temporarily overriding these defaults.
  • Pascal: Rename and Edit Procedure optionally use IntelliReplace to propagate the renamed procedure in the entire module. Default setting is taken from Properties | Pascal | IntelliReplace | Default Method Rename scope.
  • Parsers now support source files containing the UTF-8 byte-order mark EF BB BF.
  • C# parser now supports unsafe pointer types as in:
    void* Pointer;
    int** PointerToPointerToInt;
    char*[] PointerToCharArray();
  • C# parser now supports nullable types as in:
    int? x;
    int? z = x ?? y;
    char?[] letters;
  • C# Member conversions:
    • Fields can be converted into methods or properties
    • Non-void Methods can be converted into fields or properties
    • Properties can be converted into fields or methods
    • Break up Property: creates methods based on the property access methods and leaves a property state field, then removed the property.
    • Multiple selection is supported if the selected members are of the same member type.
    • Conversions are available in the Member view "Convert to" pop up sub menu.
  • Pascal: Copy/Pasting a property updates access code for renamed state fields. C# already did this.
  • Add Method dialog allows selecting Method Implementation Insertion Position from: [Insert Sorted | Append]. Add Method and Extract Method additionally allow selecting [Insert After Current | Insert Before Current] if the editor cursor is in a method implementation for the current class.
  • Module Search: new node in contents tree uses Member Search bar for module wide searching. Module Search uses the type and visibility filters and includes searching classes etc. Specialized filters like eventhandler / component / access method filters are ignored. Matched members are grouped per class and sorted on name. Entering text in the Member Search Bar automatically selects the Module Seach node if option "Auto Invoke Module Search" on Properties | Search tab is checked (default: checked)
  • Search Bar options are moved from Properties | General tab to Properties | General | Search tab.
  • Pascal: Add Procedure available as Editor Refactoring in popup menu and MMX main nenu.
  • Pascal: Toggle Accessors: when invoked on a property access method locates the implemetation for the "other (read/write)" property access method. When invoked on a property locates the first access method implementation.

Solved bugs

  • Method and Property IntelliReplace would not work - whatever was selected or clicked in dialog. Solved
  • A Display errors "Unable to display recursive inheritance relations" would appear if either show supported interfaces or show contained source regions was enabled without showing immediate ancestors. Solved
  • Pascal: Change Visibility could in some cases mess up the class interface. Solved.
  • Navigation History would not show parameter lists for methods, making it hard to discriminate overloaded methods. Solved.
  • Member favorites: if the members view was unfocused, a selected and focused Favorite member would not stand out. Solved.
  • Navigation History would in some cases was not able to capture overloaded methods with default parameters. Solved.
  • Memory leaks (some building up style) removed.
  • Large fonts / high resolution form scaling problems solved.
  • Pascal: Rename procedure would not copy the function return type which could result in bad syntax. Solved.
  • Pascal: a long standing bug caused in some cases bad indention for new members in a class interface. Finally reproducable and solved.