branch: externals/pyim commit 01c77f4c433bb108d1e46fe223c565f844600f55 Author: Feng Shu <tuma...@163.com> Commit: Feng Shu <tuma...@163.com>
Add pyim-cregexp-convert-at-point-function. * tests/pyim-tests.el (pyim-tests-pyim-cregexp): Update. * pyim-cregexp.el (pyim-cregexp-convert-at-point-function): New customize. (pyim-cregexp-convert-at-point): Just use pyim-pymap-cache-create. (pyim-cregexp-convert-at-point): Use pyim-cregexp-convert-at-point-function. (pyim-cregexp-convert-at-point-function): New function. --- pyim-cregexp.el | 33 +++++++++++++++++++++------------ tests/pyim-tests.el | 21 ++++++++++++++++++++- 2 files changed, 41 insertions(+), 13 deletions(-) diff --git a/pyim-cregexp.el b/pyim-cregexp.el index 0dc6cdc38d..eb425c67bf 100644 --- a/pyim-cregexp.el +++ b/pyim-cregexp.el @@ -46,6 +46,13 @@ 将使用这个 scheme." :type 'symbol) +(defcustom pyim-cregexp-convert-at-point-function + #'pyim-cregexp-convert-at-point-function + "`pyim-cregexp-convert-at-point' 使用的函数。 + +此函数有一个参数 cregexp, 表示生成的 cregexp. 其返回值会插入当前 +buffer.") + (defun pyim-cregexp-char-level-num (num) "根据 NUM 返回一个有效的常用汉字级别。" (if (numberp num) @@ -221,11 +228,8 @@ regexp, 所以搜索单字的时候一般可以搜到生僻字,但搜索句子 在 minibuffer 中,这个命令默认会自动运行 `exit-minibuffer'. 这个可以使用 INSERT-ONLY 参数控制。" (interactive "P") - (unless (equal input-method-function 'pyim-input-method) - (activate-input-method 'pyim)) - (let* ((buffer-string - (buffer-substring (point-min) (point-max))) - (string (if mark-active + (pyim-pymap-cache-create) + (let* ((string (if mark-active (buffer-substring-no-properties (region-beginning) (region-end)) (buffer-substring @@ -236,17 +240,22 @@ regexp, 所以搜索单字的时候一般可以搜到生僻字,但搜索句子 (length (length string)) (cregexp (pyim-cregexp-build string))) (delete-char (- 0 length)) - (cond - ;; Deal with `org-search-view' - ((and (window-minibuffer-p) - (string-match-p - (regexp-quote "[+-]Word/{Regexp}") buffer-string)) - (insert (format "{%s}" cregexp))) - (t (insert cregexp))) + (insert (funcall pyim-cregexp-convert-at-point-function cregexp)) (when (and (not insert-only) (window-minibuffer-p)) (exit-minibuffer)))) +(defun pyim-cregexp-convert-at-point-function (cregexp) + "这个函数是变量 `pyim-cregexp-convert-at-point-function' 的默认取值。" + (cond + ;; Deal with `org-search-view' + ((and (window-minibuffer-p) + (string-match-p + (regexp-quote "[+-]Word/{Regexp}") + (buffer-substring (point-min) (point-max)))) + (format "{%s}" cregexp)) + (t cregexp))) + ;; * Footer (provide 'pyim-cregexp) diff --git a/tests/pyim-tests.el b/tests/pyim-tests.el index 9ca75210b2..f3ce85c73b 100644 --- a/tests/pyim-tests.el +++ b/tests/pyim-tests.el @@ -624,7 +624,26 @@ (should (equal (pyim-cregexp-build "aaaa'aaaa") "\\(?:\\(?:aaaa'\\|aaaa\\|[工恭]恭?敬?敬?\\)\\(?:aaaa\\|[工恭]恭?敬?敬?\\)\\)")) (should (equal (pyim-cregexp-build-1 "aaaa'aaaa") - "\\(?:aaaa'\\|aaaa\\|[工恭][恭]?[敬]?[敬]?\\)\\(?:aaaa\\|[工恭][恭]?[敬]?[敬]?\\)")))) + "\\(?:aaaa'\\|aaaa\\|[工恭][恭]?[敬]?[敬]?\\)\\(?:aaaa\\|[工恭][恭]?[敬]?[敬]?\\)"))) + + (with-temp-buffer + (insert "haha nihao") + (let ((pyim-cregexp-convert-at-point-function + (lambda (cregexp) + (concat "XXX: " cregexp))) + (string "\\(?:nihao\\|[㒟㖏㖕㖖㖻㘈㘝㘨㘿㙞㚔㜤㜦㜵㜸㝕㞋㞙㞾㟧㠜㠡㡪㣇㣷㤛㥾㦐㧱㩘㩶㪒㭤㮆㮏㮞㮟㲡㲰㲻㲽㳮㴪㵫㸎㹸㺲㼭㽱㿦䀑䀔䁥䂇䂼䃵䄒䄭䄹䆨䇣䋴䋻䌜䌰䍲䏔䐁䒜䔭䕥䖆䗿䘌䘦䘽䙚䚓䚾䛏䛘䜆䜓䝚䞕䟢䡾䤔䦊䦵䧇䧔䩞䬯䭃䭢䭲䮍䮗䮘䯀䯅䯵䰯䳖䴴䵑䵒乜伱伲佞你侫倪儗儜儞兒凝匿卄呢咛唸啮喦嗫噛嚀嚙囁囐囓囜圼坭埝埿堄妞妮妳姩娘婗嫋嫟嬝嬢嬣嬲嬺孃孨孴孼孽宁寍寕寗寜寧尼尿屔屰峊嵲嶭巕帇年廿念忸怓怩恁您惄惗愵慝懝扭抐抝抳拈拗拟拧拰捏捻掜揑摂摄摰撚撵擜擬擰攆敜旎昵晲暱杻枿柅柠棿榐槷樢橣檷檸櫱氼氽汼沑泞泥涅涊淣淰湼溓溺濘炄牛牜狃狋狔狞猊獰甯疌疒痆眤睨矃碾祢禰秊秜秥篞簐籋籾粘糱糵紐縌纽聂聍聶聹聻胒脲腝腻膩臡臬臲艌苧苨苶茑茮莥菍蔦蔫薴薿蘖蘗蚭蚴蛪蜺蠥衂衵袅裊褭褹觬誽諗譺讘貎跈跜踂踗蹍蹑� ��躎躡輗輦輾辇辗迡逆郳酿醸釀鈕鈢鈮鉨鉩銸鋷錜鎳鑈鑏鑷钀钮铌镊镍闑陧隉隬霓靵顳颞馜鬡鬤鮎鯓鯢鯰鲇鲵鲶鳥鶂鷊鸋鸟鸮鹝鹢麑黏鼰齞齧齯][㕺㘪㙱㚪㝀㞻㠙㩝㬔㬶㵆䒵䚽䝞䝥䧚䧫䪽䬉䯫侾傐儫勂号呺哠嗥嘷噑嚆嚎壕好峼恏悎昊昦晧暠暤暭曍椃毫浩淏滈澔濠瀥灏灝狢獆獋獔皓皜皞皡皥秏竓籇耗聕茠蒿薃薅薧 [...] + (pyim-cregexp-convert-at-point) + (should (equal (buffer-string) (concat "haha XXX: " string))))) + + (with-temp-buffer + (insert "hinihao") + (set-mark 3) + (let ((pyim-cregexp-convert-at-point-function + (lambda (cregexp) + (concat "XXX: " cregexp))) + (string "\\(?:nihao\\|[㒟㖏㖕㖖㖻㘈㘝㘨㘿㙞㚔㜤㜦㜵㜸㝕㞋㞙㞾㟧㠜㠡㡪㣇㣷㤛㥾㦐㧱㩘㩶㪒㭤㮆㮏㮞㮟㲡㲰㲻㲽㳮㴪㵫㸎㹸㺲㼭㽱㿦䀑䀔䁥䂇䂼䃵䄒䄭䄹䆨䇣䋴䋻䌜䌰䍲䏔䐁䒜䔭䕥䖆䗿䘌䘦䘽䙚䚓䚾䛏䛘䜆䜓䝚䞕䟢䡾䤔䦊䦵䧇䧔䩞䬯䭃䭢䭲䮍䮗䮘䯀䯅䯵䰯䳖䴴䵑䵒乜伱伲佞你侫倪儗儜儞兒凝匿卄呢咛唸啮喦嗫噛嚀嚙囁囐囓囜圼坭埝埿堄妞妮妳姩娘婗嫋嫟嬝嬢嬣嬲嬺孃孨孴孼孽宁寍寕寗寜寧尼尿屔屰峊嵲嶭巕帇年廿念忸怓怩恁您惄惗愵慝懝扭抐抝抳拈拗拟拧拰捏捻掜揑摂摄摰撚撵擜擬擰攆敜旎昵晲暱杻枿柅柠棿榐槷樢橣檷檸櫱氼氽汼沑泞泥涅涊淣淰湼溓溺濘炄牛牜狃狋狔狞猊獰甯疌疒痆眤睨矃碾祢禰秊秜秥篞簐籋籾粘糱糵紐縌纽聂聍聶聹聻胒脲腝腻膩臡臬臲艌苧苨苶茑茮莥菍蔦蔫薴薿蘖蘗蚭蚴蛪蜺蠥衂衵袅裊褭褹觬誽諗譺讘貎跈跜踂踗蹍蹑� ��躎躡輗輦輾辇辗迡逆郳酿醸釀鈕鈢鈮鉨鉩銸鋷錜鎳鑈鑏鑷钀钮铌镊镍闑陧隉隬霓靵顳颞馜鬡鬤鮎鯓鯢鯰鲇鲵鲶鳥鶂鷊鸋鸟鸮鹝鹢麑黏鼰齞齧齯][㕺㘪㙱㚪㝀㞻㠙㩝㬔㬶㵆䒵䚽䝞䝥䧚䧫䪽䬉䯫侾傐儫勂号呺哠嗥嘷噑嚆嚎壕好峼恏悎昊昦晧暠暤暭曍椃毫浩淏滈澔濠瀥灏灝狢獆獋獔皓皜皞皡皥秏竓籇耗聕茠蒿薃薅薧 [...] + (pyim-cregexp-convert-at-point) + (should (equal (buffer-string) (concat "hiXXX: " string)))))) ;; ** pyim-import 相关单元测试 (ert-deftest pyim-tests-pyim-import-words-and-counts ()