On 2021-12-06, Bram Moolenaar wrote:
> Gary Johnson wrote:
>
> > On 2021-12-06, Bram Moolenaar wrote:
> > > > On So, 05 Dez 2021, Gary Johnson wrote:
> > > >
> > > > > On 2021-11-18, Bram Moolenaar wrote:
> > > > > > Patch 8.2.3615
> > > > > > Problem: When re-formatting with an indent expression the first
> > > > > > line of a
> > > > > > paragraph may get the wrong indent. (Martin F. Krafft)
> > > > > > Solution: Apply the correct indenting function for the first line.
> > > > > > (Christian Brabandt, closes #9150, closes #9056)
> > > > > > Files: src/textformat.c, src/testdir/test_indent.vim
> > > > >
> > > > > This new behavior is a bug. It has made vim less useful.
> > > > >
> > > > > When I want to format, I want to format. When I want to indent,
> > > > > I want to indent. I don't want formatting, e.g., gq, to also
> > > > > indent.
> > > > >
> > > > > I frequently have text that I have manually indented to my liking,
> > > > > and I then want to format it so that the lines are properly wrapped.
> > > > > I want those lines wrapped according to the current indentation, not
> > > > > the current indentation rules. If I want it indented according to
> > > > > the current indentation rules, I will indent it with = first.
> > > > >
> > > > > Please fix this.
> > > >
> > > > The old behaviour already applied the indenting settings to all lines
> > > > *except* for the very first line, which caused inconsistent indented
> > > > lines. The patch simply makes sure to also apply the indenting to the
> > > > very first line.
> > > >
> > > > I was also a bit confused that indenting applied to lines being
> > > > formatted because I always thought indenting and auto-formatting are
> > > > some different features. But I believe when auto-formatting and Vim is
> > > > breaking a very long line, it does make sense to apply the indenting
> > > > settings to the line being split.
> > > >
> > > > Changing this behaviour now may break other users expectations. So I am
> > > > not sure how to fix this.
> > >
> > > I'm not sure why you set up auto-indenting and do not want it to be
> > > applied. Auto-indenting triggers quite often, especially when adding a
> > > linke break, since then the indent for the next line has to be decided.
> > > And the line before is now done, so usually it also needs the indent to
> > > be recomputed.
> > >
> > > I guess the auto-indenting is not doing what you want, so you would need
> > > to fix how it works.
> >
> > The way it used to work, the way it worked for as long as I can
> > remember, was to follow the indentation of the first line. So
> > I could set the first line to whatever indentation I wanted, then
> > reformat that line and any subsequent lines to have the desired
> > indent, text width and comment leader.
> >
> > Most of the time, Vim's auto-indenting creates the desired
> > indentation, so most of the time it does do what I want. But there
> > are exceptions.
> >
> > Here is a common example in C.
> >
> > foo()
> > {
> > int x; // Here is an end-of-line comment
> > // beginning at column 41 and
> > // extending for a few more lines.
> >
> > If I want to edit that comment after the first line, or change the
> > indent amount, I could do so and reformat the comment with gq
> > starting on the second line. The rest of the lines would be aligned
> > under that line. Now the indentation is shifted to be under the
> > "int".
>
> But if you try to indent the second line, or use "gq" on the first, then
> it doesn't line up as you like. This is a missing feature in 'cindent'.
> Even if we fix the problem you refer to.
>
> > The only way I know of to correct the indentation is to
> > shift that line back where I want it, manually find the right place
> > to break the line, break it there, then reformat the third and
> > subsequent lines with gq.
> >
> > Vim used to do most of that for me automatically. At least what it
> > did helped me and didn't hinder my editing.
> >
> > Another example is Vim script.
> >
> > set tw=66 " Comment explaining why 66.
> > map this that
> > " Can't put an end-of-line comment on the
> > " same line as a mapping, so put it here.
> >
> > I can't reformat that second comment anymore because Vim now insists
> > on changing the indent.
>
> True, this one can't be fixed, the indent is set manually.
>
> > The indentation rules were pretty simple: Vim chose a place for the
> > indentation of a line. If I didn't like that place, for whatever
> > reason, I could move the indentation to where I wanted it. Then
> > I could reformat that line and any subsequent lines with gq and
> > everything was good. Now, gq re-indents the first line of the
> > region, which is not its purpose, and there is no way that I know of
> > to fix that.
>
> In the second example I have to agree.
>
> > I haven't read the initial discussion recently, but I don't really
> > understand the problem with the way indentation and formatting used
> > to work. If I was just typing code or text, they "just worked". If
> > I needed to change the indentation of something, gq also "just
> > worked" afterward because it reformatted according to the
> > indentation of the first line of the region.
> >
> > My expectation is that the behavior of gq not be broken. Add an
> > option to set the behavior if you want. Add a plugin to change it
> > if you want. But don't change the way it has always has always been
> > in a way that is not an improvement for everyone without a way to
> > have the traditional behavior.
>
> Please check issue https://github.com/vim/vim/issues/9056
> This is a valid problem, when formatting several lines of text the
> indent of the first line of a block is wrong, because the formatting
> doesn't change it. You can indent all the lines, but then the
> formatting is wrong, the lines will be too long.
>
> We need to have a way to indent and format at the same time. Perhaps a
> solution is to not change the indent of the very first line, since we
> can assume it's either correct or the user could have set it manually.
> But do indent all the lines after it. I think that solves both
> problems.
I had a look at the issue and couldn't understand it at first
because I didn't see the problem--the OP's example file indented
just fine, without any hanging indents after gggqG. Then I repeated
the experiment without my usual configuration:
$ vim -N -u NONE -i NONE --cmd 'filetype plugin indent on' indent_issue.tex
gggqG left the hanging indents. Then I checked 'indentexpr'. For
the bad-indentation case:
:verbose set indentexpr?
indentexpr=GetTeXIndent()
Last set from /usr/local/share/vim/vim82/indent/tex.vim line 166
but for my usual setup, which reformatted without the hanging
indents:
:verbose set indentexpr?
indentexpr=GetTeXIndent()
Last set from ~/.vim/vim-latex/indent/tex.vim line 125
I was using a Vim without patch 8.2.3615.
So the issue may be with Vim's default GetTeXIndent() and not
necessarily with gq.
Regards,
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/vim_dev/20211206230240.GF13906%40phoenix.