]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/cmdline.py
Merge pull request #75 from pwoolcoc/master
[z_archive/twitter.git] / twitter / cmdline.py
index 421017016b69864c40a29dbcb432c23dd3dfc38c..f8ac4cd452578606852e101a5a31ea07540d8af4 100644 (file)
@@ -64,6 +64,12 @@ prompt: <twitter_shell_prompt e.g. '[cyan]twitter[R]> '>
 
 from __future__ import print_function
 
+try:
+    input = __builtins__['raw_input']
+except (AttributeError, KeyError):
+    pass
+
+
 CONSUMER_KEY='uS6hO2sV6tDKIOeVjhnFnQ'
 CONSUMER_SECRET='MEYTOS97VvlHX7K1rwHPEqVpTSqZ71HtvoK4sVuYk'
 
@@ -352,6 +358,7 @@ class Action(object):
             if (options['refresh'] and isinstance(action, StatusAction)):
                 while True:
                     doAction()
+                    sys.stdout.flush()
                     time.sleep(options['refresh_rate'])
             else:
                 doAction()
@@ -464,13 +471,29 @@ class SetStatusAction(Action):
         statusTxt = (" ".join(options['extra_args'])
                      if options['extra_args']
                      else str(input("message: ")))
+        replies = []
+        ptr = re.compile("@[\w_]+")
+        while statusTxt:
+            s = ptr.match(statusTxt)
+            if s and s.start() == 0:
+                replies.append(statusTxt[s.start():s.end()])
+                statusTxt = statusTxt[s.end()+1:]
+            else:
+                break
+        replies = " ".join(replies)
+        if len(replies) >= 140:
+            # just go back
+            statusTxt = replies
+            replies = ""
+
         splitted = []
         while statusTxt:
-            if len(statusTxt) > 140:
-                end = string.rfind(statusTxt, ' ', 0, 140)
+            limit = 140 - len(replies)
+            if len(statusTxt) > limit:
+                end = string.rfind(statusTxt, ' ', 0, limit)
             else:
-                end = 140
-            splitted.append(statusTxt[:end])
+                end = limit
+            splitted.append(" ".join((replies,statusTxt[:end])))
             statusTxt = statusTxt[end:]
 
         for status in splitted: