This is a supplement to lockstep's answer.
When you perform the length modifications, the list parameters are already set up using the TeX \parshape primitive. For shaping properties, you need to use the second argument in \begin{list}{#1}{#2} since it is inserted before setting the list shape:
\def\list#1#2{%
\ifnum \@listdepth >5\relax
\@toodeep
\else
\global\advance\@listdepth\@ne
\fi
\rightmargin\z@
\listparindent\z@
\itemindent\z@
\csname @list\romannumeral\the\@listdepth\endcsname
\def\@itemlabel{#1}%
\let\makelabel\@mklab
\@nmbrlistfalse
#2\relax % <---- #2 is inserted here
\@trivlist
\parskip\parsep
\parindent\listparindent
\advance\linewidth -\rightmargin
\advance\linewidth -\leftmargin
\advance\@totalleftmargin \leftmargin
\parshape \@ne \@totalleftmargin \linewidth % <---- this sets the paragraph shape
\ignorespaces}
Knowing the list has an indent of \@totalleftmargin, which is \advanced by \leftmargin, it also works to set \@totalleftmargin to -\leftmargin:

\documentclass{article}
\usepackage{lipsum}% http://ctan.org/pkg/lipsum
\begin{document}
\noindent No indentation --- before the \verb|list|.
\begin{list}{}{}
\makeatletter
\setlength{\leftskip}{-\@totalleftmargin}
\makeatother
\item \lipsum[2]
\item \lipsum[1]
\end{list}
\end{document}