macのemacsにc/migemoをいれる
C/Migemoとは
Migemo(Ruby/Migemo)をC言語で実装したもので、ローマ字のまま日本語を(インクリメンタルに)検索する」ことができるものです。
READMEより一部抜粋
検証環境
- macbookair Late 2010
- macbookair Mid 2012
- OSX 10.8.2
参考サイト様:[http://d.hatena.ne.jp/ground256/20111008/1318063872
http://d.hatena.ne.jp/ground256/20111008/1318063872:title=Mac OS X Lion の emacs-appでmigemoを使えるようにする]
インストール手順
ソースの入手
C/Migemo ― KaoriYaでcmigemoの最新版をチェック。
現在はgithubにリポジトリがあるようです。
cmigemo - github
$ git clone https://github.com/koron/cmigemo.git Cloning into 'cmigemo'... remote: Counting objects: 1138, done. remote: Compressing objects: 100% (663/663), done. remote: Total 1138 (delta 422), reused 1138 (delta 422) Receiving objects: 100% (1138/1138), 461.01 KiB | 170 KiB/s, done. Resolving deltas: 100% (422/422), done.
$ cd cmigemo $ ll drwxr-xr-x 17 typosterr staff 578 1 27 11:30 ./ drwxr-xr-x 6 typosterr staff 204 1 27 11:30 ../ drwxr-xr-x 12 typosterr staff 408 1 27 11:30 .git/ -rw-r--r-- 1 typosterr staff 147 1 27 11:30 .hgignore -rw-r--r-- 1 typosterr staff 145 1 27 11:30 .hgtags -rw-r--r-- 1 typosterr staff 3306 1 27 11:30 Makefile -rw-r--r-- 1 typosterr staff 179 1 27 11:30 README.txt -rw-r--r-- 1 typosterr staff 5 1 27 11:30 VERSION drwxr-xr-x 23 typosterr staff 782 1 27 11:30 compile/ -rw-r--r-- 1 typosterr staff 1305 1 27 11:30 config.mk -rwxr-xr-x 1 typosterr staff 1770 1 27 11:30 configure* drwxr-xr-x 9 typosterr staff 306 1 27 11:30 dict/ drwxr-xr-x 9 typosterr staff 306 1 27 11:30 doc/ -rw-r--r-- 1 typosterr staff 1260 1 27 11:30 mkpkg drwxr-xr-x 25 typosterr staff 850 1 27 11:30 src/ drwxr-xr-x 8 typosterr staff 272 1 27 11:30 tools/ drwxr-xr-x 11 typosterr staff 374 1 27 11:30 xpcom/
ライブラリとプログラムのビルド
$ ./configure $ make osx make -f compile/Make_osx.mak cc -O2 -Wall -fPIC -o build/object/main.o -c src/main.c src/main.c:34:13: warning: passing 'unsigned char [256]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] if (!fgets(buf, sizeof(buf), stdin)) ^~~ /usr/include/stdio.h:246:30: note: passing argument to parameter here char *fgets(char * __restrict, int, FILE *); ^ src/main.c:41:20: warning: passing 'unsigned char [256]' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] if ((ans = strchr(buf, '\n')) != NULL) ^~~ /usr/include/string.h:86:26: note: passing argument to parameter here char *strchr(const char *, int); ^ src/main.c:41:11: warning: assigning to 'unsigned char *' from 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] if ((ans = strchr(buf, '\n')) != NULL) ^ ~~~~~~~~~~~~~~~~~ src/main.c:169:54: warning: passing 'char [3]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_OR, "\\|"); ^~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:170:59: warning: passing 'char [4]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_IN, "\\%("); ^~~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:171:60: warning: passing 'char [3]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_OUT, "\\)"); ^~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:173:56: warning: passing 'char [5]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEWLINE, "\\_s*"); ^~~~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:177:54: warning: passing 'char [3]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_OR, "\\|"); ^~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:178:59: warning: passing 'char [3]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_IN, "\\("); ^~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:179:60: warning: passing 'char [3]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_OUT, "\\)"); ^~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:181:56: warning: passing 'char [5]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEWLINE, "\\s-*"); ^~~~~~~ src/migemo.h:56:23: note: passing argument to parameter 'op' here const unsigned char* op); ^ src/main.c:188:34: warning: passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] ans = migemo_query(pmigemo, word); ^~~~ src/migemo.h:51:23: note: passing argument to parameter 'query' here const unsigned char* query); ^ 12 warnings generated. cc -O2 -Wall -fPIC -o build/object/charset.o -c src/charset.c cc -O2 -Wall -fPIC -o build/object/filename.o -c src/filename.c cc -O2 -Wall -fPIC -o build/object/migemo.o -c src/migemo.c src/migemo.c:178:32: warning: passing 'const char *' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] if (dict && romaji_load(dict, dict_file) == 0) ^~~~~~~~~ src/romaji.h:24:54: note: passing argument to parameter 'filename' here int romaji_load(romaji* object, const unsigned char* filename); ^ src/migemo.c:255:34: warning: passing 'char [1024]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] romaji_load(obj->roma2hira, roma_dict); ^~~~~~~~~ src/romaji.h:24:54: note: passing argument to parameter 'filename' here int romaji_load(romaji* object, const unsigned char* filename); ^ src/migemo.c:256:34: warning: passing 'char [1024]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] romaji_load(obj->hira2kata, kata_dict); ^~~~~~~~~ src/romaji.h:24:54: note: passing argument to parameter 'filename' here int romaji_load(romaji* object, const unsigned char* filename); ^ src/migemo.c:257:32: warning: passing 'char [1024]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] romaji_load(obj->han2zen, h2z_dict); ^~~~~~~~ src/romaji.h:24:54: note: passing argument to parameter 'filename' here int romaji_load(romaji* object, const unsigned char* filename); ^ src/migemo.c:258:32: warning: passing 'char [1024]' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] romaji_load(obj->zen2han, z2h_dict); ^~~~~~~~ src/romaji.h:24:54: note: passing argument to parameter 'filename' here int romaji_load(romaji* object, const unsigned char* filename); ^ src/migemo.c:376:27: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] if (!(len = my_strlen(query))) ^~~~~ src/migemo.c:56:23: note: passing argument to parameter 's' here my_strlen(const char* s) ^ src/migemo.c:389:17: warning: passing 'const unsigned char [6]' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] if (!strchr(VOWEL_CHARS, buf[len - 1])) ^~~~~~~~~~~ /usr/include/string.h:86:26: note: passing argument to parameter here char *strchr(const char *, int); ^ src/migemo.c:391:29: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] add_dubious_vowels(object, buf, len); ^~~ src/migemo.c:355:51: note: passing argument to parameter 'buf' here add_dubious_vowels(migemo* object, unsigned char* buf, int index) ^ src/migemo.c:393:24: warning: passing 'const unsigned char [6]' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] if (len < 2 || strchr(VOWEL_CHARS, buf[len - 2])) ^~~~~~~~~~~ /usr/include/string.h:86:26: note: passing argument to parameter here char *strchr(const char *, int); ^ src/migemo.c:399:20: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] add_roma(object, buf); ^~~ src/migemo.c:322:41: note: passing argument to parameter 'query' here add_roma(migemo* object, unsigned char* query) ^ src/migemo.c:406:30: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign] add_dubious_vowels(object, buf, len + 3); ^~~ src/migemo.c:355:51: note: passing argument to parameter 'buf' here add_dubious_vowels(migemo* object, unsigned char* buf, int index) ^ src/migemo.c:466:25: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] int len = my_strlen(query); ^~~~~ src/migemo.c:56:23: note: passing argument to parameter 's' here my_strlen(const char* s) ^ 12 warnings generated. cc -O2 -Wall -fPIC -o build/object/mnode.o -c src/mnode.c cc -O2 -Wall -fPIC -o build/object/romaji.o -c src/romaji.c src/romaji.c:208:33: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] unsigned char *out = STRDUP(string), *tmp; ^~~~~~ /usr/include/string.h:127:26: note: passing argument to parameter here char *strdup(const char *); ^ src/romaji.c:208:20: warning: initializing 'unsigned char *' with an expression of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] unsigned char *out = STRDUP(string), *tmp; ^ ~~~~~~~~~~~~~~ src/romaji.c:245:27: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] value_length = strlen(value); ^~~~~ /usr/include/string.h:92:28: note: passing argument to parameter here size_t strlen(const char *); ^ src/romaji.c:255:33: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] (*ref_node)->value = STRDUP(value); ^~~~~ /usr/include/string.h:127:26: note: passing argument to parameter here char *strdup(const char *); ^ src/romaji.c:255:24: warning: assigning to 'unsigned char *' from 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] (*ref_node)->value = STRDUP(value); ^ ~~~~~~~~~~~~~ src/romaji.c:259:17: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] && !strcmp(key, ROMAJI_FIXKEY_XN)) ^~~ /usr/include/string.h:87:25: note: passing argument to parameter here int strcmp(const char *, const char *); ^ src/romaji.c:262:31: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] object->fixvalue_xn = STRDUP(value); ^~~~~ /usr/include/string.h:127:26: note: passing argument to parameter here char *strdup(const char *); ^ src/romaji.c:262:22: warning: assigning to 'unsigned char *' from 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] object->fixvalue_xn = STRDUP(value); ^ ~~~~~~~~~~~~~ src/romaji.c:265:17: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] && !strcmp(key, ROMAJI_FIXKEY_XTU)) ^~~ /usr/include/string.h:87:25: note: passing argument to parameter here int strcmp(const char *, const char *); ^ src/romaji.c:268:32: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] object->fixvalue_xtu = STRDUP(value); ^~~~~ /usr/include/string.h:127:26: note: passing argument to parameter here char *strdup(const char *); ^ src/romaji.c:268:23: warning: assigning to 'unsigned char *' from 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] object->fixvalue_xtu = STRDUP(value); ^ ~~~~~~~~~~~~~ src/romaji.c:376:35: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] charset = charset_detect_file(filename); ^~~~~~~~ src/charset.h:35:37: note: passing argument to parameter 'path' here int charset_detect_file(const char* path); ^ src/romaji.c:379:21: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] if ((fp = fopen(filename, "rt")) != NULL) ^~~~~~~~ /usr/include/stdio.h:250:36: note: passing argument to parameter here FILE *fopen(const char * __restrict, const char * __restrict) ... ^ src/romaji.c:454:18: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] answer = STRDUP(WORDBUF_GET(buf)); ^~~~~~~~~~~~~~~~ src/wordbuf.h:23:24: note: expanded from macro 'WORDBUF_GET' #define WORDBUF_GET(w) ((w)->buf) ^~~~~~~~~~ /usr/include/string.h:127:26: note: passing argument to parameter here char *strdup(const char *); ^ src/romaji.c:454:9: warning: assigning to 'unsigned char *' from 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] answer = STRDUP(WORDBUF_GET(buf)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~ 15 warnings generated. cc -O2 -Wall -fPIC -o build/object/rxgen.o -c src/rxgen.c src/rxgen.c:156:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_or, RXGEN_OP_OR); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:88:30: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:156:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_or, RXGEN_OP_OR); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:89:27: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:39: note: passing argument to parameter '__dest' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ src/rxgen.c:157:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_nest_in, RXGEN_OP_NEST_IN); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:88:30: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:157:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_nest_in, RXGEN_OP_NEST_IN); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:89:27: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:39: note: passing argument to parameter '__dest' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ src/rxgen.c:158:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_nest_out, RXGEN_OP_NEST_OUT); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:88:30: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:158:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_nest_out, RXGEN_OP_NEST_OUT); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:89:27: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:39: note: passing argument to parameter '__dest' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ src/rxgen.c:159:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_select_in, RXGEN_OP_SELECT_IN); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:88:30: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:159:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_select_in, RXGEN_OP_SELECT_IN); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:89:27: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:39: note: passing argument to parameter '__dest' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ src/rxgen.c:160:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_select_out, RXGEN_OP_SELECT_OUT); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:88:30: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:160:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_select_out, RXGEN_OP_SELECT_OUT); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:89:27: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:39: note: passing argument to parameter '__dest' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ src/rxgen.c:161:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_newline, RXGEN_OP_NEWLINE); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:88:30: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:161:9: warning: passing 'unsigned char [8]' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(object->op_newline, RXGEN_OP_NEWLINE); ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/secure/_string.h:89:27: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:39: note: passing argument to parameter '__dest' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ src/rxgen.c:322:18: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] answer = STRDUP(WORDBUF_GET(buf)); ^~~~~~~~~~~~~~~~ src/wordbuf.h:23:24: note: expanded from macro 'WORDBUF_GET' #define WORDBUF_GET(w) ((w)->buf) ^~~~~~~~~~ /usr/include/string.h:127:26: note: passing argument to parameter here char *strdup(const char *); ^ src/rxgen.c:322:9: warning: assigning to 'unsigned char *' from 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] answer = STRDUP(WORDBUF_GET(buf)); ^ ~~~~~~~~~~~~~~~~~~~~~~~~ src/rxgen.c:383:16: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] if (strlen(op) >= RXGEN_OP_MAXLEN) ^~ /usr/include/string.h:92:28: note: passing argument to parameter here size_t strlen(const char *); ^ src/rxgen.c:387:12: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(dest, op); ~~~~~~~^~~~~~~~~ /usr/include/secure/_string.h:88:30: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:387:18: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(dest, op); ~~~~~~~~~~~~~^~~ /usr/include/secure/_string.h:88:36: note: expanded from macro 'strcpy' ? __builtin___strcpy_chk (dest, src, __darwin_obsz (dest)) \ ^ src/rxgen.c:387:12: warning: passing 'unsigned char *' to parameter of type 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(dest, op); ~~~~~~~^~~~~~~~~ /usr/include/secure/_string.h:89:27: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:39: note: passing argument to parameter '__dest' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ src/rxgen.c:387:18: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] strcpy(dest, op); ~~~~~~~~~~~~~^~~ /usr/include/secure/_string.h:89:33: note: expanded from macro 'strcpy' : __inline_strcpy_chk (dest, src)) ^ /usr/include/secure/_string.h:92:70: note: passing argument to parameter '__src' here __inline_strcpy_chk (char *__restrict __dest, const char *__restrict __src) ^ 19 warnings generated. cc -O2 -Wall -fPIC -o build/object/wordbuf.o -c src/wordbuf.c src/wordbuf.c:118:27: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] size_t l = strlen(sz); ^~ /usr/include/string.h:92:28: note: passing argument to parameter here size_t strlen(const char *); ^ 1 warning generated. cc -O2 -Wall -fPIC -o build/object/wordlist.o -c src/wordlist.c src/wordlist.c:27:14: warning: assigning to 'unsigned char *' from 'char *' converts between pointers to integer types with different sign [-Wpointer-sign] p->ptr = (char*)(p + 1); ^ ~~~~~~~~~~~~~~ src/wordlist.c:51:22: warning: passing 'const unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign] len = strlen(ptr); ^~~ /usr/include/string.h:92:28: note: passing argument to parameter here size_t strlen(const char *); ^ 2 warnings generated. cc -dynamiclib -install_name libmigemo.1.dylib -o libmigemo.1.1.0.dylib ./build/object/charset.o ./build/object/filename.o ./build/object/migemo.o ./build/object/mnode.o ./build/object/romaji.o ./build/object/rxgen.o ./build/object/wordbuf.o ./build/object/wordlist.o rm -f libmigemo.1.dylib libmigemo.dylib ln -s libmigemo.1.1.0.dylib libmigemo.1.dylib ln -s libmigemo.1.1.0.dylib libmigemo.dylib cc -o build/cmigemo ./build/object/main.o -L. -L./build/ -lmigemo
warningがでましたが、動作は問題ありませんでした。(たぶん)
辞書ファイルのビルド
「辞書ファイルのビルド」には別途以下の4種が必要になります。
macならperlはデフォルトでバンドルされているので他のライブラリが無い場合はインストールして下さい。
自分の環境だとすべて入っていました。ちなみにHomebrewを使ってます。
$ make osx-dict make -f compile/Make_osx.mak dictionary cd dict && make osx curl -O http://openlab.ring.gr.jp/skk/dic/SKK-JISYO.L.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1733k 100 1733k 0 0 447k 0 0:00:03 0:00:03 --:--:-- 473k gzip -d SKK-JISYO.L.gz perl ../tools/skk2migemo.pl < SKK-JISYO.L > dict.tmp perl ../tools/optimize-dict.pl < dict.tmp > base-dict rm -f dict.tmp nkf -x -s < base-dict > migemo-dict mkdir -p euc-jp.d nkf -x -e < migemo-dict > euc-jp.d/migemo-dict nkf -x -e < zen2han.dat > euc-jp.d/zen2han.dat nkf -x -e < han2zen.dat > euc-jp.d/han2zen.dat nkf -x -e < hira2kata.dat > euc-jp.d/hira2kata.dat nkf -x -e < roma2hira.dat > euc-jp.d/roma2hira.dat mkdir -p utf-8.d iconv -t utf-8 -f cp932 < migemo-dict > utf-8.d/migemo-dict iconv -t utf-8 -f cp932 < zen2han.dat > utf-8.d/zen2han.dat iconv -t utf-8 -f cp932 < han2zen.dat > utf-8.d/han2zen.dat iconv -t utf-8 -f cp932 < hira2kata.dat > utf-8.d/hira2kata.dat iconv -t utf-8 -f cp932 < roma2hira.dat > utf-8.d/roma2hira.dat
ここで、ドキュメントをみると
必要な外部プログラム、ネットワーク接続を揃えて以下を実行することでテストプログラムcmigemoと辞書ファイルがビルドされます
と、あります。
ドキュメントには cp932(Shift-JIS)で利用するならば: $ ./build/cmigemo -d dict/migemo-dict euc-jpで利用するならば: $ ./build/cmigemo -d dict/euc-jp.d/migemo-dict を実行します。 euc-jpで利用するならば: $ ./build/cmigemo -d dict/utf-8.d/migemo-dict を実行します。
とあります。(utf-8の部分は僕が追記しました。ドキュメントにはありません。)
これを実行してみると
$ ./build/cmigemo -d dict/utf-8.d/migemo-dict migemo_open("dict/utf-8.d/migemo-dict")=0x7ff1f0403bd0 clock()=0.271006 QUERY: i-makkusu #ここで入力待ちになる PATTERN: (イーマックス|イーマックス|いーまっくす|i−makkusu|i-makkusu)
上記のようになり入力待ち状態になるので実際検索するものを英字で入力すると実際に結果が返ってきます。
ご自分の文字コードの環境で意図するどうさを確認されてはいかがでしょうか?
インストール
root権限でインストール
$ sudo make osx-install
アンインストールは
$ sudo make osx-uninstall
です。
これで、cmigemoのビルド+インストールは完了。続いて、Emacsでインクリメンタルサーチができるように設定。
migemo.elを https://gist.github.com/457761 からダウンロード。
$ cd ~/.emacs.d/ $ mkdir migemo $ cd migemo $ curl -L -o migemo.el https://raw.github.com/gist/457761/539882a79ec11bc9b6e1ac417cdafe0e198e245f/migemo.el
~/.emacs.d/init.elに設定を書く。
(setq load-path (cons "~/.emacs.d/migemo/" load-path)) (require 'migemo) (setq migemo-command "/usr/local/bin/cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict") (setq migemo-user-dictionary nil) (setq migemo-coding-system 'utf-8-unix) (setq migemo-regex-dictionary nil) (load-library "migemo") (migemo-init)
これでcmigemoが使えるようになりました。
使ってみる
emacsでC-sをするとcmigemoが使えるようになります。
すばらしいXD
まとめ
emacsでのローマ字によるインクリメンタルサーチが使えるようになりました。
以前ubuntuでインストールしたときは、たしかgooglecodeから落としてきましたが今回はgithubから行いました。
githubかわいいよgithub
最後まで、お読みいただきありがとうございました。