Re: Patch to utilize undefined text-objects

2014-03-28 Fir de Conversatie Christian Wellenbrock
On Friday, March 28, 2014 2:50:39 AM UTC+1, Daniel paradigm Thau wrote:
 On Thursday, March 27, 2014 1:05:08 PM UTC-4, Ben Fritz wrote:
  On Friday, January 31, 2014 1:54:30 PM UTC-6, Daniel paradigm Thau wrote:
   On Thursday, January 30, 2014 9:07:19 PM UTC-5, Daniel paradigm Thau 
   wrote:
On Thursday, January 30, 2014 8:07:04 PM UTC-5, Marcin Szamotulski 
wrote:
 On 16:45 Wed 29 Jan , Daniel paradigm Thau wrote:
 
  Apologies for the delay.
 
  
 
  Review for those who have forgotten and/or don't care to backread:
 
  
 
  This patch adds a new text object, m, which will take one more 
  character as input.  That character will be used as bounds to the 
  left and right for the object.  For example, cim$ will change 
  between dollar signs.  This supports multi-line objects, so one 
  could do cim' which, unlike ci', will search across lines; this 
  way users have both.
 
  
 Thanks I'm really happy to see this patch.  I compiled it now and 
 there
 
 is one thing that does not work: the . command.  For example di or 
 ci
 
 can be repeated with . but dim, or cim, cannot.  
 
 
 
 Best regards,
 
 Marcin Szamotulski

Good catch.  I can replicate that on my end.  Will fix.
   
   Should be fixed in the attachment.  As a bonus, it now supports things 
   such as digraphs.
  
  I tried updating this patch for 7-4-220 and mostly succeeded, just by 
  applying a couple hundred lines of fuzz, but visual mode is not selecting 
  the full text inside the matched pairs. I don't have time to try to fix it 
  further. I'm attaching the updated patch in case I just did something 
  wrong. I know there have been some visual mode changes outside of this 
  patch between now and the time the patch was created.
 
 Thanks for staying on this!  My schedule has hit a huge crunch for the next 
 month or two, and I don't want to rush a fix out myself and risk causing new 
 issues.  I'd rather delay fixing this and ensure that when I do the patch is 
 as clean and bug-free as is possible against the code base at that time.  
 When my schedule clears I may also add functionality for adding a v:count to 
 the text object calls, which currently does not work for the new 
 functionality for either of my patches.  I might change how my tests work as 
 well in order to have them both be cleaner and more thorough.

I have written a plugin[1] that adds similar functionality. You might want to 
take a look at the tests[2] that work similar to Vim's test suite.

[1] https://github.com/wellle/targets.vim
[2] https://github.com/wellle/targets.vim/tree/master/test

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Patch to utilize undefined text-objects

2014-03-27 Fir de Conversatie Ben Fritz
On Friday, January 31, 2014 1:54:30 PM UTC-6, Daniel paradigm Thau wrote:
 On Thursday, January 30, 2014 9:07:19 PM UTC-5, Daniel paradigm Thau wrote:
  On Thursday, January 30, 2014 8:07:04 PM UTC-5, Marcin Szamotulski wrote:
   On 16:45 Wed 29 Jan , Daniel paradigm Thau wrote:
   
Apologies for the delay.
   

   
Review for those who have forgotten and/or don't care to backread:
   

   
This patch adds a new text object, m, which will take one more 
character as input.  That character will be used as bounds to the left 
and right for the object.  For example, cim$ will change between 
dollar signs.  This supports multi-line objects, so one could do cim' 
which, unlike ci', will search across lines; this way users have both.
   

   Thanks I'm really happy to see this patch.  I compiled it now and there
   
   is one thing that does not work: the . command.  For example di or ci
   
   can be repeated with . but dim, or cim, cannot.  
   
   
   
   Best regards,
   
   Marcin Szamotulski
  
  Good catch.  I can replicate that on my end.  Will fix.
 
 Should be fixed in the attachment.  As a bonus, it now supports things such 
 as digraphs.

I tried updating this patch for 7-4-220 and mostly succeeded, just by applying 
a couple hundred lines of fuzz, but visual mode is not selecting the full text 
inside the matched pairs. I don't have time to try to fix it further. I'm 
attaching the updated patch in case I just did something wrong. I know there 
have been some visual mode changes outside of this patch between now and the 
time the patch was created.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
diff -ur vim-7-4-220/runtime/doc/motion.txt vim-7-4-220_patched/runtime/doc/motion.txt
--- vim-7-4-220/runtime/doc/motion.txt	Thu Mar 27 06:40:30 2014
+++ vim-7-4-220_patched/runtime/doc/motion.txt	Thu Mar 27 11:27:22 2014
@@ -662,6 +662,14 @@
 			Special case: With a count of 2 the quotes are
 			included, but no extra white space as with a/a'/a`.
 
+am{char}		*v_am* *am*
+			a matched {char}.  Selects the text from the
+			previous {char} until the next {char}.  A count is
+			currently not used.
+
+im{char}		*v_im* *im*
+			Like am{char} but exclude the {char}.
+
 When used after an operator:
 For non-block objects:
 	For the a commands: The operator applies to the object and the white
diff -ur vim-7-4-220/runtime/doc/tags vim-7-4-220_patched/runtime/doc/tags
--- vim-7-4-220/runtime/doc/tags	Thu Mar 27 06:40:30 2014
+++ vim-7-4-220_patched/runtime/doc/tags	Thu Mar 27 11:27:22 2014
@@ -4763,6 +4763,7 @@
 alt	intro.txt	/*alt*
 alt-input	debugger.txt	/*alt-input*
 alternate-file	editing.txt	/*alternate-file*
+am	motion.txt	/*am*
 amiga-window	starting.txt	/*amiga-window*
 and()	eval.txt	/*and()*
 anonymous-function	eval.txt	/*anonymous-function*
@@ -6538,6 +6539,7 @@
 if_sniff.txt	if_sniff.txt	/*if_sniff.txt*
 if_tcl.txt	if_tcl.txt	/*if_tcl.txt*
 ignore-errors	eval.txt	/*ignore-errors*
+im	motion.txt	/*im*
 improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
 improved-quickfix	version5.txt	/*improved-quickfix*
 improved-sessions	version5.txt	/*improved-sessions*
@@ -8473,6 +8475,7 @@
 v_a]	motion.txt	/*v_a]*
 v_a`	motion.txt	/*v_a`*
 v_ab	motion.txt	/*v_ab*
+v_am	motion.txt	/*v_am*
 v_ap	motion.txt	/*v_ap*
 v_aquote	motion.txt	/*v_aquote*
 v_as	motion.txt	/*v_as*
@@ -8520,6 +8523,7 @@
 v_i]	motion.txt	/*v_i]*
 v_i`	motion.txt	/*v_i`*
 v_ib	motion.txt	/*v_ib*
+v_im	motion.txt	/*v_im*
 v_ip	motion.txt	/*v_ip*
 v_iquote	motion.txt	/*v_iquote*
 v_is	motion.txt	/*v_is*
diff -ur vim-7-4-220/src/normal.c vim-7-4-220_patched/src/normal.c
--- vim-7-4-220/src/normal.c	Thu Mar 27 06:40:30 2014
+++ vim-7-4-220_patched/src/normal.c	Thu Mar 27 11:27:22 2014
@@ -942,7 +942,7 @@
 	cp = ca.nchar;
 	}
 	lang = (repl || (nv_cmds[idx].cmd_flags  NV_LANG));
-
+getchar:
 	/*
 	 * Get a second or third character.
 	 */
@@ -1093,6 +1093,18 @@
 	}
 #endif
 	}
+#ifdef FEAT_TEXTOBJ
+	/*
+	 * The im/am text object needs one more character to use as left/right
+	 * bounds.
+	 */
+	if ((ca.cmdchar == 'a' || ca.cmdchar == 'i')  ca.nchar == 'm'
+		 ca.extra_char == NUL)
+	{
+	cp = ca.extra_char;
+	goto getchar;
+	}
+#endif
 	--no_mapping;
 	--allow_keys;
 }
@@ -1455,6 +1467,16 @@
 	prep_redo(oap-regname, cap-count0,
 		get_op_char(oap-op_type), get_extra_op_char(oap-op_type),
 		oap-motion_force, cap-cmdchar, cap-nchar);
+#ifdef FEAT_TEXTOBJ
+	/*
+	 * If using the am/im text object, there is one additional
+	 * character 

Re: Patch to utilize undefined text-objects

2014-03-27 Fir de Conversatie Daniel paradigm Thau
On Thursday, March 27, 2014 1:05:08 PM UTC-4, Ben Fritz wrote:
 On Friday, January 31, 2014 1:54:30 PM UTC-6, Daniel paradigm Thau wrote:
  On Thursday, January 30, 2014 9:07:19 PM UTC-5, Daniel paradigm Thau 
  wrote:
   On Thursday, January 30, 2014 8:07:04 PM UTC-5, Marcin Szamotulski wrote:
On 16:45 Wed 29 Jan , Daniel paradigm Thau wrote:

 Apologies for the delay.

 

 Review for those who have forgotten and/or don't care to backread:

 

 This patch adds a new text object, m, which will take one more 
 character as input.  That character will be used as bounds to the 
 left and right for the object.  For example, cim$ will change 
 between dollar signs.  This supports multi-line objects, so one could 
 do cim' which, unlike ci', will search across lines; this way 
 users have both.

 
Thanks I'm really happy to see this patch.  I compiled it now and there

is one thing that does not work: the . command.  For example di or 
ci

can be repeated with . but dim, or cim, cannot.  



Best regards,

Marcin Szamotulski
   
   Good catch.  I can replicate that on my end.  Will fix.
  
  Should be fixed in the attachment.  As a bonus, it now supports things such 
  as digraphs.
 
 I tried updating this patch for 7-4-220 and mostly succeeded, just by 
 applying a couple hundred lines of fuzz, but visual mode is not selecting the 
 full text inside the matched pairs. I don't have time to try to fix it 
 further. I'm attaching the updated patch in case I just did something wrong. 
 I know there have been some visual mode changes outside of this patch between 
 now and the time the patch was created.

Thanks for staying on this!  My schedule has hit a huge crunch for the next 
month or two, and I don't want to rush a fix out myself and risk causing new 
issues.  I'd rather delay fixing this and ensure that when I do the patch is as 
clean and bug-free as is possible against the code base at that time.  When my 
schedule clears I may also add functionality for adding a v:count to the text 
object calls, which currently does not work for the new functionality for 
either of my patches.  I might change how my tests work as well in order to 
have them both be cleaner and more thorough.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Patch to utilize undefined text-objects

2014-02-04 Fir de Conversatie Ben Fritz
On Friday, January 31, 2014 10:40:49 PM UTC-6, Ben Fritz wrote:
 On Friday, January 31, 2014 1:54:30 PM UTC-6, Daniel paradigm Thau wrote:
  
  Should be fixed in the attachment.  As a bonus, it now supports things such 
  as digraphs.
 
 I think you just gave me a way to edit bulleted list items in plaintext, 
 using a c-coded text object. I'll need to try it out tomorrow :-)

Thanks! I tried out the latest patch, now using cim with my own digraph, I can 
easily edit entire list items when I have a list like this:

• one
• two
• three

I noticed a very minor bug, though.

When 'selection' is set to exclusive (as with :behave mswin) then vim{char} 
is missing a character in the selection. Similarly, vam{char} is missing the 
final matched character.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-02-04 Fir de Conversatie Daniel paradigm Thau
On Tuesday, February 4, 2014 1:50:19 PM UTC-5, Ben Fritz wrote:
 On Friday, January 31, 2014 10:40:49 PM UTC-6, Ben Fritz wrote:
 
  On Friday, January 31, 2014 1:54:30 PM UTC-6, Daniel paradigm Thau wrote:
 
   
 
   Should be fixed in the attachment.  As a bonus, it now supports things 
   such as digraphs.
 
  
 
  I think you just gave me a way to edit bulleted list items in plaintext, 
  using a c-coded text object. I'll need to try it out tomorrow :-)
 
 
 
 Thanks! I tried out the latest patch, now using cim with my own digraph, I 
 can easily edit entire list items when I have a list like this:
 
 
 
 • one
 
 • two
 
 • three
 

Excellent :)

 I noticed a very minor bug, though.
 
 
 
 When 'selection' is set to exclusive (as with :behave mswin) then vim{char} 
 is missing a character in the selection. Similarly, vam{char} is missing the 
 final matched character.

Interesting.  I'll look into it.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-02-04 Fir de Conversatie Peter Aronoff
On Tuesday, February 4th, 2014 at 4:50PM, Daniel paradigm Thau wrote:
 Should be fixed in the attachment.  As a bonus, it now supports things
 such as digraphs.

I'm loving this patch, but I do have a question. Is the following a bug or
intended behavior:

1. Start with this text (cursor at the 'i')

foo,i,foo

2. Enter 'cim,'
3. This is the result, with the cursor immediately before the ','

foo,foo

4. Expected result was this, with the cursor in between the commas:

foo,,foo


Thanks, Peter
-- 
We have not been faced with the need to satisfy someone else's
requirements, and for this freedom we are grateful.
Dennis Ritchie and Ken Thompson, The UNIX Time-Sharing System

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-02-04 Fir de Conversatie Daniel paradigm Thau
On Tuesday, February 4, 2014 5:06:08 PM UTC-5, telemachus wrote:
 On Tuesday, February 4th, 2014 at 4:50PM, Daniel paradigm Thau wrote:
 
  Should be fixed in the attachment.  As a bonus, it now supports things
 
  such as digraphs.
 
 
 
 I'm loving this patch, but I do have a question. Is the following a bug or
 
 intended behavior:
 
 
 
 1. Start with this text (cursor at the 'i')
 
 
 
 foo,i,foo
 
 
 
 2. Enter 'cim,'
 
 3. This is the result, with the cursor immediately before the ','
 
 
 
 foo,foo
 
 
 
 4. Expected result was this, with the cursor in between the commas:
 
 
 
 foo,,foo
 
 
 
 
 
 Thanks, Peter
 
 -- 
 
 We have not been faced with the need to satisfy someone else's
 
 requirements, and for this freedom we are grateful.
 
 Dennis Ritchie and Ken Thompson, The UNIX Time-Sharing System

That is in fact another bug.  No idea how that slipped by me.  I'll be sure to 
fix that as well.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-01-31 Fir de Conversatie Daniel paradigm Thau
On Thursday, January 30, 2014 9:07:19 PM UTC-5, Daniel paradigm Thau wrote:
 On Thursday, January 30, 2014 8:07:04 PM UTC-5, Marcin Szamotulski wrote:
  On 16:45 Wed 29 Jan , Daniel paradigm Thau wrote:
  
   Apologies for the delay.
  
   
  
   Review for those who have forgotten and/or don't care to backread:
  
   
  
   This patch adds a new text object, m, which will take one more 
   character as input.  That character will be used as bounds to the left 
   and right for the object.  For example, cim$ will change between dollar 
   signs.  This supports multi-line objects, so one could do cim' which, 
   unlike ci', will search across lines; this way users have both.
  
   
  
   I've been using it quite happily for the last two months or so, but more 
   eyes and testing would not be a bad idea.
  
   
  
   Attached is the patch, in both unified and context format, including a 
   test.
  
  
  
  Hi,
  
  
  
  Thanks I'm really happy to see this patch.  I compiled it now and there
  
  is one thing that does not work: the . command.  For example di or ci
  
  can be repeated with . but dim, or cim, cannot.  
  
  
  
  Best regards,
  
  Marcin Szamotulski
 
 Good catch.  I can replicate that on my end.  Will fix.

Should be fixed in the attachment.  As a bonus, it now supports things such as 
digraphs.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index d40d825..1cb2287 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -662,6 +662,14 @@ i`			*v_i`* *i`*
 			Special case: With a count of 2 the quotes are
 			included, but no extra white space as with a/a'/a`.
 
+am{char}		*v_am* *am*
+			a matched {char}.  Selects the text from the
+			previous {char} until the next {char}.  A count is
+			currently not used.
+
+im{char}		*v_im* *im*
+			Like am{char} but exclude the {char}.
+
 When used after an operator:
 For non-block objects:
 	For the a commands: The operator applies to the object and the white
diff --git a/runtime/doc/tags b/runtime/doc/tags
index dce548f..eb258d5 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4760,6 +4760,7 @@ aleph	options.txt	/*aleph*
 alt	intro.txt	/*alt*
 alt-input	debugger.txt	/*alt-input*
 alternate-file	editing.txt	/*alternate-file*
+am	motion.txt	/*am*
 amiga-window	starting.txt	/*amiga-window*
 and()	eval.txt	/*and()*
 anonymous-function	eval.txt	/*anonymous-function*
@@ -6532,6 +6533,7 @@ if_ruby.txt	if_ruby.txt	/*if_ruby.txt*
 if_sniff.txt	if_sniff.txt	/*if_sniff.txt*
 if_tcl.txt	if_tcl.txt	/*if_tcl.txt*
 ignore-errors	eval.txt	/*ignore-errors*
+im	motion.txt	/*im*
 improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
 improved-quickfix	version5.txt	/*improved-quickfix*
 improved-sessions	version5.txt	/*improved-sessions*
@@ -8457,6 +8459,7 @@ v_a[	motion.txt	/*v_a[*
 v_a]	motion.txt	/*v_a]*
 v_a`	motion.txt	/*v_a`*
 v_ab	motion.txt	/*v_ab*
+v_am	motion.txt	/*v_am*
 v_ap	motion.txt	/*v_ap*
 v_aquote	motion.txt	/*v_aquote*
 v_as	motion.txt	/*v_as*
@@ -8504,6 +8507,7 @@ v_i[	motion.txt	/*v_i[*
 v_i]	motion.txt	/*v_i]*
 v_i`	motion.txt	/*v_i`*
 v_ib	motion.txt	/*v_ib*
+v_im	motion.txt	/*v_im*
 v_ip	motion.txt	/*v_ip*
 v_iquote	motion.txt	/*v_iquote*
 v_is	motion.txt	/*v_is*
diff --git a/src/normal.c b/src/normal.c
index 66a5b7a..710c6b4 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -981,7 +981,7 @@ getcount:
 	cp = ca.nchar;
 	}
 	lang = (repl || (nv_cmds[idx].cmd_flags  NV_LANG));
-
+getchar:
 	/*
 	 * Get a second or third character.
 	 */
