除非复制和粘贴,有没有办法共享Java详细格式化程序

Mar*_*rer 7 java eclipse debugging version-control

在我们的商店里,我们有5-10名开发人员在使用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));
            }
    }
Run Code Online (Sandbox Code Playgroud)

因此,首选项存储中的字符串只是一堆带有类型名称,代码段,已启用,类型名称...替换\ u0000的CSV,在代码段中,你很高兴.

那处理导出(地狱,你可以直接转储首选项字符串).

虽然不覆盖现有的类型,或者给用户提供这样做的选项,或者即使对两个片段的差异进行分析,导入也不会太难.

OTOH,我真的宁愿不依赖于一个班级的内部运作*.internal.*.

Dan*_*dei 2

尽管首选项导出向导中没有明确的内容,但导出所有内容也会写入详细格式化程序。只需在输出文件中搜索/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