vim-cpp-modern

by bfrg

Extended Vim syntax highlighting for C and C++ (C++11/14/17/20)

171 Stars 17 Forks Last release: Not found 84 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

vim-cpp-modern: Enhanced C and C++ syntax highlighting

Keyword and regex-based syntax highlighting for C and C++11/14/17/20 in Vim.

The syntax files provide highlighting of: - Common ANSI C keywords - C++ Standard Library namespaces, types, helper types, helper template variables, constants - C++ attributes - Latest C++20 language features like coroutines and concepts - Function declarations/definitions and function calls (basically all words followed by an opening parenthesis) - Optionally a simpler (less colorful) highlighting of standard C and C++ keywords

Difference to vim-cpp-enhanced-highlight

Both syntax files are based on vim-cpp-enhanced-highlight with a few modifications:

  • The C++ keywords
    virtual
    ,
    override
    ,
    final
    ,
    inline
    ,
    explicit
    and
    export
    are standard C++ statements and not types and are therefore put under the highlighting group
    Statement
    .
  • Highlighting of library functions is purely regex-based.
  • User-defined function templates or class members are not highlighted. Their regex'es are too complicated and slow, and fail too often.

Optional features

" Disable function highlighting (affects both C and C++ files)
let g:cpp_no_function_highlight = 1

" Enable highlighting of C++ attributes let g:cpp_attributes_highlight = 1

" Put all standard C and C++ keywords under Vim's highlight group 'Statement' " (affects both C and C++ files) let g:cpp_simple_highlight = 1

Installation

Copy both

c.vim
and
cpp.vim
into your
~/.vim/after/syntax
directory, or use your preferred plugin manager.

Issues

Vim tends to a have issues with flagging braces inside brackets as invalid syntax such as in the following example:

cpp
std::map<:pair int>, int> m;
m[{1, 2}] = 3;

As a workaround set

vim
let c_no_curly_error = 1
See also
:help ft-c-syntax
for further options.

License

Distributed under the same terms as Vim itself. See

:help license
.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.