Removing multiple blank lines when typesetting code listings
Posted on September 29, 2012
The listings
package in LaTeX has an option to collapse multiple empty lines
into a single empty line when typesetting code lists. Today, there was a
question on TeX.SE how to do something similar when using the minted
package. The t-vim
module uses the same principle as the minted
package.
So, I wondered how one could collapse multiple empty lines into a single
line in t-vim
?
In the vim
module, it is possible to specify a vimrc
file that is sourced
when the code snippet is loaded in the editor. I included this option to
pass options to syntax highlighting (e.g., for languages like sh
and tex
,
one can specify the flavor using keywords set in the .vimrc
file).
One can use this feature to pre-process the file using vim
macros. The
following regular expression collapses multiple lines to a single line:
%s/\(^\s*\n\)\{2,\}/\r/ge | w
So, we want this regular expression to be run when the file is loaded. The
t-vim
module writes the file with extension .tmp
, so the following
snippet works:
au BufEnter *.tmp %s/\(^\s*\n\)\{2,\}/\r/ge | w
We may use this from the t-vim
module as follows:
\usemodule[vim]
\startvimrc[name=collapse]
au BufEnter *.tmp %s/\(^\s*\n\)\{2,\}/\r/ge | w
\stopvimrc
\definevimtyping[CPPtyping][syntax=cpp, vimrc=collapse]
\starttext
\startCPPtyping
i++;
i++;
i--;
\stopCPPtyping
\stoptext
Agreed, this is not as simple as the extralines=1
option in the listings
package. But, it is not too complicated when you consider the fact that I had
not thought about this feature at all when I wrote the t-vim
module.
This entry was posted in T-Vim and tagged code formatting, blank lines.