Перейти к содержанию
    

Подсветка пользовательских ключевых слов в Eclipse (C/C++)

На такой вопрос от 2008 года я уже набрел на этом форуме, но ответа там не было. Я в ту ветку написал, но последняя запись там - от 2017, потому не бейте ногами, что я замутил эту тему вновь.

Вопрос прост: в STM32CubeIDE, которая базируется на eclipse, я хочу конкретно подкрасить bool, false и true (а может и еще что). В отличие от KEIL IDE, где просто надо добавить эти слова в соответствующий список, в eclipse как-то все сложно: поиск google дает какие-то java скрипты, которые не ясно мне, куда писать и как исполнять. Потому вопрос: как добавить свое в список ключевых слов в редакторе, заточенном под C\C++? Если можно, объяснить как для чайников.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я добавлял себе в старые проекты, не заточенные под GCC компилятор, файлик eclipse-pic-compat.h следующего вида:
 

#ifndef ECLIPSE_PIC_COMPAT_H_
#define ECLIPSE_PIC_COMPAT_H_

// define macro "ECLIPSE_MPLAB_PROJECT" to avoid eclipse parser errors
#ifdef ECLIPSE_MPLAB_PROJECT

#define interrupt
#define low_priority    // interrupt
#define high_priority    // interrupt
#define __bit char
#define __nonreentrant
#define intrinsic(X) "void"

// NOTE: добавлять сюда extern-заглушки для всех использующихся определений вида extern volatile TXSTA1bits_t TXSTA1bits @ 0xFAC из файла описания МК библиотеки xc8\...\include
extern PORTAbits_t PORTAbits;
extern PORTBbits_t PORTBbits;
extern PORTCbits_t PORTCbits;
extern OSCCONbits_t OSCCONbits;
extern INTCONbits_t INTCONbits;

#endif    // ECLIPSE_MPLAB_PROJECT

#endif /* ECLIPSE_PIC_COMPAT_H_ */

Ну и в проекте в начале main.h его подключал. В свойствах проекта прописывал определение ECLIPSE_MPLAB_PROJECT

Убивает двух зайцев - подсветка пользовательских слов и исключение ошибок встроенного парсера GCC при работе с такими проектами.

Делал такие же файлики для проектов, которые были заточены под кейловский компилятор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Aaron said:

Я добавлял себе в старые проекты, не заточенные под GCC компилятор, файлик eclipse-pic-compat.h следующего вида:
 


#ifndef ECLIPSE_PIC_COMPAT_H_
#define ECLIPSE_PIC_COMPAT_H_

// define macro "ECLIPSE_MPLAB_PROJECT" to avoid eclipse parser errors
#ifdef ECLIPSE_MPLAB_PROJECT

#define interrupt
#define low_priority    // interrupt
#define high_priority    // interrupt
#define __bit char
#define __nonreentrant
#define intrinsic(X) "void"

// NOTE: добавлять сюда extern-заглушки для всех использующихся определений вида extern volatile TXSTA1bits_t TXSTA1bits @ 0xFAC из файла описания МК библиотеки xc8\...\include
extern PORTAbits_t PORTAbits;
extern PORTBbits_t PORTBbits;
extern PORTCbits_t PORTCbits;
extern OSCCONbits_t OSCCONbits;
extern INTCONbits_t INTCONbits;

#endif    // ECLIPSE_MPLAB_PROJECT

#endif /* ECLIPSE_PIC_COMPAT_H_ */

Ну и в проекте в начале main.h его подключал. В свойствах проекта прописывал определение ECLIPSE_MPLAB_PROJECT

Убивает двух зайцев - подсветка пользовательских слов и исключение ошибок встроенного парсера GCC при работе с такими проектами.

Делал такие же файлики для проектов, которые были заточены под кейловский компилятор.

Это, конечно, левой ногой с вертушки в глаз тому, кто держит доску.


bool, false и true уже определены. Если я их переопределю, начнется ругня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему вы считаете, что они определены? Если вы используете GCC в режиме "Си", то он не знает этих ключевых слов - только в режиме "Си++".

Вы же говорите, что bool, false, true - это пользовательские слова (из названия темы). Я вас так и понял.

