关于折叠代码,怎么把#ifdef xxxx #endif添加进入

hs-hide-blockhs-show-block并不支持#ifdef xxxx #endif

怎么破局。

tree-sitter 也许可以

不是很好办诶,我看hs-special-modes-alist感觉都是单对单的开始结束匹配,你这里只是一个情况,加进去是可以关闭 但是如果碰到这种代码就不好处理了

#ifdef A
code here
#elifdef B
code here
#else
code here
#endif
(use-package hideif
  :ensure nil
  :after evil
  :hook (c-mode-common . (lambda ()
                           (hide-ifdef-mode)
                           (define-key evil-normal-state-map (kbd "zf") 'hide-ifdefs)
                           (define-key evil-normal-state-map (kbd "zF") 'show-ifdefs)
                           (define-key evil-normal-state-map (kbd "zs") 'hif-show-all))))
1 个赞

可以这么写的吗?我一直以为 elseifdef 要写成

#elif defined(B)

可以試試看我開發的 ts-fold, 他是使用 tree-siter.

C++23 才有的,ANSI C 的话不要这么写。

https://en.cppreference.com/w/cpp/preprocessor/conditional