﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
22006	Feature: Search for actions/commands	hiddewie	team	"This ticket is inspired by a similar feature in many IDEs (like VSCode, IntelliJ, etc.) and Spotlight in MacOS.

This ticket is a UI feature, and does not impact functionality of JOSM itself.

== What

I link to https://www.jetbrains.com/help/idea/searching-everywhere.html#search_actions which shows some screenshots of such a feature in IntelliJ.

When the user presses a certain keyboard shortcut, a modal window pops up, and shows a search field. The user can type a (non-complete) search string, and the modal will show a (short) list of results.

The results are influenced by the current context of the user, because not all actions/commands are applicable at all times. Just like the menu items which are greyed out in the application menu.

Upon selecting the action, it is executed directly, or opens the window where the user can perform the action.

Some examples:
- 'New layer' would create a new layer.
- 'Reverse ways' reverts ways.
- 'Address' opens the preset window to add the Address preset to the selected objects.
- 'Tags for selected objects' toggles if the tags panel is shown in the UI.
- 'Report bug' opens the browser with relevant debugging information in a new ticket.

In the most commonly used actions, the keyboard shortcut would be quicker to execute the action, but the user may have forgotten the keyboard shortcut.

== Why

After using this feature in other IDEs for many years, I found the following benefits:
- It makes features discoverable, by searching for the name of the feature.
- It makes features accessible quickly without searching for the correct menu item or UI modal. 
- It reduces the use of the mouse, even when performing complex actions in JOSM.
- It allows assigning keyboard shortcuts quickly to commonly used actions.
- It makes explaining features to other users of JOSM easier, by describing the name of the action instead of the entire flow of menu-items and UI dialogs/modals.

== How

- A global list of actions/commands within JOSM should be composed at startup, or when a plugin is loaded.
- The names and possible keyboard shortcuts
- Searching should happen in a 'fuzzy' manner: typing 'nonws' should find the action 'Non-branching way sequences'.
- (optional) Toggles for boolean application settings
- Plugins may add a list of actions for searching/discovering by the user (just like plugins may add menu items)

"	enhancement	new	minor		Core				
