【求助】如何设置snails frame从光标处弹出(及讨论mac下XXX-posrame的bug)?

设置为“在光标处弹出”,当光标处于左上角时表现尚可。貌似 set-frame-postion 这个function设置的位置并不是很准?

snails只有居中弹出和helm style,没有光标处的选项。

最近在折腾弹窗 魔改了一下snails试试 :smile:

新版本的emacs 28、29 用child frame在全屏时没有问题了,不用设置 ns-use-native-fullscreen.

真的吗。28快发布,应该也稳定了,我删掉29,重新编译个新版28。macos下的child fame真够折腾的……谢谢半人马大佬~

我确信,28.0.60没有问题了

:sob: 我这边还是没什么改善,该有的问题一个没落下。环境:macos big sur 11.5.1GNU Emacs 28.0.60 (build 2, x86_64-apple-darwin20.6.0, NS appkit-2022.60 Version 11.5.1 (Build 20G80)) of 2021-10-31(brew install emacs-plus@28 --with-modern-vscode-icon)

问题依旧是,全屏下snails产生黑桌面(下图,需要猫大的全屏方案才能解决),非全屏下snails与posframe会有输入焦点冲突问题(emacs启动后先在全屏下激活一次snails才能解决):

handle-focus-out: Invalid function: (snails-quit #[128 "��\"��\"��" [apply posframe--redirect-posframe-focus #[128 "��\"��\"��" [apply blink-cursor--rescan-frames ignore nil] 5 nil nil] nil] 5 nil nil]) [2 times]

handle-focus-in: Invalid function: (snails-quit #[128 "��\"��\"��" [apply posframe--redirect-posframe-focus #[128 "��\"��\"��" [apply blink-cursor--rescan-frames ignore nil] 5 nil nil] nil] 5 nil nil])

我的小macbook是16年早期生产的,而且还是在ebay买的官方翻新版,撑到现在挺不错的了,差不多该换了。后面买个小服务器,macbook当屏幕,用vnc连服务器玩……

@manateelazycat 猫大,好像macos下emacs全屏后,snails出现黑桌面而posframe mini-frame没黑桌面是因为macos把snails生成的 frame 当成了一个窗体,把posframe mini-frame生成的frame和emacs当成一个窗体。这一区别可以通过系统的截图工具(截取整个窗体)来发现。

snails生成 frame 的函数是 make-frame-visible;posframe mini-frame用的则类似show-parameters(不是很确定):

snails用的是frame,posframe用的是child-frame,所以从理论上讲这个现象是正常的。

frame 和 child-frame 的区别是是否设置了 parent-frame 参数,snails 一开始就设置了 parent-frame 参数,所以 snails 的 frame 本质是 child-frame.

如果snails也是用的child-frame,理论上在最新的Emacs 28/29 上不应该全屏出现黑屏现象。我使用posframe和mini-frame都正常。需要看看是什么原因了。