Дак а вам получается просто нужно раскрасить ключевые слова языка, уже имеющиеся и распознаваемые Eclipse. Был проект то ли на github, то ли на sourceforge, который позволял собственные темы цветовые создавать для Eclipse, я им один раз воспользовался, для себя тему создал, и с ней живу уже десяток лет, ничего не меняя :) Могу поделиться, если надо. Файлик *.epf настроек C Editor Appearance импортируется в каждый новый workspace.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Aaron said:

А почему вы считаете, что они определены? Если вы используете GCC в режиме "Си", то он не знает этих ключевых слов - только в режиме "Си++".

Вы же говорите, что bool, false, true - это пользовательские слова (из названия темы). Я вас так и понял.

Я не считаю, определены ли, я это вижу опытным путем, т.к. я их использую в программе без излишних телодвижений кроме, может быть, #include <stdbool.h>. Однако они не подкрашиваются как другие, а мне бы хотелось. Вот uint8_t, к примеру, подкрашивается, хотя не является встроенным типом, а определен в stdint.h.

Касаемо ЦЕЛОЙ красочной темы: я не хочу изгаляться и извращаться. Мне бы только быстро и просто список раскраски дополнить... А файлик киньте, буду благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, KnightIgor сказал:

Касаемо ЦЕЛОЙ красочной темы: я не хочу изгаляться и извращаться. Мне бы только быстро и просто список раскраски дополнить...

Ответил на Ваш похожий вопрос, заданный в другой теме. Также устанавливал различные цветовые схемы тут (в STM32CubeIDE). Названия этих плагинов подзабыл и на вскидку покамест не могу узнать т.к. некоторое время назад пришлось переустанавливать STM32CubeIDE по некоторым причинам. А когда ее переустановил, то даже не установив снова тот плагин для цветовой схемы, а просто открыв свою старую workspace, получил в итоге все предыдущие цветовые настройки заново (!).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Файлик готовый прикрепить не могу, уж извините (прокся только на вход), придётся вам самим создать workspace.epf со следующим содержимым:

Spoiler

