lyjdwh
65
我的关于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
, 不能正确切换
goumao
66
insert模式下,因为输入法一直是中文,是不需要trigger的,这一行去掉。
goumao
67
我下次自用用spacemacs测一下。我现在没有这个环境。得专门装一个。
1 个赞
K-gihu
68
我有这样一个需求:使用某些命令打开 minibuffer 之后,不是切换为英文,而是切换为中文。
应用场景:
- 使用 org-roam 搜索笔记的时候,因为一般笔记都是中文名。
- 使用 counsel-rg 搜索文本的时候
- 其他一些搜索场景
在文档中没有找到可以改的变量什么的,我就在配置里把代码中的 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))
)
我现在使用这个代码解决了需求。不知道还有没有更好的方法?想和大家交流一下
1 个赞
goumao
69
很棒啊,这是最佳做法,
如果需要改这一块的用户很多,
我可以把这块提出来,弄成可配置的predicate,
goumao
70
加了一个变量: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))))
2 个赞
macos系统总是莫名其妙的更改emacs的输入法,经常出现在切换程序的时候,切换到emacs时会出现nomal模式改成中文模式的情况,用各种切换输入法的小软件都会出现例外。烦不胜烦。
再次恳请开放一个硬切换的功能,即:
if emacs获得焦点 and evil处在nomal模式
then 输入法切换为英文
请大佬们帮忙和指点,谢谢!
刚找到一个出现问题的情况:
已经打开emacs阅读一个文件,这时在macos的Finder目录下,鼠标打开一个org文件,然后用buffer kill掉这个文件,则原来的文件变成nomal模式中文状态。
当然,由于macos的输入法的不稳定性,还有其他例外情况。
不會只有我有這種情況吧?
經常在chrome和emacs之間切換,切換的時候,偶爾出現emacs的nomal模式中文狀態,如圖。
更麻煩的是:原因找不到,還難以復現。
看样子像鼠须管?这个不是你在 Chrome 中是啥输入法切换过去就是啥输入法么,如果想要设置打开某 app 始终是英文模式,可以参考 Issues · rime/squirrel · GitHub 或者我记得有个应用专门做这个的
厲害!一眼就看出問題了。
試了幾次,chrome中文狀態,然後切換emacs也改為中文了。可能是鼠鬚管搞的鬼。謝謝指點,有方向了。
也不算它搞得鬼吧,如 issue 里面说的没支持而已,哦对那个应用叫 SwitchKey
不是SwitchKey(沒安裝過) 、也不是Hammperspoon(安裝過但未啓動),類似這樣的軟件還有幾種,也試驗過,都不起作用,仍然是亂跳。
也不是鼠鬚管,它有這功能,但我沒有啓用。
現在的故障縮小到:切換app時,鼠鬚管輸入法保持不變。
————————
更新,好像問題找到了,勾選這個:
goumao
79
设计上来讲,sis是支持这种情况的:
即使在chrome中切成中文了,
回到emacs之后,也会切回到之前的输入法。
这是符合预期的。前面你说的那几个应用是为了解决这个问题,给特定应用设定切换过去时特定的输入法,不是造成这个问题的原因呀😂
暫時的解決方案是:勾選「自動切換到文稿的輸入法」。
如果不勾選這個,那麼切換到emacs之前的程序的輸入法,會帶到emacs中,造成nomal狀態的中文狀態。
yqu212
82
@goumao 在LaTeX里面输入$就自动切换到英文我应该怎么配置?
你自己可以写一个minor mode,
在latex中启用这个mode
在这个mode中,
加一个post-command-hook,
当检测到输入的字符是$
后,调用 sis-set-english
但是,其中有一个小坑。
在中文输入法中,你输入 $
,实际上得到的应该是¥
,
所以,更为正确的做法是:
当检测到输入的字符是¥
后,
将¥
改成$
,并调用 sis-set-english