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.50 by aloha, Thu Nov 23 05:27:13 2006 UTC revision 1.51 by aloha, Thu Nov 23 15:18:28 2006 UTC
# Line 110  GdkColor COLOR_GREEN; Line 110  GdkColor COLOR_GREEN;
110  /* プロトタイプ */  /* プロトタイプ */
111    
112  /* タブの生成と削除 : 基本的に,ShikiTabInfo の中身に格納する情報を増やしたかったら,この 2 つの関数だけを変更すれば良い (ようにする…) */  /* タブの生成と削除 : 基本的に,ShikiTabInfo の中身に格納する情報を増やしたかったら,この 2 つの関数だけを変更すれば良い (ようにする…) */
113  static void append_tabpage(gchar *filename);  static void get_buffer_create(gchar *filename);
114  static void remove_tabpage();  static void remove_tabpage();
115    
116  /* foo_bar_handler() は,イベントハンドラのためのラッパー */  /* foo_bar_handler() は,イベントハンドラのためのラッパー */
# Line 183  static void about_this_application(); Line 183  static void about_this_application();
183  /* エディタの初期化 */  /* エディタの初期化 */
184  static void shiki_editor_window_init(int argc, char **argv);  static void shiki_editor_window_init(int argc, char **argv);
185    
186    /* バッファの内容を消去 */
187    static void clear_current_buffer() {
188      GtkTextIter start, end;
189      gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &start);
190      gtk_text_buffer_get_end_iter(Shiki_CURRENT_TEXT_BUFFER, &end);
191      gtk_text_buffer_delete(Shiki_CURRENT_TEXT_BUFFER, &start, &end);
192    }
193    
194    static ScmObj Shiki_clear_current_buffer()
195    {
196      clear_current_buffer();
197      return SCM_NIL;
198    }
199    
200    static SCM_DEFINE_STRING_CONST(clear_current_buffer__NAME, "clear-current-buffer", 20, 20);
201    static SCM_DEFINE_SUBR(clear_current_buffer__STUB, 0, 0, SCM_OBJ(&clear_current_buffer__NAME), Shiki_clear_current_buffer, NULL, NULL);
202    
203  static void destroy_handler(GtkWidget *button, GtkWidget *widget) {gtk_widget_destroy(widget);}  static void destroy_handler(GtkWidget *button, GtkWidget *widget) {gtk_widget_destroy(widget);}
204    
205  static void toggled_handler(GtkToggleButton *togglebutton, gboolean *flag) {  static void toggled_handler(GtkToggleButton *togglebutton, gboolean *flag) {
# Line 467  static gboolean signal_key_press_handler Line 484  static gboolean signal_key_press_handler
484    
485        case GDK_e :  /* Ctrl + e : eval-expression */        case GDK_e :  /* Ctrl + e : eval-expression */
486          {          {
487            gchar *code;            gchar *code, *result;
488            GtkTextIter start, end;            GtkTextIter start, end;
489    
490            if(!search_sexp(&start, &end)) return FALSE;            if(!search_sexp(&start, &end)) return FALSE;
491    
492            code = gtk_text_buffer_get_text(Shiki_CURRENT_TEXT_BUFFER, &start, &end, FALSE);            code = gtk_text_buffer_get_text(Shiki_CURRENT_TEXT_BUFFER, &start, &end, FALSE);
493            gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, "\n\n", -1);            result = eval_cstring_by_gauche(code);
           gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, eval_cstring_by_gauche(code), -1);  
494            g_free(code);            g_free(code);
495              
496              gtk_text_buffer_get_iter_at_mark(Shiki_CURRENT_TEXT_BUFFER, &end, gtk_text_buffer_get_insert(Shiki_CURRENT_TEXT_BUFFER));
497              
498              gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, "\n\n", -1);
499              gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, result, -1);
500          }          }
501          break;          break;
502    
503        case GDK_j :  /* Ctrl + j : eval-last-sexp */        case GDK_j :  /* Ctrl + j : eval-last-sexp */
504          {          {
505            gchar *code;            gchar *code, *result;
506            GtkTextIter start, end;            GtkTextIter start, end;
507    
508            if(!search_last_sexp(&start, &end)) return FALSE;            if(!search_last_sexp(&start, &end)) return FALSE;
509    
510            code = gtk_text_buffer_get_text(Shiki_CURRENT_TEXT_BUFFER, &start, &end, FALSE);            code = gtk_text_buffer_get_text(Shiki_CURRENT_TEXT_BUFFER, &start, &end, FALSE);
511            gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, "\n\n", -1);            result = eval_cstring_by_gauche(code);
           gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, eval_cstring_by_gauche(code), -1);  