#Fri Feb 05 12:39:08 MSK 2016
/instance/org.eclipse.cdt.ui/semanticHighlighting.localVariable.color=0,128,159
/instance/org.eclipse.cdt.ui/semanticHighlighting.localVariableDeclaration.bold=false
/instance/org.eclipse.cdt.ui/pp_default=0,116,0
/instance/org.eclipse.cdt.ui/editor_folding_enabled=true
/instance/org.eclipse.cdt.ui/closeAngularBrackets=false
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.internal.ui.text.doctools.doxygen.recognizedTag_bold=true
/instance/org.eclipse.cdt.ui/editor_folding_preprocessor_enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.label.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.class.color=107,117,0
/instance/org.eclipse.cdt.ui/semanticHighlighting.macroDefinition.strikethrough=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.overloadedOperator.enabled=true
/instance/org.eclipse.cdt.ui/asm_label=210,0,0
/instance/org.eclipse.cdt.ui/c_multi_line_comment_italic=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.functionDeclaration.color=64,64,0
@org.eclipse.cdt.ui=5.3.2.201202111925
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.internal.ui.text.doctools.doxygen.recognizedTag=94,126,159
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.ui.outline.linktoeditor=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.methodDeclaration.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.overloadedOperator.bold=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.functionDeclaration.underline=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.staticField.bold=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.externalSDK.enabled=true
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.internal.ui.text.doctools.doxygen.recognizedTag_italic=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.enum.enabled=true
/instance/org.eclipse.cdt.ui/c_comment_task_tag_italic=true
/instance/org.eclipse.cdt.ui/asm_label_underline=true
/instance/org.eclipse.cdt.ui/c_multi_line_comment=135,163,163
/instance/org.eclipse.cdt.ui/Refactoring.savealleditors=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.enumerator.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.enumerator.italic=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.externalSDK.color=119,111,0
/instance/org.eclipse.cdt.ui/semanticHighlighting.functionDeclaration.strikethrough=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.localVariable.bold=false
/instance/org.eclipse.cdt.ui/spelling_locale=en_US
/instance/org.eclipse.cdt.ui/semanticHighlighting.macroDefinition.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.methodDeclaration.underline=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.localVariableDeclaration.enabled=true
file_export_version=3.0
/instance/org.eclipse.cdt.ui/semanticHighlighting.function.enabled=true
/instance/org.eclipse.cdt.ui/pp_directive=101,0,202
/instance/org.eclipse.cdt.ui/semanticHighlighting.class.enabled=true
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.internal.ui.text.doctools.doxygen.multi=121,149,176
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.ui.outline.groupmembers=true
/instance/org.eclipse.cdt.ui/c_string_bold=true
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.ui.outline.groupmacros=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.method.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.field.bold=false
/instance/org.eclipse.cdt.ui/editor_folding_statements=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.namespace.color=198,0,198
/instance/org.eclipse.cdt.ui/hoverModifiers=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;\!0;org.eclipse.cdt.ui.ProblemHover;\!0;org.eclipse.cdt.ui.CDocHover;\!0;org.eclipse.cdt.ui.CMacroExpansionHover;\!0;org.eclipse.cdt.ui.CSourceHover;Shift;org.eclipse.cdt.ui.AnnotationHover;\!0;
/instance/org.eclipse.cdt.ui/semanticHighlighting.macroSubstitution.enabled=true
/instance/org.eclipse.cdt.ui/c_braces=0,116,0
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.internal.ui.text.doctools.doxygen.single=156,176,197
/instance/org.eclipse.cdt.ui/content_assist_category_order=org.eclipse.mylyn.cdt.ui.parserProposalCategory\:65535\u0000org.eclipse.cdt.ui.templateProposalCategory\:1\u0000org.eclipse.cdt.ui.parserProposalCategory\:2\u0000org.eclipse.cdt.ui.helpProposalCategory\:3\u0000org.eclipse.cdt.ui.textProposalCategory\:65539\u0000
/instance/org.eclipse.cdt.ui/semanticHighlighting.namespace.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.staticField.color=118,130,107
/instance/org.eclipse.cdt.ui/semanticHighlighting.enumerator.color=144,36,163
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.ui.outline.groupincludes=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.problem.enabled=true
\!/=
/instance/org.eclipse.cdt.ui/semanticHighlighting.localVariableDeclaration.color=0,128,159
/instance/org.eclipse.cdt.ui/semanticHighlighting.class.bold=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.namespace.bold=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.method.color=67,106,0
/instance/org.eclipse.cdt.ui/semanticHighlighting.staticField.italic=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.globalVariable.color=145,105,0
/instance/org.eclipse.cdt.ui/c_numbers=144,36,163
/instance/org.eclipse.cdt.ui/editor_folding_default_headers=false
/instance/org.eclipse.cdt.ui/c_numbers_bold=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.staticMethod.color=125,130,65
/instance/org.eclipse.cdt.ui/pp_header_bold=true
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.ui.outline.groupnamespaces=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.globalVariable.italic=false
/instance/org.eclipse.cdt.ui/c_string=0,0,255
/instance/org.eclipse.cdt.ui/c_type=149,138,0
/instance/org.eclipse.cdt.ui/hoverModifierMasks=org.eclipse.cdt.ui.BestMatchHover;0;org.eclipse.cdt.debug.internal.ui.editors.DebugTextHover;0;org.eclipse.cdt.ui.ProblemHover;0;org.eclipse.cdt.ui.CDocHover;0;org.eclipse.cdt.ui.CMacroExpansionHover;0;org.eclipse.cdt.ui.CSourceHover;131072;org.eclipse.cdt.ui.AnnotationHover;0;
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.internal.ui.text.doctools.doxygen.multi_italic=true
/instance/org.eclipse.cdt.ui/asm_directive=0,116,0
/instance/org.eclipse.cdt.ui/sourceHoverBackgroundColor=228,242,218
/instance/org.eclipse.cdt.ui/semanticHighlighting.field.enabled=true
/instance/org.eclipse.cdt.ui/c_default=0,116,0
/instance/org.eclipse.cdt.ui/sourceHoverBackgroundColor.SystemDefault=false
/instance/org.eclipse.cdt.ui/spelling_user_dictionary_encoding=
/instance/org.eclipse.cdt.ui/c_keyword=0,116,0
/instance/org.eclipse.cdt.ui/content_assist_parameters_foreground=0,116,0
/instance/org.eclipse.cdt.ui/c_operators=0,0,0
/instance/org.eclipse.cdt.ui/content_assist_proposals_foreground=0,116,0
/instance/org.eclipse.cdt.ui/c_comment_task_tag=80,148,147
/instance/org.eclipse.cdt.ui/semanticHighlighting.label.underline=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.function.color=64,64,0
/instance/org.eclipse.cdt.ui/scalability.reconciler=false
/instance/org.eclipse.cdt.ui/editor_folding_default_inactive=false
/instance/org.eclipse.cdt.ui/spelling_locale_initialized=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.typedef.color=155,113,0
/instance/org.eclipse.cdt.ui/c_single_line_comment_italic=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.methodDeclaration.color=67,106,0
/instance/org.eclipse.cdt.ui/semanticHighlighting.staticMethod.italic=false
/instance/org.eclipse.cdt.ui/scalability.numberOfLines=10000
/instance/org.eclipse.cdt.ui/spelling_ignore_string_literals=true
/instance/org.eclipse.cdt.ui/closeBrackets=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.localVariable.enabled=true
/instance/org.eclipse.cdt.ui/stickyOccurrences=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.enum.bold=true
/instance/org.eclipse.cdt.ui/content_assist_parameters_background=249,252,247
/instance/org.eclipse.cdt.ui/semanticHighlighting.parameterVariable.color=0,80,159
/instance/org.eclipse.cdt.ui/semanticHighlighting.label.bold=true
/instance/org.eclipse.cdt.ui/pp_header=0,47,255
/instance/org.eclipse.cdt.ui/semanticHighlighting.macroSubstitution.color=170,85,0
/instance/org.eclipse.cdt.ui/semanticHighlighting.macroDefinition.underline=false
/instance/org.eclipse.cdt.ui/content_assist_disabled_computers=org.eclipse.cdt.ui.parserProposalCategory\u0000org.eclipse.cdt.ui.textProposalCategory\u0000
/instance/org.eclipse.cdt.ui/semanticHighlighting.staticMethod.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.typedef.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.functionDeclaration.enabled=true
/instance/org.eclipse.cdt.ui/scalability.detect=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.externalSDK.bold=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.staticField.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.methodDeclaration.strikethrough=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.globalVariable.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.typeParameter.enabled=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.function.bold=false
/instance/org.eclipse.cdt.ui/content_assist_proposals_background=249,252,247
/instance/org.eclipse.cdt.ui/semanticHighlighting.enumerator.bold=false
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.ui.editor.UseStructuralMode=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.macroDefinition.color=170,85,0
/instance/org.eclipse.cdt.ui/semanticHighlighting.enum.color=144,36,163
/instance/org.eclipse.cdt.ui/semanticHighlighting.field.color=36,147,108
/instance/org.eclipse.cdt.ui/org.eclipse.cdt.internal.ui.text.doctools.doxygen.single_italic=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.label.color=196,0,0
/instance/org.eclipse.cdt.ui/editor_folding_default_structures=false
/instance/org.eclipse.cdt.ui/semanticHighlighting.typedef.bold=true
/instance/org.eclipse.cdt.ui/semanticHighlighting.typeParameter.color=136,93,59
/instance/org.eclipse.cdt.ui/c_single_line_comment=149,186,185
/instance/org.eclipse.cdt.ui/semanticHighlighting.parameterVariable.enabled=true
/instance/org.eclipse.cdt.ui/markOverloadedOperatorsOccurrences=true

 

Можете поиграться, потом оставить только нужные вам строки semanticHighlighting. Мою цветовую схему прошу не критиковать, все галстуки на вкус разные ;)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Aaron сказал:

придётся вам самим создать workspace.epf

Необязательно такое имя (насколько знаю). Я например просто пишу "settings_2706_NotePad_PP_02.epf", а потом импортирую эти настройки (этот файл). Импортировать нужно выбрав соотв. значок в левом нижнем углу окна "Preferences" (в меню "Window->Preferences").

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...