-
Notifications
You must be signed in to change notification settings - Fork 236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Minor mode for caret browsing #349
Minor mode for caret browsing #349
Conversation
Signed-off-by: Hollow Man <hollowman186@vip.qq.com>
现在似乎在minor mode中无法覆盖eaf-browser-keybinding中定义的按键,理论上minor mode的优先级比较高应该可以,但是不知道为什么不能,还望赐教 @manateelazycat @MatthewZMD |
你定义了minor mode,但是没有在当前buffer切换mode导致的 |
(eaf-browser-caret-mode 1) | ||
(eaf-browser-caret-mode 0))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
你定义了minor mode,但是没有在当前buffer切换mode导致的
@manateelazycat Hmm,我这两行代码是用来判断切换mode的,我觉得应该不是因为没有在当前buffer切换mode导致的。我现在PR按照当前minor mode的Key配置运行完全没有问题,因为它们在eaf-browser-keybinding都没有定义。但是要是将其中一个换成eaf-browser-keybinding中已经有定义的按键,进入minor mode之后就会发现这个按键没有被覆盖
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
请先查看我写的 multi-term.el https://github.com/manateelazycat/multi-term/blob/master/multi-term.el#L752
把 caret-mode 改成类似 term-bind-key-alist 的按键列表
- 激活 caret mode 的时候,遍历 caret key list,用 define-key 强制重新设置按键
- 退出 caret mode 的时候,遍历 eaf-browser-keybinding ,强制重新设置浏览器默认的按键
通过这样的方法应该可以强制让冲突的按键生效。
@MatthewZMD 有什么想法吗? |
周末在外面,不急就等我回去看看 |
不急,我最近在用平板,没设备测试 :( |
(eaf-browser-caret-mode 1) | ||
(eaf-browser-caret-mode 0))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
请先查看我写的 multi-term.el https://github.com/manateelazycat/multi-term/blob/master/multi-term.el#L752
把 caret-mode 改成类似 term-bind-key-alist 的按键列表
- 激活 caret mode 的时候,遍历 caret key list,用 define-key 强制重新设置按键
- 退出 caret mode 的时候,遍历 eaf-browser-keybinding ,强制重新设置浏览器默认的按键
通过这样的方法应该可以强制让冲突的按键生效。
@HollowMan6 试一下我说的方法,具体细节看上一条评论。 |
我更新了系统后qtwebengine又出问题了,这次降到5.14也不行,哎。短时间可能测不了了。 |
我刚刚试了一下,请问define-key应该指定修改哪一个Map呢?我指定为 因而,随后我按照注释转而使用 我觉得导致在minor mode中无法覆盖eaf-browser-keybinding中定义的按键可能和EAF按键动态绑定机制有关,具体原因还在研究中。 |
可以参考一下EAF的动态绑定是怎么实现的,试着调整并利用一下 |
OK |
试一下 (current-local-map) 这个函数在运行时动态获取当前 buffer 的 keymap. |
和指定为 我改动的代码如下: (defcustom eaf-browser-caret-mode-keybinding
'(("w" . "eaf-caret-previous-line")
("s" . "eaf-caret-next-line")
("d" . "eaf-caret-next-character")
("a" . "eaf-caret-previous-character")
("W" . "eaf-caret-to-top")
("S" . "eaf-caret-to-bottom")
("A" . "eaf-caret-previous-word")
("D" . "eaf-caret-next-word")
("/" . "eaf-caret-search-forward")
("?" . "eaf-caret-search-backward")
("C-o" . "eaf-caret-toggle-mark")
("C-." . "eaf-caret-clear-search"))
"The keybinding of EAF Browser Caret Mode."
:type 'cons)
(defun eaf--toggle-caret-browsing (caret-status)
(if caret-status
(eaf-caret-keystroke-setup)
(eaf--gen-keybinding-map eaf-browser-keybinding)))
(defun eaf-caret-keystroke-setup ()
(let (bind-key bind-command)
(cl-dolist (element eaf-browser-caret-mode-keybinding)
(setq bind-key (car element))
(setq bind-command (cdr element))
(cond
((stringp bind-key) (setq bind-key (read-kbd-macro bind-key)))
((vectorp bind-key) nil)
(t (signal 'wrong-type-argument (list 'array bind-key))))
(define-key (current-local-map) bind-key bind-command)))) 不清楚为何会发生这种情况。。。 |
去掉 (define-key map (vector 'remap #'self-insert-command) #'eaf-send-key) 这句试一下,在 eaf.el 中 |
还是一样的问题继续,而且这样之后即使不在caret模式中eaf-browser-caret-mode-keybinding这几个定义的按键也无法输入了。 |
假死一般是陷入无限循环导致的,暂时没油头绪 |
这个BUG很奇怪,当按下eaf-browser-caret-mode-keybinding中定义按键,都会输入一个字符e然后假死 |
我有一个想法,结合 marker 使用 caret, 可以用 marker 快速选中 <p> <span> 这些标签对的文本,这时候激活caret mode, 然后再调整,对于选取句子这种情形,可以省去前面查找的步骤 |
好主意,要不是每次充顶部开始,或者鼠标点一下,不方便 |
Nice,好主意!用 marker 选中文本这块可以独立出来,我后面可以看看,把这块做出来 |
已在#357 中为marker提交了patch |
兄弟,你试试
|
使用这个代码之后, |
Signed-off-by: Hollow Man <hollowman186@vip.qq.com>
2a60589
to
cfb3bb9
Compare
Add minor mode for caret browsing.
Signed-off-by: Hollow Man hollowman186@vip.qq.com