Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Better C++ SyntaxNew to Visual Studio Code? Get it now.

Better C++ Syntax

Jeff Hykin

|
7,984,034 installs
| (10) | Free
The bleeding edge of the C++ syntax
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Screen Shot 2022-02-11 at 12 01 19 PM

Sponsors

Easy pair programming with any IDE. Duckly enables you to talk, share your code in real-time, server and terminal with people using different IDEs.
Try it out for free


What does this extension do?

This will get you the bleeding-edge syntax highlighting for C++. Which means your theme will be able to color your code better. This used to be a fix, but then VS Code starting using it as the official source for C and C++ highlighting.

NOTE: The default VS Code theme does not color much. Switch to the Dark+ theme (installed by default) or use a theme like one of the following to benefit from the changes:

  • XD Theme
  • Noctis
  • Kary Pro Colors
  • Material Theme
  • One Monokai Theme
  • Winteriscoming
  • Popping and Locking
  • Syntax Highlight Theme
  • Default Theme Enhanced

How do I use it?

Just install the VS Code extension and the changes will automatically be applied to all relevent files.
Link: https://marketplace.visualstudio.com/items?itemName=jeff-hykin.better-cpp-syntax

Comparision (Material Theme)

compare

What is different from atom/language-c?

It fixes:

  • The issue of single quotes inside #error and #warning being highlighted when then shouldn't be
  • The issue of initilization functions only highlighting the first parenthese
  • The bug that treats the 'and' and 'or' operator as functions (instead of operators) when they are followed by ()'s
  • Old C99 function highlighting that broke the standard function highlighting
  • The failure of highlighting for the semicolon after namespaces
  • The missing operator overloading symbols
  • The failure to tag operator overloading functions as functions
  • The failure to tag implicit operator overrides
  • The marking of some %'s as invalid inside of strings https://github.com/atom/language-c/issues/289
  • The highlighting of namespaces with ::'s https://github.com/atom/language-c/issues/260
  • The issue of the C++ syntax depending on (and getting screwed up by) the C syntax
  • multiple inheritance https://github.com/atom/language-c/issues/245
  • And many many more issues (#318, #309, #270, #246, etc)

It adds:

  • Parameter highlighting
  • Highlighting of embedded assembly code (if you have an assembly syntax installed)
  • Function-pointer highlighting
  • Lambda highlighting
  • C++14 literal support (100'000ms)
  • Template definition syntax highlighting (including C++ 2020 syntax)
  • Better object identification
  • Improved scope resolution :: syntax
  • Highlighting of templated function calls aFunction<int>(arguments)
  • Additional specificity for many existing tags
  • Many other features

Like this extension?

  • You'll probably like this as well: My "Better Syntax" Megapack

Contributing

If you'd like to help improve the syntax, take a look at main/main.rb. And make sure to take a look at documentation/CONTRIBUTING.md to get a better idea of how the code works.

Planned future fixes/featues:

  • Add tagging for type-casting statements
  • Add tagging for custom types words
  • Better support for dereferenced/pointer tagging
  • Full C++ 2020 support (module imports, arrow return types, etc)
  • Improving template types

What if I see a highlighting bug?

Let me know! Post an issue on https://github.com/jeff-hykin/better-cpp-syntax I love regular expressions, and PR's are always welcome.

Did you write all of this youself?

The original JSON was taken from https://github.com/atom/language-c
The #error fix was taken from fnadeau's pull request here: https://github.com/atom/language-c/pull/251
@matter123 has written basically every major pull request, from simple bugfixes up to the entire textmate testing suite
Thanks @matter123!
The rest of the ruby is authored by @jeff-hykin

  • Contact us
  • Jobs
  • Privacy
  • Terms of use
  • Trademarks
© 2022 Microsoft