Develop and Download Open Source Software

Browse CVS Repository

Diff of /shiki/shiki/shiki.c

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

revision 1.60 by aloha, Wed Nov 29 05:08:46 2006 UTC revision 1.61 by aloha, Wed Nov 29 14:58:27 2006 UTC
# Line 29  Line 29 
29    
30  #include"shiki.h"  #include"shiki.h"
31    
 static gint editor_indent_width = 2;  
   
32  /* エディタ全体に関する情報と,現在表示されているタブ情報へのキャッシュを管理する構造体 */  /* エディタ全体に関する情報と,現在表示されているタブ情報へのキャッシュを管理する構造体 */
33  ShikiEditorType Shiki_editor;  ShikiEditorType Shiki_editor;
34    
# Line 115  static void toggled_handler(GtkToggleBut Line 113  static void toggled_handler(GtkToggleBut
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);
# Line 305  static void switch_tabpage_handler(GtkNo Line 288  static void switch_tabpage_handler(GtkNo
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() {
# Line 579  static gboolean save_text_buffer(const g Line 562  static gboolean save_text_buffer(const g
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  }  }
# Line 806  static gboolean signal_key_release_handl Line 789  static gboolean signal_key_release_handl
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);

Legend:
Removed from v.1.60  
changed lines
  Added in v.1.61

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