jingow
991
又碰到一个新问题,请教下
在调用helm-org-agenda-files-headings来在agend files的headline之间进行跳转的时候,sis似乎导致了问题,举例如下,有三个headline分别为
-
test a 测试
-
test b 测试
-
test c 测试
如果我调用helm-org-agenda-files-headings来进行跳转的时候,在minibuffer输入的时候
它会搜索到相关条目,但是当我按enter键的时候,它的反应是把中间的空格键删除,然后停在那里没有进行跳转,这个时候我再来一次,也可以跳转了。
goumao
992
是sis-inline-mode的原因,而且是期望中的行为。
这个mode是为了中英文混合输入的自动切换。
你中文后面加空格,就触发了inline mode,
输入完英文,回车或者双空格,关闭inline mode,并删除头尾的一个空格。
其中,回车和双空格的效果不一样,并且是否删除头尾空格等很多方面,都可以配置。
默认配置下,你可以通过在测试
后面输入两个空格
来自动切换到英文,
这样关闭inline mode时,测试
后面还有一个空格。
默认配置下的行为,readme中有详细的图解。
另外,你可以只在prog mode和text mode中启用inline mode
见readme中的范例config: GitHub - laishulu/emacs-smart-input-source: Less manual switch for native or OS input source (input method).
gyren
995
goumao
997
狗哥的meow啊,我没有用过呢。
不清楚:
哪里需要适配呢?
直接用这个package不行么?
gyren
998
像对Evil一样。比如,从 insert 退回到 normal 的时候,把输入法换到英文。
gyren
1000
退出 insert 状态时把输入法换到英文下面几行就够了。但是回到 insert 状态时恢复先前的输入法状态就不会弄了。
(defun xx|sis-respect-meow ()
"Respect meow."
(when (featurep 'meow)
(add-hook 'meow-insert-mode-hook
(lambda ()
(unless meow-insert-mode
(sis-set-english))))))
goumao
1001
其实也不是恢复先前的输入法,而是触发根据上下文自动设置输入法
可以通过设置这个变量实现:
可以这么设置:
(add-to-list 'sis-context-hooks 'meow-exit-insert-mode-hook)
其中:
meow-exit-insert-mode-hook
,
因为meow没有自带,
你需要自己写一下,
挂到meow-insert-mode-hook
上
(defvar meow-exit-insert-mode-hook nil
"Hook to run when exit meow insert mode.")
(add-hook 'meow-insert-mode-hook
(lambda ()
(unless meow-insert-mode
(run-hooks 'meow-exit-insert-mode-hook))))
goumao
1002
@gyren 看我更新的解决办法,请测试反馈。
@DogLooksGood 可以参照evil,内置这一类的hook
这样用户配置起来要方便很多。
gyren
1003
谢谢,基本可以实现。
(defvar meow-leaving-insert-mode-hook nil
"Hook to run when leaving meow insert mode.")
(defvar meow-entering-insert-mode-hook nil
"Hook to run when entering meow insert mode.")
(add-hook 'meow-insert-mode-hook
(lambda ()
(unless meow-insert-mode
(run-hooks 'meow-leaving-insert-mode-hook))))
(add-hook 'meow-insert-mode-hook
(lambda ()
(if meow-insert-mode
(run-hooks 'meow-entering-insert-mode-hook))))
(with-eval-after-load 'sis
(add-hook 'meow-leaving-insert-mode-hook #'sis-set-english)
(add-to-list 'sis-context-hooks 'meow-entering-insert-mode-hook))
1 个赞
goumao
1004
- 你这里的
if meow-insert-mode
, 一般写成when meow-insert-mode
- 这两个lambda函数可以合并到一个
if
里
(if meow-insert-mode
(run-hooks 'meow-entering-insert-mode-hook)
(run-hooks 'meow-leaving-insert-mode-hook))
1 个赞
已经切换到 sis+emscs-rime 了, 很不错. 比用 Enter 键英文上屏舒服多了. 唯一有点遗憾的是我不知道如何实现 “点石成金” 的功能. 简单来说就是比如我在某个状态下想输入中文的 “我是”, 等输入了 “woshi” 拼音以后发现是英文状态, 这时候输入一个按键 “M-i”, 把已经输入的 “woshi” 传给输入法, 转换成中文的 “我是”, buffer 的输入法转换成英文状态. 同样, 如果是在某个状态下想输入英文的 “we are”, 发现是在中文状态, 这时用 “M-i” 直接把输入的英文上屏, 并且输入法状态切换成英文. 这就要求至少有两个 mode 来表示当前的输入状态, 我看了下文档, 好像没有.
(defun +translate-symbol-to-rime ()
(interactive)
(let* ((input (thing-at-point 'symbol))
(beg (car (bounds-of-thing-at-point 'symbol)))
(end (point)))
(delete-region beg end)
(toggle-input-method)
(dolist (c (string-to-list input))
(rime-lib-process-key c 0))
(rime--redisplay)))
试下这个,这个是转当前的 symbol 的内容到 emacs-rime
多谢大神, pinyin 到 中文好了, 有没有输入法输入的拼音字母串直接上屏的函数?
不懂 ELISP, 只能无耻得当伸手党了.
goumao
1008
这个比较简单吧,大多数输入法直接回车就行了。
我用的搜狗拼音,经常这么干。