v_I, v_A ハック

v, V でビジュアルモードを開始したとき、I, A で選択行の行頭・行末にテキストを追加するようにするハック。

--- ../src.orig/ops.c	2006-06-23 04:30:39.001000000 +0900
+++ ops.c	2006-08-16 18:13:49.921875000 +0900
@@ -2357,6 +2357,25 @@
     curwin->w_cursor.lnum = oap->start.lnum;
     update_screen(INVERTED);
 
+    if (! oap->block_mode) {
+        int ln;
+        int maxlen = 0;
+        int tmplen;
+        char_u* line;
+
+        oap->block_mode = TRUE;
+        oap->start_vcol = 0;
+        bd.is_MAX = TRUE;
+
+        for (ln=oap->start.lnum; ln<=oap->end.lnum; ln++) {
+            line = ml_get(ln);
+            tmplen = STRLEN(line);
+            if (maxlen < tmplen)
+                maxlen = tmplen;
+        }
+        oap->end_vcol = maxlen; 
+    }
+
     if (oap->block_mode)
     {
 #ifdef FEAT_VIRTUALEDIT

オペレータ、ビジュアルモード関連のコードもかなりすごい。地獄に迷い込んだかと思った。