| 29 |
|
|
| 30 |
#include"shiki.h" |
#include"shiki.h" |
| 31 |
|
|
|
static gint editor_indent_width = 2; |
|
|
|
|
| 32 |
/* エディタ全体に関する情報と,現在表示されているタブ情報へのキャッシュを管理する構造体 */ |
/* エディタ全体に関する情報と,現在表示されているタブ情報へのキャッシュを管理する構造体 */ |
| 33 |
ShikiEditorType Shiki_editor; |
ShikiEditorType Shiki_editor; |
| 34 |
|
|
| 113 |
*flag = !*flag; |
*flag = !*flag; |
| 114 |
} |
} |
| 115 |
|
|
|
/* バッファの状態に合わせてモードラインを変更 */ |
|
|
static void update_modeline_label() { |
|
|
static gchar label[1024]; |
|
|
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); |
|
|
} |
|
|
|
|
| 116 |
static void replace_current_buffer() { |
static void replace_current_buffer() { |
| 117 |
GtkWidget *dialog = gtk_dialog_new_with_buttons ("文字列の置換", GTK_WINDOW(Shiki_EDITOR_WINDOW), GTK_DIALOG_DESTROY_WITH_PARENT, NULL); |
GtkWidget *dialog = gtk_dialog_new_with_buttons ("文字列の置換", GTK_WINDOW(Shiki_EDITOR_WINDOW), GTK_DIALOG_DESTROY_WITH_PARENT, NULL); |
| 118 |
GtkWidget *table = gtk_table_new(7, 3, FALSE); |
GtkWidget *table = gtk_table_new(7, 3, FALSE); |
| 288 |
if(!Shiki_CURRENT_TAB_INFO) return; |
if(!Shiki_CURRENT_TAB_INFO) return; |
| 289 |
gtk_window_set_title (GTK_WINDOW(Shiki_EDITOR_WINDOW), Shiki_CURRENT_FILENAME); |
gtk_window_set_title (GTK_WINDOW(Shiki_EDITOR_WINDOW), Shiki_CURRENT_FILENAME); |
| 290 |
|
|
| 291 |
update_modeline_label(); |
Shiki_update_modeline(Shiki_CURRENT_TEXT_BUFFER); |
| 292 |
} |
} |
| 293 |
|
|
| 294 |
static void undo() { |
static void undo() { |
| 562 |
/* 文字列をファイルに保存 */ |
/* 文字列をファイルに保存 */ |
| 563 |
g_file_set_contents(filename, text, -1, NULL); |
g_file_set_contents(filename, text, -1, NULL); |
| 564 |
gtk_text_buffer_set_modified(buffer, FALSE); |
gtk_text_buffer_set_modified(buffer, FALSE); |
| 565 |
update_modeline_label(); |
Shiki_update_modeline(Shiki_CURRENT_TEXT_BUFFER); |
| 566 |
g_free(contents); g_free(text); |
g_free(contents); g_free(text); |
| 567 |
return TRUE; |
return TRUE; |
| 568 |
} |
} |
| 789 |
|
|
| 790 |
/* 改行されるたびに,自動的に括弧のネストの深さに応じた数のスペース (インデント) が行頭に入る */ |
/* 改行されるたびに,自動的に括弧のネストの深さに応じた数のスペース (インデント) が行頭に入る */ |
| 791 |
if(event->keyval == GDK_Return) { |
if(event->keyval == GDK_Return) { |
| 792 |
gint indentWidth = get_parent_nest_level_at_cursor(Shiki_CURRENT_TEXT_BUFFER) * editor_indent_width; |
gint indentWidth = get_parent_nest_level_at_cursor(Shiki_CURRENT_TEXT_BUFFER) * SCM_INT_VALUE(Scm_EvalCString("*indent-width*", Shiki_CURRENT_BUFFER_ENV)); |
| 793 |
gchar *indent = g_strnfill(indentWidth, ' '); |
gchar *indent = g_strnfill(indentWidth, ' '); |
| 794 |
gtk_text_buffer_insert_at_cursor(Shiki_CURRENT_TEXT_BUFFER, indent, -1); |
gtk_text_buffer_insert_at_cursor(Shiki_CURRENT_TEXT_BUFFER, indent, -1); |
| 795 |
g_free(indent); |
g_free(indent); |