2011-06-14 108 views
0

我想为Eclipse CDT开发一个插件(工具栏按钮),用户可以轻松地在8到4个空格标签之间切换并打开/关闭软标签。 (为什么打扰你问?由于我编组的指导原则在C/C++遗留和新代码之间的Tab键区别)编写Eclipse插件修改编辑器首选项

我设法创建工具栏按钮,但我找不到信息来修改编辑器首选项您通常可以在工作区首选项中找到常规 - >编辑 - >文本编辑器)。

问题4587572似乎涵盖了一点,但我仍然很新插件dev,所以我不太明白。

我想我要修改的 org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants 的运行文本编辑器EDITOR_TAB_WIDTH和EDITOR_SPACES_FOR_TABS性能。

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

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

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

非常感谢您的帮助。

回答

3

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

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

这正是我需要的。谢谢。 – Tyn 2011-06-22 15:45:45

+2

仅供参考:现在不推荐使用“new InstanceScope()”。改用“InstanceScope.INSTANCE”。 – Warren 2012-09-24 14:36:36

+0

@Warren正确。我从一个旧插件复制了这个...对不起,有任何困惑... – 2012-09-25 08:35:34

0

你应该尝试安装和使用AnyEdit工具来完成这项工作 - 最流行的eclipse插件之一。

+0

嗨,感谢您的建议。不幸的是,我不能像AnyEdit那样将制表符替换为源文件中的空格。因为我们有20多条河流,这将是一场噩梦。因此,我真的需要给开发人员一个快速功能,以在8/4选项卡和软/硬标签之间切换。 – Tyn 2011-06-15 09:58:22

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!