# Right-align the prebreak symbol in a listings environment

I’m using the breaklines and prebreak option with listings, but I find it visually not very pleasing that the prebreak-symbols are not vertically aligned. I’d prefer if they were all on the very right of the listing.

Here is example code.

\documentclass{standalone}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[breaklines,breakatwhitespace,prebreak=!,basicstyle=\ttfamily]
This is a long line This is a long line This is a long line This is a long line This is a long line
This is another long line This is another long line This is another long line This is another long line
\end{lstlisting}
\end{document}


Which yields:

while I want something like

-
The listings documentation warns against using spaces (other than \space) in the token list for prebreak and postbreak: "You must not use dynamic space (in particular spaces) since internally we use \discretionary. However \space is redefined to be used inside tokens." The required alignment might be hard to achieve. –  Gonzalo Medina Mar 12 '13 at 15:11

A more or less ugly hack is the following. Instead of putting the prebreak symbol in the current line you can put the symbol inside the margin. The distance between the margin and the text body is given by marginparsep. So you can simple adjust it. The example needs two compilation steps.

\documentclass{article}
\usepackage{listings}

\usepackage{marginnote}
\begin{document}