laishulu / emacs-smart-input-source

Less manual switch for native or OS input source (input method).
GNU General Public License v3.0
254 stars 16 forks source link

sis-get 没反应 #24

Closed pallas42 closed 4 years ago

pallas42 commented 4 years ago

按照文档中的步骤安装了sis 后,M-x sis-get 没反应

在emacs --debug-init 下也是没反应,但没有生成backtrace信息

系统环境: macOS Mojave 10.14.6,emacs 27.1 (doom emacs) + macism

sis的配置如下(基本跟文档示例一致)

(use-package! sis
  :config
  ;; Emacs-native input method
  ;; (sis-ism-lazyman-config nil "rime" 'native)

  ;; For MacOS
  (sis-ism-lazyman-config
   ;; English input source may be: "ABC", "US" or another one.
   ;; "com.apple.keylayout.ABC"
   "com.apple.keylayout.US"

   ;; Other language input source: "rime", "sogou" or another one.
   "im.rime.inputmethod.Squirrel.Rime")

  ;; enable the /cursor color/ mode
  (sis-global-cursor-color-mode t)
  ;; enable the /respect/ mode
  (sis-global-respect-mode t)
  ;; enable the /follow context/ mode for all buffers
  (sis-global-follow-context-mode t)
  ;; enable the /inline english/ mode for all buffers
  (sis-global-inline-mode t))

我要怎么排查问题呢?多谢!

laishulu commented 4 years ago

应该是这个问题: grant permission of Accessibility 如果自动申请权限不成功,你需要手工授权:

见: https://github.com/laishulu/macism/

pallas42 commented 4 years ago

https://github.com/laishulu/macism/

试过这个,在Security & Privacy -> Accessibility 里 emacs是已经勾选的,问题仍然存在

另外,M-x sis-ism-lazyman-config 命令会报错: Wrong number of arguments: (2 . 3),0

在 term 下 macism 可以成功返回当前输入法id

laishulu commented 4 years ago

你在term下的emacs呢?

laishulu commented 4 years ago

另外,sis-ism-lazyman-config,直接无参数调用,肯定是不行的。

应该还是Accessibility的问题。

laishulu commented 4 years ago

还有,授权完 Accessibility 之后,要把emacs关掉,重新打开。

pallas42 commented 4 years ago

Accessibility的图形界面长下面这样,授权完之后重启了电脑还是不行

Screen Shot 2020-11-02 at 13.03.42

Term 下的 Emacs

GUI Emacs

laishulu commented 4 years ago
  1. M-:, 然后(sis--get),sis-get这个函数我只返回值,没打印,一会修正。
  2. Term下sis应该是正常工作了,但是macsim切换的时候有问题。 你在term下,先执行 macism "com.apple.keylayout.US" 然后执行 macism "im.rime.inputmethod.Squirrel.Rime" 看看是什么情况
pallas42 commented 4 years ago
  1. M-: , 然后(sis--get)

    1. Term 下的 Emacs

      • 英文ABC输入法 返回 english
      • 英文U.S.输入法 返回 english
      • 中文鼠须管输入法 返回 other
      • 意大利文输入法 返回 nil
    2. GUI Emacs

      • 英文ABC输入法 返回 nil
      • 英文U.S.输入法 返回 nil
      • 中文鼠须管输入法 返回 nil
      • 意大利文输入法 返回 nil
  2. Term下

    初始状态 Italian 输入法

    • macism "com.apple.keylayout.US" 切换为英文输入法U.S.
    • macism "im.rime.inputmethod.Squirrel.Rime" 弹出系统输入法切换选单(Italian/Squirrel/U.S./ABC),高亮在"Squirrel"上,按任意键后选单消失,切换为中文鼠须管输入法
    • macism "com.apple.keylayout.Italian-Pro" 切换为意大利文输入法
    • macism "com.apple.keylayout.ABC" 切换为英文输入法ABC
laishulu commented 4 years ago

macism因为是模拟按键输入,对电脑的性能敏感。

  1. 你mac是什么硬件性能?
  2. 你升级一下macos的系统版本
  3. macism 可通过命令行调节延迟,试着增大延迟。 默认是20000(即20毫秒)
  4. 用Emacs Mac Port这个emacs发行版的话, GUI下是原生切换,不需要macism,没有这些问题。
pallas42 commented 4 years ago

所以我换个emacs mac port 好了,升级系统有点麻烦晚点再搞

laishulu commented 4 years ago

那个延迟,是macism模拟的两次操作之间的间隔, 你弄得太长肯定是不行的,这样后一个操作根本就没有进行。 你试下200,000

pallas42 commented 4 years ago

你试下200,000

试过的,60000/ 200,000 / 600,000/ 200,000,0 / 600,000,0 / 200,000,00 / 600,000,00 都不行...

pallas42 commented 4 years ago

结论是升级系统之后sis在GUI和term下的Emacs都能正常工作了!(除了sis-get那一个command没打印值以外)

  1. Term 下的 Emacs

    • M-:, 然后(sis--get)`
      • 英文ABC输入法 返回 english
      • 中文鼠须管输入法 返回 other
      • 意大利文输入法 返回 nil
    • M-x 命令
      • sis-get 没反应
      • sis-set-english 自动切换为系统英文输入法
      • sis-set-other 自动切换为系统中文输入法
  2. GUI Emacs

    • M-:, 然后(sis--get)`
      • 英文ABC输入法 返回 english
      • 中文鼠须管输入法 返回 other
      • 意大利文输入法 返回 nil
    • M-x 命令
      • sis-get 没反应
      • sis-set-english 自动切换为系统英文输入法
      • sis-set-other 自动切换为系统中文输入法
laishulu commented 4 years ago

sis-get那一个command没打印值以外

最新版已修正,请更新。 并请一定看这个帖子:https://emacs-china.org/t/native-os-sis/14089/57 有不兼容更新!!

pallas42 commented 4 years ago

并请一定看这个帖子:https://emacs-china.org/t/native-os-sis/14089/57 有不兼容更新!!

好的,我研究下

laishulu commented 4 years ago

melpa可能有几个小时的延迟,明早上肯定是好了的 github版是最新的。你可以:

  1. 自己
    cd ~/.emacs.d/.local/straight/repos/emacs-smart-input-source
    git remote add github https://github.com/laishulu/emacs-smart-input-source.git
    git pull github
    cd ~/.emacs.d/.local/straight/build/sis
    rm *.elc

    完了重启emacs就可以了。

pallas42 commented 4 years ago

我 unpin! 了

重启doom 的时候报错了

Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "uuid")

