I'm trying to draw the intersection of the following two equations: x^2+y^2=4 (a circle of radius 2) and z=x+4. I got kind of close with tikz-3dplot (which has preferrable output in my opinion), but when it got hard I couldn't find any examples to take code from. I also couldn't find any way to input any function (that would fix everything instantly). The output of the tikz-3dplot figure shows the cylinder nicely:

I also included some vague first attempt with pgfplots. It describes the line enclosing the interval nicely, but about everything is said with that: the colour is random, I wouldn't know how to fill the curve, etc.

I have a strong preference for the nice and clean output of tikz-3dplot as well and I'd still like to show the cylinder in the final picture.
So I can imagine I'm heading in the wrong direction since I've hit a brick wall now, which leads me to the following question:
What's a more accessible way to still get pretty output of the intersection of the cylinder and the plane?
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepackage{tikz-3dplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
xlabel=$x$,ylabel=$y$%
]%
\addplot3[surf,%
samples=30,%
domain=-1:0,%
y domain=0:2*pi%
]%
({ cos(deg(y))},%
{ sin(deg(y))},%
{4+cos(deg(y))});%
% Is ignored?
% ({ 2cos(deg(y))},%
% { 2sin(deg(y))},%
% 0);%
\end{axis}
\end{tikzpicture}
\def\a{155}
\tdplotsetmaincoords{65}{\a}
\begin{tikzpicture}
[scale=5,
tdplot_main_coords,
axis/.style={->,black,very thin},
curve/.style={black,thin}]
\def\radius{.3}
\def\axissize{.6}
\def\th{1.2}
%\node[left] at (0,0,.6) {$z=x+4$};
\draw[axis] (\radius,0,0) -- (\axissize,0,0) node[anchor=north east]{$x$};
\draw[axis,-,dashed] (0,0,0) -- (\radius,0,0);
\draw[axis,-,dashed] (0,0,0) -- (0,\radius,0);
\draw[axis] (0,\radius,0) -- (0,\axissize,0) node[anchor=north west]{$y$};
\draw[axis,-,dashed] (0,0,0) -- (0,0,\th);
\draw[axis] (0,0,\th) -- (0,0,\th+.5*\axissize) node[anchor=south]{$z$};
\draw[axis,dashed,-] (0,0,0) -- (-\radius-.03,0,0) node[anchor=south west]{};
\draw[axis] (-\radius-.03,0,0) -- (-\axissize,0,0) node[anchor=south west]{};
\draw[axis,dashed] (0,0,0) -- (0,-\axissize,0) node[anchor=south east]{};
\tdplotsinandcos{\sintheta}{\costheta}{0}
\foreach \height in {0,\th}{
\tdplotdrawarc[curve,very thin]{(0,0,\height)}{\radius*\costheta}{-25}{\a}{}{}
}
\tdplotdrawarc[curve,very thin,dashed]{(0,0,0)}{\radius*\costheta}{\a}{\a+180}{}{}
\tdplotdrawarc[curve,very thin]{(0,0,\th)}{\radius*\costheta}{\a}{\a+180}{}{}
\tdplotsinandcos{\sintheta}{\costheta}{\a}
\draw (\radius*\costheta,\radius*\sintheta,0) -- (\radius*\costheta,\radius*\sintheta,\th);
\tdplotsinandcos{\sintheta}{\costheta}{\a+180}
\draw (\radius*\costheta,\radius*\sintheta,0) -- (\radius*\costheta,\radius*\sintheta,\th);
% I tried something here but it doesn't work :-(
% \tdplotsetthetaplanecoords{0}
% \tdplotsetrotatedthetaplanecoords{45}
% \tdplotsinandcos{\sintheta}{\costheta}{45}
% \tdplotdrawarc[draw=none,tdplot_rotated_coords,fill=cyan!50,opacity=.5]{(-4*\radius,0,0)}{\radius}{0}{360}{}{}
\end{tikzpicture}
\end{document}
