etags和imenu不识别 继承的C++类名

后来发现问题与导出宏无关,与继承类有关,问题修正一下。例如类声明class QuartcSession:

class QUIC_EXPORT_PRIVATE QuartcSession
    : public QuicSession,
      public QuartcSessionInterface,
      public QuicCryptoClientStream::ProofHandler {

QuartcSession不会被索引,但是第一个继承类QuicSession会索引到这里。 而真正的QuicSession声明是这个:

class QUIC_EXPORT_PRIVATE QuicSession : public QuicConnectionVisitorInterface,
                                        public StreamNotifierInterface,
                                        public QuicStreamFrameDataProducer {

但是etags索引不到这里,却会把QuicConnectionVisitorInterface索引到这个声明


原问题有误:

在看chromium中quic部分的代码,使用etags建索引
- class QuicFramerTest //普通类声明,都能识别。
- class **QUIC_EXPORT_PRIVATE** QuicFramer //这里加了一个导出宏,etags就不识别了。

我执行etags加了选项 --language=c++,看手册没找到什么选项能忽略这个宏定义。

我能用semantic-ia-fast-jump找到类,但那个比较慢,还是习惯用etags,大家有办法吗?

另外imenu索引也是这样。

用 lsp-imenu 吧

https://github.com/jacobdufault/cquery/wiki/Emacs#documentworkspace-symbol-search

或 lsp-ui-imenu