Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
cpp Added new C++20 keywords Jan 10, 2018
img Better mode line picture May 31, 2016
.travis.yml Makefile and tests follow Melpa rules Jun 5, 2016 Typos Contributing Jun 5, 2016
Makefile Tests are more generic Jun 14, 2016 Added new C++20 keywords Jan 10, 2018
modern-cpp-font-lock-setup-test.el Tests rely only on modern-cpp-font-lock-mode Jun 15, 2016
modern-cpp-font-lock-test.el Tests rely only on modern-cpp-font-lock-mode Jun 15, 2016
modern-cpp-font-lock.el Added new C++20 keywords Jan 10, 2018

License GPL 3 MELPA Build Status

Donate Paypal

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.


modern-c++-font-lock-mode is enabled:

modern-c++-font-lock-mode is disabled:

Using GNU Emacs 24.5.1 and CC Mode version 5.32.5.



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)


(modern-c++-font-lock-global-mode t)


In your init Emacs file add:

(use-package modern-cpp-font-lock
  :ensure t)


Global setup

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]


C++ Language

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.

C++ standard library

Set to t (default value) to enable the following font lock options. Otherwise use nil:

  • modern-c++-stl-cstdint - Define the header <cstdint>

Mode line

When modern-c++-font-lock-mode is activated, mc++fl is displayed.


The Wiki is available:


Font-lock keywords are tested with the faceup package of Anders Lindgren.


Do not hesitate to ask questions or share suggestions.

Happy coding!