在 VSCode 中找不到 'Show Call Hierarchy'

Can't find 'Show Call Hierarchy' in VSCode

当我右键单击一个函数时,没有 'Show Call Hierarchy' 或 'Peek Call Hierarchy' 任何选择。我的弹出菜单看起来像这样

然后我尝试在命令面板中键入 'Show All Hierarchy'。此命令确实存在,但在按回车键后仅给出 'No Result' window。

所以我去了键盘快捷键页面,它看起来像这样

我的问题是,

  1. 为什么我在弹出菜单中找不到 'Call Hierarchy',而每个在线教程都声称我应该在此时找到它。
  2. 键盘快捷键页面中的 'When' 字段是什么意思?我是否遗漏了 'CallHierarchyProvider'?

附加信息: VSCode 版本 1.60,安装了 C/C++ 和 Emacs Keymap 扩展。在 MacOS 和 Ubuntu 上都试过 VSCode,问题仍然存在。我当前查看的代码库是使用 CMake 配置的。

感谢任何帮助,谢谢。

当将类似的功能添加到 VSCode 发行说明或任何其他文档时,您应该假设它最初仅适用于 JavaScript/TypeScript、

Visual Studio Code show call hierarchy

这很常见,因为 VSCode 只是一个提供基础结构(上下文菜单和其他可视元素)的编辑器,但实际的语言功能是由各个语言扩展及其语言服务器提供的。

在您的情况下,C++ 扩展及其语言服务器可能远远落后于支持此类功能。

对我来说,clangd vscode 扩展赋予了这种能力,而且它似乎集成得很好,足以取代基本的智能感知。您需要禁用该功能的默认智能感知。

但正如评论中提到的,“显示层次结构”支持列在他们的积压工作中,预计将来会与默认的 c++ intellisense 一起使用。

在使用 gcc 编译时使用 clangd 可能很烦人 - 一些警告和错误实际上并未同步。这在 c++2a 特性支持下非常明显