@heisaari 你说按了esc才跳到末尾的,那我猜是因为esc键默认的设置是用于跳出overlay的。所以光标跑到末尾也符合预期。
一般来说,只要不用鼠标把popweb窗口真正激活,在弹窗外任意位置点击、以及任意命令都会使它退出。
@heisaari 你说按了esc才跳到末尾的,那我猜是因为esc键默认的设置是用于跳出overlay的。所以光标跑到末尾也符合预期。
一般来说,只要不用鼠标把popweb窗口真正激活,在弹窗外任意位置点击、以及任意命令都会使它退出。
@ginqi7 有一种意外情况是,鼠标点击了popweb, 有极端情况python会失灵。ESC是个好键位么?要不要移走?
@heisaari 不知道你用不用macOS, 对于popweb窗口已经被激活、窗口焦点到了python程序上,我有个土办法:用keyboard maestro.app 绑定按键到python上,这些按键和overlay 的快捷键绑定一模一样(截图左边那些都是我D-O的按键),它会跳回原窗口,继续你想要的命令。
比如 L 是我向后跳转的快捷键,绑定到popweb的python上,万一焦点跑到了popweb, 先跳转回emacs, 自动输入D-O的 “l” 按键,向后跳转。
还是保留着吧。总要有一个退出overlay快捷键的按键,esc 还是比较合适的。
这个我倒是没遇到过。不过我日常多数还是使用youdao-dictionary 感觉它还是要稍微快一点。
ESC 有自己的 esc-map,最好还是用默认的 C-g 退出。
感谢两位大佬指点核心问题,终于解决了这个困惑
目前成功地在overlay上用 i 来调用popweb弹出查词(不过用同样的语句想绑定 j 来调用读音没成功,研究中)
(define-key dictionary-overlay-map (kbd "i") #'popweb-dict-bing-pointer)
(define-key dictionary-overlay-map (kbd "j") #'popweb-dict-bing-say-word-process)
后面这个提示 wrong type argument: commandp
另外,个人体验是 any key 可以去掉popweb弹出窗口,但不能是字母等实键,它会输入的,而修饰键又很难单独作为快捷键(我是找了半天没找到)
有用macos(比较老),在用karabiner(也是为了本次改快捷键搜索到的,本想把右command改成ctrl+g,但是不会,后来用了个笨办法,右command改成F16,然后在emac里映射成ctrl+g了,也能用)
是的@suliveevil
@zqso python窗口的问题我也遇到了,我目前的emacs启动后焦点就在python窗口上,一般是手动点一下回到emacs窗口,你这个是个很好的思路(不明觉历,我去搜索下看看karabiner有没有对应的方法)谢谢
btw: chatgpt 真是好,我问了好多傻子问题
命令定义不会凭空产生的。只能使用 popweb-dict-say-word。
popweb-dict 相关的命令目前只定义两类:
一个全局命令,用于发音: popweb-dict-say-word,其中macos 调用的是系统级的机器合成语音,详查终端"say"命令。其他系统调用的是有道词典的在线发音,真人加合成。
四本词典用于查词。每本词典两个命令,由宏自动创建:前缀popweb-dict- 字典名 - 功能名(pointer/input)。 比如bing的词典命令就是两个: popweb-dict-bing-pointer 查询当前光标下的词, popweb-dict-bing-input查输入词。
绑定一个名字在键上,但没有任何定义,返回的肯定是错误。
感谢详细阐释,my bad, 补全时没有认真检查 困惑而不自知
有什么办法能在生词上自动为英文输入,而按c到minibuffer时变成中文么,因有时改完释义忘记切输入法
修改我通常只会从若干选项中选择一个。自己手动输入中文还是麻烦了点。
如果使用的Emacs 内部输入法,例如 emacs-rime. 你可以在 dictionary-overlay-modify-translation 方法上,使用 advice-add,在dictionary-overlay-modify-translation运行前后切换一下输入法。
感谢,我试试,奇怪的是我按完 c ,minibuffer里是空白的没的可选
按c 的情况下,会把本地词典,网络翻译的结果都展示出来。然后让用户选一个。
初步猜测是,可能你那边网络翻译有问题,会导致整个修改有问题。
呀,你这一说我才注意到,按完 c 后虽然提示后面是空的,但按向下会显示不同的释义,不过必须一下下地向下才有,正常的是不是会扩展minibuffer的高度都显示出来(居然没见过 谁给个截图看看)?
这里使用的 ‘completing-read’ 来展示候选项的。可能和你的 minibuffer 补全用的包有关。
我这边使用的是:GitHub - minad/vertico: vertico.el - VERTical Interactive COmpletion 展示效果就如 @Jousimies
请问overlay的释义能和单词一起选中并复制吗
不行。 当前专门把 overlay 设置为不可选中以免影响用户原本的文本移动与编辑。
你可以写个函数实现该功能。
(defun get-translate ()
(let ((overlay (car (overlays-at (point)))))
(print
(substring-no-properties (overlay-get overlay 'after-string)))))
这样就可以获取释义了(包含释义展示的括号)。 你在此的基础上加上复制当前单词的功能应该就可以了。
请问不同的包的快捷键的优先级是如何确定的
比如我现在用xah-fly-keys,阅读时是在其command mode,按 n 是查找,但是如何保留在overlay上跳转下一个重词的功能呢