emacs -q 的时候复现。这是我的配置。
(use-package smart-input-source
:ensure t
:config
(setq smart-input-source-external-ism "fcitx5-remote")
(setq smart-input-source-english-input-source "2")
(setq-default smart-input-source-other-input-source "1")
(setq smart-input-source-do-get-input-source
(lambda()
(string-trim
(shell-command-to-string
smart-input-source-external-ism))))
(setq smart-input-source-do-set-input-source
(lambda(source)
(pcase source
("1" (string-trim (shell-command-to-string
(concat smart-input-source-external-ism " -c"))))
("2" (string-trim (shell-command-to-string
(concat smart-input-source-external-ism " -o")))))))
(smart-input-source-global-auto-english-mode t)
(add-hook 'text-mode-hook #'smart-input-source-remember-input-source-mode)
(add-hook 'prog-mode-hook #'smart-input-source-remember-input-source-mode)
(add-hook 'text-mode-hook #'smart-input-source-follow-context-mode)
(add-hook 'prog-mode-hook #'smart-input-source-follow-context-mode)
(add-hook 'text-mode-hook #'smart-input-source-inline-english-mode)
(add-hook 'prog-mode-hook #'smart-input-source-inline-english-mode))
(use-package company
:ensure t
:init
(global-company-mode))
(defun ret-check-to-deactivate-inline-overlay ()
"Deactivate the inline english region overlay."
(interactive)
(when (and inline-english-mode (overlayp -inline-overlay))
;; company
(if (and (featurep 'evil)
(company--active-p))
(company-complete-selection)
(deactivate-inline-overlay))))
唔…
(if (and (featurep 'evil)
(company--active-p))
是的,还有brew,git,等等,仅仅git一个昨天就遇到三种不同的错误。
国内的melpa源好像怎么设置都不能用,我在mac下用的是baacloud,设置成「全局模式」,浏览器访问gogole和yuotube可以,但软件源在国外的仍然是能联通的时间少,断线的时间多。
谢谢支招啊!
goumao
67
@BlindingDark,
你不是在evil模式下啊?
活捉一个不用evil的,
请一定多多反馈其它不兼容的情况!
我自己从来没有在原生模式下用过,
所有的兼容的情形,都是脑子中假想的
我是从vim跳过来的,
原生模式我只会 c-x c-c
和 m-x
两个快捷键
我改下代码~~~~
goumao
68
那些只是帮你设置了全局模式的proxy而已,没用的。
你需要基于tun/tap的vpn。
我给你推荐:
mac上有个叫做surge的软件,
你选他的增强模式就可以了。
命令行git brew等也是有效的。
不过surge只是个客户端,
你还是需要买账号的。
goumao
69
@BlindingDark 已修正。等melpa更新吧~~
emacle
71
发现一个问题,如下测试文本
english 测试
当光标在空格位置时,按空格出现 -not-other-p 函数为空?
光标位置在 测
字上时,按空格正常
emacle
72
大佬能否再加一个功能,当按下 M-x
或 C-x C-f
等 进入minibuffer时 自动变成英文输入
因为在minibuffer里一般是用来输入命令,中文输入较少
goumao
74
你也是用的原生emacs,不是evil?
evil用户都是escape到英文状态下,再执行命令,所以没这个问题。
这个package对非evil用户的考虑还不够完善
我研究一下minibuffer的问题。
emacle
75
对,我不习惯evil
我加了个 minibuffer-setup-hook 后,进入minibuffer 可以变成英文输入状态
但是C-g 取消后 返回原 buffer 不能恢复原输入法状态
(add-hook 'minibuffer-setup-hook
(lambda()
(smart-input-source-set-input-source-english)))
)
goumao
76
@emacle
一看就不是萌新,给你一点线索,你自己肯定能搞定:
add-to-list
一些hook: minibuffer-setup-hook
, minibuffer-exit-hook
到这里面去
试验好了请反馈回来,我更新到代码里。
我实在是不会用原生模式,没有办法自己测试。
emacle
77
(add-to-list 'smart-input-source-save-input-source-hook-triggers 'minibuffer-setup-hook)
(add-to-list 'smart-input-source-restore-input-source-hook-triggers 'minibuffer-exit-hook)
(add-hook 'minibuffer-setup-hook
(lambda()
(smart-input-source-set-input-source-english)))
是这样写吗?退出minibuff时 还是没法恢复原输入状态
我是真菜鸟啊,大佬的世界我真不懂
emacle
78
我加了个全局变量 smart-input-source-before-minibuffer 进入前记录一下输入状态,如果是中文切换,退出minibuff时根据全局变量恢复,但是C-h h弹出 help buffer时 好像不记录了输入状态了
;; 进入minibuffer 自动切换英文
(add-hook 'minibuffer-setup-hook
(lambda()
(setq smart-input-source-before-minibuffer (smart-input-source--get-input-source))
(if (not (string= smart-input-source-english-input-source smart-input-source-before-minibuffer))
(smart-input-source-set-input-source-english)
)
)
)
(add-hook 'minibuffer-exit-hook
(lambda()
(if (not (string= smart-input-source-english-input-source smart-input-source-before-minibuffer))
(smart-input-source-set-input-source-other)
)
)
)
现在可以切换了,问下如何实现无论中英文状态,我希望进入insert都切换为我的Rime输入法,而不是usa
1 个赞
goumao
80
把follow-context-mode 打开,同时
(setq-default smart-input-source-fixed-context smart-input-source-OTHER)
这个是对所有buffer生效。
对单个buffer的话,在buffer里面执行:
(setq smart-input-source-fixed-context smart-input-source-OTHER)
goumao
82
首先确保已经升级到最新版。
这个功能是今天才加的。
最好:
- 直接进到目录里面,git pull到最新版
- 在相关的目录里,删除字节码elc文件。