Develop and Download Open Source Software

Browse CVS Repository

Diff of /shiki/shiki/buffer.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.13 by aloha, Sat Dec 2 14:23:20 2006 UTC revision 1.14 by aloha, Sun Dec 3 15:21:04 2006 UTC
# Line 70  static void insert_text_handler(GtkTextB Line 70  static void insert_text_handler(GtkTextB
70    undoInfo->strlen = len;    undoInfo->strlen = len;
71    undoInfo->start  = gtk_text_iter_get_offset(iter);    undoInfo->start  = gtk_text_iter_get_offset(iter);
72    undoInfo->end    = undoInfo->start + undoInfo->strlen;    undoInfo->end    = undoInfo->start + undoInfo->strlen;
73    Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);  
74      if(Shiki_CURRENT_UNDO_INFO_LIST) {
75        GList *p = Shiki_CURRENT_UNDO_INFO_LIST->prev;
76        Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);
77        Shiki_CURRENT_UNDO_INFO_LIST->prev = p;
78      } else
79        Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);
80  }  }
81    
82    /* バッファからテキストが消去された */
83    static void delete_range_handler(GtkTextBuffer *buffer, GtkTextIter *start, GtkTextIter *end) {
84      /* Undo のための情報を記録 */
85      ShikiUndoInfo *undoInfo = g_malloc(sizeof(ShikiUndoInfo));
86      g_return_if_fail(undoInfo != NULL);
87      undoInfo->action = SHIKI_UNDO_DELETE;
88      undoInfo->str    = gtk_text_buffer_get_text(buffer, start, end, FALSE);
89      undoInfo->start  = gtk_text_iter_get_offset(start);
90      undoInfo->end    = gtk_text_iter_get_offset(end);
91      undoInfo->strlen = end - start;
92    
93      if(Shiki_CURRENT_UNDO_INFO_LIST) {
94        GList *p = Shiki_CURRENT_UNDO_INFO_LIST->prev;
95        Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);
96        Shiki_CURRENT_UNDO_INFO_LIST->prev = p;
97      } else
98        Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);
99    }
100    
101  void Shiki_undo() {  void Shiki_undo() {
102    GtkTextIter start, end;    GtkTextIter start, end;
103    ShikiUndoInfo *undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 0);    ShikiUndoInfo *undoInfo;
104    if(!undoInfo) {    GList *p;
105      if(!Shiki_CURRENT_UNDO_INFO_LIST) {
106      Shiki_msgbox("これ以上 Undo できません");      Shiki_msgbox("これ以上 Undo できません");
107      return;      return;
108    }    }
109      undoInfo = Shiki_CURRENT_UNDO_INFO_LIST->data;
110    if(undoInfo->action == SHIKI_UNDO_UNDO) {    if(undoInfo->action == SHIKI_UNDO_UNDO) {
111      Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));      GList *l = g_list_nth(Shiki_CURRENT_UNDO_INFO_LIST, 2);
112      g_free(undoInfo);      if(l)
113      undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 0);        Shiki_CURRENT_UNDO_INFO_LIST = l;
114      g_return_if_fail(undoInfo != NULL);      else {
115      Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));        Shiki_msgbox("これ以上 Undo できません");
116      g_free(undoInfo->str);        return;
117      g_free(undoInfo);      }
118      undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 0);    } else if(undoInfo->action == SHIKI_UNDO_REDO) {
119        GList *l = g_list_next(Shiki_CURRENT_UNDO_INFO_LIST);
120        if(l)
121          Shiki_CURRENT_UNDO_INFO_LIST = l;
122        else {
123          Shiki_msgbox("これ以上 Undo できません");
124          return;
125        }
126    }    }
127    if(!undoInfo) {  
128      Shiki_msgbox("これ以上 Undo できません");    undoInfo = Shiki_CURRENT_UNDO_INFO_LIST->data;
129      return;  
   }    
