你看下这个字符串是不是来自 smartparens
这个包有点功能,但是自动补齐括号这种功能我觉得特别烦
你看下这个字符串是不是来自 smartparens
这个包有点功能,但是自动补齐括号这种功能我觉得特别烦
估计你是用了延迟加载的功能?在lsp-cquery-enable之前强制(require 'company-lsp)
试试?
字符串应该是来自这个包,但是把这个包exclude之后,提示的message没有了,但是补全的状态是一样的,还是被截断。
这个好像没什么效果,我是按照 @MaskRay 的配置抄了一个layer,用use-package
加载的
二分法,专治疑难杂症。
我现在的水平只能抄抄配置,二分法什么的根本不知道从哪里下手
不需要二分,这个情况我见过,是company-lsp的snippet支持没有开启导致的。
原因是(require 'company-lsp)
发生在(lsp-cquery-enable)
之后,没有把snippet的支持传给cquery。cquery在客户端不支持snippet的情况下对于任何函数都只补全左括号。
把你的cquery和company-lsp配置贴上来看看,按我之前说的应该是可以解决的。
(add-hook 'c-mode-common-hook 'lsp-cquery-enable)
这句改成
(add-hook 'c-mode-common-hook
(lambda ()
(require 'company-lsp)
(lsp-cquery-enable)))
修改了之后没有效果。。
去掉这一行
company-lsp-enable-snippet nil
这次可以了,需要同时实现上面两个修改才能正常。我看参数说明以为company-lsp-enable-snippet
只是不展开yas-snippet
的东西,是理解错误了吗?
另外还有一个问题,每次输入#
的项目,都会弹出头文件的自动补全,但有的时候如#define
和#if
这种是不需要进行头文件补全展开的,而且每次弹出补全列表之前都会卡很久,所以像输入
#define MAX_BUFFER_SIZE 1024
这种东西时会变得非常困难。。。
snippetSupport 为 false 则遇到第一个 placeholder 结束(tri-state)
Sorry, 我有点不太明白, 这个链接是修复问题的PR吗? 还是本来期待的行为就是以前那样的?
这里有个概念没说明白的地方。company-lsp的snippet指的是展开LSP返回的snippet,而不是yasnippet自带的snippet。你打开后应该就看到cquery函数补全的效果了,也就是readme截图里的效果。之所以提到yasnippet是因为使用了yasnippet来实现这个功能。
还有一个问题是, 当company找不到和输入相匹配的补全项时, 会弹出一个默认的补全列表. 我期望的效果是找不到匹配的内容就不要弹出东西了, 有办法配置成这样吗?
最近修了几个bug,更新一下看看?
我是刚刚在github
上更新的cquery
, 通过spacemacs
在melpa
上更新的lsp-mode
company-lsp
等包, 依然有前面提到的问题, 这里是个演示:
我最主要的问题是, 一旦在一个稍微大一些的工程里面进行这种操作, 弹出列表之后emacs会变得非常的卡, 让我很难受…
更新一下状态: 将上面几个包更新过后, 不设置异步补全 (;; (setq company-lsp-async t)
) 的时候emacs卡顿的问题没有了, 打开这个注释后才会卡顿. 更新之前是同步就卡, 异步更卡… 我的系统是装在移动硬盘里的, 不知道是不是补全的时候会大量操作硬盘读写
有可能自动补全这么受欢迎的原因之一是绝大多数人打字太慢了...
懒惰是程序员的优良品德, 能按3个键就完成的事情我绝对不会按4个…
主要是怕打错