Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

126 Commits

Repository files navigation

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

Keyword and regex-based syntax highlighting for C and C++11..26 in Vim.

The syntax files provide highlighting of:

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

screenshotleft: default cpp.vim syntax file, right: this plugin

Difference to vim-cpp-enhanced-highlight

Both syntax files are based on vim-cpp-enhanced-highlight with the following modifications:

  • The C++ keywords virtual, override, final, inline, explicit and export are standard C++ statements and not types and are therefore highlighted using the highlight group Statement.
  • Highlighting of library functions is purely regex-based.
  • User-defined function templates and class/struct 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)letg:cpp_function_highlight=0" Enable highlighting of C++11 attributesletg:cpp_attributes_highlight=1" Highlight struct/class member variables (affects both C and C++ files)letg:cpp_member_highlight=1" Disable highlighting of type names in class, struct, union, enum, using, and" concept declarations (affects both C and C++ files)letg:cpp_type_name_highlight=0" Highlight operators (affects both C and C++ files)letg:cpp_operator_highlight=1" Put builtin C and C++ types (int, long, double, auto, bool etc.) under Vim's" highlight group 'Statement' (results in a simpler syntax highlighting)letg:cpp_builtin_types_as_statement=1" Put all standard C and C++ keywords under Vim's highlight group 'Statement'" (affects both C and C++ files)letg:cpp_simple_highlight=1

The last option changes the highlighting of the following keywords:

  • C: static, register, auto, volatile, extern, const, inline, __attribute__, restrict, alignas, alignof, static_assert, noreturn, thread_local, struct, union, enum, case, default
  • C++: class, typename, template, namespace, concept, mutable, constexprdecltype, consteval, constinit

Installation

$ cd~/.vim/pack/git-plugins/start
$ git clone https://github.com/bfrg/vim-c-cpp-modern

Note: The directory name git-plugins is arbitrary, you can pick any other name. For more details see :help packages.

License

Distributed under the same terms as Vim itself. See :help license.

About

Extended Vim syntax highlighting for C and C++ (C++11..26)

Topics

Resources

Stars

609 stars

Watchers

16 watching

Forks

Releases

Packages

Contributors

Languages