aboutsummaryrefslogtreecommitdiff
path: root/textproc
diff options
context:
space:
mode:
authorMANTANI Nobutaka <nobutaka@FreeBSD.org>2019-09-28 15:08:47 +0000
committerMANTANI Nobutaka <nobutaka@FreeBSD.org>2019-09-28 15:08:47 +0000
commit540157d436b20cb1fe2691cf11454469245a2639 (patch)
treede8f19bec1bbea6b377fab06be57db5dd023d705 /textproc
parent5150114b100dbdc8e8d4140c57bb17e731d12d01 (diff)
downloadports-540157d436b20cb1fe2691cf11454469245a2639.tar.gz
ports-540157d436b20cb1fe2691cf11454469245a2639.zip
Fix incompatibility with the current version of japanese/anthy.
Notes
Notes: svn path=/head/; revision=513137
Diffstat (limited to 'textproc')
-rw-r--r--textproc/uim/Makefile2
-rw-r--r--textproc/uim/files/patch-scm_anthy.scm255
-rw-r--r--textproc/uim/files/patch-uim_anthy.c124
3 files changed, 380 insertions, 1 deletions
diff --git a/textproc/uim/Makefile b/textproc/uim/Makefile
index 3074da6a787f..9a38a7855e3f 100644
--- a/textproc/uim/Makefile
+++ b/textproc/uim/Makefile
@@ -3,7 +3,7 @@
PORTNAME= uim
PORTVERSION= 1.8.8
-PORTREVISION?= 1
+PORTREVISION?= 2
CATEGORIES?= textproc
MASTER_SITES= https://github.com/uim/uim/releases/download/${PORTVERSION}/
.if !defined(UIM_SLAVE) && defined(WITHOUT_X11)
diff --git a/textproc/uim/files/patch-scm_anthy.scm b/textproc/uim/files/patch-scm_anthy.scm
new file mode 100644
index 000000000000..a24716d6b48d
--- /dev/null
+++ b/textproc/uim/files/patch-scm_anthy.scm
@@ -0,0 +1,255 @@
+--- scm/anthy.scm.orig 2017-08-14 00:07:27 UTC
++++ scm/anthy.scm
+@@ -67,6 +67,10 @@
+ (define anthy-candidate-type-upper-halfwidth-alnum -7)
+ (define anthy-candidate-type-upper-fullwidth-alnum -8)
+
++(define anthy-compiled-encoding 0)
++(define anthy-euc-jp-encoding 1)
++(define anthy-utf8-encoding 2)
++
+ ;; I don't think the key needs to be customizable.
+ (define-key anthy-space-key? '(" "))
+
+@@ -85,12 +89,12 @@
+ ((anthy-context-converting ac)
+ (anthy-do-commit ac))
+ ((anthy-context-transposing ac)
+- (im-commit ac (anthy-transposing-text ac)))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-transposing-text ac))))
+ ((and
+ (anthy-context-on ac)
+ (anthy-has-preedit? ac))
+ (im-commit
+- ac (anthy-make-whole-string ac #t (anthy-context-kana-mode ac)))))
++ ac (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t (anthy-context-kana-mode ac))))))
+ (anthy-flush ac)
+ (anthy-update-preedit ac)))
+
+@@ -101,14 +105,14 @@
+ ((anthy-context-converting ac)
+ (anthy-do-commit ac))
+ ((anthy-context-transposing ac)
+- (im-commit ac (anthy-transposing-text ac))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-transposing-text ac)))
+ (anthy-flush ac))
+ ((and
+ (anthy-context-on ac)
+ (anthy-has-preedit? ac)
+ (not (= old-kana new-mode)))
+ (im-commit
+- ac (anthy-make-whole-string ac #t (anthy-context-kana-mode ac)))
++ ac (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t (anthy-context-kana-mode ac))))
+ (anthy-flush ac)))
+ (anthy-update-preedit ac))))
+
+@@ -372,7 +376,8 @@
+ (set! anthy-version (anthy-version->major.minor
+ (anthy-lib-get-anthy-version)))))
+ (if anthy-lib-initialized?
+- (anthy-context-set-ac-id! ac (anthy-lib-alloc-context)))
++ (anthy-context-set-ac-id!
++ ac (anthy-lib-alloc-context anthy-utf8-encoding)))
+ (anthy-context-set-widgets! ac anthy-widgets)
+ (anthy-context-set-rkc! ac rkc)
+ (anthy-context-set-preconv-ustr! ac (ustr-new '()))
+@@ -582,7 +587,7 @@
+ (> (string-length preconv-str)
+ 0))
+ (begin
+- (anthy-lib-set-string ac-id preconv-str)
++ (anthy-lib-set-string ac-id (anthy-lib-eucjp-to-utf8 preconv-str))
+ (let ((nr-segments (anthy-lib-get-nr-segments ac-id)))
+ (ustr-set-latter-seq! (anthy-context-segments ac)
+ (make-list nr-segments 0))
+@@ -708,16 +713,16 @@
+
+ ;; direct key => commit
+ (direct
+- (im-commit ac direct))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 direct)))
+
+ ;; space key => commit
+ ((anthy-space-key? key key-state)
+ (if (anthy-context-alnum ac)
+- (im-commit ac (list-ref
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (list-ref
+ ja-alnum-space
+ (- (anthy-context-alnum-type ac)
+- anthy-type-halfwidth-alnum)))
+- (im-commit ac (list-ref ja-space (anthy-context-kana-mode ac)))))
++ anthy-type-halfwidth-alnum))))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (list-ref ja-space (anthy-context-kana-mode ac))))))
+
+ ((anthy-non-composing-symbol? ac key)
+ (anthy-commit-raw ac))
+@@ -798,7 +803,7 @@
+ (> (string-length preconv-str) 0)
+ type)
+ (begin
+- (anthy-lib-set-string ac-id preconv-str)
++ (anthy-lib-set-string ac-id (anthy-lib-eucjp-to-utf8 preconv-str))
+ (expand-segment)
+ (anthy-lib-commit-segment ac-id 0 type))))))
+
+@@ -851,7 +856,7 @@
+ (if (anthy-commit-key? key key-state)
+ (begin
+ (anthy-learn-transposing-text ac)
+- (im-commit ac (anthy-transposing-text ac))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-transposing-text ac)))
+ (anthy-flush ac)
+ #f)
+ #t)
+@@ -889,7 +894,7 @@
+ #t)
+ ; implicit commit
+ (begin
+- (im-commit ac (anthy-transposing-text ac))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-transposing-text ac)))
+ (anthy-flush ac)
+ (anthy-proc-input-state ac key key-state))))))))
+
+@@ -1139,7 +1144,7 @@
+ (begin
+ (im-commit
+ ac
+- (anthy-make-whole-string ac #t (ja-opposite-kana kana)))
++ (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t (ja-opposite-kana kana))))
+ (anthy-flush ac)))
+
+ ;; Transposing¾õÂ֤ذܹÔ
+@@ -1157,7 +1162,7 @@
+ ((anthy-hiragana-key? key key-state)
+ (if (not (= kana anthy-type-hiragana))
+ (begin
+- (im-commit ac (anthy-make-whole-string ac #t kana))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t kana)))
+ (anthy-flush ac)))
+ (anthy-context-set-kana-mode! ac anthy-type-hiragana)
+ (anthy-context-set-alnum! ac #f))
+@@ -1165,7 +1170,7 @@
+ ((anthy-katakana-key? key key-state)
+ (if (not (= kana anthy-type-katakana))
+ (begin
+- (im-commit ac (anthy-make-whole-string ac #t kana))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t kana)))
+ (anthy-flush ac)))
+ (anthy-context-set-kana-mode! ac anthy-type-katakana)
+ (anthy-context-set-alnum! ac #f))
+@@ -1173,7 +1178,7 @@
+ ((anthy-halfkana-key? key key-state)
+ (if (not (= kana anthy-type-halfkana))
+ (begin
+- (im-commit ac (anthy-make-whole-string ac #t kana))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t kana)))
+ (anthy-flush ac)))
+ (anthy-context-set-kana-mode! ac anthy-type-halfkana)
+ (anthy-context-set-alnum! ac #f))
+@@ -1201,7 +1206,7 @@
+ (not (anthy-context-alnum ac))
+ (anthy-kana-toggle-key? key key-state))
+ (begin
+- (im-commit ac (anthy-make-whole-string ac #t kana))
++ (im-commit ac (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t kana)))
+ (anthy-flush ac)
+ (anthy-context-kana-toggle ac)))
+
+@@ -1217,7 +1222,7 @@
+ (begin
+ (im-commit
+ ac
+- (anthy-make-whole-string ac #t kana))
++ (anthy-lib-eucjp-to-utf8 (anthy-make-whole-string ac #t kana)))
+ (anthy-flush ac)))
+
+ ;; left
+@@ -1372,7 +1377,10 @@
+ (not (anthy-context-predicting ac)))
+ (let* ((use-pending-rk-for-prediction? #f)
+ (preconv-str
+- (anthy-make-whole-string ac #t (anthy-context-kana-mode ac)))
++ (anthy-make-whole-string
++ ac
++ (not use-pending-rk-for-prediction?)
++ (anthy-context-kana-mode ac)))
+ (ac-id (anthy-context-ac-id ac))
+ (preedit-len
+ (+
+@@ -1385,7 +1393,8 @@
+ (>= preedit-len anthy-prediction-start-char-count)
+ force-check?)
+ (begin
+- (anthy-lib-set-prediction-src-string ac-id preconv-str)
++ (anthy-lib-set-prediction-src-string
++ ac-id (anthy-lib-eucjp-to-utf8 preconv-str))
+ (let ((nr (anthy-lib-get-nr-predictions ac-id)))
+ (if (and
+ nr
+@@ -1419,7 +1428,7 @@
+ (define anthy-context-transposing-state-preedit
+ (lambda (ac)
+ (let ((transposing-text (anthy-transposing-text ac)))
+- (list (cons preedit-reverse transposing-text)
++ (list (cons preedit-reverse (anthy-lib-eucjp-to-utf8 transposing-text))
+ (cons preedit-cursor "")))))
+
+ (define anthy-transposing-text
+@@ -1461,7 +1470,7 @@
+ (let* ((preconv
+ (ja-join-vu (string-to-list
+ (anthy-make-whole-string ac #t anthy-type-hiragana))))
+- (unconv-candidate (anthy-lib-get-unconv-candidate ac-id seg-idx))
++ (unconv-candidate (anthy-lib-eucjp-to-utf8 (anthy-lib-get-unconv-candidate ac-id seg-idx)))
+ (unconv (if unconv-candidate
+ (ja-join-vu (string-to-list unconv-candidate))
+ '()))
+@@ -1513,7 +1522,7 @@
+ preedit-underline))
+ (cand (if (> cand-idx anthy-candidate-type-halfwidth-alnum)
+ (anthy-lib-get-nth-candidate ac-id seg-idx cand-idx)
+- (anthy-get-raw-candidate ac ac-id seg-idx cand-idx)))
++ (anthy-lib-eucjp-to-utf8 (anthy-get-raw-candidate ac ac-id seg-idx cand-idx))))
+ (seg (list (cons attr cand))))
+ (if (and separator
+ (< 0 seg-idx))
+@@ -1537,15 +1546,15 @@
+ (list
+ (and (not (ustr-cursor-at-beginning? preconv-str))
+ (cons preedit-underline
+- (string-append-map-ustr-former extract-kana preconv-str)))
++ (anthy-lib-eucjp-to-utf8 (string-append-map-ustr-former extract-kana preconv-str))))
+ (and (> (string-length pending) 0)
+- (cons preedit-underline pending))
++ (cons preedit-underline (anthy-lib-eucjp-to-utf8 pending)))
+ (and (anthy-has-preedit? ac)
+ (cons preedit-cursor ""))
+ (and (not (ustr-cursor-at-end? preconv-str))
+ (cons
+ preedit-underline
+- (string-append-map-ustr-latter extract-kana preconv-str)))))))
++ (anthy-lib-eucjp-to-utf8 (string-append-map-ustr-latter extract-kana preconv-str))))))))
+
+ (define anthy-get-commit-string
+ (lambda (ac)
+@@ -1556,8 +1565,9 @@
+ anthy-candidate-type-halfwidth-alnum)
+ (anthy-lib-get-nth-candidate
+ ac-id seg-idx cand-idx)
+- (anthy-get-raw-candidate
+- ac ac-id seg-idx cand-idx)))
++ (anthy-lib-eucjp-to-utf8
++ (anthy-get-raw-candidate
++ ac ac-id seg-idx cand-idx))))
+ (iota (ustr-length segments))
+ (ustr-whole-seq segments)))))
+
+@@ -1882,7 +1892,7 @@
+ (register-im
+ 'anthy
+ "ja"
+- "EUC-JP"
++ "UTF-8"
+ anthy-im-name-label
+ anthy-im-short-desc
+ #f
diff --git a/textproc/uim/files/patch-uim_anthy.c b/textproc/uim/files/patch-uim_anthy.c
new file mode 100644
index 000000000000..c03f3401a5c6
--- /dev/null
+++ b/textproc/uim/files/patch-uim_anthy.c
@@ -0,0 +1,124 @@
+--- uim/anthy.c.orig 2017-08-14 00:07:27 UTC
++++ uim/anthy.c
+@@ -40,6 +40,7 @@
+ #include "uim.h"
+ #include "uim-scm.h"
+ #include "uim-scm-abbrev.h"
++#include "uim-util.h"
+ #include "dynlib.h"
+
+
+@@ -51,6 +52,9 @@ void uim_anthy_plugin_instance_quit(void);
+ static uim_bool initialized;
+ static uim_lisp context_list;
+
++static void *iconv_cd_e2u;
++static void *iconv_cd_u2e;
++
+ static void
+ validate_segment_index(anthy_context_t ac, int i)
+ {
+@@ -96,15 +100,26 @@ init_anthy_lib(void)
+ }
+
+ static uim_lisp
+-create_context(void)
++create_context(uim_lisp encoding_)
+ {
+ anthy_context_t ac;
+ uim_lisp ac_;
++ int encoding;
+
++ /* 0: compiled, 1: EUC-JP, 2: UTF-8 */
++ encoding = C_INT(encoding_);
++
++ if (!iconv_cd_e2u)
++ iconv_cd_e2u = uim_iconv->create("UTF-8", "EUC-JP");
++
++ if (!iconv_cd_u2e)
++ iconv_cd_u2e = uim_iconv->create("EUC-JP", "UTF-8");
++
+ ac = anthy_create_context();
+ if (!ac)
+ uim_fatal_error("anthy_create_context() failed");
+
++ anthy_context_set_encoding(ac, encoding);
+ ac_ = MAKE_PTR(ac);
+ context_list = uim_scm_callf("cons", "oo", ac_, context_list);
+
+@@ -338,6 +353,42 @@ commit_nth_prediction(uim_lisp ac_, uim_lisp nth_)
+ #endif
+ }
+
++static uim_lisp
++eucjp_to_utf8(uim_lisp str_)
++{
++ const char *str;
++ char *convstr;
++ uim_lisp utf8_;
++
++ if (!iconv_cd_e2u)
++ return MAKE_STR("〓");
++
++ str = REFER_C_STR(str_);
++ convstr = uim_iconv->convert(iconv_cd_e2u, str);
++ utf8_ = MAKE_STR(convstr);
++ free(convstr);
++
++ return utf8_;
++}
++
++static uim_lisp
++utf8_to_eucjp(uim_lisp str_)
++{
++ const char *str;
++ char *convstr;
++ uim_lisp eucjp_;
++
++ if (!iconv_cd_u2e)
++ return MAKE_STR("");
++
++ str = REFER_C_STR(str_);
++ convstr = uim_iconv->convert(iconv_cd_u2e, str);
++ eucjp_ = MAKE_STR(convstr);
++ free(convstr);
++
++ return eucjp_;
++}
++
+ #ifndef ENABLE_ANTHY_STATIC
+ void
+ uim_plugin_instance_init(void)
+@@ -352,7 +403,7 @@ uim_anthy_plugin_instance_init(void)
+ uim_scm_eval_c_string("(require-extension (srfi 1))"); /* for delete! */
+
+ uim_scm_init_proc0("anthy-lib-init", init_anthy_lib);
+- uim_scm_init_proc0("anthy-lib-alloc-context", create_context);
++ uim_scm_init_proc1("anthy-lib-alloc-context", create_context);
+ uim_scm_init_proc1("anthy-lib-free-context", release_context);
+ uim_scm_init_proc2("anthy-lib-set-string", set_string);
+ uim_scm_init_proc1("anthy-lib-get-nr-segments",get_nr_segments);
+@@ -368,6 +419,8 @@ uim_anthy_plugin_instance_init(void)
+ uim_scm_init_proc2("anthy-lib-get-nth-prediction", get_nth_prediction);
+ uim_scm_init_proc2("anthy-lib-commit-nth-prediction",
+ commit_nth_prediction);
++ uim_scm_init_proc1("anthy-lib-eucjp-to-utf8", eucjp_to_utf8);
++ uim_scm_init_proc1("anthy-lib-utf8-to-eucjp", utf8_to_eucjp);
+ }
+
+ #ifndef ENABLE_ANTHY_STATIC
+@@ -385,5 +438,14 @@ uim_anthy_plugin_instance_quit(void)
+
+ anthy_quit();
+ initialized = UIM_FALSE;
++
++ if (iconv_cd_e2u) {
++ uim_iconv->release(iconv_cd_e2u);
++ iconv_cd_e2u = NULL;
++ }
++ if (iconv_cd_u2e) {
++ uim_iconv->release(iconv_cd_u2e);
++ iconv_cd_u2e = NULL;
++ }
+ }
+ }