编写Eclipse插件来修改编辑器首选项

时间:2011-06-14 12:13:42

标签: eclipse eclipse-plugin preferences eclipse-pdt

我想为Eclipse CDT开发一个插件(工具栏按钮),用户可以在8到4个空格标签之间轻松切换,打开/关闭软标签。 (为什么打扰你问?感谢我的组织中的编码指南,用于标记C / C ++遗留代码和新代码之间的差异)

我设法创建了工具栏按钮但我找不到修改编辑器首选项的信息(通常在Workspace首选项General-> Editors-> Text Editors中找到的信息)。

问题4587572似乎有点掩盖,但我仍然是插件开发人员的新手,所以我真的不明白。

我想我想修改EDITOR_TAB_WIDTH和EDITOR_SPACES_FOR_TABS属性 org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants 用于正在运行的文本编辑器。

不仅修改,我甚至无法使用以下代码读取属性。只返回默认值:30我提供。

int width = Platform.getPreferencesService().getInt(
    "org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants",
    "EDITOR_TAB_WIDTH", 30, null);

我的总结问题是:如何从插件中修改正在运行的编辑器的选项卡设置?

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用类似于以下内容的代码来获取和设置任何插件中的首选项。

IPreferenceStore s = new ScopedPreferenceStore(new InstanceScope(), "org.eclipse.ui");
ss.setValue("SHOW_MEMORY_MONITOR", true);

答案 1 :(得分:0)

你应该尝试安装和使用完成这项任务的AnyEdit工具 - 最受欢迎的eclipse插件之一。

答案 2 :(得分:0)

感谢@nonty的建议。它运作良好。为了获得其他人的好处,这是我在CDT编辑器中更改标签设置的完整代码。

    public void run(IAction action) {
    if(action.isChecked())
    {
        IPreferenceStore ps = new ScopedPreferenceStore(new InstanceScope(), "org.eclipse.cdt.core");
        ps.setValue("org.eclipse.cdt.core.formatter.tabulation.size",  8);
        ps.setValue("org.eclipse.cdt.core.formatter.indentation.size", 8);
        ps.setValue("org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations", true);
        ps.setValue("org.eclipse.cdt.core.formatter.tabulation.char", "tab"); //=mixed/space/tab

        // To check if the value
        // int tabWidth = ps.getInt("org.eclipse.cdt.core.formatter.tabulation.size");
        // String tabFormat = ps.getString("org.eclipse.cdt.core.formatter.tabulation.char");
        // MessageDialog.openInformation(null, "CDT Tab Width", "CDT tab width: " + tabWidth + " format: " + tabFormat);
    }
}

现在我需要做的就是确保每个编辑器选项卡都记住它的选项卡设置,并在选项卡更改时自动切换回来。我从哪里开始... doh!