推荐入坑TabNine

因为切换到 doom 了,还没来得及迁移这部分配置

master分支上还能找到

2 个赞

TabNine 光启动,什么都没干就吃掉了我1.2G 内存。还好我有32G内存 :grinning:
不过效果是真不错,配合猫哥的Nox使用,很流畅。

使用体验:
用了一段时间TabNine, 感觉他不仅在写代码的时候方便,而且在写英文文档的时候也非常好用,用久了他基本都猜到你要打什么单词,不断tab ,爽到飞起。

1 个赞

使用了下这个插件,发现有两个不太舒服的地方:(1)出来的补全默认是使用 M-1 M-2 etc 来进行选择的,怎么设置下使用使用数字就选中补全,比如 1 2 etc 等。(2)tab 键好像没有作用,能不能想 auto-complete 和 company 一样可以进行循环选择,按一次 tab 键,自动进行选择下一个补全。

我是绑定了一个“TAB” 按键到 命令company-complete-selection 上就可以用Tab 来选择了。
我是比较喜欢用M-1 ,M-2 来进行选择的,如果你要用1,2,3 来选择的话,那你就没法在输入的词中加入数字了。

感谢,你说的也是。之前 aboabo 就专门设定过 company 补全使用数字进行选 择。但也确实存在你说的输入数字匹配的一个问题。我还是使用 company-tabnine 默认的吧。使用其它的可能冲突了。

使用过程非常卡顿。系统 manjaro, emacs28. 刚打开 Emacs 的时候使用感觉很 流畅,但是后面在使用过程中感觉非常卡顿了。

那是里内存不够了吧,哈哈哈哈

这个问题反复复现了好几次。重新开启 emacs , 显示内存 8G(总共16G),此时补全很柳城,但是当 内存达到13G+之后在用就非常卡顿。按道理还有几个G 还不够。这个消耗内存这么大。

(defun my-company-mode-hook ()
  (define-key company-active-map [tab] #'company-complete-selection))

(add-hook 'company-mode-hook #'my-company-mode-hook)

@aqua0210 @fu123456 我是这么解决输入数字的:用正则表达式检测输入的内容,如果是常规的数字和日期的格式,就不触发数字选择待选项的功能。

(defun ora-company-number ()
  "Forward to `company-complete-number'.

Unless the number is potentially part of the candidate.
In that case, insert the number."
  (interactive)
  (let* ((k (this-command-keys))
         (re (concat "^" company-prefix k))
         (is-only-number-re "^[0-9]+.*"))
    (if (or (cl-find-if (lambda (s)
                          (string-match re s))
                        company-candidates)
            (string-match is-only-number-re company-prefix)
            (> (string-to-number k) (length company-candidates)))
        (self-insert-command 1)
      (company-complete-number (string-to-number k)))))

参考了您的配置,出现了以下问题,有办法解决吗?

Company: An error occurred in auto-begin
Company: backend company-capf error "request cancelled" with args (candidates sources)

抱歉,没看出来你错误信息,你补充下你咋写的?

我使用的doom的内置module swift init.el 配置

:lang 
 (swift 
  ;;+lsp
  )

注释了lsp特性,重新编译,问题还在。

static func AllfilesOf(target:PBXTarget, srcPath:Path) -> [Path] {
        var srcfiles:[Path] = []
        //头文件+宏文件
        var headers:[Path] = []
       //此时输入hea,不提示headers全名变量
       head
}

以上问题,都是在输入变量名时有出现的。 . 点语句补齐是正常的。

不是呀,这个帖子不是在讲 TabNine 么。你到底想问什么

关于 company-tabnine 我直接就把 company-tabninecompany-capf 放到一起了,我不确定 Doom 是否像 Spacemacs 对 company-backends 有什么 hack

(setq company-backends '(company-files
                           (company-capf :with company-tabnine :separate)
                           (company-dabbrev-code company-keywords)
                           company-dabbrev
                           company-tabnine
                           company-ispell))

找到问题了,是swift lsp server导致的。

暂时只能手动清理缓存来解决问题:

(lsp-completion--clear-cache t)