@@ -1132,6 +1132,18 @@ getcount:
 	}
 #endif
 	}
+#ifdef FEAT_TEXTOBJ
+	/*
+	 * The im/am text object needs one more character to use as left/right
+	 * bounds.
+	 */
+	if ((ca.cmdchar == 'a' || ca.cmdchar == 'i')  ca.nchar == 'm'
+		 ca.extra_char == NUL)
+	{
+	cp = ca.extra_char;
+	goto getchar;
+	}
+#endif
 	--no_mapping;
 	--allow_keys;
 }
@@ -1526,6 +1538,16 @@ do_pending_operator(cap, old_col, gui_yank)
 	prep_redo(oap-regname, cap-count0,
 		get_op_char(oap-op_type), get_extra_op_char(oap-op_type),
 		oap-motion_force, cap-cmdchar, cap-nchar);
+#ifdef FEAT_TEXTOBJ
+	/*
+	 * If using the am/im text object, there is one additional
+	 * character used as left/right bounds which needs to be added to
+	 * the redo buffer.
+	 */
+	if ((cap-cmdchar == 'a' || cap-cmdchar == 'i')
+		 cap-nchar == 'm'  cap-extra_char != NUL)
+		AppendCharToRedobuff(cap-extra_char);
+#endif
 	if (cap-cmdchar == '/' || cap-cmdchar == '?') /* was a 

Re: Patch to utilize undefined text-objects

2014-01-31 Fir de Conversatie Marcin Szamotulski
On 11:54 Fri 31 Jan , Daniel paradigm Thau wrote:
 On Thursday, January 30, 2014 9:07:19 PM UTC-5, Daniel paradigm Thau wrote:
  On Thursday, January 30, 2014 8:07:04 PM UTC-5, Marcin Szamotulski wrote:
   On 16:45 Wed 29 Jan , Daniel paradigm Thau wrote:
   
Apologies for the delay.
   

   
Review for those who have forgotten and/or don't care to backread:
   

   
This patch adds a new text object, m, which will take one more 
character as input.  That character will be used as bounds to the left 
and right for the object.  For example, cim$ will change between 
dollar signs.  This supports multi-line objects, so one could do cim' 
which, unlike ci', will search across lines; this way users have both.
   

   
I've been using it quite happily for the last two months or so, but 
more eyes and testing would not be a bad idea.
   

   
Attached is the patch, in both unified and context format, including a 
test.
   
   
   
   Hi,
   
   
   
   Thanks I'm really happy to see this patch.  I compiled it now and there
   
   is one thing that does not work: the . command.  For example di or ci
   
   can be repeated with . but dim, or cim, cannot.  
   
   
   
   Best regards,
   
   Marcin Szamotulski
  
  Good catch.  I can replicate that on my end.  Will fix.
 
 Should be fixed in the attachment.  As a bonus, it now supports things such 
 as digraphs.
 

Thanks that indeed works.

Regards,
Marcin

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-01-30 Fir de Conversatie Ben Fritz
On Wednesday, January 29, 2014 6:45:23 PM UTC-6, Daniel paradigm Thau wrote:
 Apologies for the delay.
 
 Review for those who have forgotten and/or don't care to backread:
 
 This patch adds a new text object, m, which will take one more character as 
 input.  That character will be used as bounds to the left and right for the 
 object.  For example, cim$ will change between dollar signs.  This supports 
 multi-line objects, so one could do cim' which, unlike ci', will search 
 across lines; this way users have both.
 
 I've been using it quite happily for the last two months or so, but more eyes 
 and testing would not be a bad idea.
 
 Attached is the patch, in both unified and context format, including a test.

FWIW, I've been compiling and running on Solaris and Windows with this patch 
applied for a couple months now, and haven't seen any problems. I admit I only 
use the added feature occasionally, but it's nice to know it's there, and I'm 
sure it's partially due to habit of not having it available for so long.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-01-30 Fir de Conversatie Peter Aronoff
On Thursday, January 30th, 2014 at 6:55PM, Daniel paradigm Thau wrote:
  Review for those who have forgotten and/or don't care to backread:
  
  This patch adds a new text object, m, which will take one more
  character as input.  That character will be used as bounds to the left
  and right for the object.  For example, cim$ will change between
  dollar signs.  This supports multi-line objects, so one could do cim'
  which, unlike ci', will search across lines; this way users have
  both.
  
  I've been using it quite happily for the last two months or so, but
  more eyes and testing would not be a bad idea.

Thanks for this and your previous patch. I missed them both the first time
around. They both build nicely on Mac OSX, and after initial testing, I'm
liking them both.

Just fyi (and for anyone else on the list), I have a Homebrew formula that
makes it easy to install both patches on a Mac. It might be useful for
other people as well:

https://github.com/telemachus/brew/blob/master/Formula/vim.rb

Thanks, Peter
-- 
We have not been faced with the need to satisfy someone else's
requirements, and for this freedom we are grateful.
Dennis Ritchie and Ken Thompson, The UNIX Time-Sharing System

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-01-30 Fir de Conversatie Marcin Szamotulski
On 16:45 Wed 29 Jan , Daniel paradigm Thau wrote:
 Apologies for the delay.
 
 Review for those who have forgotten and/or don't care to backread:
 
 This patch adds a new text object, m, which will take one more character as 
 input.  That character will be used as bounds to the left and right for the 
 object.  For example, cim$ will change between dollar signs.  This supports 
 multi-line objects, so one could do cim' which, unlike ci', will search 
 across lines; this way users have both.
 
 I've been using it quite happily for the last two months or so, but more eyes 
 and testing would not be a bad idea.
 
 Attached is the patch, in both unified and context format, including a test.

Hi,

Thanks I'm really happy to see this patch.  I compiled it now and there
is one thing that does not work: the . command.  For example di or ci
can be repeated with . but dim, or cim, cannot.  

Best regards,
Marcin Szamotulski

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-01-30 Fir de Conversatie Daniel paradigm Thau
On Thursday, January 30, 2014 8:07:04 PM UTC-5, Marcin Szamotulski wrote:
 On 16:45 Wed 29 Jan , Daniel paradigm Thau wrote:
 
  Apologies for the delay.
 
  
 
  Review for those who have forgotten and/or don't care to backread:
 
  
 
  This patch adds a new text object, m, which will take one more character 
  as input.  That character will be used as bounds to the left and right for 
  the object.  For example, cim$ will change between dollar signs.  This 
  supports multi-line objects, so one could do cim' which, unlike ci', 
  will search across lines; this way users have both.
 
  
 
  I've been using it quite happily for the last two months or so, but more 
  eyes and testing would not be a bad idea.
 
  
 
  Attached is the patch, in both unified and context format, including a test.
 
 
 
 Hi,
 
 
 
 Thanks I'm really happy to see this patch.  I compiled it now and there
 
 is one thing that does not work: the . command.  For example di or ci
 
 can be repeated with . but dim, or cim, cannot.  
 
 
 
 Best regards,
 
 Marcin Szamotulski

Good catch.  I can replicate that on my end.  Will fix.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2014-01-29 Fir de Conversatie Daniel paradigm Thau
Apologies for the delay.

Review for those who have forgotten and/or don't care to backread:

This patch adds a new text object, m, which will take one more character as 
input.  That character will be used as bounds to the left and right for the 
object.  For example, cim$ will change between dollar signs.  This supports 
multi-line objects, so one could do cim' which, unlike ci', will search 
across lines; this way users have both.

I've been using it quite happily for the last two months or so, but more eyes 
and testing would not be a bad idea.

Attached is the patch, in both unified and context format, including a test.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index d40d825..1cb2287 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -662,6 +662,14 @@ i`			*v_i`* *i`*
 			Special case: With a count of 2 the quotes are
 			included, but no extra white space as with a/a'/a`.
 
+am{char}		*v_am* *am*
+			a matched {char}.  Selects the text from the
+			previous {char} until the next {char}.  A count is
+			currently not used.
+
+im{char}		*v_im* *im*
+			Like am{char} but exclude the {char}.
+
 When used after an operator:
 For non-block objects:
 	For the a commands: The operator applies to the object and the white
diff --git a/runtime/doc/tags b/runtime/doc/tags
index dce548f..eb258d5 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4760,6 +4760,7 @@ aleph	options.txt	/*aleph*
 alt	intro.txt	/*alt*
 alt-input	debugger.txt	/*alt-input*
 alternate-file	editing.txt	/*alternate-file*
+am	motion.txt	/*am*
 amiga-window	starting.txt	/*amiga-window*
 and()	eval.txt	/*and()*
 anonymous-function	eval.txt	/*anonymous-function*
@@ -6532,6 +6533,7 @@ if_ruby.txt	if_ruby.txt	/*if_ruby.txt*
 if_sniff.txt	if_sniff.txt	/*if_sniff.txt*
 if_tcl.txt	if_tcl.txt	/*if_tcl.txt*
 ignore-errors	eval.txt	/*ignore-errors*
+im	motion.txt	/*im*
 improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
 improved-quickfix	version5.txt	/*improved-quickfix*
 improved-sessions	version5.txt	/*improved-sessions*
@@ -8457,6 +8459,7 @@ v_a[	motion.txt	/*v_a[*
 v_a]	motion.txt	/*v_a]*
 v_a`	motion.txt	/*v_a`*
 v_ab	motion.txt	/*v_ab*
+v_am	motion.txt	/*v_am*
 v_ap	motion.txt	/*v_ap*
 v_aquote	motion.txt	/*v_aquote*
 v_as	motion.txt	/*v_as*
@@ -8504,6 +8507,7 @@ v_i[	motion.txt	/*v_i[*
 v_i]	motion.txt	/*v_i]*
 v_i`	motion.txt	/*v_i`*
 v_ib	motion.txt	/*v_ib*
+v_im	motion.txt	/*v_im*
 v_ip	motion.txt	/*v_ip*
 v_iquote	motion.txt	/*v_iquote*
 v_is	motion.txt	/*v_is*
diff --git a/src/normal.c b/src/normal.c
index 66a5b7a..09d9d0e 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -9310,6 +9310,11 @@ nv_object(cap)
 		flag = current_quote(cap-oap, cap-count1, include,
   cap-nchar);
 		break;
+	case 'm': /* am{char} = a matched pair of characters */
+		cap-extra_char = plain_vgetc();
+		flag = current_match(cap-oap, cap-count1, include,
+			  cap-extra_char);
+		break;
 #if 0	/* TODO */
 	case 'S': /* aS = a section */
 	case 'f': /* af = a filename */
diff --git a/src/proto/search.pro b/src/proto/search.pro
index f94fb69..0cf3be3 100644
--- a/src/proto/search.pro
+++ b/src/proto/search.pro
@@ -32,6 +32,7 @@ int current_block __ARGS((oparg_T *oap, long count, int include, int what, int o
 int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
 int current_par __ARGS((oparg_T *oap, long count, int include, int type));
 int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar));
+int current_match __ARGS((oparg_T *oap, long count, int include, int matchchar));
 int current_search __ARGS((long count, int forward));
 int linewhite __ARGS((linenr_T lnum));
 void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum));
diff --git a/src/search.c b/src/search.c
index 0341a5e..58db91e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4489,6 +4489,147 @@ current_quote(oap, count, include, quotechar)
 return OK;
 }
 
