说实话,让 mini-frame 使用 poshandler 也只能是凑合使用,毕竟 poshandler 是专门为 posframe 设计的。
目前[selectrum + mini-frame + posframe]的表现已经很满意了,瑕不掩瑜。谢谢!
顺手也测试了posframe-poshandler-p0.5p0-to-f0.5p1
在vertico-posframe和ivy-frame中的表现:
vertico-posframe主要还是上面提到的问题3,暂时用不了这个posframe了;
ivy-frame表现很稳定,没出现什么问题(如下图)。
另外,顺便再请教一个问题 :
我在 Window Frame Parameters 找了上图红圈两个参数,但是都不能成功去掉ivy-posframe的灰色边框,这是啥情况呢?我配置写错了吗?
试试最新的 vertico-posframe,应该可以了
运行 posframe-delete-all 之后,再看看有没有效果。
这个最新版的 posframe 试着修复了。
吃个饭的时间就修复好,大佬高效,都没问题了。
M-x posframe-delete-all
之后还是不行,我尝试设置背景色为蓝色是有效的,说明这样写在 (use-package …) 里的逻辑或用法没问题。麻烦您看看,谢谢!
暂时没思路怎么处理,先搁置吧
我突然发现,你应该设置face: vertico-posframe-border 来改变border的颜色
看到readme的vertico-posframe-parameters
就一直在尝试添加一些参数,都忘了M-x customize-face
找一找face。
ivy-posframe和vertico-posframe都通过这个方法设置好了,谢谢大佬!
新发现了一个问题,就是在左侧window激活posframe并输入内容时posframe会立即跑回右侧window那里——白天测试时没输入内容,所以没发现这个问题:
而ivy-posframe则表现就好,同情况下输入内容时posframe是左移使其右缘与emacs右缘重合:
题外话:同样是输入input,ivy搜出不少结果而vertico和selectrum却一个都没,这是什么情况呢?
我这边 vertico-posframe 没有发现这个问题, 不过我试着修复了一下,也许有用。
已经没有这个问题了,谢谢大佬!
@tumashu 大佬,打扰了!我想实现 “当posframe从下往上展开时,即当高亮行下方空间不够时posframe会上移至高亮行上方,M-x prompt 和 vertico candidates结果反过来排列”。
第一步是“posframe从下往上展开”,请问 “当posframe从下往上展开时” 这个判断语句该怎么写呢?posframe里有没有独立的一个函数是表示“从下往上展开”的?(注:posframe是posframe-poshandler-point-window-center
)
第二步是“结果反过来排列”,解决办法是vertico-reverse-mode
或:
自己仿照已经有的 poshandler 写一个 poshandler 函数吧,这也是 poshandler 机制实现的初衷。
你把获取的座标的 y 值,减去 posframe 的高度,不就实现了吗?
这个很好判断, poshandler返回的座标是 posframe 的左上角的座标,你用它的 y 值,和 (posn-x-y (posn-at-point)) 获得的 y 比较大小,不就知道菜单是上弹还是下弹了吗? 不过你如果 elisp 不太熟悉,就不建议折腾了。
直接试了vertico-reverse-mode
,发现跟vertico-posframe同用时并不起效,只是把C-n和C-p调过来,candidates展示不变。不折腾了,谢谢大佬提示!
在 gccemacs 29 没有,但是 Emacsmacport(emacs 27) 有这个问题。按照你们的讨论,我这里的问题也差不多解决了。
不是,只是定义成face, 方便theme添加支持
翻了一下 posframe.el 发现了这个利器,可玩性飙升 膜拜大佬!
现在用户可以根据上述例子的规则自定义 poshandler 了吗?但是发现后面 defalias 了很多 poshandler,这是所有弹窗方式都包含了?
自己写了一下p0p0-to-p0p0,发现有定义好的posframe-poshandler-point-top-left-corner
,立马用上。现在离 “实现弹窗样式与compang-mode保持一致” 这一目标又近了一步,啊哈哈哈。
顺便再请教一下:posframe的 width 可以根据 candidate 长短而自动变化吗?像company-mode那样自动变宽度。(不好意思,近日问了很多问题,真是麻烦了 )