编写Eclipse插件以修改“编辑器首选项”

问题描述

|| 我想为Eclipse CDT开发一个插件(工具栏按钮),用户可以在其中轻松地在8和4个空格标签之间切换并打开/关闭标签。 (为什么要打扰您?多亏我组织中的编码指南来区分C / C ++旧代码和新代码间的区别) 我设法创建了工具栏按钮,但找不到修改“编辑器首选项”(通常在“工作区”首选项“常规”->“编辑器”->“文本编辑器”中找到的信息)的信息。 问题4587572似乎涵盖了一部分,但我对Plug-in开发人员还很陌生,所以我不太了解。 我想我想修改的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);
我的问题摘要是:如何从插件修改正在运行的编辑器的选项卡设置? 非常感谢您的帮助。     

解决方法

        您可以使用类似于以下代码的代码在任何插件中获取和设置首选项。
IPreferenceStore s = new ScopedPreferenceStore(new InstanceScope(),\"org.eclipse.ui\");
ss.setValue(\"SHOW_MEMORY_MONITOR\",true);
    ,        您应该尝试安装和使用可完成这项工作的AnyEdit工具-最受欢迎的eclipse插件之一。     ,        感谢@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);
    }
}
现在,我要做的就是确保每个“编辑器”选项卡都记住它的“选项卡”设置,并在更改选项卡时自动切换回去。我从哪里开始... do!