Yes, you can use the regex-based mode, but the difference in quality/helpfulness is pretty noticable. You get way more useful semantic info with supported languages like C/C++ and Python. Perhaps a few examples might help.
I use the vim-tagbar pluggin, which uses ctags. Here is what I get with Python:
Notice that we have classes and methods, imports, and even some privacy information.
Here is what I get for C++:
Notice that we have
- nesting of types within namespaces
- privacy info
- grouping of fields, methods, typedefs, etc
- type info
Here is what I get with Rust:

- No type, privacy, or namespacing info
- No nesting of definitions. For example notice that
derefis not listed underimpl Deref for E820Info. If there were multiple implementations ofDerefin this file, they would all be listed one after the other underfunctions. - The
typesandconstantsection also list associated items (e.g.Targetis the associated type ofDeref. - Two of the constants are actually not
const. Rather, they areextern static.
This view does not help me understand the layout of the code in this file at all. It also doesn't give a concise view of what fields, methods, etc each type or trait has. It doesn't have any notion of privacy or namespacing.

