从spacemacs迁移到DOOM;company-childframe by @tumashu

瞅了一眼配置, 看起来很不错.

1 个赞

刚才代码里面有一个二逼错误, 再更新一下试试 :joy:

稍等一会 现在不在电脑边

image

(setq company-tooltip-margin 0) 时会吞掉一个字

用起来暂时问题不大

前两天用了一下,输入过程中,候选列表更新的时候有明显的闪烁,mac上

可能是上面提到的bug引起的,因为我暂时先让frame显示,然后在调整它的大小和位置,所以有可能会闪烁,之后我会改成 先调整大小和位置,再让其显示,可能就不会闪烁了

https://lists.gnu.org/archive/html/bug-gnu-emacs/2018-01/msg00105.html5 打这个patch了吗

打了,没这个不能显示

是不是窗口大小有变化的时候闪烁?

没仔细看,需要仔细看才行,反正输入的时候窗口位置和内容是变化的

暂时先不要管这个问题,等emacs下一个测试版发布后,再处理这个问题,

回头我试一下你最新版。

另外,每个候选项前面可以显示个图标了,标识一下候选项的类型

1 个赞

这个问题已经解决

1 个赞

这个需要 company 支持,如果 company 没有这个feature, company-childframe 也不会添加 :-)

related issue

cursor位于行首的时候会有问题,因为(point)没有包含行数的信息,导致child frame出现在上一行末

估计要加一个(if (- (current-column) company-tooltip-margin) 判断 另外可能要用line/column替代point

BTW, 建议(min-size '(1 . (+ company-tooltip-minimum-width 1)))

已经更新,我暂时先不支持 company-tooltip-margin 了,以后慢慢研究这个。

可以这样 并不可以。。会有edge case的bug。。。 > 0 的company-tooltip-margin可以防止org-indent-modecompany-ispell冲突。。不过我还是暂时关了org-indent-mode好了。。

(defun company-childframe--update ()
  "Update contents of company tooltip."
  (let* ((height (min company-tooltip-limit company-candidates-length))
         (lines (company--create-lines company-selection height))
         (contents (mapconcat #'identity lines "\n")))
    (if (> (- (car (posn-col-row (posn-at-point))) company-tooltip-margin) -1)
        (if (> (- (car (posn-col-row (posn-at-point))) (length company-prefix)) 0)
            (company-childframe--update-1 contents (- (point) (length company-prefix) company-tooltip-margin))
          (company-childframe--update-1 contents (- (point) company-tooltip-margin)))
      (company-childframe--update-1 contents (- (point) company-tooltip-margin)))))

边缘测试似乎除了踩雷法,没其他好方法

1 个赞

emacs用今天最新版, company-childframe用github上今天上午版, mac上会出现补全窗口低一行, 就是和光标之间隔了一行. 输入过程中, 大约百分之三四十的概率出现