MacM2下PYIM-LIBERIME输入法的安装全过程记录

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)

  )

本论坛不支持 org-mode 语法,帮你重新编辑了一下,采用 markdown 语法

1 个赞

谢谢大佬的帮助!