再伪装一下
有哪位大佬知道minibuffer-prompt
怎么隐藏掉吗?
:poshandler-extra-info
(list :company-margin margin
:company-prefix-length (length company-prefix))
谢谢大佬提醒!不过看着上面的截图,好像posframe-poshandler-point-top-left-corner
+ 隐藏 结果数 和 minibuffer-prompt
就可以表现的跟company-mode一模一样了(前提是背景色需要统一),现在着手解决 “隐藏 结果数 和 minibuffer-prompt
” (上图和下图很接近了~)
(defun vertico-posframe--display (lines)
"Display LINES in posframe."
(let ((count (vertico--format-count))
(prompt (minibuffer-prompt))
(content (minibuffer-contents)))
(with-current-buffer (get-buffer-create vertico-posframe--buffer)
(add-hook 'window-selection-change-functions 'vertico-posframe--select nil 'local)
(setq-local inhibit-modification-hooks t
cursor-in-non-selected-windows 'box)
(erase-buffer)
(insert (propertize (concat count prompt) 'face 'minibuffer-prompt)
---------------------------------------------------------------------------------
content
(propertize " " 'face 'vertico-posframe-cursor)
"\n" (string-join lines)))
(with-selected-window (vertico-posframe-last-window)
(apply #'posframe-show
vertico-posframe--buffer
:font vertico-posframe-font
:poshandler vertico-posframe-poshandler
:background-color (face-attribute 'vertico-posframe :background nil t)
:foreground-color (face-attribute 'vertico-posframe :foreground nil t)
:border-width vertico-posframe-border-width
:border-color (face-attribute 'vertico-posframe-border :background nil t)
:override-parameters vertico-posframe-parameters
:refposhandler vertico-posframe-refposhandler
:hidehandler #'vertico-posframe-hidehandler
:lines-truncate t
(funcall vertico-posframe-size-function)))))
帅气帅气!成功伪装成了company-mode
,啊哈哈哈……除了增加fringe会导致awesome和posframe两词的间距增大,其他的就没啥区别了。
我是直接把(concat count prompt)
中的 count prompt
删掉了,不过这样方式不大好,package更新后就失效了要重新删掉。大佬方便时可以设置为一个可以 (setq ... count prompt... nil)
的函数吗?
或者有没有办法直接在init-file里 (put 'minibuffer-prompt 'disabled t)
、(setq minibuffer-prompt nil)
之类的写法?(这两句我试了都没用 )
感谢大佬一路耐心解答,请喝咖啡
把更改过得函数放到你自己的配置中,不就OK了
还可以这样,除了占地面积大就没啥问题了 谢谢大佬!
@tumashu vertico-posframe 很好用,谢谢!
遇到一个输入的问题,比如切换 Buffer 时,如果选择某个 Buffer 后,再按 C-a,输入点切换到 minibuffer 中了,而 posframe 的光标位置还是尾部。我想问的是,minibuffer 可以不输入提示么,只在 posframe 中编辑?
你没有理解这个包的工作方式,你一直在minibuffer中输入,posframe只是把minibuffer中的内容显示出来,它不做输入处理
你看到的minibuffer中的光标其实是一个带颜色的空格,假的
我的也有这个问题,激活 vertico-posframe
之后,minibuffer 左下角还有个小光标,如果能去掉这个小光标应该就能解决这个问题了。
这个posframe是不支持的,想实现需要mini-frame之类的包。对于两个地方显示不一致的问题,我会想想怎么处理,应该有办法
二呆大佬,posframe设置min-width为0使其自适应内容宽度,但配合marginalia使用时,会出现这个问题:首次激活vertico-posframe,宽度为图一,C-n 到最后一个candidate时宽度为图二。第二次之后激活vertico-posframe宽度都默认保持为图二了(即保持为最大的宽度),不能再缩小为图一。
解决办法,用(posframe-delete-all):
(defun vertico-posframe--hide ()
"Hide vertico buffer."
(when (posframe-workable-p)
(posframe-delete-all)))
您看看要不要改一下?另外,激活vertico-posframe后minibuffer还有个光标一闪一闪的,这个可以隐藏的吗?
试试新的代码吧,minibuffer 遮挡的相当严实
这个不建议这么设置,因为如果输入错误,导致没有选项,posframe 宽度会急剧缩小,闪瞎眼
竟然用了一块白板遮住了minibuffer 但是会遮盖到部分mode-line。非全屏化的情况下,移动emacs之后,这块白板还停留在原地……可不可以把minibuffer的光标、promopt、输入内容的前景色设置为emacs背景色?在vertico-posframe里再设置回原来的颜色。这样也能起到隐藏的作用,但是不知道会不会影响awesome-tray这样的mode-line。ivy-posframe就很稳啊,它是这么处理这类问题的?
确实,我设置为比较小的非零值,表现挺好的了。谢谢大佬!
另外,与meow-mode(normal模式,光标样式为box)共用时,会导致vertico-posframe残留光标(c那里),需要输入3个以上字符才能消失:(下图的vertico-posframe是昨天下午新commit前的版本)
好像在 selectrum + mini-frame + posframe 方案里,可以做到mini-frame作为输入框,posframe作为candidates显示框,两者是分离的。我试试能不能实现这个效果:(感觉vertico-posframe不够ivy-posframe稳,试试曲线救国~)
我这边没有这个问题,可能是你用的 emacs child-frame 实现有问题。
ivy-posframe 说白了,也是用个白白遮挡,只不过它的白板使用 overlay 机制