2011-06-14 134 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!