Index: branches/pyyaml3000/lib/yaml/reader.py
===================================================================
--- branches/pyyaml3000/lib/yaml/reader.py	(revision 46)
+++ branches/pyyaml3000/lib/yaml/reader.py	(revision 47)
@@ -66,5 +66,5 @@
         self.pointer = pointer
 
-    def get_snippet(self, max_length=79):
+    def get_snippet(self, indent=4, max_length=75):
         if self.buffer is None:
             return None
@@ -86,6 +86,14 @@
                 break
         snippet = self.buffer[start:end].encode('utf-8')
-        return head + snippet + tail + '\n'  \
-                + ' '*(self.pointer-start+len(head)) + '^' + '\n'
+        return ' '*indent + head + snippet + tail + '\n'  \
+                + ' '*(indent+self.pointer-start+len(head)) + '^'
+
+    def __str__(self):
+        snippet = self.get_snippet()
+        where = "  in \"%s\", line %d, column %d"   \
+                % (self.name, self.line+1, self.column+1)
+        if snippet is not None:
+            where += ":\n"+snippet
+        return where
 
 class ReaderError(YAMLError):
@@ -101,10 +109,10 @@
         if isinstance(self.character, str):
             return "'%s' codec can't decode byte #x%02x: %s\n"  \
-                    "\tin '%s', position %d."   \
+                    "  in \"%s\", position %d"    \
                     % (self.encoding, ord(self.character), self.reason,
                             self.name, self.position)
         else:
             return "unacceptable character #x%04x: %s\n"    \
-                    "\tin '%s', position %d."   \
+                    "  in \"%s\", position %d"    \
                     % (ord(self.character), self.reason,
                             self.name, self.position)
