mirror of
https://git.FreeBSD.org/ports.git
synced 2025-02-05 11:35:01 +00:00
Fix incompatibility with the current version of japanese/anthy.
This commit is contained in:
parent
5150114b10
commit
540157d436
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=513137
@ -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)
|
||||
|
255
textproc/uim/files/patch-scm_anthy.scm
Normal file
255
textproc/uim/files/patch-scm_anthy.scm
Normal file
@ -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
|
124
textproc/uim/files/patch-uim_anthy.c
Normal file
124
textproc/uim/files/patch-uim_anthy.c
Normal file
@ -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;
|
||||
+ }
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user