MacM2下PYIM-LIBERIME输入法的安装全过程记录
准备工作
- M2 Mac Mini(OS13.5) 上安装 emacs-plus@28, 使用homebrew安装。
- 在AppStore安装Xcode,在终端输入命令“sudo /usr/bin/xcode-select --switch /Application/Xcode.app”
- 终端输入命令mkdir src 建立src文件夹(~/src)
librime
下载代码
cd src
git clone --recursive
编译boost
cd librime
make xcode/deps/boost
在 .zshrc 中加入变量
export BOOT_ROOT="$HOME/src/deps/boost_1_78_0"
编译third-party libraries
确保还在~/src/librime目录中 make xcode/deps
编译 librime
make xcode
安装squirrel
brew install --cask squirrel
liberime
下载liberime
目录在~/src,
git clone
变量设置
环境变量RIME_PATH,在 .zshrc 中加入
export RIME_PATH="$HOME/src/librime"
export EMACS_MAJOR_VERSION=28
emacs 下编译
在emacs 的 init.el 文件中加入
(setq source-directory "opt/homebrew/Cellar/emacs-plus@28/28.2/include")
(add-to-list 'load-path "~/src/liberime")
(require 'liberime)
打开emacs, M-x liberime-build
显示 successfully , 且有报错消息找不到 liberime.core,因为我们的配置文件中没有相关配置,所以下一步安装pyim 且配置 liberime.core.dylib 的路径。
安装 pyim
在init.el 中加入如下内容,使用straight.el包管理器。lazy-load, posframe已经安装,此处为调用。 liberime 也是调用不必安装。 pyim-liberime 在pyim包中的,所以也是调用。
(use-package pyim
:demand t
:diminish pyim-isearch-mode
:init
(setq default-input-method "pyim")
(setq pyim-title "ㄓ")
(use-feature posframe
:demand t)
:custom
(pyim-page-tooltip 'posframe)
(pyim-page-length 9)
:config
(use-feature liberime
;:disabled
:load-path "~/src/liberime/"
:demand t
:init
(module-load (expand-file-name "/Users/willam/src/liberime/src/liberime-core.dylib"))
:custom
(liberime-shared-data-dir "/Library/Input Methods/Squirrel.app/Contents/SharedSupport")
(liberime-user-date-dir "~/.emacs.d/rime/")
:config
(use-feature pyim-liberime
:load-path "~/.emacs.d/straight/repos/pyim"
:demand t
:init
(setq pyim-default-scheme 'rime-quanpin)
)
(liberime-start liberime-shared-data-dir liberime-user-data-dir)
(liberime-try-select-schema "luna_pinyin_simp")
)
(use-package pyim-tsinghua-dict
:disabled
:straight (:host github :repo "redguardtoo/pyim-tsinghua-dict")
:demand t
:config
(pyim-tsinghua-dict-enable)
)
(use-package pyim-basedict
:after pyim
:init (pyim-basedict-enable)
)
(pyim-isearch-mode 1) ;;用户激活这个 mode 后,可以使用下面的方式 强制关闭 isearch 搜索框中文输入(即使 在 pyim 激活的时候)
;;如何用 “;” 来选择第二个候选词
(define-key pyim-mode-map ";"
(lambda ()
(interactive)
(pyim-select-word-by-number 2)))
(setq pyim-enable-shortcode nil) ;關閉輸入聯想詞功能
(setq-default pyim-english-input-switch-functions
'(pyim-probe-dynamic-english
pyim-probe-isearch-mode
))
(setq-default pyim-punctuation-half-width-functions
'(pyim-probe-punctuation-line-beginning
pyim-probe-punctuation-after-punctuation))
;; 让ivy 支持拼音搜索候选项功能
(use-feature pyim-cregexp-utils
:init
(setq ivy-re-builders-alist
'((t . pyim-cregexp-ivy)))
)
;;让 vertico, selectrum 等补全框架,通过 orderless 支持拼音搜索候选项功能。
(defun my-orderless-regexp (orig_func component)
(let ((result (funcall orig_func component)))
(pyim-cregexp-build result)))
(advice-add 'orderless-regexp :around #'my-orderless-regexp)
(lazy-load-set-keys
'(
("," . pyim-page-next-page)
("." . pyim-page-previous-page)
("M-f" . pyim-page-next-word)
("M-b" . pyim-page-previous-word)
("M-c" . pyim-quit-clear)
)
pyim-mode-map
)
:bind
("M-j" . pyim-convert-string-at-point)
)