;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file contains utf-8 non-ASCII characters, ;;; and so cannot be loaded into Emacs 22 or earlier. (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (string-lessp emacs-version "23") (error "`%s' was compiled for Emacs 23 or later" #$)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\304\305\306\307\310\311%\210\312\313\314\315\316DD\317\320\321\310\311&\210\312\322\314\315\323DD\324\320\325%\207" [require cl-lib pyim-common pyim-dict custom-declare-group pyim-dcache nil "Dcache for pyim." :group pyim custom-declare-variable pyim-dcache-directory funcall function #[0 "\300\301!\207" [locate-user-emacs-file "pyim/dcache/"] 2] "一个目录,用于保存 pyim 词库对应的 cache 文件." :type directory pyim-dcache-backend #[0 "\300\207" [pyim-dhashcache] 1] "词库后端引擎.负责缓冲词库并提供搜索词的算法.\n可选项为 `pyim-dhashcache' 或 `pyim-dregcache'.\n前者搜索单词速度很快,消耗内存多. 后者搜索单词速度较快,消耗内存少.\n\n`pyim-dregcache' 速度和词库大小成正比. 当词库接近100M大小时,\n在六年历史的笔记本上会有一秒的延迟. 这时建议换用 `pyim-dhashcache'.\n\n注意:`pyim-dregcache' 只支持全拼和双拼输入法,不支持其它型码输入法." symbol] 8) #@528 是否自动创建和更新词库对应的 dcache 文件. 这个变量默认设置为 t, 如果有词库文件添加到 `pyim-dicts' 或者 `pyim-extra-dicts' 时,pyim 会自动生成相关的 dcache 文件。 一般不建议将这个变量设置为 nil,除非有以下情况: 1. 用户的词库已经非常稳定,并且想通过禁用这个功能来降低 pyim 对资源的消耗。 2. 自动更新功能无法正常工作,用户通过手工从其他机器上拷贝 dcache 文件的方法让 pyim 正常工作。 (defvar pyim-dcache-auto-update t (#$ . 1450)) #@100 Get backend API named API-NAME then call it with arguments API-ARGS. (fn API-NAME &rest API-ARGS) (defalias 'pyim-dcache-call-api #[385 "\302!\204\n\303!\210\304\305!\306\305!Q!\307!\203!\310\"\202- \205-\311\312\305!\"\210\313\207" [pyim-dcache-backend pyim-debug featurep require intern symbol-name "-" functionp apply message "%S 不是一个有效的 dcache api 函数." nil] 7 (#$ . 2031)]) #@38 初始化 dcache 缓存相关变量. (defalias 'pyim-dcache-init-variables #[0 "\300\301!\207" [pyim-dcache-call-api init-variables] 2 (#$ . 2446)]) #@98 从 `pyim-dcache-directory' 中读取与 VARIABLE 对应的文件中保存的值. (fn VARIABLE) (defalias 'pyim-dcache-get-variable #[257 "\301\302!\"\303!\207" [pyim-dcache-directory expand-file-name symbol-name pyim-dcache-get-value-from-file] 4 (#$ . 2601)]) #@353 设置变量. 如果 VARIABLE 的值为 nil, 则使用 ‘pyim-dcache-directory’ 中对应文件的内容来设置 VARIABLE 变量,FORCE-RESTORE 设置为 t 时,强制恢复,变量原来的值将丢失。 如果获取的变量值为 nil 时,将 VARIABLE 的值设置为 FALLBACK-VALUE . (fn VARIABLE &optional FORCE-RESTORE FALLBACK-VALUE) (defalias 'pyim-dcache-set-variable #[769 "\204\nJ?\205\"\301\302!\"\303!\206\206\304\305\306\"L\262\207" [pyim-dcache-directory expand-file-name symbol-name pyim-dcache-get-value-from-file make-hash-table :test equal] 8 (#$ . 2874)]) #@98 将 VARIABLE 变量的取值保存到 `pyim-dcache-directory' 中对应文件中. (fn VARIABLE) (defalias 'pyim-dcache-save-variable #[257 "\301\302!\"J\303\"\207" [pyim-dcache-directory expand-file-name symbol-name pyim-dcache-save-value-to-file] 6 (#$ . 3481)]) #@54 将 VALUE 保存到 FILE 文件中. (fn VALUE FILE) (defalias 'pyim-dcache-save-value-to-file #[514 "\205A\301\302!r\211q\210\303\304\305\306\307!\310\"\311$\216\312c\210\313\314\315 \"c\210\316!c\210\317c\210\320c\210\321c\210\322c\210\323\324!\325\"\210\325\326!+\262\207" [save-silently generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 ";; Auto generated by `pyim-dhashcache-save-variable-to-file', don't edit it by hand!\n" format ";; Build time: %s\n\n" current-time-string prin1-to-string "\n\n" ";; Local Variables:\n" ";; coding: utf-8-unix\n" ";; End:" make-directory file-name-directory t pyim-dcache-write-file] 9 (#$ . 3757)]) #@50 读取保存到 FILE 里面的 value. (fn FILE) (defalias 'pyim-dcache-get-value-from-file #[257 "\300!\205=\301\302!r\211q\210\303\304\305\306\307!\310\"\311$\216\312!\210\3131(\314p!0\202*\210\315\211\2047\316\317\320\321!Q!\210\211\262*\262\207" [file-exists-p generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 insert-file-contents (error) read nil write-file "-dump-" format-time-string "%Y%m%d%H%M%S"] 8 (#$ . 4483)]) #@75 A helper function to write dcache files. (fn FILENAME &optional CONFIRM) (defalias 'pyim-dcache-write-file #[513 "\303\211\203)\304!\203)\305 \306=\203 <\203\n\204)\307\310\311\"!\204)\312\313!\210\314ed\315\316%\210\317\320\")\207" [coding-system-for-write last-nonmenu-event use-dialog-box utf-8-unix file-exists-p framep-on-display ns y-or-n-p format-message "File `%s' exists; overwrite? " user-error "Canceled" write-region nil :silent message "Saving file %s..."] 8 (#$ . 4994)]) #@176 保存 dcache. 将用户选择过的词生成的缓存和词频缓存的取值 保存到它们对应的文件中. 这个函数默认作为 `kill-emacs-hook' 使用。 (defalias 'pyim-dcache-save-caches #[0 "\300\301!\210\302\207" [pyim-dcache-call-api save-personal-dcache-to-file t] 2 (#$ . 5501) nil]) (defalias 'pyim-export 'pyim-dcache-export) #@264 将个人词条以及词条对应的词频信息导出到文件 FILE. 如果 FILE 为 nil, 提示用户指定导出文件位置, 如果 CONFIRM 为 non-nil, 文件存在时将会提示用户是否覆盖,默认为覆盖模式 (fn FILE &optional CONFIRM) (defalias 'pyim-dcache-export #[513 "\300\301!r\211q\210\302\303\304\305\306!\307\"\310$\216\311c\210\312\313!\210\314\"*\207" [generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 ";;; -*- coding: utf-8-unix -*-\n" pyim-dcache-call-api insert-export-content pyim-dcache-write-file] 9 (#$ . 5864) "F将词条相关信息导出到文件: "]) (defalias 'pyim-export-personal-words 'pyim-dcache-export-personal-words) #@402 将用户选择过的词生成的缓存导出为 pyim 词库文件. 如果 FILE 为 nil, 提示用户指定导出文件位置, 如果 CONFIRM 为 non-nil, 文件存在时将会提示用户是否覆盖,默认为覆盖模式。 注: 这个函数的用途是制作 pyim 词库,个人词条导入导出建议使用: `pyim-dcache-import' 和 `pyim-dcache-export' . (fn FILE &optional CONFIRM) (defalias 'pyim-dcache-export-personal-words #[513 "\300\301#\210\302\303!\207" [pyim-dcache-call-api export-personal-words message "Pyim export finished."] 6 (#$ . 6620) "F将个人缓存中的词条导出到文件:"]) #@104 读取并加载所有相关词库 dcache. 如果 FORCE 为真,强制加载。 (fn &optional FORCE) (defalias 'pyim-dcache-update #[256 "\300 \210\301!\210\302!\210\303!\207" [pyim-dcache-init-variables pyim-dcache-update-personal-words pyim-dcache-update-code2word pyim-dcache-update-shortcode2word] 3 (#$ . 7252)]) #@218 读取并加载词库. 读取 `pyim-dicts' 和 `pyim-extra-dicts' 里面的词库文件,生成对应的 词库缓冲文件,然后加载词库缓存。 如果 FORCE 为真,强制加载。 (fn &optional FORCE) (defalias 'pyim-dcache-update-code2word #[256 "\205\303\304\305 \n\"\"\306!\307\310$\266\202\207" [pyim-dcache-auto-update pyim-dicts pyim-extra-dicts mapcar #[257 "\300\301\"?\205\f\300\302\"\207" [plist-get :disable :file] 4 "\n\n(fn X)"] append pyim-dcache-create-dicts-md5 pyim-dcache-call-api update-code2word] 8 (#$ . 7582)]) #@19 (fn DICT-FILES) (defalias 'pyim-dcache-create-dicts-md5 #[257 "\300\301\302\303\304\305\306\307\310!\311\"\312\313%\"!!\207" ["v1" md5 prin1-to-string mapcar make-byte-code 257 "\300\301\302\303\"8E\207" vconcat vector [5 file-attributes string] 7 "\n\n(fn FILE)"] 11 (#$ . 8148)]) #@92 更新个人缓存词库。 如果 FORCE non-nil, 则强制更新。 (fn &optional FORCE) (defalias 'pyim-dcache-update-personal-words #[256 "\205\301\302\"\207" [pyim-dcache-auto-update pyim-dcache-call-api update-personal-words] 4 (#$ . 8443)]) #@97 更新 shortcode2word 缓存。 如果 FORCE non-nil, 则强制更新。 (fn &optional FORCE) (defalias 'pyim-dcache-update-shortcode2word #[256 "\205\301\302\"\207" [pyim-dcache-auto-update pyim-dcache-call-api update-shortcode2word] 4 (#$ . 8701)]) #@71 保存词频到缓存. (fn WORD &optional PREPEND WORDCOUNT-HANDLER) (defalias 'pyim-dcache-update-iword2count #[769 "\300\301$\207" [pyim-dcache-call-api update-iword2count] 8 (#$ . 8964)]) #@52 搜素中文词条 WORD 对应的 code. (fn WORD) (defalias 'pyim-dcache-search-word-code #[257 "\300\301\"\207" [pyim-dcache-call-api search-word-code] 4 (#$ . 9165)]) #@53 保存个人词到缓存. (fn WORD PINYIN PREPEND) (defalias 'pyim-dcache-insert-icode2word #[771 "\300\301$\207" [pyim-dcache-call-api insert-word-into-icode2word] 8 (#$ . 9342)]) #@155 升级个人词库缓存. 主要是将个人词库中旧的 code-prefix 升级为新的 code-prefix. 用到 scheme 中的 :code-prefix-history 信息。 (defalias 'pyim-dcache-upgrade-icode2word #[0 "\300\301!\207" [pyim-dcache-call-api upgrade-icode2word] 2 (#$ . 9534) nil]) #@58 将中文词条 WORD 从个人词库中删除 (fn WORD) (defalias 'pyim-dcache-delete-word #[257 "\300\301\"\207" [pyim-dcache-call-api delete-word] 4 (#$ . 9818)]) #@217 从 FROM 对应的 dcache 中搜索 CODE, 得到对应的词条. 当词库文件加载完成后,pyim 就可以用这个函数从词库缓存中搜索某个 code 对应的中文词条了. (fn CODE &optional FROM) (defalias 'pyim-dcache-get #[513 "\300\301#\207" [pyim-dcache-call-api get] 6 (#$ . 9992)]) #@55 将 CODE 分成 code-prefix 和 rest code. (fn CODE) (defalias 'pyim-dcache-code-split #[257 "\211\204\300\207\301\302\"\203\211\303\304O\304\300OD\207\301\305\"\203\"\306D\207\301\307\"\204-\306D\207\310\311\"\211@\311PA@D\207" [nil pyim-string-match-p "^[[:punct:]]" 0 1 "-" "" "[[:punct:]]" split-string "/"] 5 (#$ . 10308)]) (provide 'pyim-dcache)