;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\303\304\305\306\307\310%\210\311\312\313\305#\210\314\211\2038\211@\312N\2031\313N\2041\315\313\312N#\210A\266\202\202\210\316\312\313\317#\210\311\320\313\305#\210\314\211\203g\211@\320N\203`\313N\204`\315\313\320N#\210A\266\202\202F\210\316\320\313\317#\210\321\313\322\323\324DD\325\326\327%\210\311\330\331\305#\210\314\211\203\242\211@\330N\203\233\331N\204\233\315\331\330N#\210A\266\202\202\201\210\316\330\331\317#\210\321\331\322\323\332DD\333\326\323%\207" [require cl-lib pyim-common custom-declare-group pyim-outcome nil "Outcome tools for pyim." :group pyim defvaralias pyim-translate-trigger-char pyim-outcome-trigger (saved-value saved-variable-comment) put make-obsolete-variable "4.0" pyim-outcome-trigger-char custom-declare-variable funcall function #[0 "\300\207" [#1="v"] 1 #1#] "用于触发特殊操作的字符,相当与单字快捷键.\n\n输入中文的时候,我们需要快速频繁的执行一些特定的命令,最直接的方\n法就是将上述命令绑定到一个容易按的快捷键上,但遗憾的是 emacs 大多\n数容易按的快捷键都 *名花有主* 了,甚至找一个 “Ctrl+单字符”的快\n捷键都不太容易,特殊功能触发字符,可以帮助我们实现“单字符”快捷\n键,类似 org-mode 的 speed key。\n\n默认情况下,我们可以使用特殊功能触发字符执行下面几个操作(假设触\n发字符为 v):\n\n1. 快速切换中英文标点符号的样式:当光标前的字符是一个标点符号时,\n 按 \"v\" 可以切换这个标点的样式。比如:光标在A处的时候,按\n \"v\" 可以将A前面的全角逗号转换为半角逗号。\n\n 你好,-A-\n\n 按 \"v\" 后\n\n 你好,-A-\n\n2. 快速将光标前的词条添加到词库:当光标前的字符是中文字符时,按\n \"num\" + \"v\" 可以将光标前 num 个中文汉字组成的词条添加到个\n 人词频文件中,比如:当光标在A处时,按\"4v\"可以将“的红烧肉”\n 这个词条加入个人词频文件,默认num不超过9。\n\n 我爱吃美味的红烧肉-A-\n\n值得注意的是,这种方式如果添加的功能太多,会造成许多潜在的冲突。\n\n用户可以使用变量 `pyim-outcome-trigger' 来设置触发字符,默\n认的触发字符是:\"v\", 选择这个字符的理由基于全拼输入法的:\n\n1. \"v\" 不是有效的声母,不会对中文输入造成太大的影响。\n2. \"v\" 字符很容易按。\n\npyim 使用函数 `pyim-process-outcome-handle-char' 来处理特殊功能触发字符。当待输入的\n字符是触发字符时,`pyim-process-outcome-handle-char' 根据光标前的字符的不同来调用不\n同的功能,具体见 `pyim-process-outcome-handle-char' :\n\n单字快捷键受到输入法方案的限制,比如:全拼输入法可以将其设置为v,\n但双拼输入法下设置 v 可能就不行,所以,pyim 首先会检查当前输入法\n方案下,这个快捷键设置是否合理有效,如果不是一个合理的设置,则使\n用拼音方案默认的 :prefer-triggers 。\n\n具体请参考 `pyim-outcome-get-trigger' 。" :type (choice (const nil) string) pyim-wash-function pyim-outcome-trigger-function #[0 "\300\207" [pyim-outcome-trigger-function-default] 1] "可以使用 `pyim-outcome-trigger' 激活的函数。\n\n这个函数与『单字快捷键配合使用』,当光标前面的字符为汉字字符时,\n按 `pyim-outcome-trigger' 对应字符,可以调用这个函数来处理\n光标前面的文字内容。"] 7) #@578 记录 pyim outcome 的变化的历史 在 pyim 中 outcome 代表用户通过输入法选择,并最终插入到 buffer 的字符串。 “一次确认就生成的词条” , 当前变量一般只有一个元素,比如: 1. 输入: nihao 2. 输出: 你好 2. 变量取值为: ("你好") “多次确认才能生成词条” , 当前变量记录了选择的历史,比如: 1. 输入: yiersansi 2. 输出: 一二三四 3. 第一次选择:一二 4. 第二次选择:三 5. 第三次选择:四 6. 变量取值为: ("一二三四" "一二三" "一二") (defvar pyim-outcome-history nil (#$ . 4056)) (pyim-register-local-variables '(pyim-outcome-history)) #@34 获取 outcome (fn &optional N) (defalias 'pyim-outcome-get #[256 "\211\206\3018\207" [pyim-outcome-history 0] 3 (#$ . 4741)]) #@298 检查 `pyim-outcome-trigger' 是否为一个合理的 trigger char 。 pyim 的 translate-trigger-char 要占用一个键位,为了防止用户 自定义设置与输入法冲突,这里需要检查一下这个键位设置的是否合理, 如果不合理,就返回输入法默认设定。 (defalias 'pyim-outcome-get-trigger #[0 "\301!\203 \302!\202\211G\303U\205\211\304\305 \306\"\304\305 \307\"\206(\304\305 \310\"C\311\312!\"\2036\211@\2027\207" [pyim-outcome-trigger characterp char-to-string 1 pyim-scheme-get-option pyim-scheme-name :first-chars :prefer-triggers :prefer-trigger-chars pyim-string-match-p regexp-quote] 7 (#$ . 4879)]) (byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias pyim-wash-current-line-function pyim-outcome-trigger-function-default nil make-obsolete "4.0"] 4) #@158 默认的 `pyim-outcome-trigger-function'. 这个函数可以清理当前行的内容,比如:删除不必要的空格,等。 (fn &optional NO-SPACE) (defalias 'pyim-outcome-trigger-function-default #[256 "\300 `\301\"\203\302\202\303\304G\305V\205\206|\210\306\307!r\211q\210\310\305\311\312\313!\314\"\315$\216c\210\316\317\320B\321B\322BBBB\211\203}\211@\323\305\211W\203t\211eb\210\324@\304\325#\203l\326\327\330!A\327\315!Q\304\325#\210\202R\210\211T\262\202H\266A\266\202\202@\210\331 \262*\210\211c\207" [line-beginning-position buffer-substring-no-properties #1="" " " nil 0 generate-new-buffer " *temp*" make-byte-code "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 ("\\([,。;?!;、)】]\\) *\\([[:ascii:]]\\)" . #1#) ("\\([[:ascii:]]\\) *\\([(【]\\)" . #1#) "\\([a-zA-Z]\\) *\\(\\cc\\)" "\\(\\cc\\) *\\([a-zA-Z]\\)" (("\\(\\cc\\) +\\(\\cc\\)" . #1#)) 3 re-search-forward t replace-match match-string 1 buffer-string] 17 (#$ . 5714) nil]) (provide 'pyim-outcome)