I forgot to say that I was hoping that using the "*repeat last*" function, 
namely the "*.*", would apply that modified command at the next text 
location where a new string is highlited.

Eric

On Wednesday 28 February 2024 at 16:12:30 UTC-5 Eric Marceau wrote:

> Also,
>
> Can someone offer the modified version of that which would permit 
> specifying the desired single tag-string (i.e. 'em') as a parameter for the 
> function call, instead of the open-ended user entry of a string?
>
> I visualize doing something like   ':TagSelection em' for the action to be 
> applied without further interaction.  Is that possible?
>
> Thank you in advance for anyone's contributing that modified code.
>
> Eric
>
> On Wednesday 28 February 2024 at 15:45:11 UTC-5 Eric Marceau wrote:
>
>> Hi David,
>>
>> Your posting of the tip dates quite a while ago.
>>
>> Any idea if that would still work for vim/gvim 8.1 ?
>>
>> Is that added to the ~/.vim/vimrc  ?
>>
>> Finally, is that action triggered by typing the sequence   
>> ':TagSelection'   ?
>>
>> Thank you,
>>
>> Eric
>>
>> On Wednesday 5 May 2010 at 10:23:52 UTC-4 David Fishburn wrote:
>>
>>> On Tue, May 4, 2010 at 7:23 PM, discipulus <ger...@gmail.com> wrote: 
>>> ... 
>>> > It should have been {span class="sX"}discipulus{/span} 
>>> > 
>>> > I wrote this function just now: 
>>> > 
>>> > function! mytest() 
>>> >  let l:current_column=col('.') 
>>> >  exe 'normal b' 
>>> >  let l:beginning_column=col('.') 
>>> >  let l:diff = l:current_column - l:beginning_column + 1 
>>> > " this relies on the surround plugin 
>>> >  exe 'normal vs' 
>>> > endfunction 
>>> > 
>>> > What do you think and thanks for your response! 
>>>
>>> I wrote my own function specifically to wrap XML tags around some 
>>> highlighted text. If the text is part of a line I wrap it inline. If 
>>> the text (visually selected) spans multiple lines, then I add the tags 
>>> on new lines before and after the text. 
>>>
>>> I also allow you to add attributes and remove those when adding the 
>>> closing tag. 
>>>
>>> " Tip #346: Tag Select/Wrapper:/*{{{*/ 
>>> " http://vim.sourceforge.net/tips/tip.php?tip_id=346 
>>> " Author: David Fishburn 
>>> " These mappings and TagSelection function will allow you to place 
>>> " an XML tag around either the current word, or the current selected 
>>> " text. 
>>> " If the visual select is on a single line, the tag is wrapped 
>>> " around the text <this>way</this>. If the visual select extends 
>>> " over multiple lines, the tag is wrapped around the text 
>>> " <this> 
>>> " way 
>>> " </this> 
>>> " 
>>> " When you are prompted for the tag name, you can enter: 
>>> " Tag name? p class="classname" attri="bute" 
>>> " The select is wrapped with: 
>>> " <p class="classname" attri="bute"> 
>>> " Your selection 
>>> " </p> 
>>> " Notice the attributes have been stripped from the closing tag. 
>>> " 
>>> " Use nmap, not nnoremap, since we do want to use an existing mapping 
>>> nmap ,,, viw,,, 
>>> vnoremap ,,, <Esc>:call TagSelection()<CR> 
>>>
>>> function! TagSelection() 
>>> let tag = input("Tag name (include attributes)? ") 
>>>
>>> if strlen(tag) == 0 
>>> return 
>>> endif 
>>>
>>> " Save b register 
>>> let saveB = @b 
>>> " <C-R> seems to automatically reindent the line for some filetypes 
>>> " this will disable it until we have applied our changes 
>>> let saveIndent = &indentexpr 
>>> let curl = line(".") 
>>> let curc = col(".") 
>>> let &indentexpr = '' 
>>>
>>> " If the visual selection is over multiple lines, then place the 
>>> " data between the tags on newlines: 
>>> " <tag> 
>>> " data 
>>> " </tag> 
>>> let newline = '' 
>>> if getline("'>") != getline("'<") 
>>> let newline = "\n" 
>>> let curl = line("'>") 
>>> endif 
>>>
>>> " Strip off all but the first word in the tag for the end tag 
>>> let @b = newline . substitute( tag, '^[ \t"]*\(\<\S*\>\).*', '<\/\1>\e', 
>>> "" ) 
>>> let curc = curc + strlen(@b) 
>>> exec "normal `>a\<C-R>b" 
>>>
>>> let @b = substitute( tag, '^[ \t"]*\(\<.*\)', '<\1>\e', "" ) . newline 
>>> let curc = curc + strlen(@b) 
>>> exec "normal `<i\<C-R>b" 
>>>
>>> " Now format the area 
>>> exec "normal `<V'>j=" 
>>>
>>> " Restore b register 
>>> let @b = saveB 
>>> let &indentexpr = saveIndent 
>>>
>>> call cursor(curl, curc) 
>>> endfunction 
>>> " /*}}}*/ 
>>>
>>>
>>> If it is of any use to you. 
>>>
>>> Enjoy. 
>>> Dave 
>>>
>>> -- 
>>> You received this message from the "vim_use" 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 from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_use+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/d09dba03-dde5-4a98-aa32-7a125f06d837n%40googlegroups.com.

Reply via email to