Native & OS 输入法管理包『sis』使用交流

请教一下,我用的是spacemacs,在additional package里添加了sis,

在user-config里配置了 通过命令执行 sis-set-other sis-set-english 都可以正常切换输入法。 但是在具体的文本汉语中插入模式后,没有调用切换切换输入法 大概的问题会出在哪个方向呢

可能需要在前面加上 (require 'sis)试试,或者你直接把 README 中 use-package 那整一段拿过来。

没错没错 完美解决 感谢

readme 里面专门有这么一句话:

For spacemacs , if it works in the hybrid mode, some of the evil related features may not work. Change to vim mode instead.

嗯嗯,按照readme重新弄好了。现在有了一个小问题,刚开始用起来一切正常。 没过一分钟就突然卡住,具体表现是要么输入的时候不断重复之前的输入的某一个字母,要么在normal state不识别按键,比如 ijk等等。 在卡之前会出现,拼音候选词刷出不来,不知道是不是输入法的问题。

就类似这种,输入一个字母前面会多识别一个 s 因为是新手,不懂怎么debug也不能准确的描述问题。 这个等我研究一段时间能搞明白了再请教

这个应该不是sis的问题,论坛也有别人遇到,你可以搜下

找到了Windows下面直接的接口 ,顺便稍微写了一下函数 #+begin_src elisp (defun emacs-ime-disable () (interactive) (w32-set-ime-open-status nil)) #+end_src

#+RESULTS: : emacs-ime-disable #+begin_src elisp (defun emacs-ime-enable () (interactive) (w32-set-ime-open-status t)) #+end_src

能否内置一下,或者有什么办法可以自定义一下配置 im-select 有点慢,卡卡的

请问下,windows下小狼嚎输入法如何设置啊

我用这个设置,目前主要用朙月拼音,以前用过一段时间五笔。

拷贝到 C:\Users\<你的用户名>\AppData\Roaming\rime 下就可以 了。

然后重现部署小狼毫。
image

至于 sis 的配置,在 Emacs 28 以后的版本,sis 默认支持通过 w32-set-ime-open-status 切换输入法的状态。操作系统只要保留小狼毫这个一个输入法就可以了,英文键盘也不需要了。

ok,感谢。

client 下sis失效 环境windows10 vanilla emacs 使用use-package 有人遇到相同的情况吗

我 Mac Vanilla Emacs 配置了也无效,也是 use-package

而且是正常启动没问题,主要是client启动就有毛病了

请教一下怎么设置 sis-prefix-override-keys 以增加 ESC ESC 作为前缀的快捷键?我有不少快捷键设置的类似 ESC ESC a 这样。

试了下 \e, ESC, C-[, escape 都不行。。。

【更新】:解决了,需要放在 (sis-global-respect-mode t) 之前执行。

(push "\e\e" sis-prefix-override-keys)

提个小需求:现在 sis对 evil-mode normal-state/insert-state 支持很好,可以把 emacs-state 也支持上吗?

我是 doom用户,配置了 hybird 模式,编辑操作是用 emacs-state

(defalias 'evil-insert-state 'evil-emacs-state)
(after! evil-escape
  (setq evil-escape-excluded-states '(normal visual multiedit motion)))

用了 org-starter 和 hydra 来快捷进入 agenda 文件。当按下 C-c e 的时候 e 仍旧是中文,后来我把 C-c e 加入到 sis-prefix-override-keys 当中后可以了,但是 C-c e j 的时候,j 依旧是中文,是我配置不正确,还是需要其他的配置。已用 minimum emacs setup for Emacs plugin testing · GitHub 最小配置 emacs -Q 测试过,可以复现。

org-starter 和 hydra 配置如下:

(use-package org-starter
  :config
  ;; (add-hook! 'after-init-hook 'org-starter-load-all-files-in-path)
  (org-starter-def "~/Dropbox/org"
                   :files
                   ("agenda/inbox.org"          :agenda t :key "i" :refile (:maxlevel . 2))
                   ("agenda/work.org"           :agenda t :key "w" :refile (:maxlevel . 2))
                   ("agenda/technical-debt.org" :agenda t :key "t" :refile (:maxlevel . 2))
                   ("agenda/personal.org"       :agenda t :key "p" :refile (:maxlevel . 2))
                   ("agenda/books.org"          :agenda t :key "b" :refile (:maxlevel . 2))
                   ("agenda/someday.org"        :agenda t :key "s" :refile (:maxlevel . 2))
                   ("agenda/agenda.org"         :agenda t :key "a" :refile (:maxlevel . 2))
                   ("agenda/note.org"           :agenda t :key "n" :refile (:maxlevel . 2))
                   ("daily/journal.org"         :agenda t :key "j" :refile (:maxlevel . 2))
                   )
;; hydra
(require-package 'hydra)
 (defhydra hydra-org-agenda-menu (:color blue)
  "
  Org-agenda-menu
  ^^^^------------------------------------------------
  _i_: inbox.org     _w_: work.org      _t_: technical-debt.org
  _b_: books.org     _a_: agenda.org    _p_: personal.org
  _n_: note.org      _s_: someday.org   _j_: journal.org
  "
      ("i" org-starter-find-file:inbox)
      ("w" org-starter-find-file:work)
      ("t" org-starter-find-file:technical-debt)
      ("p" org-starter-find-file:personal)
      ("b" org-starter-find-file:books)
      ("n" org-starter-find-file:note)
      ("s" org-starter-find-file:someday)
      ("a" org-starter-find-file:agenda)
      ("j" org-starter-find-file:journal)
):bind("C-c e" . hydra-org-agenda-menu/body)
)

然后 sis 的配置如下

(require-package 'sis)
(use-package sis
  :config
  (setq sis-english-source "com.apple.keylayout.ABC")
  (sis-ism-lazyman-config
   "com.apple.keylayout.ABC"
   "im.rime.inputmethod.Squirrel.Rime" 'macism)
  ;; enable the /cursor color/ mode
  (sis-global-cursor-color-mode t)
  ;; enable the /respect/ mode
  (sis-global-respect-mode t)
  ;; enable the /context/ mode for all buffers
  (sis-global-context-mode t)
  ;; enable the /inline english/ mode for all buffers
  (sis-global-inline-mode t)
  ;; not delete the head spaces
  (setq sis-inline-tighten-head-rule nil)
  (setq sis-default-cursor-color "brown3")
  (setq sis-other-cursor-color "orange")
  (setq sis-prefix-override-keys (list "C-c" "C-x" "C-h" "C-c e"))
  (add-hook 'org-capture-mode-hook #'sis-set-other)
  :ensure)

(sis-global-inline-mode t)开启后你们是那种光标移动会根据上下文消息判定中文还是英文吗?目前是需要输入一个字符来判定,实现不了那种移动光标自动切换的需求,下面是我的配置

(use-package sis
  :ensure t
  :init
  ;; `C-s/r' 默认优先使用英文 必须在 sis-global-respect-mode 前配置
  (setq sis-respect-go-english-triggers
        (list 'isearch-forward 'isearch-backward) ; isearch-forward 命令时默认进入
        sis-respect-restore-triggers
        (list 'isearch-exit 'isearch-abort))   ; isearch-forward 恢复, isearch-exit `<Enter>', isearch-abor `C-g'
  :config
  (setq sis-english-source "com.apple.keylayout.ABC")
  (setq sis-other-source "com.sogou.inputmethod.sogou.pinyin")
  ;; (sis-ism-lazyman-config
  ;;  "com.apple.keylayout.ABC"
  ;;  ;; "com.apple.inputmethod.SCIM.Shuangpin" ;; 苹果自带双拼输入法
  ;;  "com.sogou.inputmethod.sogou.pinyin" ;; 搜狗输入法
  ;;  )
  (sis-global-cursor-color-mode t)

  ;; enable the /respect/ mode buffer 输入法状态记忆模式
  (sis-global-respect-mode t)
  ;; enable the /follow context/ mode for all buffers
  (sis-global-context-mode t)
  ;; enable the /inline english/ mode for all buffers
  (sis-global-inline-mode t)  ; 中文输入法状态下,中文后<spc>自动切换英文,结束后自动切回中文
  ;; (global-set-key (kbd "M-<spc>") 'sis-switch) ; 切换输入法
  ;; 特殊定制
  (setq sis-do-set
        (lambda(source) (start-process "set-input-source" nil "macism" source "30000")))

  (setq sis-prefix-override-keys (list "C-c" "C-x" "C-h" "C-c e"))

  (add-hook 'org-capture-mode-hook #'sis-set-other)
  (setq sis-default-cursor-color "#02C389" ; 英文光标色
        sis-other-cursor-color "#F95B5B" ; 中文光标色
        sis-inline-tighten-head-rule 'zero ; 删除头部空格,默认1,删除一个空格,1/0/'all
        sis-inline-tighten-tail-rule 'zero ; 删除尾部空格,默认1,删除一个空格,1/0/'all
        sis-inline-with-english t ; 默认是t, 中文context下输入<spc>进入内联英文
        sis-inline-with-other t) ; 默认是nil,而且prog-mode不建议开启, 英文context下输入<spc><spc>进行内联中文
  )

自己定义这个变量:

(defvar sis-context-hooks
  '(evil-insert-state-entry-hook)
  "Hooks trigger the set of input source following context.")

emacs 原生模式也支持吗 ?

windows emacs daemon 启动会导致 crash 有人遇到过不?