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.11 by aloha, Wed Nov 29 14:58:27 2006 UTC revision 1.12 by aloha, Thu Nov 30 14:45:49 2006 UTC
# Line 73  static void insert_text_handler(GtkTextB Line 73  static void insert_text_handler(GtkTextB
73    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);
74  }  }
75    
76    
77    void Shiki_undo() {
78      GtkTextIter start, end;
79      ShikiUndoInfo *undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 0);
80      if(!undoInfo) {
81        Shiki_msgbox("これ以上 Undo できません");
82        return;
83      }
84      if(undoInfo->action == SHIKI_UNDO_UNDO) {
85        Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));
86        g_free(undoInfo);
87        undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 0);
88        g_return_if_fail(undoInfo != NULL);
89        Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));
90        g_free(undoInfo->str);
91        g_free(undoInfo);
92        undoInfo = g_list_nth_data(Shiki_CURRENT_UNDO_INFO_LIST, 0);
93      }
94      if(!undoInfo) {
95        Shiki_msgbox("これ以上 Undo できません");
96        return;
97      }  
98      gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->start);
99      gtk_text_buffer_get_iter_at_offset(Shiki_CURRENT_TEXT_BUFFER, &end, undoInfo->end);
100    
101      if(undoInfo->action == SHIKI_UNDO_INSERT) {
102        Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));
103        gtk_text_buffer_delete(Shiki_CURRENT_TEXT_BUFFER, &start, &end);
104        g_free(undoInfo->str);
105        g_free(undoInfo);
106        undoInfo = g_malloc(sizeof(ShikiUndoInfo));
107        g_return_if_fail(undoInfo != NULL);
108        undoInfo->action = SHIKI_UNDO_UNDO;
109        Shiki_CURRENT_UNDO_INFO_LIST = g_list_prepend(Shiki_CURRENT_UNDO_INFO_LIST, undoInfo);
110      } else if(undoInfo->action == SHIKI_UNDO_DELETE) {
111        Shiki_CURRENT_UNDO_INFO_LIST = g_list_delete_link(Shiki_CURRENT_UNDO_INFO_LIST, g_list_first(Shiki_CURRENT_UNDO_INFO_LIST));
112        gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &start, undoInfo->str, -1);
113        g_free(undoInfo->str);
114        g_free(undoInfo);            
115      }
116    }
117    
118    
119  /* バッファの状態に合わせてモードラインを変更 */  /* バッファの状態に合わせてモードラインを変更 */
120  void Shiki_update_modeline(GtkTextBuffer *buffer) {  void Shiki_update_modeline(GtkTextBuffer *buffer) {
121    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))));    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))));
# Line 442  void Shiki_kill_buffer(GtkTextBuffer *bu Line 485  void Shiki_kill_buffer(GtkTextBuffer *bu
485    if(!Shiki_need_buffer_save_p(buffer) || Shiki_yes_or_no_p("バッファは変更されています.変更内容を破棄しますか ?"))    if(!Shiki_need_buffer_save_p(buffer) || Shiki_yes_or_no_p("バッファは変更されています.変更内容を破棄しますか ?"))
486      Shiki_delete_buffer(buffer);      Shiki_delete_buffer(buffer);
487  }  }
488    
489    void Shiki_msgbox(const gchar *msg) {
490      GtkWidget *dialog;
491      dialog = gtk_message_dialog_new(GTK_WINDOW(Shiki_EDITOR_WINDOW),
492          GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,msg);
493      gtk_dialog_run(GTK_DIALOG(dialog));
494      gtk_widget_destroy(dialog);
495    }

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

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