+/*
+ * Find matching {char} on each side of cursor/visually selected range.
+ * Returns TRUE if found, else FALSE.
+ */
+int
+current_match(oap, count, include, matchchar)
+oparg_T	*oap;		/* used to set operator range, mode, etc */
+long	count;		/* not currently used */
+int		include;	/* TRUE == include bounding char */
+int		matchchar;	/* char to match on both sides */
+{
+pos_T	old_pos;	/* initial cursor position 

Re: Patch to utilize undefined text-objects

2014-01-29 Fir de Conversatie Daniel paradigm Thau
On Wednesday, January 29, 2014 7:45:23 PM UTC-5, Daniel paradigm Thau wrote:
 Apologies for the delay.
 
 Review for those who have forgotten and/or don't care to backread:
 
 This patch adds a new text object, m, which will take one more character as 
 input.  That character will be used as bounds to the left and right for the 
 object.  For example, cim$ will change between dollar signs.  This supports 
 multi-line objects, so one could do cim' which, unlike ci', will search 
 across lines; this way users have both.
 
 I've been using it quite happily for the last two months or so, but more eyes 
 and testing would not be a bad idea.
 
 Attached is the patch, in both unified and context format, including a test.

Added wrong file/filename for the test results.  Fixed in attachment.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index d40d825..1cb2287 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -662,6 +662,14 @@ i`			*v_i`* *i`*
 			Special case: With a count of 2 the quotes are
 			included, but no extra white space as with a/a'/a`.
 
+am{char}		*v_am* *am*
+			a matched {char}.  Selects the text from the
+			previous {char} until the next {char}.  A count is
+			currently not used.
+
+im{char}		*v_im* *im*
+			Like am{char} but exclude the {char}.
+
 When used after an operator:
 For non-block objects:
 	For the a commands: The operator applies to the object and the white
diff --git a/runtime/doc/tags b/runtime/doc/tags
index dce548f..eb258d5 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4760,6 +4760,7 @@ aleph	options.txt	/*aleph*
 alt	intro.txt	/*alt*
 alt-input	debugger.txt	/*alt-input*
 alternate-file	editing.txt	/*alternate-file*
+am	motion.txt	/*am*
 amiga-window	starting.txt	/*amiga-window*
 and()	eval.txt	/*and()*
 anonymous-function	eval.txt	/*anonymous-function*
@@ -6532,6 +6533,7 @@ if_ruby.txt	if_ruby.txt	/*if_ruby.txt*
 if_sniff.txt	if_sniff.txt	/*if_sniff.txt*
 if_tcl.txt	if_tcl.txt	/*if_tcl.txt*
 ignore-errors	eval.txt	/*ignore-errors*
+im	motion.txt	/*im*
 improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
 improved-quickfix	version5.txt	/*improved-quickfix*
 improved-sessions	version5.txt	/*improved-sessions*
@@ -8457,6 +8459,7 @@ v_a[	motion.txt	/*v_a[*
 v_a]	motion.txt	/*v_a]*
 v_a`	motion.txt	/*v_a`*
 v_ab	motion.txt	/*v_ab*
+v_am	motion.txt	/*v_am*
 v_ap	motion.txt	/*v_ap*
 v_aquote	motion.txt	/*v_aquote*
 v_as	motion.txt	/*v_as*
@@ -8504,6 +8507,7 @@ v_i[	motion.txt	/*v_i[*
 v_i]	motion.txt	/*v_i]*
 v_i`	motion.txt	/*v_i`*
 v_ib	motion.txt	/*v_ib*
+v_im	motion.txt	/*v_im*
 v_ip	motion.txt	/*v_ip*
 v_iquote	motion.txt	/*v_iquote*
 v_is	motion.txt	/*v_is*
diff --git a/src/normal.c b/src/normal.c
index 66a5b7a..09d9d0e 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -9310,6 +9310,11 @@ nv_object(cap)
 		flag = current_quote(cap-oap, cap-count1, include,
   cap-nchar);
 		break;
+	case 'm': /* am{char} = a matched pair of characters */
+		cap-extra_char = plain_vgetc();
+		flag = current_match(cap-oap, cap-count1, include,
+			  cap-extra_char);
+		break;
 #if 0	/* TODO */
 	case 'S': /* aS = a section */
 	case 'f': /* af = a filename */
diff --git a/src/proto/search.pro b/src/proto/search.pro
index f94fb69..0cf3be3 100644
--- a/src/proto/search.pro
+++ b/src/proto/search.pro
@@ -32,6 +32,7 @@ int current_block __ARGS((oparg_T *oap, long count, int include, int what, int o
 int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
 int current_par __ARGS((oparg_T *oap, long count, int include, int type));
 int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar));
+int current_match __ARGS((oparg_T *oap, long count, int include, int matchchar));
 int current_search __ARGS((long count, int forward));
 int linewhite __ARGS((linenr_T lnum));
 void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum));
diff --git a/src/search.c b/src/search.c
index 0341a5e..58db91e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4489,6 +4489,147 @@ current_quote(oap, count, include, quotechar)
 return OK;
 }
 
+/*
+ * Find matching {char} on each side of cursor/visually selected range.
+ * Returns TRUE if found, else FALSE.
+ */
+int
+current_match(oap, count, include, matchchar)
+oparg_T	*oap;		/* used to set operator range, mode, etc */
+long	count;		/* not currently used 

Re: Patch to utilize undefined text-objects

2013-11-20 Fir de Conversatie Daniel paradigm Thau
On Tuesday, November 19, 2013 4:42:32 PM UTC-5, Bram Moolenaar wrote:
 Daniel Thau wrote:
 
 
 
  Attached is a patch (in both the unified and context formats) to make
 
  the discussed am/im text-object.
 
 
 
  *** a/runtime/doc/motion.txt
 
  --- b/runtime/doc/motion.txt
 
  ***
 
  *** 662,667  i` *v_i`* 
  *i`*
 
  --- 662,687 
 
  Special case: With a count of 2 the quotes are
 
  included, but no extra white space as with a/a'/a`.
 

 
  + am{char}  *v_am* *am*
 
  +   a matched {char}.  Selects the text from the
 
  +   previous {char} until the next {char}.
 
  +   Only works within one line.
 
  +   When the cursor starts on a {char}, Vim will figure
 
  +   out which {char} pairs are desired by searching from
 
  +   the start of the line.
 
  +   Any trailing white space is included, unless there is
 
  +   none, then leading white space is included.
 
  +   When used in Visual mode it is made characterwise.
 
  +   Repeating this object in Visual mode another
 
  +   {char}..{char} range is included.  A count is
 
  +   currently not used.
 
  + 
 
  + im{char}  *v_im* *im*
 
  +   Like am{char} but exclude the {char} and
 
  +   repeating won't extend the Visual selection.
 
  +   Special case: With a count of 2 the quotes are
 
  +   included, but no extra white space as with am{char}.
 
  + 
 
 
 
 I'm sure users will ask about a multi-line implementation.  This
 
 requires defining how Vim decides whether a matching {char} is the start
 
 or the end, but otherwise it should work.
 
 
 
 -- 
 
 BEDEVERE: And that, my lord, is how we know the Earth to be banana-shaped.
 
  Monty Python and the Holy Grail PYTHON (MONTY) PICTURES LTD
 
 
 
  /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
 
 ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
 
 \\\  an exciting new programming language -- http://www.Zimbu.org///
 
  \\\help me help AIDS victims -- http://ICCF-Holland.org///

Attached is a patch to have the im/am object support multi-line.  I figured 
you'd probably not want the pre-existing i/a object to do multi-line, so 
instead of continuing to piggyback off of it I made a new function for the 
im/am object.  It does not yet support doing a iv to select a larger range - I 
can get to that later if this strategy seems acceptable.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
*** a/runtime/doc/motion.txt
--- b/runtime/doc/motion.txt
***
*** 662,667  i`			*v_i`* *i`*
--- 662,675 
  			Special case: With a count of 2 the quotes are
  			included, but no extra white space as with a/a'/a`.
  
+ am{char}		*v_am* *am*
+ 			a matched {char}.  Selects the text from the
+ 			previous {char} until the next {char}.  A count is
+ 			currently not used.
+ 
+ im{char}		*v_im* *im*
+ 			Like am{char} but exclude the {char}.
+ 
  When used after an operator:
  For non-block objects:
  	For the a commands: The operator applies to the object and the white
*** a/src/normal.c
--- b/src/normal.c
***
*** 9309,9314  nv_object(cap)
--- 9309,9319 
  		flag = current_quote(cap-oap, cap-count1, include,
    cap-nchar);
  		break;
+ 	case 'm': /* am{char} = a matched pair of characters */
+ 		cap-extra_char = plain_vgetc();
+ 		flag = current_match(cap-oap, cap-count1, include,
+ 			  cap-extra_char);
+ 		break;
  #if 0	/* TODO */
  	case 'S': /* aS = a section */
  	case 'f': /* af = a filename */
*** a/src/proto/search.pro
--- b/src/proto/search.pro
***
*** 32,37  int current_block __ARGS((oparg_T *oap, long count, int include, int what, int o
--- 32,38 
  int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
  int current_par __ARGS((oparg_T *oap, long count, int include, int type));
  int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar));
+ int current_match __ARGS((oparg_T *oap, long count, int include, int matchchar));
  int current_search __ARGS((long count, int forward));
  int linewhite __ARGS((linenr_T lnum));
  void 

Re: Patch to utilize undefined text-objects

2013-11-19 Fir de Conversatie Daniel paradigm Thau
Attached is a patch (in both the unified and context formats) to make the 
discussed am/im text-object.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
*** a/runtime/doc/motion.txt
--- b/runtime/doc/motion.txt
***
*** 662,667  i`			*v_i`* *i`*
--- 662,687 
  			Special case: With a count of 2 the quotes are
  			included, but no extra white space as with a/a'/a`.
  
+ am{char}		*v_am* *am*
+ 			a matched {char}.  Selects the text from the
+ 			previous {char} until the next {char}.
+ 			Only works within one line.
+ 			When the cursor starts on a {char}, Vim will figure
+ 			out which {char} pairs are desired by searching from
+ 			the start of the line.
+ 			Any trailing white space is included, unless there is
+ 			none, then leading white space is included.
+ 			When used in Visual mode it is made characterwise.
+ 			Repeating this object in Visual mode another
+ 			{char}..{char} range is included.  A count is
+ 			currently not used.
+ 
+ im{char}		*v_im* *im*
+ 			Like am{char} but exclude the {char} and
+ 			repeating won't extend the Visual selection.
+ 			Special case: With a count of 2 the quotes are
+ 			included, but no extra white space as with am{char}.
+ 
  When used after an operator:
  For non-block objects:
  	For the a commands: The operator applies to the object and the white
*** a/runtime/doc/tags
--- b/runtime/doc/tags
***
*** 4751,4756  aleph	options.txt	/*aleph*
--- 4751,4757 
  alt	intro.txt	/*alt*
  alt-input	debugger.txt	/*alt-input*
  alternate-file	editing.txt	/*alternate-file*
+ am	motion.txt	/*am*
  amiga-window	starting.txt	/*amiga-window*
  and()	eval.txt	/*and()*
  anonymous-function	eval.txt	/*anonymous-function*
***
*** 6520,6525  if_ruby.txt	if_ruby.txt	/*if_ruby.txt*
--- 6521,6527 
  if_sniff.txt	if_sniff.txt	/*if_sniff.txt*
  if_tcl.txt	if_tcl.txt	/*if_tcl.txt*
  ignore-errors	eval.txt	/*ignore-errors*
+ im	motion.txt	/*im*
  improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
  improved-quickfix	version5.txt	/*improved-quickfix*
  improved-sessions	version5.txt	/*improved-sessions*
***
*** 8441,8446  v_a[	motion.txt	/*v_a[*
--- 8443,8449 
  v_a]	motion.txt	/*v_a]*
  v_a`	motion.txt	/*v_a`*
  v_ab	motion.txt	/*v_ab*
+ v_am	motion.txt	/*v_am*
  v_ap	motion.txt	/*v_ap*
  v_aquote	motion.txt	/*v_aquote*
  v_as	motion.txt	/*v_as*
***
*** 8488,8493  v_i[	motion.txt	/*v_i[*
--- 8491,8497 
  v_i]	motion.txt	/*v_i]*
  v_i`	motion.txt	/*v_i`*
  v_ib	motion.txt	/*v_ib*
+ v_im	motion.txt	/*v_im*
  v_ip	motion.txt	/*v_ip*
  v_iquote	motion.txt	/*v_iquote*
  v_is	motion.txt	/*v_is*
*** a/src/normal.c
--- b/src/normal.c
***
*** 9309,9314  nv_object(cap)
--- 9309,9319 
  		flag = current_quote(cap-oap, cap-count1, include,
    cap-nchar);
  		break;
+ 	case 'm': /* am = a matching pair of characters */
+ 		cap-extra_char = plain_vgetc();
+ 		flag = current_quote(cap-oap, cap-count1, include,
+ 			  cap-extra_char);
+ 		break;
  #if 0	/* TODO */
  	case 'S': /* aS = a section */
  	case 'f': /* af = a filename */
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index d40d825..8af2b6e 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -662,6 +662,26 @@ i`			*v_i`* *i`*
 			Special case: With a count of 2 the quotes are
 			included, but no extra white space as with a/a'/a`.
 
