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.3 by aloha, Thu Nov 2 16:28:52 2006 UTC revision 1.4 by aloha, Fri Nov 3 06:47:02 2006 UTC
# Line 449  static gboolean signal_key_press_handler Line 449  static gboolean signal_key_press_handler
449    gtk_text_buffer_get_end_iter(buffer, &end);    gtk_text_buffer_get_end_iter(buffer, &end);
450    gtk_text_buffer_remove_tag_by_name(buffer, "parent_emphasis_background", &start, &end);    gtk_text_buffer_remove_tag_by_name(buffer, "parent_emphasis_background", &start, &end);
451    
452    /* Ctrl + f : forward */    /* コントロールキーが押されている */
453    if(event->keyval == GDK_f && event->state & GDK_CONTROL_MASK) {    if(event->state & GDK_CONTROL_MASK) {
454      forward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));      switch(event->keyval) {
455          case GDK_f :  /* Ctrl + f : forward */
456            forward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
457            break;
458          case GDK_b : /* Ctrl + b : backward */
459            backward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
460            break;
461          case GDK_n : /* Ctrl + n : next line */
462            line_forward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
463            break;
464          case GDK_p :  /* Ctrl + p : previous line */
465            line_backward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));
466            break;
467    
468          case GDK_j :  /* Ctrl + j : カーソル手前の S 式の評価 */
469            {
470              gchar *code;
471              GtkTextIter start, end;
472    
473              /* カーソルの位置を取得 */
474              gtk_text_buffer_get_iter_at_mark(buffer, &end, gtk_text_buffer_get_insert(buffer));
475    
476              gtk_text_iter_backward_find_char(&end, is_kokka, NULL, NULL);
477              start = end;
478              gtk_text_iter_forward_char(&end);
479    
480              /* カーソル位置の前にある S 式を切り出す */
481              if(!search_sexp_string(&start)) return FALSE;
482    
483              code = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
484              gtk_text_buffer_insert(buffer, &end, "\n\n", -1);
485              gtk_text_buffer_insert(buffer, &end, eval_cstring_by_gauche(code), -1);
486              g_free(code);
487            }
488            break;
489    
490          case GDK_O : /* Ctrl + O : ファイル開く */
491            open_file_from_notebook(GTK_NOTEBOOK(notebook));    
492            break;
493    
494          case GDK_s : /* Ctrl + s : ファイル保存 */
495            save_file_from_notebook(GTK_NOTEBOOK(notebook));    
496            break;
497    
498          case GDK_w : /* Ctrl + w : ファイル別名保存 */
499            save_file_as_from_notebook(GTK_NOTEBOOK(notebook));    
500            break;
501    
502          case GDK_t : /* Ctrl + t : タブを開く */
503            gtk_notebook_append_page(GTK_NOTEBOOK(notebook), new_scrolled_text_buffer(), gtk_label_new("*scratch*"));
504            gtk_widget_show_all(GTK_WIDGET(notebook));
505            break;
506    
507          case GDK_C : /* Ctrl + c : タブを閉じる */
508            remove_tabpage(GTK_NOTEBOOK(notebook));
509            break;
510    
511          case GDK_q :/* Ctrl + q : 終了 */
512            {
513              /* "delete-event" を発生させる.ウィンドウの × ボタンが押されたのと同じ */
514              GdkEvent ev;
515    
516              ev.any.type = GDK_DELETE;
517              ev.any.window = editor_window->window;
518              ev.any.send_event = FALSE;
519              gdk_event_put (&ev);
520            }
521            break;
522        }
523    }    }
   /* Ctrl + b : backward */  
   if(event->keyval == GDK_b && event->state & GDK_CONTROL_MASK) {  
     backward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));  
   }  
   /* Ctrl + n : next line */  
   if(event->keyval == GDK_n && event->state & GDK_CONTROL_MASK) {  
     line_forward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));  
   }  
   /* Ctrl + p : previous line */  
   if(event->keyval == GDK_p && event->state & GDK_CONTROL_MASK) {  
     line_backward_buffer_from_current_tabpage(GTK_NOTEBOOK(notebook));  
   }  
   
   /* Ctrl + j : カーソル手前の S 式の評価 */  
   if(event->keyval == GDK_j && event->state & GDK_CONTROL_MASK) {  
     gchar *code;  
     GtkTextIter start, end;  
   
     /* カーソルの位置を取得 */  
     gtk_text_buffer_get_iter_at_mark(buffer, &end, gtk_text_buffer_get_insert(buffer));  
   
     gtk_text_iter_backward_find_char(&end, is_kokka, NULL, NULL);  
     start = end;  
     gtk_text_iter_forward_char(&end);  
   
     /* カーソル位置の前にある S 式を切り出す */  
     if(!search_sexp_string(&start)) return FALSE;  
   
     code = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);  
     gtk_text_buffer_insert(buffer, &end, "\n\n", -1);  
     gtk_text_buffer_insert(buffer, &end, eval_cstring_by_gauche(code), -1);  
     g_free(code);  
   }  
   
   /* Ctrl + O : ファイル開く */  
   if(event->keyval == GDK_O && event->state & GDK_CONTROL_MASK) {  
     open_file_from_notebook(GTK_NOTEBOOK(notebook));      
   }  
   
   /* Ctrl + s : ファイル保存 */  
   if(event->keyval == GDK_s && event->state & GDK_CONTROL_MASK) {  
     save_file_from_notebook(GTK_NOTEBOOK(notebook));      
   }  
   
   /* Ctrl + w : ファイル別名保存 */  
   if(event->keyval == GDK_w && event->state & GDK_CONTROL_MASK) {  
     save_file_as_from_notebook(GTK_NOTEBOOK(notebook));      
   }  
   
   /* Ctrl + t : タブを開く */  
   if(event->keyval == GDK_t && event->state & GDK_CONTROL_MASK) {  
     gtk_notebook_append_page(GTK_NOTEBOOK(notebook), new_scrolled_text_buffer(), gtk_label_new("*scratch*"));  
     gtk_widget_show_all(GTK_WIDGET(notebook));  
   }  
   
   /* Ctrl + c : タブを閉じる */  
   if(event->keyval == GDK_C && event->state & GDK_CONTROL_MASK) {  
     remove_tabpage(GTK_NOTEBOOK(notebook));  
   }  
   
   /* Ctrl + q : 終了 */  
   if(event->keyval == GDK_q && event->state & GDK_CONTROL_MASK) {  
     /* "delete-event" を発生させる.ウィンドウの × ボタンが押されたのと同じ */  
     GdkEvent ev;  
   
     ev.any.type = GDK_DELETE;  
     ev.any.window = editor_window->window;  
     ev.any.send_event = FALSE;  
     gdk_event_put (&ev);  
   }  
   
524    return FALSE;    return FALSE;
525  }  }
526    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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