My Vision of UltraEdit

My Vision of UltraEdit


    Jun 24, 2020#1

    A custom configuration with selected functionality preset, revised menu layout, and optimized input shortcuts.

    Purely focused on enabling the ultimate power while retaining the ease of access, to unleash the full potential of UltraEdit to the maximum extent possible: shedding light on functionality that's been there for long but left in oblivion, the unseen potentials. A new vision.

    Preview the ultimate power:
    Ultra.uec (593.98 KiB)   0
    (Backup / Restore User Customizations)

    Further on the Vision
    1. Still blinking caret indicator(s) (on the editing document) with such context menus open.
      • Including when focused on those "floating" "docking" "dockable" windows whatsoever. (e.g. "Find and Replace" docked on the right)
    2. Command palette open position references to the mouse.
      1. When opened at the edge of the screen (due to mouse position): if the following mouse movement (in 2000 ms) was (largely) towards the screen center, the palette shall follow it (moving to the center) for an appropriate extent.
      2. Afterward retain the current behavior (position remains fixed). Or probably making the palette somewhat resembles to the "floating" window? (maybe even configurable window size)
      3. Note: the distance highlighted on the image is 32 px (both X,Y).
    3. Command palette mouse-over (hovering) item highlight support.
      1. Like what's in "Find and Replace", "Regular expression builder":

        (navigation via hovering/click on the button like item)
        • Off-Topic: Yes, it's apparently broken. (the \ character display escaping problem in the UI)
      2. Highlighting the related items (if present) in the opened context menu at the same time.
        • Whether present or not, the item's description shall be reflected on the status bar.
      3. Weird whim: possible to implement some sort of limited extent multi-select (via the typical Windows shortcut: Ctrl / Shift / Ctrl + Shift + Click / Arrow Up/Down) functionality, for those "order insensitive" / "non conflicting" options? (e.g. "Split window horizontally" and "Split window vertically")
        • The idea applies to other types of context menu too.
    4. Multi-frame multi-caret editing support.
    5. Active frame highlight indication. (in multi-frame view only)
      • Note: the right/bottom border should appear in full length, when the next adjacent frame is not highlighted.
    6. The column ruler(s) shall correctly reflect the active column(s) for all frames.
      • The app failed to do so on the focus switch between frames. (bug likely)
    7. Every pixel of available space shall be made of full use:
      1. There shouldn't be any point for that "little gap" to exist, near the end of the document view (both the edit window and document map). (also near the start of the document map)
      2. Also see: Document map.
      3. Optional flexible width for "Open address bar" when docked. (instead of using a pre-determined width)
    8. "Open address bar" always reflects the last active file. (see: Inspired by other apps)
    9. Two independent search inputs (non interfering), with shared search history.
      1. "Search options" control from the main input ("Find and Replace": "Find").
      2. "Find String List" adding a new sub-tab similar to the "1", "2" in "Output Window". (to handle the "Dual Find String")
    10. Expanded bookmark tags for wrapped lines. (see also: Line wrap handling)
      • Probably color tinting on the column ruler(s) can also be utilized to represent bookmarks on the same line (of different column). (only when active on the bookmarked line, for the wrapped part only)

      Jun 24, 2020#2

      The Ultimate Vision
      1. Auto-complete {748bcdec-5358-443e-be1c-41e11b2dfea1}
      2. Document map {96c80c42-e9b0-4393-be68-ec46ddc5cf08}
      3. Input listening {e08408e1-c2f8-4d53-ab8a-ce7524b1d66b}
      4. Inspired by other apps {df0d6de7-1300-45ce-9db4-61e5ef9a8aea}
      5. Line wrap handling {5fe9a47c-277e-4f7c-8f15-78d69e19da75}
      6. RegEx implementation error {94e3352d-8e68-4e10-9d9f-3e4a84914d69}
      7. Miscellaneous {4557d2ff-254a-40e1-ba8e-512fdfd11ca4}

      1. No default focus on the suggestion target. (optional?)
        • Pressing Arrow Up/Down (depending on the pop-up type: "high" / "low") once to focus, instead of auto focus. (to avoid input competing with suggestion from the input method)
      2. Edge of the suggestion (start/end) Arrow Up/Down escape (quit from the pop-up).
        1. No action for Page Up/Down. (people tend to spam them)
        2. Caret(s) shall remain in the old position afterward. (unlike the Home/End, Arrow Left/Right escape)
        3. The first press shall quit the box, only if not focused on a suggestion; else unfocus from the suggestion instead. (and pressing the opposite arrow key shall bring the focus back)
      3. Likely unwanted: Esc escape moves focus to "Find and Replace" (docked, "Find what:"). (see: Input listening § "Esc" logic)
      4. Toggle-style shortcut invocation. (when the pop-up is shown, pressing the shortcut again to hide it)
        1. For "Focus to open address bar" (CommandID: 10012) too.
        2. Off-Topic: "Focus to quick search bar"? Neither "Quick find" nor "Quick find switch focus" worked.
      5. Mouse Over (hovering) auto focus.
        1. As it doesn't focus to the suggestion box with mouse-over: Mouse Scroll in this case will cause the active document to scroll.
        2. Off-Topic: and the box to collapse too, perhaps not a good design. (newly added Shift + Mouse Scroll causes somewhat different behavior, though again likely unwanted)
      6. Mouse Click unfocus, shouldn't trigger a caret navigation.
        1. The same for "Command palette".
        2. Should behave just like the right-click context menu in the editing area.

      Document map
      1. Switch for each frame independently, instead of the "one switch for all" control?
        • Desirable when viewing files that differ vastly in length at the same time.
      2. Adapted document map right-click context menu:
        • Zoom in (show less)
        • Zoom out (show more)
        • ----
        • Show
          • Active line
          • Bookmarks
          • Code folding
        • Reposition caret on click
        • ----
        • Close document map
        • Close for active frames
        • Close for all frames
        • ----
        • Open for active frames
        • Open for all frames
        (for improved versatility and compensating the change)

      Inspired by other apps

      Web browsers
      1. "Open address bar" enhancements:
        1. Always reflects the last active file, including the temp "Edit*"s.
          • Caveat: special handling needed for "%APPDATA%\IDMComp\UltraEdit\Restore\Edit.000" and alike.
            • Suggested:
              • Do nothing when submitted from the originated "Edit*" tab;
              • Else duplicate its content into a newly created "Edit*" tab.
        2. Support for environment variable resolution.
        3. Navigation thereof replaces the currently active tab. (prompt for unsaved edit before overriding)
          • The replaced tab counts as a previously closed tab. Which can be restored as a new tab. (see below)
        4. If the path leads to a directory: triggers "Open" (CommandID: 57601) navigated to the path.
        5. Auto select all on focusing the address bar.
        6. Del to remove history entries in the drop-down menu.
          • Off-Topic: Also for every "history" pop-up, drop-down alike.
        7. Path auto-completion similar to what's in the Windows Explorer's address bar?
      2. Ctrl + Shift + T, for reopening previously closed tabs. ("Reopen last closed")
        1. And partly adapted file tab right-click context menu:
          • Close
          • New
          • Close tabs to the right
          • Close tabs to the left
          • Close all except this
          • ----
          • Duplicate tab *
          • Reopen last closed
          • Recently closed
            • ... (history entries)
          • ----
          • Find in explorer pane
          • ... (below unchanged)
          * "Duplicate window" (CommandID: 57648).
        2. Off-Topic: "Duplicate window", isolated edit? (instead of the "synced edit" as with "Split window horizontally/vertically")
          • I think many might have expected this instead. (functionality wise, it appears more useful too)
        3. Off-Topic: "Rename file" (CommandID: 33130), also works for unsaved "Edit*"s? (desirable when handling many temp edits)
        4. Off-Topic: "Save as..." (CommandID: 57604), and "Make copy/backup" (CommandID: 33012); both seem to call identical function?
          • One of them should be redundant.
      General CLI apps
      1. Ctrl + C, maps to "abort / interrupt" when a time consuming foreground blocking operation was going on.

      Line wrap handling
      1. Problematic navigation handling with wrapped lines: ("Word wrap" / "Maximum columns before line wraps")
        1. Home/End doesn't really navigate to the real line boundary (start/end). (instead navigates to the "artificial" boundary introduced by the wrap)
          • This might be a commonly followed standard, but a minor improvement over it can be made (to optimize the experience):
            • Home at a "false line start", navigates to the real line start;
            • End at a "false line end", navigates to the real line end.
        2. "Select line" may not work correctly in this case. (when calling with the caret on the wrapped part)
          1. Off-Topic: "Select line" seems to be lack of support for multi-caret handling.
          2. Off-Topic: There are even "Move line" "Delete line" "Duplicate line" whatsoever... Good luck with all that.
      2. Some adjustments for the line highlighting schema:
        1. "Active line highlight": both the "active" and "inactive" part of a wrapped line should be highlighted, with 2 differentiating colors.
        2. Bookmark tags: the size of the marker should extend to include the wrapped part. (also see: Further on the Vision, 10.)

      RegEx implementation error
      1. "Highlight all items found", conflicting with RegEx positive lookbehind.
        1. Reports "Search sting '${Pattern}' not found.", while the search can be successfully performed simply by unchecking the option.
        2. The same pattern works without problem with "Count all".
        3. The very symptom can also occur without lookbehind at all. (^Name= performing search against an "ue.in0" file, see the Intro image)
      2. RegEx lookbehind, \s, problematic DOS line break handling.

      Analysis sample

      Code: Select all


      Code: Select all

      1. Positive lookbehind.
        • Using negative lookbehind while removing * leads to another bug. (DOS line break exclusive: pattern match despite it shouldn't)
      2. \s
        • Removing * leads to another bug. (DOS line break exclusive: pattern not match despite it should; with Unix line break (or replacing \s with a literal line break): back to the same symptom as without removing)
      3. Line break between A and B.
      4. A and B seem can be any character.

      1. "Compare files and folders" (CommandID: 32889), failure handling quoted file path.
      2. An option for confirmation before app exit, unconditionally? (as a workaround)
        • Accidentally closed the app may present some bad implication. (e.g. potentially losing the currently filtered view, bookmarks, highlight, etc.)
        • The optimal handling is not unconditional confirmation, but confirmation only when the potential of such unwanted scenarios exists. (if properly implemented, the behavior can be made default and enforced)
      3. Tool bar buttons, "Classic" theme mouse-over tip:

        Should be ported to other theme types too.
        • Note: the pop-up shall appear immediately upon mouse-over, and stay indefinitely (as long as the mouse remained within the icon).
      4. Inability handling files of exceptionally long name. (any more than 200 characters, extension not counted)
        1. Throws error: "Cannot edit file": "Can't create temporary file".
        2. Off-Topic: Probably there needs an option to limit the max allowed width of a single tab.
          • Note: the tab title omitting shall be placed at the center of the text. (not neither edge)
      5. What's the point having the horizontal scroll bar fitted to handle more characters than the set "Maximum columns before line wraps:" (CommandID: 1188) could support?
      6. "No highlighting" (CommandID: 34399), toggle-style switch? (attempts to switch back to the last used highlighting scheme, when invoked in "No highlighting")
      7. Problems handling combining characters. (also see: Precomposed character, Complex text layout)
        Broken RTL (right-to-left) text support.
        1. Bad rendering.
          • Common fail points:
            • Selection making
            • "Active column highlight" (CommandID: 33238)
        2. Problematic caret navigation (thus editing). (with combining characters)
      8. "Reindent selection" (CommandID: 33135), the "/Ignore Strings SOL" directive seems to be ignored by the function.

        Jun 24, 2020#3


          Jun 24, 2020#4


            Jun 24, 2020#5