512            g_free(code);            g_free(code);
513              
514              gtk_text_buffer_get_iter_at_mark(Shiki_CURRENT_TEXT_BUFFER, &end, gtk_text_buffer_get_insert(Shiki_CURRENT_TEXT_BUFFER));
515              
516              gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, "\n\n", -1);
517              gtk_text_buffer_insert(Shiki_CURRENT_TEXT_BUFFER, &end, result, -1);
518          }          }
519          break;          break;
520    
# Line 522  static gboolean signal_key_press_handler Line 547  static gboolean signal_key_press_handler
547    
548    
549  /* ノートブックにタブとページ (バッファ) を追加 */  /* ノートブックにタブとページ (バッファ) を追加 */
550  static void append_tabpage(gchar *filename) {  static void get_buffer_create(gchar *filename) {
551    /*-------------------- 新しいタブを作る ----------------------------------*/    /*-------------------- 新しいタブを作る ----------------------------------*/
552    /* ShikiTabInfo には,タブに関連する情報が全て保持されている */    /* ShikiTabInfo には,タブに関連する情報が全て保持されている */
553    ShikiTabInfo *tabinfo  = g_malloc(sizeof(ShikiTabInfo));    ShikiTabInfo *tabinfo  = g_malloc(sizeof(ShikiTabInfo));
# Line 533  static void append_tabpage(gchar *filena Line 558  static void append_tabpage(gchar *filena
558    tabinfo->tabpage_label = g_strndup(tabinfo->basename, 7);    tabinfo->tabpage_label = g_strndup(tabinfo->basename, 7);
559    tabinfo->env           = Scm_MakeModule(NULL, FALSE);    tabinfo->env           = Scm_MakeModule(NULL, FALSE);
560    
561      SCM_DEFINE(tabinfo->env, "clear-current-buffer", SCM_OBJ(&clear_current_buffer__STUB));
562    
563    g_return_if_fail(tabinfo->env != SCM_FALSE);    g_return_if_fail(tabinfo->env != SCM_FALSE);
564    
565    /* スクロールウィンドウ (タブの中身の大外) を作る */    /* スクロールウィンドウ (タブの中身の大外) を作る */
# Line 577  static void append_tabpage(gchar *filena Line 604  static void append_tabpage(gchar *filena
604  }  }
605    
606  static void append_default_tabpage_handler() {  static void append_default_tabpage_handler() {
607    append_tabpage(g_strdup("*scratch*"));    get_buffer_create(g_strdup("*scratch*"));
608  }  }
609    
610  /* ノートブックからタブとページ (バッファ) を削除 */  /* ノートブックからタブとページ (バッファ) を削除 */
# Line 605  static void remove_tabpage() { Line 632  static void remove_tabpage() {
632    }    }
633  }  }
634    
 /* バッファの内容を消去 */  
 static void clear_current_buffer() {  
   GtkTextIter start, end;  
   gtk_text_buffer_get_start_iter(Shiki_CURRENT_TEXT_BUFFER, &start);  
   gtk_text_buffer_get_end_iter(Shiki_CURRENT_TEXT_BUFFER, &end);  
   gtk_text_buffer_delete(Shiki_CURRENT_TEXT_BUFFER, &start, &end);  
 }  
   
635  /* バッファをまるごとロード */  /* バッファをまるごとロード */
636  static void load_buffer_by_gauche() {  static void load_buffer_by_gauche() {
637    GtkTextIter p;    GtkTextIter p;
# Line 848  static void open_file(gchar *filename) { Line 867  static void open_file(gchar *filename) {
867    /* g_file_get_contents(filename, &contents, &len, NULL); */    /* g_file_get_contents(filename, &contents, &len, NULL); */
868    
869    /* 新しいバッファを開く */    /* 新しいバッファを開く */
870    append_tabpage(g_strdup(filename));    get_buffer_create(g_strdup(filename));
871    gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename);    gtk_window_set_title (GTK_WINDOW (Shiki_EDITOR_WINDOW), filename);
872    g_free(filename);    g_free(filename);
873    
# Line 1166  static gboolean signal_key_release_handl Line 1185  static gboolean signal_key_release_handl
1185  }  }
1186  static void open_online_help() {  static void open_online_help() {
1187    GtkTextIter p;    GtkTextIter p;
1188    append_tabpage(g_strdup("*help*"));    get_buffer_create(g_strdup("*help*"));
1189    gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER,    gtk_text_buffer_set_text(Shiki_CURRENT_TEXT_BUFFER,
1190        "コマンドラインからの起動方法\n"        "コマンドラインからの起動方法\n"
1191        "$ ./shiki [file1 file2 ....]\n\n"        "$ ./shiki [file1 file2 ....]\n\n"
# Line 1205  static void open_online_help() { Line 1224  static void open_online_help() {
1224        "C-M-@ : カーソル以降の S 式を選択 (mark-sexp)\n"        "C-M-@ : カーソル以降の S 式を選択 (mark-sexp)\n"
1225        "C-M-SPC : カーソル手前の S 式を選択 (mark-last-sexp)\n"        "C-M-SPC : カーソル手前の S 式を選択 (mark-last-sexp)\n"
1226        "C-x C-c : 終了.ウィンドウの × ボタンを押したのと同じ\n"        "C-x C-c : 終了.ウィンドウの × ボタンを押したのと同じ\n"
1227          "\n"
1228          "エディタ API\n"
1229          "(clear-current-buffer) : バッファをクリアします (警告無し)\n"
1230        , -1);        , -1);
1231    gtk_text_buffer_set_modified(Shiki_CURRENT_TEXT_BUFFER, FALSE);    gtk_text_buffer_set_modified(Shiki_CURRENT_TEXT_BUFFER, FALSE);
1232    /* カーソル位置を先頭に */    /* カーソル位置を先頭に */

Legend:
Removed from v.1.50  
changed lines
  Added in v.1.51

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