安装lsp+cquery的问题

各位大神们:

我按照github上的说明安装了cquerylsp-mode,但是使用的时候按照cquery wiki上的说法执行M-x lsp-capabilities却提示我:

No language server is associated with this buffer

开始我以为是默认的配置只支持.cpp文件,但我分别在.c.cpp.cc文件做了尝试,都是这个效果。请问我是哪里配置的不正确?

需要编译或安装 server

(setq cquery-executable "/path/to/cquery/build/release/bin/cquery")
;; ;; Arch Linux aur/cquery-git aur/cquery
;; (setq cquery-executable "/usr/bin/cquery")
;; ;; Log file
;; (setq cquery-extra-args '("--log-file=/tmp/cq.log"))
;; ;; Initialization options
;; (setq cquery-extra-init-params '())

确保这个进程在运行 (pgrep -a cquery)。另外检查 /tmp/cq.log 日志文件

我记得以前wiki上有个用use-package的配置,现在找不到了,是否被edit了?当时配置里确实包含了(setq cquery-executable "/path/to/cquery/build/release/bin/cquery")pgrep应该是没有cquery。

主要按照wiki上查询环境,我运行了两个指令:

M-x lsp-capabilities
M-: xref-backend-functions

输出明显都不对,感觉上是lsp相关的东西没正确启动

这个在楼上的博客里有

我应该是看过这个博客,但是似乎没发现有什么操作是我遗漏的。。。

Sorry,还是阅读wiki的时候粗心了,上面要求load文件到buffer后执行M-x lsp-cquery-enable,我没有操作。。。

我增加了两行配置自动执行了:

  (add-hook 'c-mode-hook 'lsp-cquery-enable)
  (add-hook 'c++-mode-hook 'lsp-cquery-enable)

本人elisp不精,但是感觉cquery.el里面好像已经增加了hook,不知道是否理解有误,有无大神帮忙解读一下:

;; ---------------------------------------------------------------------
;;  Register lsp client
;; ---------------------------------------------------------------------

(defun cquery--make-renderer (mode)
  `(lambda (str)
     (with-temp-buffer
       (delay-mode-hooks (,(intern (format "%s-mode" mode))))
       (insert str)
       (font-lock-ensure)
       (buffer-string))))

(defun cquery--initialize-client (client)
  (dolist (p cquery--handlers)
    (lsp-client-on-notification client (car p) (cdr p)))
  (lsp-provide-marked-string-renderer client "c" (cquery--make-renderer "c"))
  (lsp-provide-marked-string-renderer client "cpp" (cquery--make-renderer "c++"))
  (lsp-provide-marked-string-renderer client "objectivec" (cquery--make-renderer "objc")))

(defun cquery--get-init-params (workspace)
  `(:cacheDirectory ,(file-name-as-directory
                      (expand-file-name cquery-cache-dir (lsp--workspace-root workspace)))
                    ,@cquery-extra-init-params)) ; TODO: prog reports for modeline

;;;###autoload (autoload 'lsp-cquery-enable "cquery")
(lsp-define-stdio-client
 lsp-cquery "cpp" #'cquery--get-root
 `(,cquery-executable ,@cquery-extra-args)
 :initialize #'cquery--initialize-client
 :extra-init-params #'cquery--get-init-params)

没加mode hook

(lsp-provide-marked-string-renderer client "c" (cquery--make-renderer "c")) 等是用于渲染LSP的 MarkupContent等的

lsp-cquery-enable 现在已经不存在了吧

我现在怎么找不到lsp-capabilities 这个函数。。。

请问下,如何运行 cquery 呢,我发现我的 cquery-executable 已经设置正确了,但emacs还是提示找不到 cquery, pgrep -a cquery 发现什么都没有,先谢大佬!!!