Index: configobj.py
===================================================================
--- configobj.py	(revision 24)
+++ configobj.py	(working copy)
@@ -1348,7 +1348,8 @@
                 if indent and (self.indent_type is None):
                     self.indent_type = indent[0]
                 # check for a multiline value
-                if value[:3] in ['"""', "'''"]:
+                if value[:3] in ['"""', "'''"] or (len(value) > 0 and
+                                                   value.rstrip()[-1] == ","):
                     try:
                         (value, comment, cur_index) = self._multiline(
                             value, infile, cur_index, maxline)
@@ -1585,37 +1586,64 @@
 
     def _multiline(self, value, infile, cur_index, maxline):
         """Extract the value, where we are in a multiline situation."""
-        quot = value[:3]
-        newvalue = value[3:]
-        single_line = self._triple_quote[quot][0]
-        multi_line = self._triple_quote[quot][1]
-        mat = single_line.match(value)
-        if mat is not None:
-            retval = list(mat.groups())
-            retval.append(cur_index)
-            return retval
-        elif newvalue.find(quot) != -1:
-            # somehow the triple quote is missing
-            raise SyntaxError
+        try:
+            # check for a multiline string
+            quot = value[:3]
+            newvalue = value[3:]
+            single_line = self._triple_quote[quot][0]
+            multi_line = self._triple_quote[quot][1]
+        except KeyError:
+            # is a multiline list
+            pass
+        else:
+            # handle multiline string
+            mat = single_line.match(value)
+            if mat is not None:
+                retval = list(mat.groups())
+                retval.append(cur_index)
+                return retval
+            elif newvalue.find(quot) != -1:
+                # somehow the triple quote is missing
+                raise SyntaxError
+            #
+            while cur_index < maxline:
+                cur_index += 1
+                newvalue += '\n'
+                line = infile[cur_index]
+                if line.find(quot) == -1:
+                    newvalue += line
+                else:
+                    # end of multiline, process it
+                    break
+            else:
+                # we've got to the end of the config, oops...
+                raise SyntaxError
+            mat = multi_line.match(line)
+            if mat is None:
+                # a badly formed line
+                raise SyntaxError
+            (value, comment) = mat.groups()
+            return (newvalue + value, comment, cur_index)
         #
+        # handle multiline list
+        newvalue = value
         while cur_index < maxline:
             cur_index += 1
-            newvalue += '\n'
             line = infile[cur_index]
-            if line.find(quot) == -1:
+            mat = self._keyword.match(line)
+            if mat is not None:
+                # next keyword is here
+                cur_index -= 1
+                break
+            if line.find(',') != -1:
                 newvalue += line
+                continue
             else:
-                # end of multiline, process it
+                # last item
+                newvalue += line
                 break
-        else:
-            # we've got to the end of the config, oops...
-            raise SyntaxError
-        mat = multi_line.match(line)
-        if mat is None:
-            # a badly formed line
-            raise SyntaxError
-        (value, comment) = mat.groups()
-        return (newvalue + value, comment, cur_index)
+        (value, comment) = self._handle_value(newvalue)
+        return (value, comment, cur_index)
 
     def _handle_configspec(self, configspec):
         """Parse the configspec."""
Index: configobj_test.py
===================================================================
--- configobj_test.py	(revision 24)
+++ configobj_test.py	(working copy)
@@ -616,6 +616,30 @@
     >>> e['d'] == 'test1, test2, test3,'
     1
     
+    Testing multiline lists.
+    >>> c = '''
+    ... a = test1,
+    ...     test2,
+    ...     test3
+    ... b = test1,
+    ...     test2,
+    ...     test3,
+    ... c = test1,
+    ...     test2,
+    ...     test3   # comment
+    ... d = test1,
+    ...     test2,
+    ...     test3,  # comment
+    ... '''
+    >>> d = ConfigObj(c.split('\\n'), raise_errors=True)
+    >>> d['a'] == ['test1', 'test2', 'test3']
+    1
+    >>> d['b'] == ['test1', 'test2', 'test3']
+    1
+    >>> d.inline_comments == {'a': None, 'b': None, 'c': '# comment',
+    ...  'd': '# comment'}
+    1
+    
     Testing creating from a dictionary.
     
     >>> f = {
