--ReaqsoxgOBHFXBhH
Content-Type: text/plain; charset=iso-2022-jp
Content-Disposition: inline

はじめまして、高橋全とます。
たった今 subscribe したばかりです。

さて、
ruby-1.8.2 の ext/curses には deleteln はあるのに insertln が
ありません。試しに deleteln とまったく同じようにい燭世韻
動きましたので、よろしければ追加してください。

なお、insertln は deleteln の逆方向にスクロールさせる場合などに
よく用いられます。ncurses をインストールしてあれば man insertln
でご確認いただけます。

-- 
tamo

--ReaqsoxgOBHFXBhH
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="ext-curses-insertln.patch"

--- ruby-1.8.2/ext/curses/curses.c.orig	Wed Dec 15 18:57:05 2004
+++ ruby-1.8.2/ext/curses/curses.c	Mon May  9 11:17:13 2005
@@ -446,6 +446,17 @@ curses_deleteln(obj)
     return Qnil;
 }
 
+/* def insertln */
+static VALUE
+curses_insertln(obj)
+    VALUE obj;
+{
+#if defined(HAVE_INSERTLN) || defined(insertln)
+    insertln();
+#endif
+    return Qnil;
+}
+
 /* def keyname */
 static VALUE
 curses_keyname(obj, c)
@@ -1159,7 +1170,21 @@ window_deleteln(obj)
     return Qnil;
 }
 
+/* def insertln */
 static VALUE
+window_insertln(obj)
+    VALUE obj;
+{
+#if defined(HAVE_WINSERTLN) || defined(winsertln)
+    struct windata *winp;
+    
+    GetWINDOW(obj, winp);
+    winsertln(winp->window);
+#endif
+    return Qnil;
+}
+
+static VALUE
 window_scrollok(VALUE obj, VALUE bf)
 {
   struct windata *winp;
@@ -1424,6 +1449,7 @@ Init_curses()
     rb_define_module_function(mCurses, "getstr", curses_getstr, 0);
     rb_define_module_function(mCurses, "delch", curses_delch, 0);
     rb_define_module_function(mCurses, "deleteln", curses_deleteln, 0);
+    rb_define_module_function(mCurses, "insertln", curses_insertln, 0);
     rb_define_module_function(mCurses, "keyname", curses_keyname, 1);
     rb_define_module_function(mCurses, "lines", curses_lines, 0);
     rb_define_module_function(mCurses, "cols", curses_cols, 0);
@@ -1488,6 +1514,7 @@ Init_curses()
     rb_define_method(cWindow, "getstr", window_getstr, 0);
     rb_define_method(cWindow, "delch", window_delch, 0);
     rb_define_method(cWindow, "deleteln", window_deleteln, 0);
+    rb_define_method(cWindow, "insertln", window_insertln, 0);
     rb_define_method(cWindow, "scroll", window_scroll, 0);
     rb_define_method(cWindow, "scrollok", window_scrollok, 1);
     rb_define_method(cWindow, "idlok", window_idlok, 1);

--ReaqsoxgOBHFXBhH--