On Wednesday, March 4, 2015 at 1:29:15 PM UTC-6, ZyX wrote:
> 2015-03-04 16:04 GMT+03:00 at <[email protected]>:
> >
> > On Tuesday, March 3, 2015 at 10:37:12 AM UTC-6, ZyX wrote:
> > > 2015-03-03 17:17 GMT+03:00 at <[email protected]>:
> > > I found the following code on a stackexchange post: 
> > > http://tex.stackexchange.com/questions/1548/intelligent-paragraph-reflowing-in-vim
> > >
> > >
> > >
> > > The code is for environment-aware formatting in LaTeX.
> > >
> > >
> > >
> > > It's not longer working quite the way I want it---I think it is 
> > > interacting with one of my other plugins that has been updated---so I'd 
> > > like to try to modify it. However I don't have a great knowledge of the 
> > > Vim scripting language, so I don't really understand what's going on in 
> > > the code. Could someone explain it to me?
> > >
> > >
> > >
> > > You better explain how it is interacting. Based on the kind of 
> > > interaction it may appear that you need to know only a few lines. The 
> > > code below simply selects lines between some lines like `\start`…`    
> > > \start` and tells Vim to reformat them.
> > >
> > >
> > > Basically you need to know `:h range`, `:h gq` and, if you still don’t 
> > > understand other code, `:h :{command}` where `:{command}` is a lowercase 
> > > letter sequence at the start of the line with colon prepended.
> > >
> > >
> > >
> > > Alternatively/additionally, if you have a good solution for formatting in 
> > > LaTeX, please share!
> > >
> > >
> > >
> > > Here's the code. It's also on the Stackexchange post in case the 
> > > formatting gets messed up:
> > >
> > >
> > >
> > > " Reformat lines (getting the spacing correct) {{{
> > >
> > > fun! TeX_fmt()
> > >
> > >     if (getline(".") != "")
> > >
> > >     let save_cursor = getpos(".")
> > >
> > >         let op_wrapscan = &wrapscan
> > >
> > >         set nowrapscan
> > >
> > >         let par_begin = 
> > > '^\(%D\)\=\s*\($\|\\start\|\\stop\|\\Start\|\\Stop\|\\\(sub\)*section\>\|\\item\>\|\\NC\>\|\\blank\>\|\\noindent\>\)'
> > >
> > >         let par_end   = 
> > > '^\(%D\)\=\s*\($\|\\start\|\\stop\|\\Start\|\\Stop\|\\place\|\\\(sub\)*section\>\|\\item\>\|\\NC\>\|\\blank\>\)'
> > >
> > >     try
> > >
> > >       exe '?'.par_begin.'?+'
> > >
> > >     catch /E384/
> > >
> > >       1
> > >
> > >     endtry
> > >
> > >         norm V
> > >
> > >     try
> > >
> > >       exe '/'.par_end.'/-'
> > >
> > >     catch /E385/
> > >
> > >       $
> > >
> > >     endtry
> > >
> > >     norm gq
> > >
> > >         let &wrapscan = op_wrapscan
> > >
> > >     call setpos('.', save_cursor)
> > >
> > >     endif
> > >
> > > endfun
> > >
> > >
> > >
> > > nmap Q :call TeX_fmt()<CR>
> > >
> > >
> > >
> > > --
> > >
> > > --
> > >
> > > 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 [email protected].
> > >
> > > For more options, visit https://groups.google.com/d/optout.
> >
> > First, let me mention one thing I forgot to add---I modified the script 
> > according to the Stackexchange comment by "wmnorth" (see third comment down 
> > on that post)
> >
> > The specific behavior is difficult to pin/down replicate. But the general 
> > problem is that I will have a block of text that looks like:
> >
> > \begin{proof}
> >     blah blah blah
> >     blah blah $a = b$
> >     blah blah
> > \end{proof}
> >
> > but typically has many more lines than that.
> >
> > When I call this script in normal mode with the cursor on the interior part 
> > of the begin/end proof block, sometimes the indenting will be destroyed. 
> > Again, it's not always, and I haven't been able to isolate a minimal 
> > working example. (It also does not only happen with "proof" but also 
> > happens with other begin/end pairs.)
> 
> I believe indenting is destroyed if you select these inner parts by
> hand and do `gq`. If that is true you don’t need to do anything with
> your script, just bug other plugin’s authors with a working example
> once you find a way to isolate it. If that is false this is weird
> because script you use is pretty simple.
> 
> By the way, does “sometimes” mean “QuQ” gives different result? (I.e.
> does repeating the same action on the same text (after undo) yield
> different results?)
> 
> // I would’ve written it simpler and more robust though: this script
> is breaking a few best practices and uses strange methods for
> selecting a region.
> 
> >
> > --
> > --
> > 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 [email protected].
> > For more options, visit https://groups.google.com/d/optout.

Ok thanks that's very helpful. Highlighting by hand and formatting with `gq' 
does the same thing. (As does QuQ also.) So I suppose this function is not the 
direct problem.

-- 
-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to