| 108 |
gtk_text_iter_backward_char(&p); |
gtk_text_iter_backward_char(&p); |
| 109 |
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &p); |
| 110 |
} |
} |
| 111 |
|
|
| 112 |
|
static gint compBuffer(gconstpointer a, gconstpointer b) { |
| 113 |
|
return ((ShikiBuffer *)a)->text_buffer == b ? 0 : b - a; |
| 114 |
|
} |
| 115 |
|
|
| 116 |
|
static GList *get_ShikiBufferListElement_By_GtkTextBuffer(GtkTextBuffer *b) { |
| 117 |
|
return g_list_find_custom(Shiki_EDITOR_BUFFER_LIST, b, compBuffer); |
| 118 |
|
} |
| 119 |
|
|
| 120 |
|
const char *Shiki_buffer_name(GtkTextBuffer *buffer) { |
| 121 |
|
GList *l = get_ShikiBufferListElement_By_GtkTextBuffer(buffer); |
| 122 |
|
if(l) |
| 123 |
|
return ((ShikiBuffer *)(l->data))->name; |
| 124 |
|
else |
| 125 |
|
return NULL; |
| 126 |
|
} |
| 127 |
|
|
| 128 |
|
GtkTextBuffer *Shiki_get_next_buffer(GtkTextBuffer *buffer) { |
| 129 |
|
GList *l = get_ShikiBufferListElement_By_GtkTextBuffer(buffer); |
| 130 |
|
if(l && l->next) |
| 131 |
|
return ((ShikiBuffer *)(l->next->data))->text_buffer; |
| 132 |
|
else |
| 133 |
|
return NULL; |
| 134 |
|
} |
| 135 |
|
|
| 136 |
|
GtkTextBuffer *Shiki_get_previous_buffer(GtkTextBuffer *buffer) { |
| 137 |
|
GList *l = get_ShikiBufferListElement_By_GtkTextBuffer(buffer); |
| 138 |
|
if(l && l->prev) |
| 139 |
|
return ((ShikiBuffer *)(l->prev->data))->text_buffer; |
| 140 |
|
else |
| 141 |
|
return NULL; |
| 142 |
|
} |
| 143 |
|
|
| 144 |
|
ScmObj Shiki_buffer_list() { |
| 145 |
|
GList *l; |
| 146 |
|
GtkTextBuffer *b; |
| 147 |
|
ScmObj bl = SCM_NIL; |
| 148 |
|
|
| 149 |
|
for(l = Shiki_EDITOR_BUFFER_LIST; l != NULL; l = l->next) { |
| 150 |
|
b= ((ShikiBuffer *)(l->data))->text_buffer; |
| 151 |
|
bl = Scm_Cons(SHIKI_BUFFER_BOX(g_object_ref(b)), bl); |
| 152 |
|
} |
| 153 |
|
return bl; |
| 154 |
|
} |