+am{char}		*v_am* *am*
+			a matched {char}.  Selects the text from the
+			previous {char} until the next {char}.
+			Only works within one line.
+			When the cursor starts on a {char}, Vim will figure
+			out which {char} pairs are desired by searching from
+			the start of the line.
+			Any trailing white space is included, unless there is
+			none, then leading white space is included.
+			When used in Visual mode it is made characterwise.
+			Repeating this object in Visual mode another
+			{char}..{char} range is included.  A count is
+			currently not used.
+
+im{char}		*v_im* *im*
+			Like am{char} but exclude the {char} and
+			repeating won't extend the Visual selection.
+			Special case: With a count of 2 the quotes are
+			included, but no extra white space as with am{char}.
+
 When used after an operator:
 For non-block objects:
 	For the a commands: The operator applies to the object and the white
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 73475a9..405996e 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4751,6 +4751,7 @@ aleph	options.txt	/*aleph*
 alt	intro.txt	

Re: Patch to utilize undefined text-objects

2013-11-19 Fir de Conversatie Bram Moolenaar

Daniel Thau wrote:

 Attached is a patch (in both the unified and context formats) to make
 the discussed am/im text-object.

 *** a/runtime/doc/motion.txt
 --- b/runtime/doc/motion.txt
 ***
 *** 662,667  i`   *v_i`* 
 *i`*
 --- 662,687 
   Special case: With a count of 2 the quotes are
   included, but no extra white space as with a/a'/a`.
   
 + am{char}*v_am* *am*
 + a matched {char}.  Selects the text from the
 + previous {char} until the next {char}.
 + Only works within one line.
 + When the cursor starts on a {char}, Vim will figure
 + out which {char} pairs are desired by searching from
 + the start of the line.
 + Any trailing white space is included, unless there is
 + none, then leading white space is included.
 + When used in Visual mode it is made characterwise.
 + Repeating this object in Visual mode another
 + {char}..{char} range is included.  A count is
 + currently not used.
 + 
 + im{char}*v_im* *im*
 + Like am{char} but exclude the {char} and
 + repeating won't extend the Visual selection.
 + Special case: With a count of 2 the quotes are
 + included, but no extra white space as with am{char}.
 + 

I'm sure users will ask about a multi-line implementation.  This
requires defining how Vim decides whether a matching {char} is the start
or the end, but otherwise it should work.

-- 
BEDEVERE: And that, my lord, is how we know the Earth to be banana-shaped.
 Monty Python and the Holy Grail PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-19 Fir de Conversatie Ernie Rael
In the documentation for im{char} you use the word quote. That 
doesn't bother me, but I wanted to be sure that is what you meant 
(that's the only use of that word in the patch).


-ernie

On 11/19/2013 8:01 AM, Daniel paradigm Thau wrote:

Attached is a patch (in both the unified and context formats) to make the discussed 
am/im text-object.



--
--
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups vim_dev group.

To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-19 Fir de Conversatie Daniel paradigm Thau
On Tuesday, November 19, 2013 4:49:07 PM UTC-5, Ernie Rael wrote:
 In the documentation for im{char} you use the word quote. That 
 
 doesn't bother me, but I wanted to be sure that is what you meant 
 
 (that's the only use of that word in the patch).
 
 
 
 -ernie
 
 
 
 On 11/19/2013 8:01 AM, Daniel paradigm Thau wrote:
 
  Attached is a patch (in both the unified and context formats) to make the 
  discussed am/im text-object.
 
 

That was not intentional.  Good catch.  Adjusted patches attached.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
*** a/runtime/doc/motion.txt
--- b/runtime/doc/motion.txt
***
*** 662,667  i`			*v_i`* *i`*
--- 662,687 
  			Special case: With a count of 2 the quotes are
  			included, but no extra white space as with a/a'/a`.
  
+ am{char}		*v_am* *am*
+ 			a matched {char}.  Selects the text from the
+ 			previous {char} until the next {char}.
+ 			Only works within one line.
+ 			When the cursor starts on a {char}, Vim will figure
+ 			out which {char} pairs are desired by searching from
+ 			the start of the line.
+ 			Any trailing white space is included, unless there is
+ 			none, then leading white space is included.
+ 			When used in Visual mode it is made characterwise.
+ 			Repeating this object in Visual mode another
+ 			{char}..{char} range is included.  A count is
+ 			currently not used.
+ 
+ im{char}		*v_im* *im*
+ 			Like am{char} but exclude the {char} and
+ 			repeating won't extend the Visual selection.
+ 			Special case: With a count of 2 the {char}s are
+ 			included, but no extra white space as with am{char}.
+ 
  When used after an operator:
  For non-block objects:
  	For the a commands: The operator applies to the object and the white
*** a/runtime/doc/tags
--- b/runtime/doc/tags
***
*** 4751,4756  aleph	options.txt	/*aleph*
--- 4751,4757 
  alt	intro.txt	/*alt*
  alt-input	debugger.txt	/*alt-input*
  alternate-file	editing.txt	/*alternate-file*
+ am	motion.txt	/*am*
  amiga-window	starting.txt	/*amiga-window*
  and()	eval.txt	/*and()*
  anonymous-function	eval.txt	/*anonymous-function*
***
*** 6520,6525  if_ruby.txt	if_ruby.txt	/*if_ruby.txt*
--- 6521,6527 
  if_sniff.txt	if_sniff.txt	/*if_sniff.txt*
  if_tcl.txt	if_tcl.txt	/*if_tcl.txt*
  ignore-errors	eval.txt	/*ignore-errors*
+ im	motion.txt	/*im*
  improved-autocmds-5.4	version5.txt	/*improved-autocmds-5.4*
  improved-quickfix	version5.txt	/*improved-quickfix*
  improved-sessions	version5.txt	/*improved-sessions*
***
*** 8441,8446  v_a[	motion.txt	/*v_a[*
--- 8443,8449 
  v_a]	motion.txt	/*v_a]*
  v_a`	motion.txt	/*v_a`*
  v_ab	motion.txt	/*v_ab*
+ v_am	motion.txt	/*v_am*
  v_ap	motion.txt	/*v_ap*
  v_aquote	motion.txt	/*v_aquote*
  v_as	motion.txt	/*v_as*
***
*** 8488,8493  v_i[	motion.txt	/*v_i[*
--- 8491,8497 
  v_i]	motion.txt	/*v_i]*
  v_i`	motion.txt	/*v_i`*
  v_ib	motion.txt	/*v_ib*
+ v_im	motion.txt	/*v_im*
  v_ip	motion.txt	/*v_ip*
  v_iquote	motion.txt	/*v_iquote*
  v_is	motion.txt	/*v_is*
*** a/src/normal.c
--- b/src/normal.c
***
*** 9309,9314  nv_object(cap)
--- 9309,9319 
  		flag = current_quote(cap-oap, cap-count1, include,
    cap-nchar);
  		break;
+ 	case 'm': /* am = a matching pair of characters */
+ 		cap-extra_char = plain_vgetc();
+ 		flag = current_quote(cap-oap, cap-count1, include,
+ 			  cap-extra_char);
+ 		break;
  #if 0	/* TODO */
  	case 'S': /* aS = a section */
  	case 'f': /* af = a filename */
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index d40d825..8af2b6e 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -662,6 +662,26 @@ i`			*v_i`* *i`*
 			Special case: With a count of 2 the quotes are
 			included, but no extra white space as with a/a'/a`.
 
+am{char}		*v_am* *am*
+			a matched {char}.  Selects the text from the
+			previous {char} until the next {char}.
+			Only works within one line.
+			When the cursor starts on a {char}, Vim will figure
+			out which {char} pairs are desired by searching from
+			the start of the line.
+			Any trailing white space is included, unless there is
+			none, then leading white space is included.
+			When used in Visual mode it is made characterwise.
+			Repeating this object in Visual mode another
+			{char}..{char} range is included.  A count is
+			currently not used.
+
+im{char}		*v_im* *im*
+			Like am{char} but exclude the {char} and
+			repeating won't extend the Visual selection.
+			Special case: With 

Re: Patch to utilize undefined text-objects

2013-11-19 Fir de Conversatie Daniel paradigm Thau
On Tuesday, November 19, 2013 4:42:32 PM UTC-5, Bram Moolenaar wrote:
 Daniel Thau wrote:
 
 
 
  Attached is a patch (in both the unified and context formats) to make
 
  the discussed am/im text-object.
 
 
 
  *** a/runtime/doc/motion.txt
 
  --- b/runtime/doc/motion.txt
 
  ***
 
  *** 662,667  i` *v_i`* 
  *i`*
 
  --- 662,687 
 
  Special case: With a count of 2 the quotes are
 
  included, but no extra white space as with a/a'/a`.
 

 
  + am{char}  *v_am* *am*
 
  +   a matched {char}.  Selects the text from the
 
  +   previous {char} until the next {char}.
 
  +   Only works within one line.
 
  +   When the cursor starts on a {char}, Vim will figure
 
  +   out which {char} pairs are desired by searching from
 
  +   the start of the line.
 
  +   Any trailing white space is included, unless there is
 
  +   none, then leading white space is included.
 
  +   When used in Visual mode it is made characterwise.
 
  +   Repeating this object in Visual mode another
 
  +   {char}..{char} range is included.  A count is
 
  +   currently not used.
 
  + 
 
  + im{char}  *v_im* *im*
 
  +   Like am{char} but exclude the {char} and
 
  +   repeating won't extend the Visual selection.
 
  +   Special case: With a count of 2 the quotes are
 
  +   included, but no extra white space as with am{char}.
 
  + 
 
 
 
 I'm sure users will ask about a multi-line implementation.  This
 
 requires defining how Vim decides whether a matching {char} is the start
 
 or the end, but otherwise it should work.

I can experiment with adding multi-line to the new im/am object.  Perhaps make 
another function for it instead of piggypacking off the quote funciton.  I'll 
play with having the matching {char} at the beginning and at the end and see if 
either feels more natural.  However, that raises additional questions; there's 
a number of ways of going about it.

- Should the quote objects also do multiline (after all their currently valid 
uses), or should they continue to do what they are doing and only have the new 
m-quote objects do multi-line?

- Should the m objects (including m-quote) seek ahead in the same line the way 
normal quotes do before checking for multi-line, or should they immediately 
check multiline and not do the seek-ahead-on-the-same-line thing that the 
normal quote objects do?

I'm inclined to have normal quote objects do what they've always done, and have 
the new m objects always go multi-line and not search same-line.

Consider a buffer like so:


foo bar 
baz  qux 

With the cursor on the z in baz.  The way I am invisioning this, vi will 
select the quz and vim will select the baz.  The other im/am objects will 
similarly just do multi-line and not worry about seeking ahead on the same line.

If there's any disagreement with the way I'm leaning on this I'm more than 
happy to go about it any other way.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-17 Fir de Conversatie Bram Moolenaar

Ben Fritz wrote:

 On Thursday, November 14, 2013 8:52:22 AM UTC-6, Ben Fritz wrote:
  On Wednesday, November 13, 2013 10:29:18 PM UTC-6, Bram Moolenaar wrote:
   Daniel Thau wrote:
Attached is a patch to add an 'autotextobject' setting which will treat
undefined text-objects like quote text objects, using the provided
character as bounds.  For example, with this setting if a user enters
di, with the cursor between two commas, the text between the commas
will be removed. 
   
   I don't think this can be done properly without adding another
   character, thus making the text selection a three-character operation.
   
  
  Why not? What is the reasoning behind a third character?
 
 Oh, I think I get it now.
 
 I actually think this could work really well.
 
 What about another DEFINED text object, that would work on pairs of
 arbitrary characters? Only that one text object would work this way, the
 rest would be as they are now.
 
 Then a user could type something like vam, for a matched , pair or
 dim^ for delete inside matched ^ pair.
 
 If the new text object im{char} and am{char} were used instead of an
 undefined and future incompatible i{char} and a{char} then you don't
 need to worry about future changes breaking scripts or anything like
 that. Additionally you can use this feature for alternate behaviors for
 currently defined text object characters, for example if you want to
 change inside B characters for some reason, or inside  operators in
 C/C++, etc.

Yes, that's exactly what I was thinking.

We can document that this command may break if a future version of Vim
adds another text object, but users will be upset if we break their
commands no matter what.  Once users are used to something we should
make sure it keeps working.

I also like that you can match any character, including the ones already
used for text objects, such as '' and 't'.

It's another character to type, that's true.

-- 
Hacker: Someone skilled in computer programming (good guy).
Cracker: A hacker that uses his skills to crack software (bad guy).

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-17 Fir de Conversatie Daniel paradigm Thau
On Sunday, November 17, 2013 3:02:17 PM UTC-5, Bram Moolenaar wrote:
 Ben Fritz wrote:
 
 
 
  On Thursday, November 14, 2013 8:52:22 AM UTC-6, Ben Fritz wrote:
 
   On Wednesday, November 13, 2013 10:29:18 PM UTC-6, Bram Moolenaar wrote:
 
Daniel Thau wrote:
 
 Attached is a patch to add an 'autotextobject' setting which will 
 treat
 
 undefined text-objects like quote text objects, using the provided
 
 character as bounds.  For example, with this setting if a user enters
 
 di, with the cursor between two commas, the text between the commas
 
 will be removed. 
 

 
I don't think this can be done properly without adding another
 
character, thus making the text selection a three-character operation.
 

 
   
 
   Why not? What is the reasoning behind a third character?
 
  
 
  Oh, I think I get it now.
 
  
 
  I actually think this could work really well.
 
  
 
  What about another DEFINED text object, that would work on pairs of
 
  arbitrary characters? Only that one text object would work this way, the
 
  rest would be as they are now.
 
  
 
  Then a user could type something like vam, for a matched , pair or
 
  dim^ for delete inside matched ^ pair.
 
  
 
  If the new text object im{char} and am{char} were used instead of an
 
  undefined and future incompatible i{char} and a{char} then you don't
 
  need to worry about future changes breaking scripts or anything like
 
  that. Additionally you can use this feature for alternate behaviors for
 
  currently defined text object characters, for example if you want to
 
  change inside B characters for some reason, or inside  operators in
 
  C/C++, etc.
 
 
 
 Yes, that's exactly what I was thinking.
 
 
 
 We can document that this command may break if a future version of Vim
 
 adds another text object, but users will be upset if we break their
 
 commands no matter what.  Once users are used to something we should
 
 make sure it keeps working.
 
 
 
 I also like that you can match any character, including the ones already
 
 used for text objects, such as '' and 't'.
 
 
 
 It's another character to type, that's true.
 
 
 
 -- 
 
 Hacker: Someone skilled in computer programming (good guy).
 
 Cracker: A hacker that uses his skills to crack software (bad guy).
 
 
 
  /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
 
 ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
 
 \\\  an exciting new programming language -- http://www.Zimbu.org///
 
  \\\help me help AIDS victims -- http://ICCF-Holland.org///

I can live happily with that.  I'll modify the patch and submit a new one 
accordingly.  Two questions, then:

(1) Any objections to dropping the setting for this?  With this new version in 
mind the setting no longer seems beneficial.
(2) Any preferences on what character should be used to utilize it?  I'm 
tempted to go with both i and a if there are no objections, so that one can 
do (for example) dii$ or caa|.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-17 Fir de Conversatie glts
On Thu, Nov 14, 2013 at 2:14 AM, Daniel Thau dant...@bedrocklinux.org wrote:
 Attached is a patch to add an 'autotextobject' setting which will treat
 undefined text-objects like quote text objects, using the provided
 character as bounds.  For example, with this setting if a user enters
 di, with the cursor between two commas, the text between the commas
 will be removed.  This is very useful for editing lists.  Similarly, if
 one is composing TeX being able to quickly operate on the area between
 dollar signs is useful.  If one is editing snake_case_variables, being
 able to do a quick ci_ is also nice.  The key here is that it happens
 on-the-fly with all as-of-yet-undefined objects without requiring the
 user consider every possible character he/she would be interested in
 ahead of time.

 Outside of documentation and adding the setting itself, the it is only a
 few additional lines of code.

 I've wanted this feature for a while; if there is anything else I should
 do to help get it upstreamed do let me know and I'll see what I can do.

Just to add a dissenting opinion. A feature that is easy to implement
isn't necessarily a good addition to core Vim. For me, the proposed
functionality is only marginally useful and just cries for a plugin
solution. It would be really easy to do, too.

Personally, I love to use a solid text object framework like

http://www.vim.org/scripts/script.php?script_id=2100

and choose for myself which special-case text object I need on top of
that. I like that Vim only has a few core text objects and lets me fill
in the rest.

By the way, ii is often used for inner indent, which selects lines
with the same or greater amount of indentation as the current line:

http://www.vim.org/scripts/script.php?script_id=2484
http://www.vim.org/scripts/script.php?script_id=3037

Best,


-- 
David

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-17 Fir de Conversatie Daniel paradigm Thau
On Sunday, November 17, 2013 3:55:18 PM UTC-5, glts wrote:
 On Thu, Nov 14, 2013 at 2:14 AM, Daniel Thau dant...@bedrocklinux.org wrote:
 
  Attached is a patch to add an 'autotextobject' setting which will treat
 
  undefined text-objects like quote text objects, using the provided
 
  character as bounds.  For example, with this setting if a user enters
 
  di, with the cursor between two commas, the text between the commas
 
  will be removed.  This is very useful for editing lists.  Similarly, if
 
  one is composing TeX being able to quickly operate on the area between
 
  dollar signs is useful.  If one is editing snake_case_variables, being
 
  able to do a quick ci_ is also nice.  The key here is that it happens
 
  on-the-fly with all as-of-yet-undefined objects without requiring the
 
  user consider every possible character he/she would be interested in
 
  ahead of time.
 
 
 
  Outside of documentation and adding the setting itself, the it is only a
 
  few additional lines of code.
 
 
 
  I've wanted this feature for a while; if there is anything else I should
 
  do to help get it upstreamed do let me know and I'll see what I can do.
 
 
 
 Just to add a dissenting opinion. A feature that is easy to implement
 
 isn't necessarily a good addition to core Vim. For me, the proposed
 
 functionality is only marginally useful and just cries for a plugin
 
 solution. It would be really easy to do, too.
 

