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