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/08d6aee9-4e4c-4165-917b-38675c9f994en%40googlegroups.com.

Reply via email to