禁止复制& paste,有没有办法共享Java详细格式化程序

时间:2011-03-11 21:11:37

标签: java eclipse debugging version-control

在我们的商店中,我们有5-10名开发人员在使用Eclipse工作,我们经常调试那些没有调试友好toString()的类。

沿着Detail Formatters来拯救这一天。欢呼!但只有我的日。如果我想与我的伙伴们分享快乐,我想我必须做一些复制和粘贴,就像他们一样。

太糟糕了。我们有N个不同的版本控制系统可以在Eclipse中运行......看起来这将是人们想要传递的东西。

file-> export ...对话框中没有任何内容。没有通过搜索在线帮助。什么都没有。

我设法将至少一些设置跟踪到/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));
            }
    }

因此,首选项存储区中的字符串只是一堆CSV,其中包含type-name,snippet,enabled,type-name ... replace \ u0000 with,in the snippets,你很高兴。

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

导入不会更难,但它会是不错的不覆盖现有类型,或给予用户这样做,甚至与两个片段的问题一个差异的选项。

OTOH,我真的而不是依赖于*.internal.*中某个班级的内部运作。

4 个答案:

答案 0 :(得分:3)

来自Eclipse 3.8 and 4.2 M5 - New and Noteworthy

  

详细信息格式化工具现在可以作为单独的首选项导出   以前,共享详细格式化程序的唯一方法是导出所有工作区设置。

detail formatter export

这会关闭bug 224815Brian De Alwis提到的his answer
“使详细格式化程序可导出”(使用that patch

答案 1 :(得分: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

答案 2 :(得分:1)

使用“宏”可能会解决这个问题。

你必须

  1. 安装一个可以让你的插件 记录宏
  2. 开始录制宏并使用Eclipse Menus配置详细格式化程序
  3. 保存并保留 某些共享目录上的宏
  4. 安装该插件并运行宏 其他开发者使用的PC
  5. 一个这样的插件是:http://sourceforge.net/projects/practicalmacro/reviews/

答案 3 :(得分:1)

此问题已在Eclipse Bugzilla中以bug 224815的形式提交。问题是在配置导入/导出首选项传输时忽略了详细格式化程序。修正案,如果被接受,应该在1月底到期的3.8 / 4.2 M6中。