Assigning a keyboard shortcut for a specific Eclipse build configuration
I was able to put together specific steps based on splintor's thread and get this working (I also added a loop at the top that finds any existing launch with the same name and terminates it, effectively making this a "restart" macro):
To assign keyboard shortcuts to specific Eclipse launch configurations, perform the following steps:
Install https://sourceforge.net/projects/practicalmacro/, which you can inside Eclipse via Help->Software Updates: http://puremvcnotificationviewer.googlecode.com/svn/trunk/PracticallyMacroGoogleUpdateSite
Restart Eclipse and open Eclipse Preferences. You will have a new section called "Practically Macro Options", expand that section.
Click on "Editor Macro Definitions"
Click on "new..."
In the list of available commands, scroll down to "Editor Macro script (Beanshell)", select it and then click "Add->"
-
When the script editor pops up, add the following code to the existing code:
import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.ui.DebugUITools; try { // Terminate process if it already exists from a previous launch org.eclipse.debug.core.ILaunch[] allLaunches=DebugPlugin.getDefault().getLaunchManager().getLaunches(); for (ILaunch l : allLaunches) { if (l.getLaunchConfiguration().getName().equals("YOUR CONFIG NAME HERE")) { console.write("terminating launch: " ); console.writeln(l.getLaunchConfiguration().getName()); l.terminate(); break; } } org.eclipse.debug.core.ILaunchConfiguration[] allConfigurations=DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurations(); for (ILaunchConfiguration config : allConfigurations) { if (config.getName().equals("YOUR CONFIG NAME HERE")) { DebugUITools.launch(config, "debug"); break; } } } catch (CoreException e) { e.printStackTrace(); } finally{}
Note line 11 that checks the configuration name, replace with whatever you want
Also note DebugUITools.launch command on line 15, you can pass either "run" or "debug"
In the "Macro info" section at the bottom of this dialog, specify a macro name
IMPORTANT!: If you want to be able to see this macro in the standard Eclipse key binding dialog, you need to assign an id. I started with 1...
Click OK
Expand the "General" section and click on "Keys"
You can now search the possible key bindings for your new macro's name and assign it to any key you want.
NOTE: After assigning a key I often had to close and restart Eclipse before the key binding was respected.
I was able to do it using Practically Macro - see this thread.
One alternative is to use the accelerator keys to navigate the Run menu and select the right run configuration.
On my computer it is:
Alt + R, H, Number
Alt+R gets you to get to Run menu, then H for Debug History, then one of the numbered alternatives.
To make a run configuration always be visible in the Debug or Run history menus and retain its position one can do the following:
Select the Run menu -> Run Configurations -> [some config] -> Common, then check Display in favourites menu box.
(This answer is a copy of one of my previous answers.)
You could define a plugin with some launchShortcuts
in it.
This thread is a good illustration.
But to actually bind it, you would need to define a command running that configuration, and bind that command to a key (like in this plugin.xml
configuration file)
the shortcut definition of a launch configuration:
<shortcut id="org.maven.ide.eclipse.pomFileAction"
category="org.maven.ide.eclipse"
class="org.maven.ide.eclipse.actions.ExecutePomAction"
icon="icons/m2.gif"
label="%m2.popup.pomFile.label"
modes="run,debug">
<contextualLaunch>
<contextLabel label="%m2.popup.pomFile.label" mode="run"/>
<contextLabel label="%m2.popup.pomFile.label" mode="debug"/>
<enablement>
<with variable="selection">
<count value="1"/>
<iterate>
<and>
<test property="org.maven.ide.eclipse.launchable"/>
<adapt type="org.eclipse.core.runtime.IAdaptable"/>
</and>
</iterate>
</with>
</enablement>
</contextualLaunch>
</shortcut>
Then the command:
<extension point="org.eclipse.ui.commands">
<command id="org.maven.ide.eclipse.pomFileAction.run"
categoryId="org.eclipse.debug.ui.category.run"
name="%m2.shortcut.description.run"
description="%m2.shortcut.description.run"/>
...
</extension>
Then the key binding for a keyboard shortcut:
<extension point="org.eclipse.ui.bindings">
<key sequence="M3+M2+X M"
contextId="org.eclipse.ui.globalScope"
commandId="org.maven.ide.eclipse.pomFileAction.run"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"/>
</extension>