Also, I am seeing that when using launch
shortcuts the preferred launcher is ignored
https://bugs.eclipse.org/bugs/show_bug.cgi?id=284573
/Mario
From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx] On
Behalf Of Mario Pierro
Sent: den 24 juli 2009 13:21
To: CDT
General developers list.
Subject: RE: [cdt-dev] Setting a
default launch delegate in a product intheDefault Launchers preference page
Hello Pawel,
I submitted the following bug about this
https://bugs.eclipse.org/bugs/show_bug.cgi?id=284557
Thanks!
/Mario
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
On Behalf Of Pawel Piech
Sent: den 23 juli 2009 22:11
To: CDT
General developers list.
Subject: Re: [cdt-dev] Setting a
default launch delegate in a product in theDefault Launchers preference page
Mario Pierro wrote:
Hello Pawel,
I might have found the problem, or at
least one of them.
The initialization performed in
LaunchManager.initializePreferredDelegates() will only look for the
PREFERRED_DELEGATES as a preference key. If the new extended syntax is used, PREFERRED_DELEGATES
will instead be a children node including a set of keys, each of which
corresponds to a launch configuration type id and indicates a set of
delegate-modes pairs in its value.
The
LaunchManager.initializePreferredDelegates() method is there only to support
the preferences in old workspaces. The latter half of
getPreferredDelegate() is supposed to use the new preference format.
I have patched LaunchManager so that it
uses the newer IPreferencesService to retrieve the subnode if the old method
fails to retrieve the key at root level.
Now I can see that the preferences window
is initialized according to my product configuration even on a blank workspace!
I'm afraid I can't
comment on your changes without seeing them ;-) Please file a bug and
post your changes in a patch, I'll be glad to review them.
However, an application launch will always
default to the CDI debugger, no matter what the Default Launchers preference is
set to. Could this be caused by the “hack” you were mentioning? I
am not able to find that in CMainTab nor in LaunchConfigurationTabGroupViewer.
There's two CMainTabs out
there. Look in org.eclipse.cdt.launch.ui. The hack I put in
is supposed to only kick in if there is no preference set. So if you have
a preference set in your product it should be used.
I am now looking for reliable regressions,
so that I can submit bug reports for those two issues.
The most visible
regression you pointed out is that you cannot export and re-import the
preferences. That should be enough :-) BTW, I will be out on
vacation until August 3rd. I'll look for your input then.
Thanks,
Pawel
Best,
Mario
Mario Pierro wrote:
Hello Pawel,
Thanks for the quick answer, now the problem is much clearer.
I am puzzled by the preference being stored in the workspace when
selected manually, but ignored when set via default. Also, it seems that
exporting and re-importing the preferences in a blank workspace will not
restore the previous launch delegate settings.
If exporting and
reimporting doesn't work, that would mean it's a regression. Please file
a bug against platform debug and I'll take a look at it as well.
Thanks!
Pawel
The current approach seems reasonable - maybe there is no need to change
extension point definitions once the products are able to override the
CDI default using customization.
I'll work on this and post a patch if I find one.
Best,
Mario
-----Original Message-----
From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
On Behalf Of Pawel Piech
Sent: den 23 juli 2009 00:14
To: CDT General developers list.
Subject: Re: [cdt-dev] Setting a default launch delegate in a product in
theDefault Launchers preference page
Hi Mario,
You are correct the platform does not set the default, it is sort of
selected at random and overriding the preference is the currently the
only mechanism to set the default launcher. I was planning to use the
preference mechanism to set the default in CDT, but I discovered that
CDT doesn't have a "product" in which I could set the preference
override. As a result, late in CDT 6 when we got a lot of negative
feedback for not having the standard launcher be the default, I put in a
hack set the default in CMainTab.setDefault().
I'm not really that familiar with the default preferences handling, so
without debugging it myself I can't tell if the reason below is why it's
not working. To be honext, once I figured out that this option wasn't
going to work for CDT, I stopped testing it. If you do some experiments
and find an easy way to fix it, file a bug against Platform Debug with a
patch and I'll gladly apply it. Keep in mind though that the changes
will need to be backward compatible.
Also, if you would like to contribute a new addition to the launchers
extension point to specify a default more explicitly I would gladly look
at that for 3.6 as well.
Thanks,
Pawel
Mario Pierro wrote:
Hello,
I am trying to set a default launch delegate for our debugger, so that
users will not need to explicitly set one in preferences (Run/Debug >
Launching > Default Launchers).
In my plugin_customization.ini, I am adding an entry which refers to
my
launch delegate ID
org.eclipse.debug.core/org.eclipse.debug.core.PREFERRED_DELEGATES/org.ec
lipse.cdt.launch.applicationLaunchType=<my own launch delegate ID
here>,debug
However, this specific default setting seems to be ignored when the
preferences page is initialized in my product.
The preference key is formed as described in the class
org.eclipse.debug.internal.core.LaunchManager
so that it is org.eclipse.debug.core.PREFERRED_DELEGATES followed by a
slash and the launch configuration type id.
I have looked through bug 262826
https://bugs.eclipse.org/bugs/show_bug.cgi?id=262826
However, by debugging through
org.eclipse.core.internal.preferences.DefaultPreferences
I have noticed that in the applyDefaults() method, line 133:
private void applyDefaults(String id, Properties defaultValues,
Properties translations) {
for (Enumeration e = defaultValues.keys();
e.hasMoreElements();) {
String fullKey = (String) e.nextElement();
String value =
defaultValues.getProperty(fullKey);
if (value == null)
continue;
IPath childPath = new Path(fullKey);
here>>>> String key = childPath.lastSegment();
childPath = childPath.removeLastSegments(1);
.
.
.
the key gets set to the id of the launch configuration type
org.eclipse.cdt.launch.applicationLaunchType
while the childPath is
org.eclipse.debug.core/org.eclipse.debug.core.PREFERRED_DELEGATES
because of the call to lastSegment()
Might this cause the key which is set afterwards in the code to be
incorrect?
If so, how does CDT default to the CDI debugger launch? There seems to
be no preferred launch delegate selected by default.
Am I missing something?
Thanks for your help!
/Mario
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev