c++ stl容器没有补全

就和题目里面所描述的一样,但自己写a.push_back()这种之后也可以通过编译并且正常运行,同时#include这种也无法进行补全,尖括号也不行,不知道是为什么。 下面是配置文件

(use-package company
  :ensure t
  :init (global-company-mode)
  :config
  (setq company-minimum-prefix-length 1) ; 只需敲 1 个字母就开始进行自动补全
  (setq company-tooltip-align-annotations t)
  (setq company-idle-delay 0.0)
  (setq company-show-numbers t) ;; 给选项编号 (按快捷键 M-1、M-2 等等来进行选择).
  (setq company-selection-wrap-around t)
  (setq company-transformers '(company-sort-by-occurrence))) 

类似于上图最简单的一个程序,写头文件的时候也没有补全,a.push_back()这种输入.之后不会出现补全选项,但自己写了之后可以正常运行编译

修改建议:

  1. 配置代码不要贴图,直接帖源码。
  2. 标题改为:
- 利用emacs写c++程序,使用stl容器没有补全?
+ c++ stl 容器没有补全?

应该是std::vector吧,这还能正常编译?

弄错了,这个是当时为了展示问题写的,正常运行的那个有using namespace std;的

company只是个补全框架,要补全stl的函数这类,得有个相应的company-backend(如emacs-lisp-mode的company-elisp?),lsp-mode或eglot是一种这类backend。

您好,您说的lsp-mode我安装过了,具体在下面,您看一下有什么问题吗?

(use-package lsp-mode
 :hook ((lsp-mode . lsp-enable-which-key-integration)
	 (python-mode . lsp-deferred)
	 (c-mode . lsp-deferred)
	 (c++-mode . lsp-deferred))
 :commands (lsp lsp-deferred))