| 649 |
|
|
| 650 |
ScmObj result, error; |
ScmObj result, error; |
| 651 |
/* 入力文字列ポートを開く */ |
/* 入力文字列ポートを開く */ |
| 652 |
ScmObj is = Scm_MakeInputStringPort(SCM_STRING(SCM_MAKE_STR(s)), TRUE); |
ScmObj is = Scm_MakeInputStringPort(SCM_STRING(SCM_MAKE_STR_COPYING(s)), TRUE); |
| 653 |
/* 出力文字列ポート開く */ |
/* 出力文字列ポート開く */ |
| 654 |
ScmObj os = Scm_MakeOutputStringPort(TRUE); |
ScmObj os = Scm_MakeOutputStringPort(TRUE); |
| 655 |
|
|
| 843 |
gchar *text; |
gchar *text; |
| 844 |
gchar *utf8filename = g_locale_to_utf8(filename, -1, NULL, NULL, NULL); |
gchar *utf8filename = g_locale_to_utf8(filename, -1, NULL, NULL, NULL); |
| 845 |
GtkTextIter p; |
GtkTextIter p; |
| 846 |
ScmObj s, ces; |
ScmObj s; |
| 847 |
|
|
| 848 |
|
/* g_file_get_contents(filename, &contents, &len, NULL); */ |
| 849 |
|
|
| 850 |
/* 新しいバッファを開く */ |
/* 新しいバッファを開く */ |
| 851 |
append_tabpage(g_strdup(filename)); |
append_tabpage(g_strdup(filename)); |
| 852 |
|
gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename); |
| 853 |
|
g_free(filename); |
| 854 |
|
|
| 855 |
|
Scm_Define(SCM_MODULE(Shiki_CURRENT_BUFFER_ENV), SCM_SYMBOL(SCM_INTERN("*filename*")), SCM_MAKE_STR_COPYING(utf8filename)); |
| 856 |
|
g_free(utf8filename); |
| 857 |
|
|
|
Scm_Define(SCM_MODULE(Shiki_CURRENT_BUFFER_ENV), SCM_SYMBOL(SCM_INTERN("*filename*")), SCM_MAKE_STR(utf8filename)); |
|
|
Scm_Load("gauche-init.scm", 0); |
|
|
Scm_EvalCString("(use gauche.interactive)", Shiki_CURRENT_BUFFER_ENV); |
|
| 858 |
Scm_EvalCString("(use gauche.charconv)", Shiki_CURRENT_BUFFER_ENV); |
Scm_EvalCString("(use gauche.charconv)", Shiki_CURRENT_BUFFER_ENV); |
| 859 |
|
/* |
| 860 |
Scm_EvalCString("(define contents (call-with-input-file *filename* port->string))", Shiki_CURRENT_BUFFER_ENV); |
Scm_EvalCString("(define contents (call-with-input-file *filename* port->string))", Shiki_CURRENT_BUFFER_ENV); |
| 861 |
Scm_EvalCString("(define ces (ces-guess-from-string contents \"*JP\"))", Shiki_CURRENT_BUFFER_ENV); |
Scm_EvalCString("(define ces (ces-guess-from-string contents \"*JP\"))", Shiki_CURRENT_BUFFER_ENV); |
| 862 |
ces = Scm_EvalCString("ces", Shiki_CURRENT_BUFFER_ENV); |
ces = Scm_EvalCString("ces", Shiki_CURRENT_BUFFER_ENV); |
| 863 |
Shiki_CURRENT_CES = Scm_GetString(SCM_STRING(ces)); |
Shiki_CURRENT_CES = Scm_GetString(SCM_STRING(ces)); |
| 864 |
s = Scm_EvalCString("(ces-convert contents ces)", Shiki_CURRENT_BUFFER_ENV); |
//s = Scm_EvalCString("(ces-convert contents ces)", Shiki_CURRENT_BUFFER_ENV); |
| 865 |
|
s = Scm_EvalCString("(ces-convert contents `utf8)", Shiki_CURRENT_BUFFER_ENV); |
| 866 |
|
*/ |
| 867 |
|
|
| 868 |
|
/* ファイルから文字列を取り出し,変換後にバッファに格納 */ |
| 869 |
|
s = Scm_EvalCString("(port->string (open-input-conversion-port (open-input-file *filename*) \"*jp\" :owner? #t))", Shiki_CURRENT_BUFFER_ENV); |
| 870 |
text = Scm_GetString(SCM_STRING(s)); |
text = Scm_GetString(SCM_STRING(s)); |
| 871 |
gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, text, -1); |
gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER, text, -1); |
| 872 |
|
|
| 873 |
/* バッファ未変更に */ |
/* バッファ未変更に */ |
| 874 |
gtk_text_buffer_set_modified(Shiki_CURRENT_TEXT_BUFFER, FALSE); |
gtk_text_buffer_set_modified(Shiki_CURRENT_TEXT_BUFFER, FALSE); |
| 875 |
/* カーソル位置を先頭に */ |
/* カーソル位置を先頭に */ |
| 876 |
gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &p); |
gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 877 |
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 878 |
update_modeline_label(); |
update_modeline_label(); |
|
gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename); |
|
|
gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK)); |
|
|
|
|
|
g_free(utf8filename); |
|
|
g_free(filename); |
|
|
|
|
| 879 |
/* キーワードを色分けする */ |
/* キーワードを色分けする */ |
| 880 |
scheme_keyword_highlighting_current_buffer(); |
scheme_keyword_highlighting_current_buffer(); |
| 881 |
|
gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK)); |
| 882 |
} |
} |
| 883 |
|
|
| 884 |
/* ファイルをダイアログで指定して開く */ |
/* ファイルをダイアログで指定して開く */ |
| 899 |
|
|
| 900 |
/* Scheme レベルでエラーハンドリング */ |
/* Scheme レベルでエラーハンドリング */ |
| 901 |
/* http://alohakun.blog7.fc2.com/blog-entry-517.html */ |
/* http://alohakun.blog7.fc2.com/blog-entry-517.html */ |
| 902 |
Scm_Define(SCM_MODULE(Shiki_CURRENT_BUFFER_ENV), SCM_SYMBOL(SCM_INTERN("*input*")), SCM_MAKE_STR(s)); |
Scm_Define(SCM_MODULE(Shiki_CURRENT_BUFFER_ENV), SCM_SYMBOL(SCM_INTERN("*input*")), SCM_MAKE_STR_COPYING(s)); |
| 903 |
Scm_Define(SCM_MODULE(Shiki_CURRENT_BUFFER_ENV), SCM_SYMBOL(SCM_INTERN("*error*")), SCM_FALSE); |
Scm_Define(SCM_MODULE(Shiki_CURRENT_BUFFER_ENV), SCM_SYMBOL(SCM_INTERN("*error*")), SCM_FALSE); |
| 904 |
|
|
| 905 |
result = Scm_EvalCString("(guard (e (else (set! *error* e) #f)) (eval (read-from-string *input*) (current-module)))", SCM_OBJ(Shiki_CURRENT_BUFFER_ENV)); |
result = Scm_EvalCString("(guard (e (else (set! *error* e) #f)) (eval (read-from-string *input*) (current-module)))", SCM_OBJ(Shiki_CURRENT_BUFFER_ENV)); |
| 1414 |
Shiki_EDITOR_DEFAULT_LOCALE = g_locale_to_utf8(gtk_set_locale(), -1, NULL, NULL, NULL); |
Shiki_EDITOR_DEFAULT_LOCALE = g_locale_to_utf8(gtk_set_locale(), -1, NULL, NULL, NULL); |
| 1415 |
gtk_init(&argc, &argv); |
gtk_init(&argc, &argv); |
| 1416 |
GC_INIT(); Scm_Init(GAUCHE_SIGNATURE); |
GC_INIT(); Scm_Init(GAUCHE_SIGNATURE); |
| 1417 |
|
Scm_Load("gauche-init.scm", 0); |
| 1418 |
shiki_editor_window_init(argc, argv); |
shiki_editor_window_init(argc, argv); |
| 1419 |
gtk_main(); |
gtk_main(); |
| 1420 |
Scm_Exit(0); |
Scm_Exit(0); |