| 74 |
} |
} |
| 75 |
|
|
| 76 |
/* バッファの状態に合わせてモードラインを変更 */ |
/* バッファの状態に合わせてモードラインを変更 */ |
| 77 |
static void update_modeline_label() { |
void Shiki_update_modeline(GtkTextBuffer *buffer) { |
| 78 |
static gchar label[1024]; |
gtk_label_set_text(GTK_LABEL(Shiki_EDITOR_MODELINE_LABEL), Scm_GetString(SCM_STRING(Scm_EvalCString("(if *mode-line-format* (*mode-line-format*) \"\")", Shiki_CURRENT_BUFFER_ENV)))); |
|
GtkTextIter p; |
|
|
gtk_text_buffer_get_iter_at_mark(Shiki_CURRENT_TEXT_BUFFER, &p, gtk_text_buffer_get_insert(Shiki_CURRENT_TEXT_BUFFER)); |
|
|
|
|
|
g_snprintf(label, 1024, "--%s- %-10s (Gauche Interaction) [%s] L%d:%d ", |
|
|
gtk_text_buffer_get_modified(Shiki_CURRENT_TEXT_BUFFER) ? "**" : "--", |
|
|
Shiki_CURRENT_BASENAME, |
|
|
Shiki_CURRENT_CES, |
|
|
gtk_text_iter_get_line(&p) + 1, |
|
|
gtk_text_iter_get_line_offset (&p) + 1); |
|
|
gtk_label_set_text(GTK_LABEL(Shiki_EDITOR_MODELINE_LABEL), label); |
|
| 79 |
} |
} |
| 80 |
|
|
| 81 |
/* バッファからテキストが消去された */ |
/* バッファからテキストが消去された */ |
| 91 |
Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo); |
Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo); |
| 92 |
} |
} |
| 93 |
|
|
| 94 |
|
static void cursor_moved_handler() { |
| 95 |
|
Shiki_update_modeline(Shiki_CURRENT_TEXT_BUFFER); |
| 96 |
|
} |
| 97 |
|
|
| 98 |
/* ノートブックにタブとページ (バッファ) を追加 */ |
/* ノートブックにタブとページ (バッファ) を追加 */ |
| 99 |
GtkTextBuffer *Shiki_new_buffer_create(gchar *filename) { |
GtkTextBuffer *Shiki_new_buffer_create(gchar *filename) { |
| 100 |
/*-------------------- 新しいタブを作る ----------------------------------*/ |
/*-------------------- 新しいタブを作る ----------------------------------*/ |
| 127 |
gtk_widget_set_size_request(GTK_WIDGET(tabinfo->text_view), 680, 700); |
gtk_widget_set_size_request(GTK_WIDGET(tabinfo->text_view), 680, 700); |
| 128 |
|
|
| 129 |
gtk_container_add(GTK_CONTAINER(tabinfo->tabpage), GTK_WIDGET(tabinfo->text_view)); |
gtk_container_add(GTK_CONTAINER(tabinfo->tabpage), GTK_WIDGET(tabinfo->text_view)); |
| 130 |
g_signal_connect(tabinfo->text_buffer, "mark_set", G_CALLBACK(update_modeline_label), tabinfo->text_view); |
g_signal_connect(tabinfo->text_buffer, "mark_set", G_CALLBACK(cursor_moved_handler), tabinfo->text_view); |
| 131 |
g_signal_connect(tabinfo->text_buffer, "insert-text", G_CALLBACK(insert_text_handler), NULL); |
g_signal_connect(tabinfo->text_buffer, "insert-text", G_CALLBACK(insert_text_handler), NULL); |
| 132 |
g_signal_connect(tabinfo->text_buffer, "delete-range", G_CALLBACK(delete_range_handler), NULL); |
g_signal_connect(tabinfo->text_buffer, "delete-range", G_CALLBACK(delete_range_handler), NULL); |
| 133 |
|
|
| 156 |
/* 開いたページに移動する */ |
/* 開いたページに移動する */ |
| 157 |
gtk_notebook_set_current_page(Shiki_EDITOR_NOTEBOOK, g_list_length(Shiki_EDITOR_BUFFER_LIST) - 1); |
gtk_notebook_set_current_page(Shiki_EDITOR_NOTEBOOK, g_list_length(Shiki_EDITOR_BUFFER_LIST) - 1); |
| 158 |
//Shiki_CURRENT_TAB_INFO = tabinfo; |
//Shiki_CURRENT_TAB_INFO = tabinfo; |
| 159 |
|
|
| 160 |
|
Scm_EvalCString("(set! *mode-line-format* (lambda () (format #f \"--~A- ~A (Gauche Interaction) [GtkDefault (utf8)] L~S:~S \" (if (buffer-modified-p) \"--\" \"**\") (buffer-name (selected-buffer)) (current-line-number) (current-column))))", tabinfo->env); |
| 161 |
return tabinfo->text_buffer; |
return tabinfo->text_buffer; |
| 162 |
} |
} |
| 163 |
|
|
| 205 |
/* カーソル位置を先頭に */ |
/* カーソル位置を先頭に */ |
| 206 |
gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &p); |
gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 207 |
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 208 |
update_modeline_label(); |
Shiki_update_modeline(Shiki_CURRENT_TEXT_BUFFER); |
| 209 |
gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK)); |
gtk_widget_show_all(GTK_WIDGET(Shiki_EDITOR_NOTEBOOK)); |
| 210 |
} |
} |
| 211 |
|
|