Написание плагина Eclipse для изменения настроек редактора - PullRequest
0 голосов
/ 14 июня 2011

Я хотел бы разработать плагин (кнопки панели инструментов) для Eclipse CDT, где пользователи могут легко переключаться между 8 и 4 пробелами и включать / выключать программные вкладки. (Зачем беспокоиться, вы спросили? Спасибо руководству по кодированию в моей организации за вкладку различий между устаревшим C / C ++ и новыми кодами)

Мне удалось создать кнопки панели инструментов, но я не смог найти информацию для изменения настроек редактора (те, которые вы обычно находите в настройках рабочей области «Общие» -> «Редакторы» -> «Текстовые редакторы»).

Вопрос 4587572 , кажется, немного охватывает, но я все еще очень плохо знаком с Plug-in dev, поэтому не совсем понимаю.

Полагаю, я хочу изменить свойства 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 ]

3 голосов
/ 17 июня 2011

Вы можете использовать код, подобный следующему, чтобы получить и установить настройки в любом плагине.

IPreferenceStore s = new ScopedPreferenceStore(new InstanceScope(), "org.eclipse.ui");
ss.setValue("SHOW_MEMORY_MONITOR", true);
0 голосов
/ 22 июня 2011

Спасибо @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);
    }
}

Теперь все, что мне нужно сделать, это убедиться, что каждая вкладка редактора запоминает свои настройки вкладки и автоматически переключается обратно при изменении вкладки.С чего мне начать ... дох!

0 голосов
/ 14 июня 2011

Вам следует попробовать установить и использовать AnyEdit Tools, который выполняет эту работу - один из самых популярных плагинов Eclipse.

...