__cvsid__ = "$Id$"
 __revision__ = "$Revision$"[11:-2]
 
-from __future__ import nested_scopes
-
 import cStringIO
 import inspect
 import sys
 import tokenize
 import types
+import wx
 
 def getAutoCompleteList(command='', locals=None, includeMagic=1, 
                         includeSingle=1, includeDouble=1):
     attributes.sort(lambda x, y: cmp(x.upper(), y.upper()))
     if not includeSingle:
         attributes = filter(lambda item: item[0]!='_' \
-                            or item[1]=='_', attributes)
+                            or item[1:2]=='_', attributes)
     if not includeDouble:
         attributes = filter(lambda item: item[:2]!='__', attributes)
     return attributes
 
 def getTokens(command):
     """Return list of token tuples for command."""
-    command = str(command)  # In case the command is unicode, which fails.
+
+    # In case the command is unicode try encoding it
+    if type(command) == unicode:
+        try:
+            command = command.encode(wx.GetDefaultPyEncoding())
+        except UnicodeEncodeError:
+            pass # otherwise leave it alone
+                
     f = cStringIO.StringIO(command)
     # tokens is a list of token tuples, each looking like: 
     # (type, string, (srow, scol), (erow, ecol), line)