If you mean my original proposal, while it could certainly be done in script it 
would be *much* cleaner to do it in vim's source.

If you mean Bram's proposed alteration of my proposal, not only would be easy 
to do, it's been done; someone else in this thread already pointed this one 
out: 
https://github.com/thinca/vim-textobj-between/blob/master/doc/textobj-between.txt

What I had hoped for was a bit different from that and I don't think could be 
done nnearly as cleanly in script as it could be in vim, but Bram didn't seem 
as keen on it.

 
 Personally, I love to use a solid text object framework like
 
 
 
 http://www.vim.org/scripts/script.php?script_id=2100
 

 
 and choose for myself which special-case text object I need on top of
 
 that. I like that Vim only has a few core text objects and lets me fill
 
 in the rest.

I don't really see how this in any way conflicts with that option.

 
 By the way, ii is often used for inner indent, which selects lines
 
 with the same or greater amount of indentation as the current line:
 
 
 
 http://www.vim.org/scripts/script.php?script_id=2484
 
 http://www.vim.org/scripts/script.php?script_id=3037
 

Good to know, i is out then.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Daniel paradigm Thau
On Wednesday, November 13, 2013 11:10:39 PM UTC-5, Kent Sibilev wrote:
 On Wednesday, November 13, 2013 8:14:20 PM UTC-5, Daniel paradigm Thau 
 wrote:
 
  Attached is a patch to add an 'autotextobject' setting which will treat
 
  undefined text-objects like quote text objects, using the provided
 
  character as bounds.  For example, with this setting if a user enters
 
  
 
  di, with the cursor between two commas, the text between the commas
 
  will be removed.  This is very useful for editing lists.  Similarly, if
 
 
 
 Maybe i'm missing something, but you don't need to patch Vim in order to get 
 this functionality. What you need is kana's textobj pluing:
 
 
 
 https://github.com/kana/vim-textobj-user
 
 
 
 along with textobj-between
 
 
 
 https://github.com/thinca/vim-textobj-between
 
 
 
 Also you can check kana's other projects where he provides many other useful 
 text objects like:
 
 
 
 https://github.com/kana/vim-textobj-line
 
 https://github.com/kana/vim-textobj-indent
 
 etc.

Yes, there are plenty of ways to make custom text-objects without editing Vim.  
However, everything you've listed require the end-user list the desired objects 
ahead of time.  You could loop over the character range in a plugin or vimrc 
and make them all, or make an operator-mode mapping to a function that calls 
getchar() then tries to either make it on-the-fly or fall back to existing 
things, but all of these options get ugly fast.  Adding three lines to normal.c 
ends up being much quicker and cleaner.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Daniel paradigm Thau
On Wednesday, November 13, 2013 11:29:18 PM UTC-5, Bram Moolenaar wrote:
 Daniel Thau wrote:
 
 
 
  Attached is a patch to add an 'autotextobject' setting which will treat
 
  undefined text-objects like quote text objects, using the provided
 
  character as bounds.  For example, with this setting if a user enters
 
  di, with the cursor between two commas, the text between the commas
 
  will be removed.  This is very useful for editing lists.  Similarly, if
 
  one is composing TeX being able to quickly operate on the area between
 
  dollar signs is useful.  If one is editing snake_case_variables, being
 
  able to do a quick ci_ is also nice.  The key here is that it happens
 
  on-the-fly with all as-of-yet-undefined objects without requiring the
 
  user consider every possible character he/she would be interested in
 
  ahead of time.
 
  
 
  Outside of documentation and adding the setting itself, the it is only a
 
  few additional lines of code.
 
  
 
  I've wanted this feature for a while; if there is anything else I should
 
  do to help get it upstreamed do let me know and I'll see what I can do.
 
 
 
 The problem is that this only works for characters that are not taken
 
 yet.  Thus if we add another text-object type the behavior changes.
 
 It's like reserving all remaining characters to use for this feature.
 
 
 
 I don't think this can be done properly without adding another
 
 character, thus making the text selection a three-character operation.
 
 
 
 -- 
 
 Looking at Perl through Lisp glasses, Perl looks atrocious.
 
 
 
  /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
 
 ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
 
 \\\  an exciting new programming language -- http://www.Zimbu.org///
 
  \\\help me help AIDS victims -- http://ICCF-Holland.org///

My hope was that we could simply add a disclaimer saying that these are not 
reserved and any new text object added in the future would take precident over 
these.  My patch includes some wording along those lines in the documentation.  
If that is not acceptable, but making this a three-character option is, I'll be 
happy alter it accordingly.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Daniel paradigm Thau
On Thursday, November 14, 2013 6:31:12 AM UTC-5, Daniel paradigm Thau wrote:
 On Wednesday, November 13, 2013 11:29:18 PM UTC-5, Bram Moolenaar wrote:
  Daniel Thau wrote:
  
  
  
   Attached is a patch to add an 'autotextobject' setting which will treat
  
   undefined text-objects like quote text objects, using the provided
  
   character as bounds.  For example, with this setting if a user enters
  
   di, with the cursor between two commas, the text between the commas
  
   will be removed.  This is very useful for editing lists.  Similarly, if
  
   one is composing TeX being able to quickly operate on the area between
  
   dollar signs is useful.  If one is editing snake_case_variables, being
  
   able to do a quick ci_ is also nice.  The key here is that it happens
  
   on-the-fly with all as-of-yet-undefined objects without requiring the
  
   user consider every possible character he/she would be interested in
  
   ahead of time.
  
   
  
   Outside of documentation and adding the setting itself, the it is only a
  
   few additional lines of code.
  
   
  
   I've wanted this feature for a while; if there is anything else I should
  
   do to help get it upstreamed do let me know and I'll see what I can do.
  
  
  
  The problem is that this only works for characters that are not taken
  
  yet.  Thus if we add another text-object type the behavior changes.
  
  It's like reserving all remaining characters to use for this feature.
  
  
  
  I don't think this can be done properly without adding another
  
  character, thus making the text selection a three-character operation.
  
  
  
  -- 
  
  Looking at Perl through Lisp glasses, Perl looks atrocious.
  
  
  
   /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
  
  ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  
  \\\  an exciting new programming language -- http://www.Zimbu.org///
  
   \\\help me help AIDS victims -- http://ICCF-Holland.org///
 
 My hope was that we could simply add a disclaimer saying that these are not 
 reserved and any new text object added in the future would take precident 
 over these.  My patch includes some wording along those lines in the 
 documentation.  If that is not acceptable, but making this a three-character 
 option is, I'll be happy alter it accordingly.

As an alternative to a three-character option, it doesn't look like I or A 
do anything in operator-pending (but they do in visual mode).  Perhaps would 
could utilize those for catch-all text-objects (and limit it to only working in 
operator-pending)?

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Ben Fritz
On Wednesday, November 13, 2013 10:29:18 PM UTC-6, Bram Moolenaar wrote:
 Daniel Thau wrote:
  Attached is a patch to add an 'autotextobject' setting which will treat
  undefined text-objects like quote text objects, using the provided
  character as bounds.  For example, with this setting if a user enters
  di, with the cursor between two commas, the text between the commas
  will be removed. 
 
 The problem is that this only works for characters that are not taken
 yet.  Thus if we add another text-object type the behavior changes.
 It's like reserving all remaining characters to use for this feature.
 

I disagree that this is a problem. By default, the option introduced by this 
patch is off, meaning that unreserved text-object characters still do nothing 
unless the user opts into the behavior by explicitly setting an option.

The documentation for the option explicitly says that it only affects potential 
objects that are NOT already defined. So basically it is an option that says 
do something useful instead of failing if I type something undefined. It also 
explicitly says that future additions to defined text objects will override 
this option.

If someone is using this option then they should expect minor changes when new 
text objects get introduced.

 
 I don't think this can be done properly without adding another
 character, thus making the text selection a three-character operation.
 

Why not? What is the reasoning behind a third character?

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Ben Fritz
On Wednesday, November 13, 2013 10:10:39 PM UTC-6, Kent Sibilev wrote:
 On Wednesday, November 13, 2013 8:14:20 PM UTC-5, Daniel paradigm Thau 
 wrote:
  Attached is a patch to add an 'autotextobject' setting which will treat
  undefined text-objects like quote text objects, using the provided
  character as bounds.  For example, with this setting if a user enters
  
  di, with the cursor between two commas, the text between the commas
  will be removed.  This is very useful for editing lists.  Similarly, if
 
 Maybe i'm missing something, but you don't need to patch Vim in order to get
 this functionality. What you need is kana's textobj pluing:
 
 https://github.com/kana/vim-textobj-user
 
 along with textobj-between
 
 https://github.com/thinca/vim-textobj-between
 
 Also you can check kana's other projects where he provides many other useful
 text objects like:
 
 https://github.com/kana/vim-textobj-line
 https://github.com/kana/vim-textobj-indent
 etc.

While mappings are more customizable, and there is a plugin for this, C
code is faster and works in more situations. Mappings can be removed,
ignored for various commands, problems can occur while chaining them
together, complex mappings can break the undo sequence, etc.

I don't think the existence of a plugin is a good reason to avoid a
patch in this case. Text objects are one of the most powerful features
of Vim. I support making them more powerful and adding more of them. The
same arguments you make here can be used against adding ANY new text
object, even defined ones.

Relative line numbering could be done (poorly) with a plugin before the
'relativenumber' option was introduced. I'm very glad that made it into
the C code.

And Daniel's point about listing desired text-objects ahead of time is
important as well. With the exception of commas, most of the time when
I'd like a patch like this it's for something I didn't even think about
ahead of time and will probably not think of again until the next time I
need it. Stopping to make another mapping or plugin configuration, and
maybe restarting Vim, is NOT an option. I'll just do it by hand.

I certainly support this patch. I'll be applying it and running with it
a while at least to try it out. I'd love to see a better option, but this
is WAY better than nothing.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Ben Fritz
On Thursday, November 14, 2013 8:52:22 AM UTC-6, Ben Fritz wrote:
 On Wednesday, November 13, 2013 10:29:18 PM UTC-6, Bram Moolenaar wrote:
  Daniel Thau wrote:
   Attached is a patch to add an 'autotextobject' setting which will treat
   undefined text-objects like quote text objects, using the provided
   character as bounds.  For example, with this setting if a user enters
   di, with the cursor between two commas, the text between the commas
   will be removed. 
  
  I don't think this can be done properly without adding another
  character, thus making the text selection a three-character operation.
  
 
 Why not? What is the reasoning behind a third character?

Oh, I think I get it now.

I actually think this could work really well.

What about another DEFINED text object, that would work on pairs of
arbitrary characters? Only that one text object would work this way, the
rest would be as they are now.

Then a user could type something like vam, for a matched , pair or
dim^ for delete inside matched ^ pair.

If the new text object im{char} and am{char} were used instead of an
undefined and future incompatible i{char} and a{char} then you don't
need to worry about future changes breaking scripts or anything like
that. Additionally you can use this feature for alternate behaviors for
currently defined text object characters, for example if you want to
change inside B characters for some reason, or inside  operators in
C/C++, etc.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Ben Fritz
On Wednesday, November 13, 2013 9:16:34 PM UTC-6, Ben Fritz wrote:
 On Wednesday, November 13, 2013 9:06:46 PM UTC-6, Ben Fritz wrote:
  On Wednesday, November 13, 2013 8:45:43 PM UTC-6, Daniel paradigm Thau 
  wrote:
   On Wednesday, November 13, 2013 9:06:25 PM UTC-5, Ben Fritz wrote:
   Some googling around makes it seem as though Solaris's /usr/bin/patch may 
   not
   know unified diff format.  See if you have a /usr/bin/qpatch on your 
   system
   and try with that.
  
  Ugh, good to know. I'll look for that utility at work tomorrow, or failing
  everything else just apply the patch by hand. It's pretty small.
  
   I'll try and make a context format with diff -c later for you in the next 
   few
   days if need be.
  
  No need, I'll generate it myself if I must. Sorry for the trouble.
 
 Actually I just made it now. Attached for anybody else who needs it.
 
 Here's how, from my home computer which DOES have Vim as an Hg repository:
 
   patch -p1  autotextobject.diff
   hg extdiff -o -Nprc  autotextobject_context.patch

WOW this is frustrating. Even my context diff did not apply on Solaris because
of the prompt for a file to patch. I finally found /usr/bin/gpatch on the
Solaris system, thanks to
http://stackoverflow.com/questions/3477580/cant-apply-unified-diff-patch-on-solaris.
This can apply either the context diff or the original unified diff.

I think maybe that's what you meant instead of qpatch above.

Windows GNU patch may have worked after I tweaked it for line endings, I thought
it failed due to a failed hunk and aborted it. We both included some help tags
stuff that had nothing to do with your change.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Kent Sibilev
On Thursday, November 14, 2013 6:24:42 AM UTC-5, Daniel paradigm Thau wrote:
 On Wednesday, November 13, 2013 11:10:39 PM UTC-5, Kent Sibilev wrote:
  Maybe i'm missing something, but you don't need to patch Vim in order to 
  get this functionality. What you need is kana's textobj pluing:
  https://github.com/kana/vim-textobj-user
  along with textobj-between
  https://github.com/thinca/vim-textobj-between
 
 Yes, there are plenty of ways to make custom text-objects without editing 
 Vim.  However, everything you've listed require the end-user list the desired 
 objects ahead of time.  You could loop over the character range in a plugin 
 or vimrc and make them all, or make an operator-mode mapping to a function 
 that calls getchar() then tries to either make it on-the-fly or fall back to 
 existing things, but all of these options get ugly fast.  Adding three lines 
 to normal.c ends up being much quicker and cleaner.

With textobj-between plugin installed you don't need to loop over and make a 
mapping for every possible character. The plugin adds a single text object 
activated by pressing 'f'. So if you want to delete a content between to 
underscores (_) characters, you press dif_. If you want change text between two 
dollar sign characters you press cif$, etc.

