Skip to main content
3 of 5
Added the sequence I use
Rmano
  • 758
  • 5
  • 18

Text formatting CVS-friendly

I have seen this very interesting article: http://dustycloud.org/blog/vcs-friendly-patchable-document-line-wrapping/ --- basically it is a suggestion for hard-breaking lines of text (for example, in markdown or LaTeX sources) to achieve both easy readability and easy "diff"-ability.

Basically, when I write in LaTeX normally I follow the classical way of "one line per phrase" (hard new line at full stop), and the mandatory blank line for paragraph. This is unfortunately almost unreadable in a diff of a very long phrase, especially if the change is near the end.

The suggested format is to have a line format (a la gqip) for every phrase, but keeping the phrases on their own. For example:

This is a short phrase. This, instead, is a very long, probably too long for English, phrase, but in other languages very long phrases are quite common, really --- and so on and so on.

should be formatted as (this has setl tw=60 to be more dramatic)

This is a short phrase. 
This, instead, is a very long, probably too long for
English, phrase, but in other languages very long phrases
are quite common, really --- and so on and so on.

I can go from the first to the last by hand:

  1. go to the first full stop,
  2. insert a linebreak,
  3. then go to the next line, issue a gqt. command,
  4. repeat until the end of the paragraph.

...but I am sure that there should be a better way. (I can try to write a little script for this, or define a key that do the steps all right, but I'd like to know if there is some magic that can change the gqip command to automatically do it).

Update I use

nnoremap <leader>. f.a<CR>^[gqt.

(the ^[ is a literal escape) which is handy, but fails if the paragraph has just one phrase...)

Rmano
  • 758
  • 5
  • 18