我也不懂这个,是一些函数上都需要加 static 么?未用的变量是哪个,我可以删除后重新生成 patch 试试
你make的时候会看见nsfns.m有几个warning,不过编译能通过,也不影响使用,就是不太好看。
- cfdata_to_lisp
- cfstring_to_lisp_nodecode
- cfstring_to_lisp
- cfstring_create_with_utf8_cstring
- cfstring_create_with_string_noencode
- cfstring_create_with_string
- mac_create_input_source_from_lisp
- mac_input_source_properties
这些没有在外部使用,应该都可以加 static,我来加一下,去掉一些注释的代码
mac_create_input_source_from_lisp和mac_input_source_properties不用加static。
我改过 static 以及去掉一些注释了,正常可用。
PR没问题,merge了。
我想到一个问题,这么改动的话,terminal下是不是有问题?
太久没写elisp,我记不清细节了。
好像是有问题,Error running timer ‘sis--auto-refresh-timer-restart’: (error "Window system is not in use or not initialized") [6 times]
,不知道改为 (memq (window-system) '(mac ns))
是不是可以,我也不太熟悉elisp😂。
嗯。这样没问题。改了。
我准备尝试下这个 patch,我的理解是,patch 完毕就可以像 Emacs Mac Port 一样开箱即用了,也就不再需要 macism 了,为什么还需要给 macism 提 PR 呢?
我给 sis 提的 pr,不是 macism。macism 的那个 pr 是很久之前还没有这个 patch 的时候。
明白啦!
感谢前辈!Emacs Plus 打上 patch 后,sis 里面还是按照 Emacs Mac Port 来设置,就可以直接使用了!
你还在用这个 patch 么,我发现最新的 emacs master代码 patch上了,但是找不到 mac-input-source 这个方法,很奇怪,看了下文件 src/nsfns.m也没有什么变化
我不用patch,我是直接改代码的,每次自动merge没有问题,最近一次merge是1月8日的代码。
没啥问题,我改了下切换的代码。
(if (and (eq system-type 'darwin) (fboundp 'mac-input-source))
(progn
(defvar ime-list '("im.rime.inputmethod.Squirrel.Hans" "com.apple.keylayout.ABC"))
(defun toggle-ime ()
(interactive)
(let* ((current-ime (mac-input-source))
(next-ime (or (cadr (member current-ime ime-list))
(car ime-list)))) ;; Cycle to the next IME or start from the beginning
(mac-select-input-source next-ime)))
;; Bind F13 to toggle IME
(global-set-key (kbd "<f13>") 'toggle-ime)))
macism升级到v2了,使用了另外一种机制,
不再需要用户授予“辅助功能”权限,
也不需要人为地delay,因此性能和可靠性都大幅提高。