Also I don't understand how the aforementioned fallback would work in practice. 
For example, if I edit an html content h1aattbb/h1 and my cursor is on 
one of the dot characters. Is it true that pressing dit would delete only dots 
characters instead of all tag's content?

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Kent Sibilev
On Thursday, November 14, 2013 9:59:51 AM UTC-5, Ben Fritz wrote:
 On Wednesday, November 13, 2013 10:10:39 PM UTC-6, Kent Sibilev wrote:
 
  On Wednesday, November 13, 2013 8:14:20 PM UTC-5, Daniel paradigm Thau 
  wrote:
 
   Attached is a patch to add an 'autotextobject' setting which will treat
 
   undefined text-objects like quote text objects, using the provided
 
   character as bounds.  For example, with this setting if a user enters
 
   
 
   di, with the cursor between two commas, the text between the commas
 
   will be removed.  This is very useful for editing lists.  Similarly, if
 
  
 
  Maybe i'm missing something, but you don't need to patch Vim in order to get
 
  this functionality. What you need is kana's textobj pluing:
 
  
 
  https://github.com/kana/vim-textobj-user
 
  
 
  along with textobj-between
 
  
 
  https://github.com/thinca/vim-textobj-between
 
  
 
  Also you can check kana's other projects where he provides many other useful
 
  text objects like:
 
  
 
  https://github.com/kana/vim-textobj-line
 
  https://github.com/kana/vim-textobj-indent
 
  etc.
 
 
 
 While mappings are more customizable, and there is a plugin for this, C
 
 code is faster and works in more situations. Mappings can be removed,
 
 ignored for various commands, problems can occur while chaining them
 
 together, complex mappings can break the undo sequence, etc.
 
 
 
 I don't think the existence of a plugin is a good reason to avoid a
 
 patch in this case. Text objects are one of the most powerful features
 
 of Vim. I support making them more powerful and adding more of them. The
 
 same arguments you make here can be used against adding ANY new text
 
 object, even defined ones.
 
 
 
 Relative line numbering could be done (poorly) with a plugin before the
 
 'relativenumber' option was introduced. I'm very glad that made it into
 
 the C code.
 
 
 
 And Daniel's point about listing desired text-objects ahead of time is
 
 important as well. With the exception of commas, most of the time when
 
 I'd like a patch like this it's for something I didn't even think about
 
 ahead of time and will probably not think of again until the next time I
 
 need it. Stopping to make another mapping or plugin configuration, and
 
 maybe restarting Vim, is NOT an option. I'll just do it by hand.
 
 
 
 I certainly support this patch. I'll be applying it and running with it
 
 a while at least to try it out. I'd love to see a better option, but this
 
 is WAY better than nothing.

I agree that having the native Vim support for a certain functionality is more 
appealing. My point is that the proposed patch is quite limited in nature and 
could potentially break existing plugins. I'd love to have a native support of 
the functionality that is provided by textobj-user where I can define my own 
text objects and avoid the possibility of problems associated with complex 
mappings. Saying that i've been using textobj-user plugin for many years and 
still have to encounter a single problem you mentioned.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Daniel paradigm Thau
On Thursday, November 14, 2013 11:16:24 AM UTC-5, Kent Sibilev wrote:
 On Thursday, November 14, 2013 9:59:51 AM UTC-5, Ben Fritz wrote:
 
  On Wednesday, November 13, 2013 10:10:39 PM UTC-6, Kent Sibilev wrote:
 
  
 
   On Wednesday, November 13, 2013 8:14:20 PM UTC-5, Daniel paradigm Thau 
   wrote:
 
  
 
Attached is a patch to add an 'autotextobject' setting which will treat
 
  
 
undefined text-objects like quote text objects, using the provided
 
  
 
character as bounds.  For example, with this setting if a user enters
 
  
 

 
  
 
di, with the cursor between two commas, the text between the commas
 
  
 
will be removed.  This is very useful for editing lists.  Similarly, if
 
  
 
   
 
  
 
   Maybe i'm missing something, but you don't need to patch Vim in order to 
   get
 
  
 
   this functionality. What you need is kana's textobj pluing:
 
  
 
   
 
  
 
   https://github.com/kana/vim-textobj-user
 
  
 
   
 
  
 
   along with textobj-between
 
  
 
   
 
  
 
   https://github.com/thinca/vim-textobj-between
 
  
 
   
 
  
 
   Also you can check kana's other projects where he provides many other 
   useful
 
  
 
   text objects like:
 
  
 
   
 
  
 
   https://github.com/kana/vim-textobj-line
 
  
 
   https://github.com/kana/vim-textobj-indent
 
  
 
   etc.
 
  
 
  
 
  
 
  While mappings are more customizable, and there is a plugin for this, C
 
  
 
  code is faster and works in more situations. Mappings can be removed,
 
  
 
  ignored for various commands, problems can occur while chaining them
 
  
 
  together, complex mappings can break the undo sequence, etc.
 
  
 
  
 
  
 
  I don't think the existence of a plugin is a good reason to avoid a
 
  
 
  patch in this case. Text objects are one of the most powerful features
 
  
 
  of Vim. I support making them more powerful and adding more of them. The
 
  
 
  same arguments you make here can be used against adding ANY new text
 
  
 
  object, even defined ones.
 
  
 
  
 
  
 
  Relative line numbering could be done (poorly) with a plugin before the
 
  
 
  'relativenumber' option was introduced. I'm very glad that made it into
 
  
 
  the C code.
 
  
 
  
 
  
 
  And Daniel's point about listing desired text-objects ahead of time is
 
  
 
  important as well. With the exception of commas, most of the time when
 
  
 
  I'd like a patch like this it's for something I didn't even think about
 
  
 
  ahead of time and will probably not think of again until the next time I
 
  
 
  need it. Stopping to make another mapping or plugin configuration, and
 
  
 
  maybe restarting Vim, is NOT an option. I'll just do it by hand.
 
  
 
  
 
  
 
  I certainly support this patch. I'll be applying it and running with it
 
  
 
  a while at least to try it out. I'd love to see a better option, but this
 
  
 
  is WAY better than nothing.
 
 
 
 I agree that having the native Vim support for a certain functionality is 
 more appealing. My point is that the proposed patch is quite limited in 
 nature and could potentially break existing plugins. I'd love to have a 
 native support of the functionality that is provided by textobj-user where I 
 can define my own text objects and avoid the possibility of problems 
 associated with complex mappings. Saying that i've been using textobj-user 
 plugin for many years and still have to encounter a single problem you 
 mentioned.

The only way the patch could break an existing plugin is if the plugin relies 
on text-object commands which are not yet defined failing.  This is 
theoretically possible but very hacky - I have a hard time imagining it being 
used.  Even _if_ such a thing existed, it could simply disable the setting for 
the plugin's duration.

FWIW, here's some code that will operate differently if the patch is used and 
the setting is set:

:execute normal! i$foo$\escci$Abar\esc

Off the top of my head I can't see why that would be explicitly desired, but 
even if it does exist, the plugin can simply disable the new setting my patch 
adds for it's duration.

If a plugin tries to map something like di$ it can still do so - the map will 
outprioritize Vim's default actions.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Jürgen Krämer

Hi,

Ben Fritz wrote:
 On Wednesday, November 13, 2013 7:14:20 PM UTC-6, Daniel paradigm Thau 
 wrote:
 Attached is a patch to add an 'autotextobject' setting which will treat
 undefined text-objects like quote text objects, using the provided
 character as bounds.  For example, with this setting if a user enters

 di, with the cursor between two commas, the text between the commas
 will be removed.  This is very useful for editing lists.  Similarly, if
 one is composing TeX being able to quickly operate on the area between

 dollar signs is useful.  If one is editing snake_case_variables, being
 able to do a quick ci_ is also nice.  The key here is that it happens
 on-the-fly with all as-of-yet-undefined objects without requiring the

 user consider every possible character he/she would be interested in
 ahead of time.

 Outside of documentation and adding the setting itself, the it is only a
 few additional lines of code.

 I've wanted this feature for a while; if there is anything else I should

 do to help get it upstreamed do let me know and I'll see what I can do.

 - Daniel Thau
 
 I cannot get this patch to apply using either whatever patch utility
 is installed on Solaris or GNU patch on Windows. Can you please post
 in a different patch format? No matter how I tweak the patch file, and
 no matter what I put for the -p value, I cannot get it to apply. The
 best it does is tell me the patch looks like a unified context diff
 and then ask me for a file to patch.
 

the @@ lines look suspicious to me. I thought they should start with @@,
contain the old and new range of the hunk and end with @@. But in this
patch @@ does not end the line; the line still contains some text that
might be the line from before the hunk.

Regards,
Jürgen

-- 
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie tooth pik
On Thu, Nov 14, 2013 at 06:59:51AM -0800, Ben Fritz wrote:
 On Wednesday, November 13, 2013 10:10:39 PM UTC-6, Kent Sibilev wrote:
  On Wednesday, November 13, 2013 8:14:20 PM UTC-5, Daniel paradigm Thau 
  wrote:
   Attached is a patch to add an 'autotextobject' setting which will treat
   undefined text-objects like quote text objects, using the provided
   character as bounds.  For example, with this setting if a user enters
   
   di, with the cursor between two commas, the text between the commas
   will be removed.  This is very useful for editing lists.  Similarly, if
  
  Maybe i'm missing something, but you don't need to patch Vim in order to get
  this functionality. What you need is kana's textobj pluing:
  
  https://github.com/kana/vim-textobj-user
  
  along with textobj-between
  
  https://github.com/thinca/vim-textobj-between
  
  Also you can check kana's other projects where he provides many other useful
  text objects like:
  
  https://github.com/kana/vim-textobj-line
  https://github.com/kana/vim-textobj-indent
  etc.

 While mappings are more customizable, and there is a plugin for this, C
 code is faster and works in more situations. Mappings can be removed,
 ignored for various commands, problems can occur while chaining them
 together, complex mappings can break the undo sequence, etc.

 I don't think the existence of a plugin is a good reason to avoid a
 patch in this case. Text objects are one of the most powerful features
 of Vim. I support making them more powerful and adding more of them. The
 same arguments you make here can be used against adding ANY new text
 object, even defined ones.

 Relative line numbering could be done (poorly) with a plugin before the
 'relativenumber' option was introduced. I'm very glad that made it into
 the C code.

 And Daniel's point about listing desired text-objects ahead of time is
 important as well. With the exception of commas, most of the time when
 I'd like a patch like this it's for something I didn't even think about
 ahead of time and will probably not think of again until the next time I
 need it. Stopping to make another mapping or plugin configuration, and
 maybe restarting Vim, is NOT an option. I'll just do it by hand.

 I certainly support this patch. I'll be applying it and running with it
 a while at least to try it out. I'd love to see a better option, but this
 is WAY better than nothing.

if this ever comes up for a vote I will be voting in favor of it -- I
really like the idea and may [finally!] start using text objects if it
is implemented

count me +1 for on-the-fly text objects

-- 
_|_ _  __|_|_ ._ o|  
 |_(_)(_)|_| ||_)|| 
  |  

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Kent Sibilev
On Thursday, November 14, 2013 11:28:45 AM UTC-5, Daniel paradigm Thau wrote:
 On Thursday, November 14, 2013 11:01:56 AM UTC-5, Kent Sibilev wrote:
  On Thursday, November 14, 2013 6:24:42 AM UTC-5, Daniel paradigm Thau 
  wrote:

 Vim tries to use the existing text-objects with a function for each type of 
 object, then if an invalid specifier is provided it falls back to flag = 
 FAIL.  All my patch does is wrap that flag = FAIL at the end in an 
 if-check against the setting I added and, if the setting is set, do a
 
 flag = current_quote(cap-oap, cap-count1, include, cap-nchar);
 
 i.e.: fall back to treating it like quotes are treated if an object is 
 requested that isn't (yet) defined.
 
 
 [skip]
 
 My argument for this patch really boils down to the following:
 
 As Vim acts now, most of the operator[ai]character namespace is 
 completely unused.  Reserving it for future use doesn't benefit anyone nearly 
 as much as having it do something sane/useful.  A trivially small patch can 
 be used to have do something useful in the unused part of that namespace 
 (without touching the used part at all).  A disclaimer - plus the fact it is 
 a default-off setting - can be made (and is, in the patch) so that people do 
 not rely on those keystrokes always acting the same.

I agree with what you are saying. My only complain is that your patch provides 
a single fallback algorithm, in particular relying on current_quote function. 
What I would like is to have a more general solution where I can specify my own 
function to execute based on the pressed character.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Daniel paradigm Thau
On Thursday, November 14, 2013 1:28:50 PM UTC-5, Kent Sibilev wrote:
 On Thursday, November 14, 2013 11:28:45 AM UTC-5, Daniel paradigm Thau 
 wrote:
 
  On Thursday, November 14, 2013 11:01:56 AM UTC-5, Kent Sibilev wrote:
 
   On Thursday, November 14, 2013 6:24:42 AM UTC-5, Daniel paradigm Thau 
   wrote:
 
 
 
  Vim tries to use the existing text-objects with a function for each type of 
  object, then if an invalid specifier is provided it falls back to flag = 
  FAIL.  All my patch does is wrap that flag = FAIL at the end in an 
  if-check against the setting I added and, if the setting is set, do a
 
  
 
  flag = current_quote(cap-oap, cap-count1, include, cap-nchar);
 
  
 
  i.e.: fall back to treating it like quotes are treated if an object is 
  requested that isn't (yet) defined.
 
  
 
  
 
  [skip]
 
  
 
  My argument for this patch really boils down to the following:
 
  
 
  As Vim acts now, most of the operator[ai]character namespace is 
  completely unused.  Reserving it for future use doesn't benefit anyone 
  nearly as much as having it do something sane/useful.  A trivially small 
  patch can be used to have do something useful in the unused part of that 
  namespace (without touching the used part at all).  A disclaimer - plus the 
  fact it is a default-off setting - can be made (and is, in the patch) so 
  that people do not rely on those keystrokes always acting the same.
 
 
 
 I agree with what you are saying. My only complain is that your patch 
 provides a single fallback algorithm, in particular relying on current_quote 
 function. What I would like is to have a more general solution where I can 
 specify my own function to execute based on the pressed character.

I'm not sure I completely follow.  I'll try to rephase what I think you're 
saying:

From what I understand, you're requesting a system to make it easy for 
end-users to add new text-objects.  There are plenty of plugins to do this 
(you've listed some), but the problem with them is that they re-implement 
things that Vim already has code for, since Vim does not expose this code in 
any way a plugin could access.

Am I close?

If so, while I agree that would be a good thing, I don't see how it is 
necessarily relevant here.  The idea behind my patch is that after the defined 
text-object code - either vim's hardcoded stuff or your new 
end-user-definable-stuff - there is free namespace.  It'd be a separate patch - 
I don't think this patch necessarily needs to keep your proposed patch in mind.

The only way I could see the two ideas being connected is that maybe another 
algorithm could be set for the catch-all; however, I can't see how any of the 
other ones would be used.  current_block() requires both bounds be provided, 
and for the catch-all we're only given one character - what would we use for 
the other bound?  Everything else - current_word(), current_par(), 
current_sent() - are all hardcoded to only do one thing.  The only sane option 
I see for a generic fall-back is current_quote, which is designed for both 
bounds being the same.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Tony Mechelynck

On 14/11/13 04:00, Ben Fritz wrote:

On Wednesday, November 13, 2013 8:27:22 PM UTC-6, Tony Mechelynck wrote:

[…]

It looks like something that ought to apply with -p1 starting at the top

of your Vim source directory tree (with the parent of src/ runtime/ etc.

being the current directory)


Yeah, that's what I tried first. Didn't work.


but I didn't try to see if it works. I have

the impression that it was made by git diff or somesuch after

converting the Mercurial repository to git form.


That was my thought as well.


You might try hg

qimport (with the mq extension enabled),


Don't have it and can't install it on the Solaris machine. Does that work if 
the directory is a zip downloaded from Github instead of a real repository? My 
workplace blocks all outgoing Hg, Git, and SVN connections.


A zip downloaded from github will, IIUC, be a git repository and not a 
Mercurial repository. Git is still a foreign language to me and even 
reading the git help manuals doesn't give me any understanding of that 
software's philosophy, so I cannot help you there. That's also why all 
the advice I give is based on Mercurial. If someone else here is a git 
guru, (s)he is more than welcome to speak up.


If you can install Mercurial on your home machine and then clone Bram's 
repository there, you could try applying the patch there. hg diff 
understands git-style patches and can even produce them, unlike some 
current versions of GNU patch and GNU diff; IMHO in the light of your 
comments in this latest post of yours, that difference is your only hope 
of getting that patch to apply on a Mercurial clone. — Or if the OP's 
patch wasn't built from the latest Vim patchlevel (7.3.91 at the time 
this thread was created IIRC) he ought to tell us which patchlevel he 
used as a reference - the patch might have bitrotten since then. -- BTW 
the mq extension which I mentioned is a Mercurial component which is 
included out of the box in all current versions, but disabled by 
default. How to enable it is explained in hg help extensions and hg 
help config but the latter has a lot of info about other kinds of 
config settings.


