Syntax highlighting support for "Modern C++" - until C++20 and Technical Specification. This package aims to provide a simple highlight of the C++ language without dependency.
It is recommended to use it in addition with the c++-mode
major mode for extra highlighting (user defined types, functions, etc.) and indentation.
With modern-c++-font-lock-mode
:
Using GNU Emacs 27.0.50
and CC Mode version 5.33.2
.
modern-cpp-font-lock
is available on the major package.el
community maintained repo - MELPA.
You can install it with the following command:
M-x package-install
[RET] modern-cpp-font-lock
[RET]
In your init Emacs file add:
(add-hook 'c++-mode-hook #'modern-c++-font-lock-mode)
or:
(modern-c++-font-lock-global-mode t)
use-package
In your init Emacs file add:
(use-package modern-cpp-font-lock
:ensure t)
Download modern-cpp-font-lock.el
into a directory of your load-path. Place the following lines in a suitable init file:
(require 'modern-cpp-font-lock)
(modern-c++-font-lock-global-mode t)
modern-c++-font-lock-mode
will be activated for buffers using the c++-mode
major-mode.
For the current buffer, the minor-mode can be turned on/off via the command:
M-x modern-c++-font-lock-mode
[RET]
You can modify the following lists to recognize more words or set it to nil
to partially disable font locking:
modern-c++-attributes
- [[deprecated]]
, [[noreturn]]
, etc.modern-c++-keywords
- if
, constexpr
, noexcept
, etc.modern-c++-operators
- ...
modern-c++-preprocessors
- #define
, __LINE__
, __cplusplus
, etc.modern-c++-types
- bool
, char
, double
, etc.Set to t
(default value) to enable the following options or otherwise to nil
:
modern-c++-literal-boolean
- false
, true
modern-c++-literal-integer
- 0b101010
, 18446744073709550592LLU
, 0XdeadBABEu
, etc.modern-c++-literal-null-pointer
- nullptr
modern-c++-literal-string
- R"xyz()")xyz"
, L"hello\ngoodbye"
, "abcd"
, etc.Configure the following list to customize font locking for literal integers:
modern-c++-literal-binary-prefix-face
modern-c++-literal-binary-infix-face
modern-c++-literal-binary-suffix-face
modern-c++-literal-octal-prefix-face
modern-c++-literal-octal-infix-face
modern-c++-literal-octal-suffix-face
modern-c++-literal-hex-prefix-face
modern-c++-literal-hex-infix-face
modern-c++-literal-hex-suffix-face
modern-c++-literal-dec-infix-face
modern-c++-literal-dec-suffix-face
Set to t
(default value) to enable the following font lock options. Otherwise use nil
:
modern-c++-stl-cstdint
- Define the header <cstdint>
When modern-c++-font-lock-mode
is activated, mc++fl
is displayed.
The Wiki is available: https://github.com/ludwigpacifici/modern-cpp-font-lock/wiki
Font-lock keywords are tested with the faceup package of Anders Lindgren.
If you find a bug, please check if you can reproduce with c++-mode
only. If it is the case, send your bug upstream to CC Mode
Do not hesitate to ask questions or share suggestions.
Happy coding!