130    gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->start);    gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->start);
131    gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &end, undoInfo->end);    gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &end, undoInfo->end);
132    
133      if(!Shiki_CURRENT_UNDO_INFO_LIST->next) {
134        p = Shiki_CURRENT_UNDO_INFO_LIST;
135        Shiki_CURRENT_UNDO_INFO_LIST = g_list_next(Shiki_CURRENT_UNDO_INFO_LIST);
136      } else {
137        Shiki_CURRENT_UNDO_INFO_LIST = g_list_next(Shiki_CURRENT_UNDO_INFO_LIST);
138        p = Shiki_CURRENT_UNDO_INFO_LIST->prev;
139      }
140    
141    if(undoInfo->action == SHIKI_UNDO_INSERT) {    if(undoInfo->action == SHIKI_UNDO_INSERT)
     Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));  
142      gtk_text_buffer_delete(Shiki_CURRENT_TEXT_BUFFER, &start, &end);      gtk_text_buffer_delete(Shiki_CURRENT_TEXT_BUFFER, &start, &end);
143      g_free(undoInfo->str);    else if(undoInfo->action == SHIKI_UNDO_DELETE)
144      g_free(undoInfo);      gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->str, -1);          
     undoInfo = g_malloc(sizeof(ShikiUndoInfo));  
     g_return_if_fail(undoInfo != NULL);  
     undoInfo->action = SHIKI_UNDO_UNDO;  
     Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);  
   } else if(undoInfo->action == SHIKI_UNDO_DELETE) {  
     Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));  
     gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->str, -1);  
     g_free(undoInfo->str);  
     g_free(undoInfo);              
   }  
 }  
145    
146      Shiki_CURRENT_UNDO_INFO_LIST->prev = p;
147    
148  /* バッファの状態に合わせてモードラインを変更 */    undoInfo = g_malloc(sizeof(ShikiUndoInfo));
149  void Shiki_update_modeline(GtkTextBuffer *buffer) {    g_return_if_fail(undoInfo != NULL);
150    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))));    undoInfo->action = SHIKI_UNDO_UNDO;
151    
152      p = Shiki_CURRENT_UNDO_INFO_LIST->prev;
153      Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);
154      Shiki_CURRENT_UNDO_INFO_LIST->prev = p;
155    
156      { /* Debug print */
157        GList *l = Shiki_CURRENT_UNDO_INFO_LIST;
158        while(l->prev) l = l->prev;
159        g_print("Undo : NULL -> ");
160        for(; l != NULL; l = l->next) {
161          if(l == Shiki_CURRENT_UNDO_INFO_LIST)
162            g_print(" | ");
163          switch(((ShikiUndoInfo *)l->data)->action) {
164            case SHIKI_UNDO_UNDO :
165              g_print("[U] -> ");
166              break;
167            case SHIKI_UNDO_REDO :
168              g_print("[R] -> ");
169              break;
170            case SHIKI_UNDO_INSERT :
171              g_print("[+] -> ");
172              break;
173            case SHIKI_UNDO_DELETE :
174              g_print("[-] -> ");
175              break;
176          }
177        }
178        g_print("NIL\n");
179      }  
180  }  }
181    
182  /* バッファからテキストが消去された */  void Shiki_redo() {
183  static void delete_range_handler(GtkTextBuffer *buffer, GtkTextIter *start, GtkTextIter *end) {    GtkTextIter start, end;
184    /* Undo のための情報を記録 */    ShikiUndoInfo *undoInfo;
185    ShikiUndoInfo *undoInfo = g_malloc(sizeof(ShikiUndoInfo));    GList *p;
186      if(!Shiki_CURRENT_UNDO_INFO_LIST) {
187        Shiki_msgbox("これ以上 Redo できません");
188        return;
189      }
190      undoInfo = Shiki_CURRENT_UNDO_INFO_LIST->data;
191      if(undoInfo->action == SHIKI_UNDO_UNDO)
192        undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 1);
193      else if(undoInfo->action == SHIKI_UNDO_REDO) {
194        GList *l = g_list_nth_prev(Shiki_CURRENT_UNDO_INFO_LIST, 3);
195        if(l) {
196          Shiki_CURRENT_UNDO_INFO_LIST = l;
197          undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 1);
198        } else {
199          Shiki_msgbox("これ以上 Redo できません");
200          return;
201        }
202      }
203    
204      gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->start);
205      gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &end, undoInfo->end);
206    
207      p = Shiki_CURRENT_UNDO_INFO_LIST->prev;
208    
209      if(undoInfo->action == SHIKI_UNDO_INSERT)
210        gtk_text_buffer_delete(Shiki_CURRENT_TEXT_BUFFER, &start, &end);
211      else if(undoInfo->action == SHIKI_UNDO_DELETE)
212        gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->str, -1);          
213    
214      undoInfo = g_malloc(sizeof(ShikiUndoInfo));
215    g_return_if_fail(undoInfo != NULL);    g_return_if_fail(undoInfo != NULL);
216    undoInfo->action = SHIKI_UNDO_DELETE;    undoInfo->action = SHIKI_UNDO_REDO;
217    undoInfo->str    = gtk_text_buffer_get_text(buffer, start, end, FALSE);  
   undoInfo->start  = gtk_text_iter_get_offset(start);  
   undoInfo->end    = gtk_text_iter_get_offset(end);  
   undoInfo->strlen = end - start;  
