Я использую стандарт (поставленный) режим C++ Emacs, но у меня есть легкий зуд, что я надеюсь царапаться. Как я пошел бы о надлежащем выделении типов в sizeof и бросках в C++?
Например:
Бросок
Type * pointer = reinterpret_cast <Type *> (original);
Sizeof
std::cout << sizeof (Type) << "\n";
Добавьте эти выражения в свой .emacs
или оцените их с помощью M -:
.
Sizeof (это проще из два случая)
Регулярное выражение выделяет любую комбинацию (обозначенную выражением в квадратных скобках [...]
; относительно синтаксиса см. примечание ниже) буквенно-цифровых символов, пробелов и звездочки в круглых скобках, которым предшествует sizeof
.
(font-lock-add-keywords 'c++-mode
'(("\\<sizeof[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
1 font-lock-type-face t)))
Число 1
указывает emacs выделять только первое подвыражение (отмеченное \\ (... \\)
) с помощью лица font-lock-type-face
; t
означает переопределение любого предыдущего выделения.
Вы можете увидеть и изменить доступные начертания с помощью Mx customize group [RET] font-lock-faces [RET]
.
C ++ слепки стилей
I ' m не уверен, какой тип имени вы хотите выделить - «оригинальное» или имя, в которое нужно преобразовать. Этот маркер отмечает оба:
(font-lock-add-keywords 'c++-mode
'(("\\<[[:alnum:]]+_cast[[:space:]]*<\\([[:alnum:][:space:]*]+\\)>[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
(1 font-lock-type-face t)
(2 font-lock-type-face t))))
Опять же, '1 и
2` выбирают соответствующие подвыражения.
Обратите внимание: Регулярные выражения для имен типов не полностью соответствуют синтаксису C ++. Например, emacs с радостью выделит бессмыслицу вроде sizeof (int * 32)
.
Кроме того, мое решение не принимает во внимание проблему, упомянутую Павлом в комментарии к вашему вопросу; что вы также можете использовать sizeof
для переменных, которые потребуют другого выделения. Я не думаю, что это возможно, за исключением реализации полного синтаксического анализатора C в коде блокировки шрифта.
и
2` выбирают соответствующие подвыражения.
Обратите внимание: Регулярные выражения для имен типов не полностью соответствуют синтаксису C ++. Например, emacs с радостью выделит бессмыслицу вроде sizeof (int * 32)
.
Кроме того, мое решение не принимает во внимание проблему, упомянутую Павлом в комментарии к вашему вопросу; что вы также можете использовать sizeof
для переменных, которые потребуют другого выделения. Я не думаю, что это возможно, за исключением реализации полного синтаксического анализатора C в коде блокировки шрифта.
и
2` выбирают соответствующие подвыражения.
Обратите внимание: Регулярные выражения для имен типов не полностью соответствуют синтаксису C ++. Например, emacs с радостью выделит бессмыслицу вроде sizeof (int * 32)
.
Кроме того, мое решение не принимает во внимание проблему, упомянутую Павлом в комментарии к вашему вопросу; что вы также можете использовать sizeof
для переменных, которые потребуют другого выделения. Я не думаю, что это возможно, за исключением реализации полного синтаксического анализатора C в коде блокировки шрифта.
sizeof
для переменных, которые потребуют другого выделения. Я не думаю, что это возможно, за исключением реализации полного синтаксического анализатора C в коде блокировки шрифта. t принять во внимание проблему, которую Павел указал в комментарии к вашему вопросу; что вы также можете использовать sizeof
для переменных, которые потребуют другого выделения. Я не думаю, что это возможно, за исключением реализации полного синтаксического анализатора C в коде блокировки шрифта.