If your work sysadmin won't uninstall a Mercurial software package which 
you would have installed somewhere under your home directory, you can 
make a bundle from a Mercurial clone at home (see hg help bundle) 
and unbundle it on the work machine, thus creating a clone there 
without the need for any hg connection over the Internet. Of course you 
still won't be able to hg pull from Bram's repo at work, but you can 
make incremental bundles at home and sneak them in on a USB key.


If your work sysadmin _does_ forbid (and prevent) installing both Git 
and Mercurial on your work machine, you will of course still find the 
full source tree as part of a git or Mercurial repository — metadata is 
kept in a directory named .git or .hg (respectively) inside it, plus 
maybe a very small number of files with longer names starting with .git 
or .hg in the top-level repository, so none of that additional stuff 
should be a problem. But — of course again — you won't be able to run 
hg (q)import or hg (q)diff without Mercurial installed, and similarly 
mutatis mutandis for the corresponding git commands.





and if it doesn't work at

first try, you may want to remove the index lines in the patch.


I tried that too, for the patch utility.


See

hg help qimport and possibly hg help qqueue et al. for details.





Best regards,
Tony.
--
Why I Can't Go Out With You:

I'd LOVE to, but ...
-- I have to floss my cat.
-- I've dedicated my life to linguini.
-- I need to spend more time with my blender.
-- it wouldn't be fair to the other Beautiful People.
-- it's my night to pet the dog/ferret/goldfish.
-- I'm going downtown to try on some gloves.
-- I have to check the freshness dates on my dairy products.
-- I'm going down to the bakery to watch the buns rise.
-- I have an appointment with a cuticle specialist.
-- I have some really hard words to look up.
-- I've got a Friends of the Lowly Rutabaga meeting.
-- I promised to help a friend fold road maps.

--
--
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups vim_dev group.

To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Nikolay Pavlov
On Nov 15, 2013 7:49 AM, Tony Mechelynck antoine.mechely...@gmail.com
wrote:

 On 14/11/13 04:00, Ben Fritz wrote:

 On Wednesday, November 13, 2013 8:27:22 PM UTC-6, Tony Mechelynck wrote:

 […]

 It looks like something that ought to apply with -p1 starting at the top

 of your Vim source directory tree (with the parent of src/ runtime/ etc.

 being the current directory)


 Yeah, that's what I tried first. Didn't work.

 but I didn't try to see if it works. I have

 the impression that it was made by git diff or somesuch after

 converting the Mercurial repository to git form.


 That was my thought as well.

 You might try hg

 qimport (with the mq extension enabled),


 Don't have it and can't install it on the Solaris machine. Does that
work if the directory is a zip downloaded from Github instead of a real
repository? My workplace blocks all outgoing Hg, Git, and SVN connections.


 A zip downloaded from github will, IIUC, be a git repository and not a
Mercurial repository. Git is still a foreign language to me and even
reading the git help manuals doesn't give me any understanding of that
software's philosophy, so I cannot help you there. That's also why all the
advice I give is based on Mercurial. If someone else here is a git guru,
(s)he is more than welcome to speak up.

It will not be a repository at all. Neither git nor mercurial. Github
provides repository snapshots. I have never heard of a code hosting that
allows downloading archive with repository.

 If you can install Mercurial on your home machine and then clone Bram's
repository there, you could try applying the patch there. hg diff
understands git-style patches and can even produce them, unlike some
current versions of GNU patch and GNU diff; IMHO in the light of your
comments in this latest post of yours, that difference is your only hope of
getting that patch to apply on a Mercurial clone. — Or if the OP's patch
wasn't built from the latest Vim patchlevel (7.3.91 at the time this thread
was created IIRC) he ought to tell us which patchlevel he used as a
reference - the patch might have bitrotten since then. -- BTW the mq
extension which I mentioned is a Mercurial component which is included out
of the box in all current versions, but disabled by default. How to enable
it is explained in hg help extensions and hg help config but the latter
has a lot of info about other kinds of config settings.

 If your work sysadmin won't uninstall a Mercurial software package which
you would have installed somewhere under your home directory, you can make
a bundle from a Mercurial clone at home (see hg help bundle) and
unbundle it on the work machine, thus creating a clone there without the
need for any hg connection over the Internet. Of course you still won't be
able to hg pull from Bram's repo at work, but you can make incremental
bundles at home and sneak them in on a USB key.

 If your work sysadmin _does_ forbid (and prevent) installing both Git and
Mercurial on your work machine, you will of course still find the full
source tree as part of a git or Mercurial repository — metadata is kept in
a directory named .git or .hg (respectively) inside it, plus maybe a very
small number of files with longer names starting with .git or .hg in the
top-level repository, so none of that additional stuff should be a problem.
But — of course again — you won't be able to run hg (q)import or hg
(q)diff without Mercurial installed, and similarly mutatis mutandis for the
corresponding git commands.



 and if it doesn't work at

 first try, you may want to remove the index lines in the patch.


 I tried that too, for the patch utility.

 See

 hg help qimport and possibly hg help qqueue et al. for details.



 Best regards,
 Tony.
 --
 Why I Can't Go Out With You:

 I'd LOVE to, but ...
 -- I have to floss my cat.
 -- I've dedicated my life to linguini.
 -- I need to spend more time with my blender.
 -- it wouldn't be fair to the other Beautiful People.
 -- it's my night to pet the dog/ferret/goldfish.
 -- I'm going downtown to try on some gloves.
 -- I have to check the freshness dates on my dairy products.
 -- I'm going down to the bakery to watch the buns rise.
 -- I have an appointment with a cuticle specialist.
 -- I have some really hard words to look up.
 -- I've got a Friends of the Lowly Rutabaga meeting.
 -- I promised to help a friend fold road maps.


 --
 --
 You received this message from the vim_dev maillist.
 Do not top-post! Type your reply below the text you are replying to.
 For more information, visit http://www.vim.org/maillist.php

 --- You received this message because you are subscribed to the Google
Groups vim_dev group.
 To unsubscribe from this group and stop receiving emails from it, send an
email to vim_dev+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.

-- 
-- 
You received this message 

Re: Patch to utilize undefined text-objects

2013-11-14 Fir de Conversatie Tony Mechelynck

On 14/11/13 17:39, Jürgen Krämer wrote:
[…]


the @@ lines look suspicious to me. I thought they should start with @@,
contain the old and new range of the hunk and end with @@. But in this
patch @@ does not end the line; the line still contains some text that
might be the line from before the hunk.

Regards,
Jürgen



IIUC, in a git-style diff, that's the name of the function 
containing the hunk — the function name as guessed by the git diff or hg 
diff command, and that doesn't always make sense for a programmer of 
whichever language the file is in.


Best regards,
Tony.
--
hundred-and-one symptoms of being an internet addict:
44. Your friends no longer send you e-mail...they just log on to your IRC
channel.

--
--
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups vim_dev group.

To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Daniel Thau
Attached is a patch to add an 'autotextobject' setting which will treat
undefined text-objects like quote text objects, using the provided
character as bounds.  For example, with this setting if a user enters
di, with the cursor between two commas, the text between the commas
will be removed.  This is very useful for editing lists.  Similarly, if
one is composing TeX being able to quickly operate on the area between
dollar signs is useful.  If one is editing snake_case_variables, being
able to do a quick ci_ is also nice.  The key here is that it happens
on-the-fly with all as-of-yet-undefined objects without requiring the
user consider every possible character he/she would be interested in
ahead of time.

Outside of documentation and adding the setting itself, the it is only a
few additional lines of code.

I've wanted this feature for a while; if there is anything else I should
do to help get it upstreamed do let me know and I'll see what I can do.

- Daniel Thau

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index d40d825..1f96efb 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -733,6 +733,13 @@ matching end tag.  These are ignored.
 
 The text objects are tolerant about mistakes.  Stray end tags are ignored.
 
+
+Automatic text-objects *auto-text-objects*
+
+If |'autotextobject'| is set and an undefined text-object is entered, the
+character provided will be used as bounds and act like |v_i| or |v_a|.  See
+|'autotextobject'|.
+
 ==
 7. Marks   *mark-motions* *E20* *E78*
 
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index a515900..26fa05d 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -734,6 +734,22 @@ A jump table for the options with a short description can 
be found at |Q_op|.
released with Sun ONE Studio 4 Enterprise Edition.
Note: When this option is on some plugins may not work.
 
+   *'autotextobject'* *'ato'* *'noautotextobject'*
+   *'noato'*
+'autotextobject' 'ato' boolean (default off)
+   global
+   {not in Vi}
+   {only available when compiled with it, use
+   exists(+textobjects) to check}
+   When on, if an undefined text-object is entered the character is
+   treated as the bounds for a text-object.  This text-object will act
+   like |v_i| or |v_a| except with the provided character instead of a
+   quote.  For example, , is not defined as a text-object.  If the user
+   enters di, with this setting, the area between , characters will
+   be deleted.
+   Note: New text-objects may be added in future versions of Vim which
+   will take precedence over text-objects provided with this setting.
+
*'arabic'* *'arab'* *'noarabic'* *'noarab'*
 'arabic' 'arab'boolean (default off)