218    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);
219    
220      Shiki_CURRENT_UNDO_INFO_LIST->prev = p;
221    
222      { /* Debug ptirt */
223        GList *l = Shiki_CURRENT_UNDO_INFO_LIST;
224        while(l->prev) l = l->prev;
225        g_print("Redo : NULL -> ");
226        for(; l != NULL; l = l->next) {
227          if(l == Shiki_CURRENT_UNDO_INFO_LIST)
228            g_print(" | ");
229          switch(((ShikiUndoInfo *)l->data)->action) {
230            case SHIKI_UNDO_UNDO :
231              g_print("[U] -> ");
232              break;
233            case SHIKI_UNDO_REDO :
234              g_print("[R] -> ");
235              break;
236            case SHIKI_UNDO_INSERT :
237              g_print("[+] -> ");
238              break;
239            case SHIKI_UNDO_DELETE :
240              g_print("[-] -> ");
241              break;
242          }
243        }
244        g_print("NIL\n");
245      }  
246    }
247    
248    /* バッファの状態に合わせてモードラインを変更 */
249    void Shiki_update_modeline(GtkTextBuffer *buffer) {
250      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))));
251  }  }
252    
253  static void cursor_moved_handler() {  static void cursor_moved_handler() {
# Line 149  GtkTextBuffer *Shiki_new_buffer_create(g Line 265  GtkTextBuffer *Shiki_new_buffer_create(g
265    tabinfo->name      = g_path_get_basename(filename);    tabinfo->name      = g_path_get_basename(filename);
266    tabinfo->tabpage_label = g_strndup(tabinfo->name, 10);    tabinfo->tabpage_label = g_strndup(tabinfo->name, 10);
267    tabinfo->env           = Scm_MakeModule(NULL, FALSE);    tabinfo->env           = Scm_MakeModule(NULL, FALSE);
268      
269    ShikiBufferClass = Scm_MakeForeignPointerClass(SCM_MODULE(tabinfo->env),    ShikiBufferClass = Scm_MakeForeignPointerClass(SCM_MODULE(tabinfo->env),
270                           "<buffer>", buffer_print, buffer_cleanup,        "<buffer>", buffer_print, buffer_cleanup,
271                           SCM_FOREIGN_POINTER_KEEP_IDENTITY        SCM_FOREIGN_POINTER_KEEP_IDENTITY
272                           |        |
273                           SCM_FOREIGN_POINTER_MAP_NULL);        SCM_FOREIGN_POINTER_MAP_NULL);
274    
275    /* xyzzy lisp 関数を登録 */    /* xyzzy lisp 関数を登録 */
276    Scm_Init_xyzzylisp(SCM_MODULE(tabinfo->env));    Scm_Init_xyzzylisp(SCM_MODULE(tabinfo->env));
# Line 202  GtkTextBuffer *Shiki_new_buffer_create(g Line 318  GtkTextBuffer *Shiki_new_buffer_create(g
318    /* 開いたページに移動する */    /* 開いたページに移動する */
319    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);
320    //Shiki_CURRENT_TAB_INFO = tabinfo;    //Shiki_CURRENT_TAB_INFO = tabinfo;
321      
322    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);    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);
323    return tabinfo->text_buffer;    return tabinfo->text_buffer;
324  }  }
# Line 378  void Shiki_forward_line(gint count) { Line 494  void Shiki_forward_line(gint count) {
494    GtkTextIter p;    GtkTextIter p;
495    gint i;    gint i;
496    gtk_text_buffer_get_iter_at_mark(Shiki_CURRENT_TEXT_BUFFER,&p, gtk_text_buffer_get_insert(Shiki_CURRENT_TEXT_BUFFER));    gtk_text_buffer_get_iter_at_mark(Shiki_CURRENT_TEXT_BUFFER,&p, gtk_text_buffer_get_insert(Shiki_CURRENT_TEXT_BUFFER));
497      
498    if(count >= 0) {    if(count >= 0) {
499      for(i = count; i != 0; i--)      for(i = count; i != 0; i--)
500        gtk_text_view_forward_display_line(Shiki_CURRENT_TEXT_VIEW, &p);        gtk_text_view_forward_display_line(Shiki_CURRENT_TEXT_VIEW, &p);
# Line 455  const gchar *Shiki_file_name_dialog(cons Line 571  const gchar *Shiki_file_name_dialog(cons
571    
572  gboolean Shiki_yes_or_no_p(const gchar *msg) {  gboolean Shiki_yes_or_no_p(const gchar *msg) {
573    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(Shiki_EDITOR_WINDOW),    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(Shiki_EDITOR_WINDOW),
574                 GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,        GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,
575                 GTK_BUTTONS_YES_NO, msg);        GTK_BUTTONS_YES_NO, msg);
576    gint resp;    gint resp;
577    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_YES);    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_YES);
578    resp = gtk_dialog_run(GTK_DIALOG(dialog));    resp = gtk_dialog_run(GTK_DIALOG(dialog));
# Line 468  gboolean Shiki_yes_or_no_p(const gchar * Line 584  gboolean Shiki_yes_or_no_p(const gchar *
584    
585  gboolean Shiki_no_or_yes_p(const gchar *msg) {  gboolean Shiki_no_or_yes_p(const gchar *msg) {
586    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(Shiki_EDITOR_WINDOW),    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(Shiki_EDITOR_WINDOW),
587                 GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,        GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,
588                 GTK_BUTTONS_YES_NO, msg);        GTK_BUTTONS_YES_NO, msg);
589    gint resp;    gint resp;
590    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_NO);      gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_NO);  
591    resp = gtk_dialog_run(GTK_DIALOG(dialog));    resp = gtk_dialog_run(GTK_DIALOG(dialog));
# Line 678  gboolean Shiki_search_string(const gchar Line 794  gboolean Shiki_search_string(const gchar
794    } else {    } else {
795      if(no_dup)      if(no_dup)
796        gtk_text_iter_backward_char(&p);        gtk_text_iter_backward_char(&p);
797        
798      result = gtk_text_iter_backward_search(&p, pattern,      result = gtk_text_iter_backward_search(&p, pattern,
799          GTK_TEXT_SEARCH_TEXT_ONLY, &match_start, &match_end, &start);          GTK_TEXT_SEARCH_TEXT_ONLY, &match_start, &match_end, &start);
800    }    }
# Line 688  gboolean Shiki_search_string(const gchar Line 804  gboolean Shiki_search_string(const gchar
804      gtk_text_buffer_apply_tag_by_name(Shiki_CURRENT_TEXT_BUFFER, "match_highlighting", &match_start, &match_end);      gtk_text_buffer_apply_tag_by_name(Shiki_CURRENT_TEXT_BUFFER, "match_highlighting", &match_start, &match_end);
805      gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &match_start);      gtk_text_buffer_place_cursor(Shiki_CURRENT_TEXT_BUFFER, &match_start);
806      gtk_text_view_scroll_to_iter(Shiki_CURRENT_TEXT_VIEW,  &match_start,      gtk_text_view_scroll_to_iter(Shiki_CURRENT_TEXT_VIEW,  &match_start,
807                                   0.0, FALSE, FALSE, FALSE);          0.0, FALSE, FALSE, FALSE);
808    }    }
809    return result;    return result;
810  }  }
# Line 722  void Shiki_search_buffer() { Line 838  void Shiki_search_buffer() {
838    GtkWidget *next   = gtk_button_new_with_label ("下検索");    GtkWidget *next   = gtk_button_new_with_label ("下検索");
839    g_signal_connect (next, "clicked", G_CALLBACK(search_forward_handler), NULL);    g_signal_connect (next, "clicked", G_CALLBACK(search_forward_handler), NULL);
840    GtkWidget *cancel = gtk_button_new_with_label ("キャンセル");    GtkWidget *cancel = gtk_button_new_with_label ("キャンセル");
841      
842    if(!input)    if(!input)
843      ShikiSearchBufferInfo.input = input = g_object_ref(gtk_entry_new());      ShikiSearchBufferInfo.input = input = g_object_ref(gtk_entry_new());
844    ShikiSearchBufferInfo.ci  =    ShikiSearchBufferInfo.ci  =
845    ShikiSearchBufferInfo.word  =      ShikiSearchBufferInfo.word  =
846    ShikiSearchBufferInfo.regexp  =      ShikiSearchBufferInfo.regexp  =
847    ShikiSearchBufferInfo.escape  =      ShikiSearchBufferInfo.escape  =
848    ShikiSearchBufferInfo.loop = FALSE;      ShikiSearchBufferInfo.loop = FALSE;
849    
850    g_signal_connect (check1, "toggled", G_CALLBACK (toggled_handler), &(ShikiSearchBufferInfo.ci));    g_signal_connect (check1, "toggled", G_CALLBACK (toggled_handler), &(ShikiSearchBufferInfo.ci));
851    g_signal_connect (check2, "toggled", G_CALLBACK (toggled_handler), &(ShikiSearchBufferInfo.word));    g_signal_connect (check2, "toggled", G_CALLBACK (toggled_handler), &(ShikiSearchBufferInfo.word));
# Line 779  gboolean Shiki_replace_string(const gcha Line 895  gboolean Shiki_replace_string(const gcha
895    gtk_text_buffer_get_end_iter(Shiki_CURRENT_TEXT_BUFFER, &end);    gtk_text_buffer_get_end_iter(Shiki_CURRENT_TEXT_BUFFER, &end);
896    
897    while((result = gtk_text_iter_forward_search(&start, find,    while((result = gtk_text_iter_forward_search(&start, find,
898                     GTK_TEXT_SEARCH_TEXT_ONLY, &match_start, &match_end, &end))) {            GTK_TEXT_SEARCH_TEXT_ONLY, &match_start, &match_end, &end))) {
899    
900      gtk_text_buffer_remove_tag_by_name(Shiki_CURRENT_TEXT_BUFFER, "match_highlighting", &start, &end);      gtk_text_buffer_remove_tag_by_name(Shiki_CURRENT_TEXT_BUFFER, "match_highlighting", &start, &end);
901      gtk_text_buffer_apply_tag_by_name(Shiki_CURRENT_TEXT_BUFFER, "match_highlighting", &match_start, &match_end);      gtk_text_buffer_apply_tag_by_name(Shiki_CURRENT_TEXT_BUFFER, "match_highlighting", &match_start, &match_end);
# Line 831  void Shiki_replace_buffer() { Line 947  void Shiki_replace_buffer() {
947      ShikiReplaceBufferInfo.find = find = g_object_ref(gtk_entry_new());      ShikiReplaceBufferInfo.find = find = g_object_ref(gtk_entry_new());
948      ShikiReplaceBufferInfo.replace = replace = g_object_ref(gtk_entry_new());      ShikiReplaceBufferInfo.replace = replace = g_object_ref(gtk_entry_new());
949    }    }
950      
951    ShikiReplaceBufferInfo.ci  =    ShikiReplaceBufferInfo.ci  =
952    ShikiReplaceBufferInfo.word  =      ShikiReplaceBufferInfo.word  =
953    ShikiReplaceBufferInfo.regexp  =      ShikiReplaceBufferInfo.regexp  =
954    ShikiReplaceBufferInfo.escape  = FALSE;      ShikiReplaceBufferInfo.escape  = FALSE;
955    ShikiReplaceBufferInfo.from_first = TRUE;    ShikiReplaceBufferInfo.from_first = TRUE;
956    
957    g_signal_connect (check1, "toggled", G_CALLBACK (toggled_handler), &(ShikiReplaceBufferInfo.ci));    g_signal_connect (check1, "toggled", G_CALLBACK (toggled_handler), &(ShikiReplaceBufferInfo.ci));

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26