[英]Barring copy & paste, is there a way to share Java detail formatters
在我们的商店中,我们有5-10个开发人员在Eclipse上使用Java,我们经常调试那些没有调试友好的toString()
。
随着详细格式化程序来节省一天。 欢呼! 但只有我的一天。 如果我想和我的伙伴们分享快乐,我想我必须做一些复制和粘贴,就像他们一样。
太糟糕了。 我们有N个不同的版本控制系统可以在Eclipse中运行......看起来这将是人们想要传递的东西。
文件 - >导出...对话框中没有任何内容。 没有通过搜索在线帮助。 没有。
我设法跟踪至少一些设置到/workspace/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.dbug.ui.prefs
,但有理由相信它还有更多那。 另外,将隐藏在隐藏文件夹中的东西放入源控制中的想法使我的牙齿处于边缘。
有没有更好的方式来共享细节格式化程序? 理想情况下,这将是我们可以检查我们的代码仓库并以这种方式传播的东西。
编辑:我正在使用Helios,Service Release 1,build id 20100917-0705。
除了javaLogicalStructures
扩展点(用于向给定类添加逻辑结构)之外,还有一个名为detailPaneFactories
。 但这是为了创建窗格文本(或者由于这个扩展点),详细格式化器呈现的。 也不允许扩展器列出现有的详细格式化程序(或者逻辑结构)。
detailPaneFactories
扩展的底部确实有一些有趣的东西:
Supplied Implementation: The debug platform contributes a detail pane factory providing a default text source viewer detail pane. The default detail pane displays textual details of a selected element based on the corresponding debug model presentation's implementation of computeDetail(IValue value, IValueDetailListener listener).
computeDetail
听起来很有希望。 我会留下你的帖子(除非有人打败我...欢呼赏金)。
嗯... org.eclipse.jdt.debug.ui.JavaDebugUtils.getPreferenceStore()听起来很有希望,但我还是宁愿不为此自己编写插件。
呃,好吧。 这是代码org.eclipse.jdt.internal.debug.ui.JavaDetailFormattersManager
用来加载它们:
/**
* Populate the detail formatters map with data from preferences.
*/
private void populateDetailFormattersMap() {
String[] detailFormattersList= JavaDebugOptionsManager.parseList(JDIDebugUIPlugin.getDefault().getPreferenceStore().getString(IJDIPreferencesConstants.PREF_DETAIL_FORMATTERS_LIST));
fDetailFormattersMap= new HashMap(detailFormattersList.length / 3);
for (int i= 0, length= detailFormattersList.length; i < length;) {
String typeName= detailFormattersList[i++];
String snippet= detailFormattersList[i++].replace('\u0000', ',');
boolean enabled= ! JavaDetailFormattersPreferencePage.DETAIL_FORMATTER_IS_DISABLED.equals(detailFormattersList[i++]);
fDetailFormattersMap.put(typeName, new DetailFormatter(typeName, snippet, enabled));
}
}
因此,首选项存储中的字符串只是一堆带有类型名称,代码段,已启用,类型名称...替换\\ u0000的CSV,在代码段中,你很高兴。
那处理导出(地狱,你可以直接转储首选项字符串)。
虽然不覆盖现有的类型,或者给用户提供这样做的选项,或者即使对两个片段的差异进行分析,导入也不会太难。
OTOH,我真的宁愿不依赖于*.internal.*
的一个类的内部运作*.internal.*
。
来自Eclipse 3.8和4.2 M5 - 新的和值得注意的 :
现在可以将详细格式化程序导出为单独的首选项 。
以前,共享详细格式化程序的唯一方法是导出所有工作区设置。
这结束了Brian De Alwis在他的回答中提到的错误224815 :
“使详细格式化程序可导出”(使用该补丁 )
虽然首选项导出向导中没有任何显式内容,但导出所有内容也会编写详细格式化程序。 只需在输出文件中搜索/instance/org.eclipse.jdt.debug.ui/org.eclipse.jdt.debug.ui.detail_formatters
并仅共享这些行。
更新:导入器中似乎存在错误,您必须在导入文件之前从每行删除/instance/
前缀。
或者,由于它们存储在工作空间元数据的属性文件中,您可以共享它(尽管如果您只是复制文件,您可能会覆盖其他调试设置): ${workspace}\\.metadata\\.plugins\\org.eclipse.core.runtime\\.settings\\org.eclipse.jdt.debug.ui.prefs
使用“宏”可能会在这里发挥作用。
你不得不
一个这样的插件是: http : //sourceforge.net/projects/practicalmacro/reviews/
此问题已在Eclipse Bugzilla中作为错误224815提交。 问题是在配置导入/导出首选项传输时忽略了详细格式化程序。 修正案,如果它被接受,应该在1月底到期的3.8 / 4.2 M6中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.