On 2020-10-12, L A Walsh wrote:
> On 2020/10/10 23:10, Gary Johnson wrote:
> >On 2020-10-10, L A Walsh wrote:
> >>:%s/>/>^M/g
> >>:%s/<\([^>]\+\)>\n\([^>]\+\)<\/\1>/<\1>\2<\\\1>
> >
> >I don't know of a way to do that with one command, ....
> >then execute the following
> >normal-mode command.
> >
> >    gg=G
> ---
> close enough, as I gave 'ggap' as an example for text.
> 
> >You might also search the web for HTML Tidy.  I think it will
> >reformat an HTML file.
> ---
>    yeah, but it was xml and main requirement was to run
> pretty much in (g)vim.  You got like 100% for my original
> question!  But ran into a quirky special case that fails with
> normal vim indenting as well (works if I split all
> lines 1st), but if some of the close tags are on same line
> as open, doesn't seem to unindent...
> 
> Example, starting with:
> <xml>
> <totalbytes>2952962267<\totalbytes>
> <image index="1">
> <dircount>13363<\dircount>
> <filecount>64267<\filecount>
> <totalbytes>11707704502<\totalbytes>
> <creationtime>
> <highpart>0x01cb8936<\highpart>
> <lowpart>0x131f339a<\lowpart>
> </creationtime>
> <lastmodificationtime>
> <highpart>0x01cb8950<\highpart>
> <lowpart>0xbc4d774b<\lowpart>
> </lastmodificationtime>
> <doors>
> <arch>9<\arch>
> <hal>acpiapic<\hal>
> <languages>
> <language>en-us<\language>
> <default>en-us<\default>
> </languages>
> <systemroot>doors<\systemroot>
> </doors>
> <hardlinkbytes>4497873056<\hardlinkbytes>
> </image>
> </xml>
> 
> Running '=' over that, (filetype=xml, syn=xml) using expand tab, I get:
> 
> <xml>
>  <totalbytes>2952962267<\totalbytes>
>    <image index="1">
>      <dircount>13363<\dircount>
>        <filecount>64267<\filecount>
>          <totalbytes>11707704502<\totalbytes>
>            <creationtime>
>              <highpart>0x01cb8936<\highpart>
>                <lowpart>0x131f339a<\lowpart>
>                </creationtime>
>                <lastmodificationtime>
>                  <highpart>0x01cb8950<\highpart>
>                    <lowpart>0xbc4d774b<\lowpart>
>                    </lastmodificationtime>
>                    <doors>
>                      <arch>9<\arch>
>                        <hal>acpiapic<\hal>
>                          <languages>
>                            <language>en-us<\language>
>                              <default>en-us<\default>
>                              </languages>
>                              <systemroot>doors<\systemroot>
>                              </doors>
>                              <hardlinkbytes>4497873056<\hardlinkbytes>
>                              </image>
>                            </xml>
> 
> ----
> Seems if I have some closing tags on same line it doesn't
> unindent (happens in normal insert as well).  Seems unrelated
> to the method you gave.  I have seen the indent problem in other
> languages as well, but am stymied coming up with
> an example off the top of my head.
> 
> To emphasize, if all the tags (open+close) are on their
> own line, it works just fine.  But when some matching tags
> are on same line, I get mixed/weird results.
> 
> Anyone seen such fun?  And thanks again gary, for the '=',
> don't recall ever seeing that.

You're welcome.

I am no expert in XML, but I thought that closing tags began with
a slash, not a backslash; that is, with "</", not "<\".  Apparently
Vim's XML indent plugin thinks so, too.

I copied your example to another buffer, set its filetype to "xml",
replaced all backslashes with slashes, and executed "gg=G".  The
result was indented as I think you and I expected it to be, like
this:

    <xml>
      <totalbytes>2952962267</totalbytes>
      <image index="1">
        <dircount>13363</dircount>
        <filecount>64267</filecount>
        <totalbytes>11707704502</totalbytes>
        <creationtime>
          <highpart>0x01cb8936</highpart>
          <lowpart>0x131f339a</lowpart>
        </creationtime>
        <lastmodificationtime>
          <highpart>0x01cb8950</highpart>
          <lowpart>0xbc4d774b</lowpart>
        </lastmodificationtime>
        <doors>
          <arch>9</arch>
          <hal>acpiapic</hal>
          <languages>
            <language>en-us</language>
            <default>en-us</default>
          </languages>
          <systemroot>doors</systemroot>
        </doors>
        <hardlinkbytes>4497873056</hardlinkbytes>
      </image>
    </xml>

Regards,
Gary

-- 
-- 
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/20201013063405.GA16884%40phoenix.

Reply via email to