哦哦,evil下,因为在normal模式中,是英文输入法,C-RET会存在这个问题。
原生键位不存在这个问题。
那就不用管了。
哦哦,evil下,因为在normal模式中,是英文输入法,C-RET会存在这个问题。
原生键位不存在这个问题。
那就不用管了。
有别的自动切换需求的,也可提出来。我把它放到默认配置中。
现在底层已经做好了,只是配置的事,比较方便。
spacemacs evil normal 下 C-RET
触发的是evil-org-org-insert-heading-respect-content-below
你在配置中,
对照 sis-context-triggers
现有的值,把 +org/insert-item-below
换掉,试试看呢?
请把测试结果反馈给我一下。
我的关于sis-context-triggers
的配置
(setq sis-context-triggers '(('org-insert-heading-respect-content 'sis--context-line nil)
('evil-org-org-insert-heading-respect-content-below 'sis--context-line nil)))
在evil insert
模式C-RET
会调用org-insert-heading-respect-content
, 可以正确切换
在evil normal
模式C-RET
会调用evil-org-org-insert-heading-respect-content-below
, 不能正确切换
insert模式下,因为输入法一直是中文,是不需要trigger的,这一行去掉。
我下次自用用spacemacs测一下。我现在没有这个环境。得专门装一个。
我有这样一个需求:使用某些命令打开 minibuffer 之后,不是切换为英文,而是切换为中文。
应用场景:
在文档中没有找到可以改的变量什么的,我就在配置里把代码中的 sis--minibuffer-setup-handler
重定义了。原本是:
(defun sis--minibuffer-setup-handler ()
"Handler for `minibuffer-setup-hook'."
(when sis-log-mode
(message "enter minibuffer: [%s]@current [%s]@last [%s]@command"
(current-buffer)
sis--buffer-before-command
this-command))
(sis--set-english))
重定义为:
(defun sis--minibuffer-setup-handler ()
"Handler for `minibuffer-setup-hook'."
(when sis-log-mode
(message "enter minibuffer: [%s]@current [%s]@last [%s]@command"
(current-buffer)
sis--buffer-before-command
this-command))
(if (or (string-equal "org-roam-find-file" (symbol-name this-command))
(string-equal "org-roam-insert" (symbol-name this-command))
(string-equal "org-roam-capture" (symbol-name this-command))
(string-equal "counsel-rg" (symbol-name this-command)))
(sis--set-other)
(sis--set-english))
)
我现在使用这个代码解决了需求。不知道还有没有更好的方法?想和大家交流一下
很棒啊,这是最佳做法,
如果需要改这一块的用户很多,
我可以把这块提出来,弄成可配置的predicate,
加了一个变量:sis-respect-minibuffer-triggers
你直接升级到github版,或等melpa几个小时候自动更新版本。
然后,你这么配置就行了:
(add-to-list sis-respect-minibuffer-triggers
(cons 'org-roam-find-file (lambda () 'other))))
(add-to-list sis-respect-minibuffer-triggers
(cons 'org-roam-insert (lambda () 'other))))
(add-to-list sis-respect-minibuffer-triggers
(cons 'org-roam-capture (lambda () 'other))))
(add-to-list sis-respect-minibuffer-triggers
(cons 'counsel-rg (lambda () 'other))))
macos系统总是莫名其妙的更改emacs的输入法,经常出现在切换程序的时候,切换到emacs时会出现nomal模式改成中文模式的情况,用各种切换输入法的小软件都会出现例外。烦不胜烦。
再次恳请开放一个硬切换的功能,即:
if emacs获得焦点 and evil处在nomal模式
then 输入法切换为英文
请大佬们帮忙和指点,谢谢!
刚找到一个出现问题的情况:
已经打开emacs阅读一个文件,这时在macos的Finder目录下,鼠标打开一个org文件,然后用buffer kill掉这个文件,则原来的文件变成nomal模式中文状态。
当然,由于macos的输入法的不稳定性,还有其他例外情况。
表示并没有遇到这样的问题
看样子像鼠须管?这个不是你在 Chrome 中是啥输入法切换过去就是啥输入法么,如果想要设置打开某 app 始终是英文模式,可以参考 Issues · rime/squirrel · GitHub 或者我记得有个应用专门做这个的
厲害!一眼就看出問題了。
試了幾次,chrome中文狀態,然後切換emacs也改為中文了。可能是鼠鬚管搞的鬼。謝謝指點,有方向了。
也不算它搞得鬼吧,如 issue 里面说的没支持而已,哦对那个应用叫 SwitchKey
不是SwitchKey(沒安裝過) 、也不是Hammperspoon(安裝過但未啓動),類似這樣的軟件還有幾種,也試驗過,都不起作用,仍然是亂跳。
也不是鼠鬚管,它有這功能,但我沒有啓用。
現在的故障縮小到:切換app時,鼠鬚管輸入法保持不變。
———————— 更新,好像問題找到了,勾選這個:
设计上来讲,sis是支持这种情况的:
即使在chrome中切成中文了,
回到emacs之后,也会切回到之前的输入法。
这是符合预期的。前面你说的那几个应用是为了解决这个问题,给特定应用设定切换过去时特定的输入法,不是造成这个问题的原因呀😂