local to window
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 73475a9..1cfdc2f 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -53,11 +53,13 @@ $VIMRUNTIME starting.txt/*$VIMRUNTIME*
 'ari'  options.txt /*'ari'*
 'arshape'  options.txt /*'arshape'*
 'as'   todo.txt/*'as'*
+'ato'  options.txt /*'ato'*
 'autochdir'options.txt /*'autochdir'*
 'autoindent'   options.txt /*'autoindent'*
 'autoprint'vi_diff.txt /*'autoprint'*
 'autoread' options.txt /*'autoread'*
 'autosave' todo.txt/*'autosave'*
+'autotextobject'   options.txt /*'autotextobject'*
 'autowrite'options.txt /*'autowrite'*
 'autowriteall' options.txt /*'autowriteall'*
 'aw'   options.txt /*'aw'*
@@ -2300,6 +2302,8 @@ $VIMRUNTIME   starting.txt/*$VIMRUNTIME*
 :keepj motion.txt  /*:keepj*
 :keepjumps motion.txt  /*:keepjumps*
 :keepmarks motion.txt  /*:keepmarks*
+:keepp cmdline.txt /*:keepp*
+:keeppatterns  cmdline.txt /*:keeppatterns*
 :l various.txt /*:l*
 :lNquickfix.txt/*:lN*
 :lNext quickfix.txt/*:lNext*
@@ -7791,6 +7795,7 @@ spell-affix-flags spell.txt   /*spell-affix-flags*
 spell-affix-mbyte  spell.txt   /*spell-affix-mbyte*
 spell-affix-not-supported  spell.txt   /*spell-affix-not-supported*
 spell-affix-vimspell.txt   /*spell-affix-vim*

Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Ben Fritz
On Wednesday, November 13, 2013 7:14:20 PM UTC-6, Daniel paradigm Thau wrote:
 Attached is a patch to add an 'autotextobject' setting which will treat
 undefined text-objects like quote text objects, using the provided
 character as bounds.  For example, with this setting if a user enters
 
 di, with the cursor between two commas, the text between the commas
 will be removed.  This is very useful for editing lists.  Similarly, if
 one is composing TeX being able to quickly operate on the area between
 
 dollar signs is useful.  If one is editing snake_case_variables, being
 able to do a quick ci_ is also nice.  The key here is that it happens
 on-the-fly with all as-of-yet-undefined objects without requiring the
 
 user consider every possible character he/she would be interested in
 ahead of time.
 
 Outside of documentation and adding the setting itself, the it is only a
 few additional lines of code.
 
 I've wanted this feature for a while; if there is anything else I should
 
 do to help get it upstreamed do let me know and I'll see what I can do.
 
 - Daniel Thau

I cannot get this patch to apply using either whatever patch utility is 
installed on Solaris or GNU patch on Windows. Can you please post in a 
different patch format? No matter how I tweak the patch file, and no matter 
what I put for the -p value, I cannot get it to apply. The best it does is tell 
me the patch looks like a unified context diff and then ask me for a file to 
patch.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie James McCoy
On Wed, Nov 13, 2013 at 06:06:25PM -0800, Ben Fritz wrote:
 On Wednesday, November 13, 2013 7:14:20 PM UTC-6, Daniel paradigm Thau 
 wrote:
  Attached is a patch to add an 'autotextobject' setting which will treat
  undefined text-objects like quote text objects, using the provided
  character as bounds.  For example, with this setting if a user enters
  
  di, with the cursor between two commas, the text between the commas
  will be removed.  This is very useful for editing lists.  Similarly, if
  one is composing TeX being able to quickly operate on the area between
  
  dollar signs is useful.  If one is editing snake_case_variables, being
  able to do a quick ci_ is also nice.  The key here is that it happens
  on-the-fly with all as-of-yet-undefined objects without requiring the
  
  user consider every possible character he/she would be interested in
  ahead of time.
  
  Outside of documentation and adding the setting itself, the it is only a
  few additional lines of code.
  
  I've wanted this feature for a while; if there is anything else I should
  
  do to help get it upstreamed do let me know and I'll see what I can do.
  
  - Daniel Thau
 
 I cannot get this patch to apply using either whatever patch utility
 is installed on Solaris or GNU patch on Windows.

“patch -Np1  autotextobject.diff” and “hg import --no-commit
autotextobject.diff” both worked fine for me in a clone of the Vim
sources, specifically:

changeset:   5496:34a3b852ec05
bookmark:master
tag: tip
user:Bram Moolenaar b...@vim.org
date:Tue Nov 12 18:09:29 2013 +0100
summary: Added tag v7-4-091 for changeset 9502d1caf90b

Cheers,
-- 
James
GPG Key: 4096R/331BA3DB 2011-12-05 James McCoy james...@jamessan.com


signature.asc
Description: Digital signature


Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Gary Johnson
On 2013-11-13, Ben Fritz wrote:

 I cannot get this patch to apply using either whatever patch
 utility is installed on Solaris or GNU patch on Windows. Can you
 please post in a different patch format? No matter how I tweak the
 patch file, and no matter what I put for the -p value, I cannot
 get it to apply. The best it does is tell me the patch looks like
 a unified context diff and then ask me for a file to patch.

The following may not help, but it does suggest that the patch
itself is OK.

I saved the attachment to my home directory, then cd'd to my vim
source directory, the one containing the .hg directory, and executed
patch like this.

$ patch -p1 --dry-run  ~/autotextobject.diff
patching file runtime/doc/motion.txt
patching file runtime/doc/options.txt
patching file runtime/doc/tags
Hunk #3 succeeded at 7793 (offset -2 lines).
patching file src/normal.c
Hunk #1 succeeded at 9308 (offset -7 lines).
patching file src/option.c
Hunk #1 succeeded at 554 (offset -1 lines).
patching file src/option.h

That directory has the source for Vim 7.4.41.  I didn't notice which
version the patch applied to, but a different version would explain
the offsets.

Here is the patch version info.

$ patch -v
patch 2.6
Copyright (C) 1988 Larry Wall
Copyright (C) 2003 Free Software Foundation, Inc.

This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of this program
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.

written by Larry Wall and Paul Eggert

This system is running Ubuntu 10.04.

HTH,
Gary

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Daniel paradigm Thau
On Wednesday, November 13, 2013 9:06:25 PM UTC-5, Ben Fritz wrote:
 On Wednesday, November 13, 2013 7:14:20 PM UTC-6, Daniel paradigm Thau 
 wrote:
 
  Attached is a patch to add an 'autotextobject' setting which will treat
 
  undefined text-objects like quote text objects, using the provided
 
  character as bounds.  For example, with this setting if a user enters
 
  
 
  di, with the cursor between two commas, the text between the commas
 
  will be removed.  This is very useful for editing lists.  Similarly, if
 
  one is composing TeX being able to quickly operate on the area between
 
  
 
  dollar signs is useful.  If one is editing snake_case_variables, being
 
  able to do a quick ci_ is also nice.  The key here is that it happens
 
  on-the-fly with all as-of-yet-undefined objects without requiring the
 
  
 
  user consider every possible character he/she would be interested in
 
  ahead of time.
 
  
 
  Outside of documentation and adding the setting itself, the it is only a
 
  few additional lines of code.
 
  
 
  I've wanted this feature for a while; if there is anything else I should
 
  
 
  do to help get it upstreamed do let me know and I'll see what I can do.
 
  
 
  - Daniel Thau
 
 
 
 I cannot get this patch to apply using either whatever patch utility is 
 installed on Solaris or GNU patch on Windows. Can you please post in a 
 different patch format? No matter how I tweak the patch file, and no matter 
 what I put for the -p value, I cannot get it to apply. The best it does is 
 tell me the patch looks like a unified context diff and then ask me for a 
 file to patch.

As far as I know that's a fairly standard unified format patch against the 
latest Vim from hg (7.4.91).  I tried creating one with git diff (as Tony 
cleverly surmized), git format-patch, as well as good old fashioned GNU diff 
on Linux with the -u flag to make a unified format patch - all three versions 
came out more or less the same, baring email boilerplate from git.  I managed 
to apply all of them with GNU patch against the latest Vim from hg. 

Some googling around makes it seem as though Solaris's /usr/bin/patch may not 
know unified diff format.  See if you have a /usr/bin/qpatch on your system and 
try with that.  Although that does not explain why GNU patch on Windows didn't 
like it.

I'll try and make a context format with diff -c later for you in the next few 
days if need be.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Ben Fritz
On Wednesday, November 13, 2013 8:27:22 PM UTC-6, Tony Mechelynck wrote:
 On 14/11/13 03:06, Ben Fritz wrote:
 
  On Wednesday, November 13, 2013 7:14:20 PM UTC-6, Daniel paradigm Thau 
  wrote:
 
  Attached is a patch to add an 'autotextobject' setting which will treat
 
  undefined text-objects like quote text objects, using the provided
 
  character as bounds.  For example, with this setting if a user enters
 
 
 
  di, with the cursor between two commas, the text between the commas
 
  will be removed.  This is very useful for editing lists.  Similarly, if
 
  one is composing TeX being able to quickly operate on the area between
 
 
 
  dollar signs is useful.  If one is editing snake_case_variables, being
 
  able to do a quick ci_ is also nice.  The key here is that it happens
 
  on-the-fly with all as-of-yet-undefined objects without requiring the
 
 
 
  user consider every possible character he/she would be interested in
 
  ahead of time.
 
 
 
  Outside of documentation and adding the setting itself, the it is only a
 
  few additional lines of code.
 
 
 
  I've wanted this feature for a while; if there is anything else I should
 
 
 
  do to help get it upstreamed do let me know and I'll see what I can do.
 
 
 
  - Daniel Thau
 
 
 
  I cannot get this patch to apply using either whatever patch utility is 
  installed on Solaris or GNU patch on Windows. Can you please post in a 
  different patch format? No matter how I tweak the patch file, and no matter 
  what I put for the -p value, I cannot get it to apply. The best it does is 
  tell me the patch looks like a unified context diff and then ask me for a 
  file to patch.
 
 
 
 
 
 It looks like something that ought to apply with -p1 starting at the top 
 
 of your Vim source directory tree (with the parent of src/ runtime/ etc. 
 
 being the current directory) 

Yeah, that's what I tried first. Didn't work.

 but I didn't try to see if it works. I have 
 
 the impression that it was made by git diff or somesuch after 
 
 converting the Mercurial repository to git form.

That was my thought as well.

 You might try hg 
 
 qimport (with the mq extension enabled), 

Don't have it and can't install it on the Solaris machine. Does that work if 
the directory is a zip downloaded from Github instead of a real repository? My 
workplace blocks all outgoing Hg, Git, and SVN connections.

 and if it doesn't work at 
 
 first try, you may want to remove the index lines in the patch. 

I tried that too, for the patch utility.

 See 
 
 hg help qimport and possibly hg help qqueue et al. for details.
 

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Ben Fritz
On Wednesday, November 13, 2013 8:45:43 PM UTC-6, Daniel paradigm Thau wrote:
 On Wednesday, November 13, 2013 9:06:25 PM UTC-5, Ben Fritz wrote:
  
  I cannot get this patch to apply using either whatever patch utility is
  installed on Solaris or GNU patch on Windows. Can you please post in a
  different patch format? No matter how I tweak the patch file, and no matter
  what I put for the -p value, I cannot get it to apply. The best it does is
  tell me the patch looks like a unified context diff and then ask me for a
  file to patch.
 
 As far as I know that's a fairly standard unified format patch against the
 latest Vim from hg (7.4.91).  I tried creating one with git diff (as Tony
 cleverly surmized), git format-patch, as well as good old fashioned GNU diff
 on Linux with the -u flag to make a unified format patch - all three
 versions came out more or less the same, baring email boilerplate from git.  I
 managed to apply all of them with GNU patch against the latest Vim from hg. 
 

It applied cleanly on my Ubuntu machine back home. Thanks for the info, I'll try
again tomorrow at work.

 Some googling around makes it seem as though Solaris's /usr/bin/patch may not
 know unified diff format.  See if you have a /usr/bin/qpatch on your system
 and try with that.

Ugh, good to know. I'll look for that utility at work tomorrow, or failing
everything else just apply the patch by hand. It's pretty small.

 Although that does not explain why GNU patch on Windows
 didn't like it.
 

Probably because GNU patch on Windows needs Windows-style line endings, but only
for the lines that are not part of the actual hunk changes. I tried tweaking
the patch to add a few Windows line endings but only managed to get GNU patch to
crash instead.

 I'll try and make a context format with diff -c later for you in the next few
 days if need be.

No need, I'll generate it myself if I must. Sorry for the trouble.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Ben Fritz
On Wednesday, November 13, 2013 9:06:46 PM UTC-6, Ben Fritz wrote:
 On Wednesday, November 13, 2013 8:45:43 PM UTC-6, Daniel paradigm Thau 
 wrote:
  On Wednesday, November 13, 2013 9:06:25 PM UTC-5, Ben Fritz wrote:
  Some googling around makes it seem as though Solaris's /usr/bin/patch may 
  not
  know unified diff format.  See if you have a /usr/bin/qpatch on your system
  and try with that.
 
 Ugh, good to know. I'll look for that utility at work tomorrow, or failing
 everything else just apply the patch by hand. It's pretty small.
 
  I'll try and make a context format with diff -c later for you in the next 
  few
  days if need be.
 
 No need, I'll generate it myself if I must. Sorry for the trouble.

Actually I just made it now. Attached for anybody else who needs it.

Here's how, from my home computer which DOES have Vim as an Hg repository:

  patch -p1  autotextobject.diff
  hg extdiff -o -Nprc  autotextobject_context.patch

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
diff -Nprc vim-src.fbb64f5bfdf4/runtime/doc/motion.txt vim-src/runtime/doc/motion.txt
*** vim-src.fbb64f5bfdf4/runtime/doc/motion.txt	2013-11-13 21:11:20.148697015 -0600
--- vim-src/runtime/doc/motion.txt	2013-11-13 21:11:20.152696965 -0600
*** matching end tag.  These are ignored.
*** 733,738 
--- 733,745 
  
  The text objects are tolerant about mistakes.  Stray end tags are ignored.
  
+ 
+ Automatic text-objects	*auto-text-objects*
+ 
+ If |'autotextobject'| is set and an undefined text-object is entered, the
+ character provided will be used as bounds and act like |v_i| or |v_a|.  See
+ |'autotextobject'|.
+ 
  ==
  7. Marks	*mark-motions* *E20* *E78*
  
diff -Nprc vim-src.fbb64f5bfdf4/runtime/doc/options.txt vim-src/runtime/doc/options.txt
*** vim-src.fbb64f5bfdf4/runtime/doc/options.txt	2013-11-13 21:11:20.148697015 -0600
--- vim-src/runtime/doc/options.txt	2013-11-13 21:11:20.152696965 -0600
*** A jump table for the options with a shor
*** 734,739 
--- 734,755 
  	released with Sun ONE Studio 4 Enterprise Edition.
  	Note: When this option is on some plugins may not work.
  
+ 			*'autotextobject'* *'ato'* *'noautotextobject'*
+ 			*'noato'*
+ 'autotextobject' 'ato'	boolean (default off)
+ 			global
+ 			{not in Vi}
+ 			{only available when compiled with it, use
+ 			exists(+textobjects) to check}
+ 	When on, if an undefined text-object is entered the character is
+ 	treated as the bounds for a text-object.  This text-object will act
+ 	like |v_i| or |v_a| except with the provided character instead of a
+ 	quote.  For example, , is not defined as a text-object.  If the user
+ 	enters di, with this setting, the area between , characters will
+ 	be deleted.
+ 	Note: New text-objects may be added in future versions of Vim which
+ 	will take precedence over text-objects provided with this setting.
+ 
  *'arabic'* *'arab'* *'noarabic'* *'noarab'*
  'arabic' 'arab'		boolean (default off)
  			local to window
diff -Nprc vim-src.fbb64f5bfdf4/runtime/doc/tags vim-src/runtime/doc/tags
*** vim-src.fbb64f5bfdf4/runtime/doc/tags	2013-11-13 21:11:20.120697365 -0600
--- vim-src/runtime/doc/tags	2013-11-13 21:11:20.156696915 -0600
*** $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
*** 53,63 
--- 53,65 
  'ari'	options.txt	/*'ari'*
  'arshape'	options.txt	/*'arshape'*
  'as'	todo.txt	/*'as'*
+ 'ato'	options.txt	/*'ato'*
  'autochdir'	options.txt	/*'autochdir'*
  'autoindent'	options.txt	/*'autoindent'*
  'autoprint'	vi_diff.txt	/*'autoprint'*
  'autoread'	options.txt	/*'autoread'*
  'autosave'	todo.txt	/*'autosave'*
+ 'autotextobject'	options.txt	/*'autotextobject'*
  'autowrite'	options.txt	/*'autowrite'*
  'autowriteall'	options.txt	/*'autowriteall'*
  'aw'	options.txt	/*'aw'*
*** $VIMRUNTIME	starting.txt	/*$VIMRUNTIME*
*** 2300,2305 
--- 2302,2309 
  :keepj	motion.txt	/*:keepj*
  :keepjumps	motion.txt	/*:keepjumps*
  :keepmarks	motion.txt	/*:keepmarks*
+ :keepp	cmdline.txt	/*:keepp*
+ :keeppatterns	cmdline.txt	/*:keeppatterns*
  :l	various.txt	/*:l*
  :lN	quickfix.txt	/*:lN*
  :lNext	quickfix.txt	/*:lNext*
*** spell-affix-flags	spell.txt	/*spell-affi
*** 7791,7796 
--- 7795,7801 
  spell-affix-mbyte	spell.txt	/*spell-affix-mbyte*
  spell-affix-not-supported	spell.txt	/*spell-affix-not-supported*
  spell-affix-vim	spell.txt	/*spell-affix-vim*
+ spell-cjk	spell.txt	/*spell-cjk*
  spell-compound	spell.txt	/*spell-compound*
  

Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Kent Sibilev
On Wednesday, November 13, 2013 8:14:20 PM UTC-5, Daniel paradigm Thau wrote:
 Attached is a patch to add an 'autotextobject' setting which will treat
 undefined text-objects like quote text objects, using the provided
 character as bounds.  For example, with this setting if a user enters
 
 di, with the cursor between two commas, the text between the commas
 will be removed.  This is very useful for editing lists.  Similarly, if

Maybe i'm missing something, but you don't need to patch Vim in order to get 
this functionality. What you need is kana's textobj pluing:

https://github.com/kana/vim-textobj-user

along with textobj-between

https://github.com/thinca/vim-textobj-between

Also you can check kana's other projects where he provides many other useful 
text objects like:

https://github.com/kana/vim-textobj-line
https://github.com/kana/vim-textobj-indent
etc.

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Patch to utilize undefined text-objects

2013-11-13 Fir de Conversatie Bram Moolenaar

Daniel Thau wrote:

 Attached is a patch to add an 'autotextobject' setting which will treat
 undefined text-objects like quote text objects, using the provided
 character as bounds.  For example, with this setting if a user enters
 di, with the cursor between two commas, the text between the commas
 will be removed.  This is very useful for editing lists.  Similarly, if
 one is composing TeX being able to quickly operate on the area between
 dollar signs is useful.  If one is editing snake_case_variables, being
 able to do a quick ci_ is also nice.  The key here is that it happens
 on-the-fly with all as-of-yet-undefined objects without requiring the
 user consider every possible character he/she would be interested in
 ahead of time.
 
 Outside of documentation and adding the setting itself, the it is only a
 few additional lines of code.
 
 I've wanted this feature for a while; if there is anything else I should
 do to help get it upstreamed do let me know and I'll see what I can do.

The problem is that this only works for characters that are not taken
yet.  Thus if we add another text-object type the behavior changes.
It's like reserving all remaining characters to use for this feature.

I don't think this can be done properly without adding another
character, thus making the text selection a three-character operation.

-- 
Looking at Perl through Lisp glasses, Perl looks atrocious.

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///

-- 
-- 
You received this message from the vim_dev maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
vim_dev group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.