d-akara / eclipse-plugin-commander

Eclipse user interface enhancements
MIT License
55 stars 4 forks source link
eclipse-plugin java

Eclipse Commander

Next generation command palette using KAVI interfaces exceeding capabilities of typical sublime like command palettes

Current interfaces provided:


The problem

Goals

Optimum Experience

Once the working view is populated with commands that are used frequently, you should be able to experience the following benefits:

  1. Relevant Information: your working view presents you with only items which you actually use. This minimizes mental focus interuptions that subtly happen when presented with too much irrelevant visual information to consume.
  2. Focus on Recent: items are ordered in the working view by last use. Therefore to execute the last command again, simply launch the interface and press enter. The first item will already be selected, no other key strokes required. This feature can also be used in the Finder interface for navigating among recently viewed or opened files.
  3. Fast Interface Launch: this is dependent on how you configure your keybindings. The intent of the recommended key bindings is to provide an experience where you are not interupted in your typing flow to execute commands. shift+enter allows to launch the interface without moving your hands from natural typing position and immediately follow with typing into the input filter to select a command to execute. Also, it becomes very natural to re-execute the last command with a very fast sequence of shift+enter enter which can be executed fast enough that you may not even see the interface fully appear.
  4. Fast Selections: a combination of features allows for very fast selection and execution of commands. Since your working view is contstrained to only those items useful to you, your working view likely consists of dozens of items vs. thousands that are available in the application. You will therefore be able to select items with usually one or two keystrokes using first letter or acronym of a command. Equal weighted matches in the working view are also sorted by recent. So if you happen to have 5 different launch configurations, you can re-launch the last configuration simply by pressing l and enter. Additionaly, the interface has a fast select feature allowing you to execute any item in the list without scrolling, cursor down, or using the mouse.

The Optimum Exerpience should look something like the following:

In this short clip, the time to launch and execute commands is subsecond. This is all done without hot keys. Abreviations of the commands we use are easier to remember and faster to execute all without leaving our typing flow. Since the default command list is our set of recent or favorites, the selections become predictable and often can be done utilizing only 1 or 2 characters.

optimal

Installation

Eclipse Marketplace

Marketplace Installer

Recommended setup

All available commands available to key bindings can be found by going to the Eclipse key preferences and searching for dakara

key-bindings

KAVI implemented features for all interfaces

Term Matching

Multi column

Default match will search across columns for matches. multi column

Specific column

Columns can be selected individual for matches by using a , to separate the column filters. specific column

Literal

A space after the filter text will cause the preceding text to be matched literal instead of fuzzy. literal column

Fuzzy multi word out of order

Contiguous characters matched using a fuzzy strategy that attempts to match words in any order. A space separating words will force matching of the literal words also allowing for out of order matces. fuzzy column

Quality filtering

One or two letters will not match in the middle of words. This is done to prevent a long tail of low ranking matches. quality

Acronym

Fuzzy matching also will attempt to match by acronym. You can force acronym pattern matching by preceding the input with a space.

acronym column

Ranking Sort

Items are sorted first by rank and then by name. This allows for grouping of items by rank and easier identification of items within the ranked group.

acronym column

Fast Select

Fast select allows list actions directly on target items without needing to navigate to the item with mouse or keyboard cursor. This mode is enabled when typing / in the filter input.

Immediate action invocation

With Fast Select enabled, typing the letters in the fast select guide next to the row immediately inititates that row action.

acronym column

Multi select

Fast Multi Select allows fast selection of multiple items. This mode is active when // is entered in the input field.

acronym column

Range select

A range can be selected by starting the row identifier with -. The range will be applied from the last selected item and will use the selected state of the that same item.

acronym column

Inverse select

Inverse select will inverse all selections currently in the filtered view.
Inverse select is performed by pressing ! after the fast select slashes //

All select/deselect

If any items in the view are selected, this action will deselect all selected. Otherwise, this same action will select all in the filtered view. All select/deselect is performed by pressing space after the fast select slashses //

Navigation

List paging

crtl+j will page down in the list. ctrl+k will page up in the list.

Cursor movement in input field

ctrl+j will move to beginning of input field ctrl+l will move to the end of the input field

Working and Discovery Modes

Working is a view of the set of items that consist of favorites and or recently used items. This view is intended to be the primary view that you would use most of the time and therefore is the default view. However, this view does need to be primed before it is useful. Over the course of a few days this view would accumulate actions or items you are currently using.

Discovery is a view of all possible items. Selection of items from Discovery will add them to the recent list which makes them appear in the Working view.

Switching modes

Press TAB to instantly switch view modes between Working and Discovery

mode-toggle

Recent

Recent items are shown in the Working view. The items are always sorted by most recent. To reuse the last used item, simply open the dialog and press enter which will default to using the first item in the list.

Favorites

Items can also be permanently added to the Working view. These are considered favorite items. They are also sorted in by most recently used in the same view as recent items. A vertical marker bar appears to the left of items which are favorites.

favorites

Export/Import preferences

The Working set of items is contained within preferences and will be exported and imported with Eclipse preferences.

Across workspaces

The Working set of items is stored in the global preferences store. Therefore, your recently used commands will still be available across workspaces.

Context Actions

Context actions are those actions that otherwise would require right clicking on an item to bring up another menu or dialog. Context actions here are initiated using the ; key. The context actions will be performed on all selected items from the previous view.

context

Copy selected to clipboard

This action will copy all items in the selection to the clipboard. clipboard

View Selected

This action will toggle showing only the selected items in the view. This allows you to type different input filters, select items and then finally see all the items you have selected at once before performing some action on those items.

Favorites

Favorites can be added or removed through context actions.

Sort

Items which are normally sorted by rank or sorted by most recent can be sorted by name using this context action.

Export/Import

All settings and history can be exported to and from a JSON file. Commander settings are per Eclipse configuration and Finder settings are per workspace.

Default view mode

The default mode can be set that the dialog will open when launched. This can be working or discovery

acronym column

Commander

Specific features for the commander interface

Columns

  1. Name and description of the command
  2. Category of the command

    Launchers

    Launch configurations are added to the list of available commands. Currently, all launch configurations are run in debug mode by default. In the future this may be configurable. acronym column

    Finder

    Specific features for the finder interface

    Columns

  3. File name
  4. Project name
  5. File path within project

    Working

    The recent list ordering of items in finder will be updated whenever you change editors in Eclipse.
    You can use this to always go back to previous file being editted after opening a view. Just launch the finder and hit enter to go back to the last editor.

Design and Technical Notes

Fuzzy matching

There are multiple types of user intentions when matching

  1. User has in mind words or abbreviations of a term
  2. User is unsure of spelling or exact phrasing and is exploring using character guesses in the filter input
  3. User is attempting to narrow existing displayed results using any random characters within the displayed row

Commander has chosen to focus only on intention #1. Therefore less than 2 letter consecutive intra word matches are ignored. This appears to typically be better when filtering very long lists of thousands of items such as eclipse commands or large project files.

Ranking

In contrast to other typical fuzzy matching command palletes, Commander does not use unlimited ranking scale. There are only 4 levels of ranking from very strong to weak. This was done to present some order to the found items making it easier to visually assess the information and locate items of interest. Therefore, within each of the 4 ranking categories items are alphabetically sorted.

User intention

Unlike other fuzzy matchers, Commander attempts to take into account the user intention where possible. For example, terms separated by a space are considered to be literal words and fuzzy matching is not used. A trailing space can be used to specify intent for literal matching of a single filter term and a leading space will indicate that the following term should be used as acronym only matching. Also options to specify how fuzzy a match might also be considered.

Software

Building Plugin