This adds a text object ('aa' or 'ii') for the entire buffer. I don't
know if this is worthy of being included by default, but I find it
convenient for things such as gqaa and =aa.
diff -rc vim72.old/runtime/doc/motion.txt vim72.new/runtime/doc/motion.txt
*** vim72.old/runtime/doc/motion.txt 2008-08-09 14:22:59.000000000 +0000
--- vim72.new/runtime/doc/motion.txt 2009-04-13 06:14:48.000000000 +0000
***************
*** 650,655 ****
--- 650,659 ----
Special case: With a count of 2 the quotes are
included, but no extra white space as with a"/a'/a`.
+ aa *v_aa* *aa*
+ ii *v_ii* *ii*
+ Shortcut to select the entire buffer.
+
When used after an operator:
For non-block objects:
For the "a" commands: The operator applies to the object and the white
***************
*** 692,697 ****
--- 696,702 ----
"dap" delete a paragraph *dap*
"diB" delete inner '{' '}' block *diB*
"daB" delete a '{' '}' block *daB*
+ "daa" delete all text from the buffer *daa*
Note the difference between using a movement command and an object. The
movement command operates from here (cursor position) to where the movement
diff -rc vim72.old/src/normal.c vim72.new/src/normal.c
*** vim72.old/src/normal.c 2008-07-31 20:03:08.000000000 +0000
--- vim72.new/src/normal.c 2009-04-13 06:37:13.000000000 +0000
***************
*** 8912,8917 ****
--- 8912,8921 ----
flag = current_quote(cap->oap, cap->count1, include,
cap->nchar);
break;
+ case 'a': /* 'aa' = whole buffer */
+ case 'i':
+ flag = current_buffer(cap->oap);
+ break;
#if 0 /* TODO */
case 'S': /* "aS" = a section */
case 'f': /* "af" = a filename */
diff -rc vim72.old/src/search.c vim72.new/src/search.c
*** vim72.old/src/search.c 2008-07-13 18:18:27.000000000 +0000
--- vim72.new/src/search.c 2009-04-13 06:34:53.000000000 +0000
***************
*** 4491,4496 ****
--- 4491,4523 ----
return OK;
}
+ /*
+ * Select entire buffer.
+ */
+ int
+ current_buffer(oap)
+ oparg_T *oap;
+ {
+ #ifdef FEAT_VISUAL
+ if (VIsual_active)
+ {
+ VIsual.lnum = 1;
+ VIsual_mode = 'V';
+ redraw_curbuf_later(INVERTED); /* update the inversion */
+ showmode();
+ }
+ else
+ #endif
+ {
+ oap->start.lnum = 1;
+ oap->start.col = 0;
+ oap->motion_type = MLINE;
+ }
+ curwin->w_cursor.lnum = curbuf->b_ml.ml_line_count;
+ curwin->w_cursor.col = 0;
+ return TRUE;
+ }
+
#endif /* FEAT_TEXTOBJ */
#if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
pgpA9bmeBhwye.pgp
Description: PGP signature