好像说在 sis.el 里那个 (require 'uuid)找不到

laishulu commented 4 years ago

fix了。

pallas42 commented 4 years ago
  1. org buffer 内容(中文输入是用 M-x sis-switch切换的)

    * impossible
    * 不可能
    * bukexr
    * mpgm
  2. command-log-mode buffer 内容:

    <C-return> +org/insert-item-below
    i          org-self-insert-command [10 times] 
    <C-return> +org/insert-item-below
    M-x        counsel-M-x [2 times]
    b          org-self-insert-command [8 times] 
    DEL        evil-delete-backward-char-and-join [8 times] 
    不         org-self-insert-command [3 times] 
    <C-return> +org/insert-item-below
    b          org-self-insert-command [6 times] 
    <C-return> +org/insert-item-below
    m          org-self-insert-command [4 times] 
laishulu commented 4 years ago

谢谢,不过不需要你这个信息。 我也用的doom,所以内置了对doom下org的支持。

有别的原生emacs键位的用户, 我需要他们提供信息,以内置支持 否则,用户需要自己配置sis-context-triggers变量。

laishulu commented 4 years ago

让你看那个帖子,是要看见那个不兼容更新。 让你改你之前的配置。

laishulu commented 4 years ago

现在你在org下用没问题吧。

在中文标题上 C-RET,会在新标题上切到中文输入法 在英文标题上 C-RET,会在新标题上切到英文输入法

pallas42 commented 4 years ago

谢谢,不过不需要你这个信息。 我也用的doom,所以内置了对doom下org的支持。

有别的原生emacs键位的用户, 我需要他们提供信息,以内置支持 否则,用户需要自己配置sis-context-triggers变量。

哈哈 辛苦了 我以为emacs原生指的是emacs mac port呢

现在org下没问题:

同时 会显示message说 if: Symbol’s value as variable is void: res

laishulu commented 4 years ago

同时 会显示message说 if: Symbol’s value as variable is void: res

谢谢,已fix