(重新设计)中英文混打:OS输入法管理包 smart-input-source

我一直在后悔呢~~~想给改成sis

刚才将sis,names,termiXXX 都删除了 ,重新mepla安装,还是会出问题, 进入 elpa/sis 里将 .elc 文件删掉就没问题

感觉使用 names 后,代码看着怪怪的,干脆全替换了 :stuck_out_tongue:,省掉这个依赖,并且这时可以将个别需要配置的长变量改成别名形式不就省事一些

这个是个bug
不关evil normal的事。
不应该出现的。
从minibuffer退出来,应该恢复之前的输入法
已经fix了。

捉bug不容易捉全。

建议:无论执行任何命令,在焦点回到正文之时,先判断是否为normal模式。如果是,则必然是英文状态。

现在就是这样的。
你描述的规则,只是现在的设计的一个子集。

你去执行命令之前,必然要先到normal模式,normal模式就是英文的。
然后呢,现在你执行任何命令(不局限于你的替换的场景)结束之后,
都会恢复原文档的输入法,当然就是英文的。

如果有问题,那就是有bug,就必须要从根上解决掉。

试试我的,现在差inline mode和鼠标颜色 imbot.el --- an input method management bot - #2,来自 QiangF

做个简化版的动机在什么地方呢?

其实主要是方便修改

我还是没搞明白command的normal prefix sequence stage 是怎么判断的

:+1:

如果有什么现在smart-input-source没有的特性
但你又想实现进imbot里面的,
还请提出来。
我看看是否需要也做进smart-input-source里。

代码里面有嘛。

  • C-x 被截取了,就从normal stage的pre里面直接短路,进入了pre prefix stage
  • pre prefix stage里面,禁止截取prefix key,并且保存相关状态
  • -prefix-override-handler 里面把prefix key放回event loop里
  • post prefix stage 里面转换状态到 sequence stage
  • 用户继续输入b(现在是C-x b)
  • 这个时候是pre sequence stage, 啥也不干
  • 在post sequence stage里面,分成多种情况:
    • C-x x y z 这种多层一系列的key sequence,每次都还是在sequence stage里面
    • 中途 C-g 退出的key sequence,这时候要回到normal
    • key sequence 完成了,映射到命令,这时候也要回到normal。

你也可以不这么实现。
只不过用状态装换的方式,逻辑比较清晰。

1 个赞

(smart-input-source-global-follow-context-mode t)

请问下这个功能是用在什么地方,怎么用?我关闭的时候出现错误

let: Wrong number of arguments: (2 . 3), 4

  1. 这个bug刚才fix了。

  2. 关于这个mode:

    默认值是起这个作用:当你从evil normal state进入到evil insert state时,会自动根据上下文切换输入法。比如你光标在汉字中间进入插入状态,输入法会自动切换到中文。 非evil用户的话,你可以定制这个变量,把别的触发条件也加进去。比如emacs原生用户,可能把光标移动加进去,自动触发切换。但我不是emacs原生用户,不清楚操作习惯,这块就留白了,让用户自己决定。

你好 我有这样一个诉求,请问应该怎么配置

情况

下面图1中,快捷插入同级header后,变为图2后我想直接输入中文。但是输入法切换被接管了,系统默认(Linux ibus)切换按键无效,只能通过内置的‘smart-input-source-switch’切换

  • 图1 image
  • 图2 QQ截图20200720120935

问题

请问可以通过配置调整为,在进入‘编辑’模式后不接管输入法的切换吗? 发现输入状态不符合使用情况,第一反应就是使用默认的输入法切换方法。github文档看了下,也没整明白。

现在的配置: QQ截图20200720121724

  1. 不会的。设计上来讲,smart-input-source (记为sis)不会接管OS的快捷键。
    你可以详细描述一下这一步么?
    OS切换的快捷键,有或者无sis的情况下的差别。
    我来分析一下是什么原因
  2. 前面有个用户提过相同的问题。sis这种情况下,并不会切换输入法,
    别人汇报过同样的问题,后来发现应该用M-enter,详情请见:
    请见 org-mode模式下,item换行切换输入法的问题 · Issue #10 · laishulu/emacs-smart-input-source · GitHub
  3. 根据上下文自动切换输入法是follow-context-mode,
    但是默认只对进入evil insert state有效
    (重新设计)中英文混打:OS输入法管理包 smart-input-source - #775,来自 goumao
    如果你不想开这个功能,可以那一行配置删掉,或者设置为-1
    注意 不能设置成 nil。在emacs中,mode设置成nil和设置成t效果是一样的。

你好,我使用fcitx5,最新版本的懒人配置函数smart-input-source-ism-lazyman-config却不能控制输入法。

smart-input-source-ism-lazyman-config的配置是

(smart-input-source-ism-lazyman-config nil nil 'fcitx5)

按照之前版本的配置却是可以控制输入法的,配置是

  (require 'subr-x)
  (setq-default smart-input-source-english "1")
  (setq-default smart-input-source-other "2")
  (setq-default smart-input-source-do-get
                (lambda() (string-trim (shell-command-to-string "fcitx5-remote"))))
  (setq-default smart-input-source-do-set
                (lambda(source)
                  (pcase source
                    ("1" (string-trim (shell-command-to-string "fcitx5-remote -c")))
                    ("2" (string-trim (shell-command-to-string "fcitx5-remote -o"))))))

@shrubbroom

是个小bug,已fix
请帮助验证一下。

如果用的是melpa版,请等两个小时,
melpa更新有延迟。

多谢解释,感觉我不太会用上,不会定制这个变量哈哈

还有一个小问题,就是通过melpa升级的时候,会先删除旧的包,再安装新的包,这个过程中一直会弹出 Error running timer auto-refresh 未定义的警告信息 我只能关闭emacs,再重新打开一次,不算什么大问题,就是感觉升级的时候有点烦心,如果能不关闭Emacs无痛升级就太好了

好像仍然不行

这是我的配置

(use-package smart-input-source
  :quelpa (smart-input-source :fetcher github :repo "laishulu/emacs-smart-input-source")
  ;; :hook
  ;; enable the /follow context/ and /inline region/ mode for specific buffers
  ;; (((text-mode prog-mode) . smart-input-source-follow-context-mode)
  ;;  ((text-mode prog-mode) . smart-input-source-inline-mode))

  :config
  (smart-input-source-ism-lazyman-config nil nil 'fcitx5)

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

谢谢反馈

愚蠢的bug,已修复。
请继续反馈。