Hi Steven,

answering the last question seems to be a good way to put all together
in a simpler way so let's back on your clever pseudocode, I'll add
comments on this.

Short anwser is:

* ArgIndent does exactly what your pseudocode expects
* you need *both* 'ci and 'ai to be turned on
* CTRL_D and CTRL_T is the way to increment/decrement manually
  in insert mode. >> and << in normal mode.

Long anwser: inoremap \<cr> to ArgIndent does exactly what your
pseudocode want but in a different way

> if (Enter is pressed after a single backslash)

        => inoremap \<cr>

> preserve the indentation and alignment of the previous line
        => 'ai and 'ci must be set

> * go to new line
> * add spaces to align to the second word in the previous line
> # word: anything that is not white space

let's rewrite ArgIndent in vim9script and add comments

command -nargs=0 ArgIndent {
        y | put # yyp in normal mode # stage 1
        s!\v^\s+\zs(\S+\s+).*!\=repeat(' ', 1 + len(submatch(1)))!
}

at the end of the stage 1, we have

                    this --example \
                    this --example \

and we want to remove 'this' which is a substitution from
this

        \v^\s+\zs(\S+\s+).*

to this

        \=repeat(' ', 1 + len(submatch(1)))

in details:

        \v        # use "perlish/extended" regexp syntax
        ^         # the begin of the line
        \s+       # at least one space|tab|nbsp
        \zs       # start matching there
                  # so previous chars will remain untouched
        (\S+\s+)  # capture a word "\S+" and the spaces after "\s+"
        .         # then the rest of the line

so in
                    this --example \

* 'this' is the word (submatch(1))
* '--example \' is the rest of the line

so the matched section is 'this --example \' and we replace it by
as many spaces as chars in in the word + 1

        1 + len(submatch(1))
        => 1 + len("this")
        => 1 + 4
        => 5

        repeat(' ', 5 )
        => '     '

so

                    this --example \

becomes

                         --example \

don't hesitate to ask if I wasn't clear.

regards


-- 
Marc Chantreux
Pôle CESAR (Calcul et services avancés à la recherche)
Université de Strasbourg
14 rue René Descartes,
BP 80010, 67084 STRASBOURG CEDEX
03.68.85.60.79

-- 
-- 
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 visit 
https://groups.google.com/d/msgid/vim_use/Z90Yb_gGzIXOCAdd%40prometheus.

Reply via email to