Archive of RubyForge sup-talk mailing list
 help / color / mirror / Atom feed
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  2009-02-16  8:53 ` Ian Smith
  0 siblings, 1 reply; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2011-12-10  3:08 Jason O'Conal
  0 siblings, 0 replies; 40+ messages in thread
From: Jason O'Conal @ 2011-12-10  3:08 UTC (permalink / raw)
  To: sup-talk

Hi,

I've been having trouble getting sup to work with my gmail account
downloaded by offlineimap. I have set up everything according to the
tutorial available at
http://sup.rubyforge.org/wiki/wiki.pl?GmailOfflineImapSmtp

I can't get sup-sync to run. I get the following error message:

/usr/lib/ruby/1.8/yaml.rb:133:in `transfer': invalid subclass (TypeError)
        from /usr/lib/ruby/1.8/yaml.rb:133:in `node_import'
        from /usr/lib/ruby/1.8/yaml.rb:133:in `load'
        from /usr/lib/ruby/1.8/yaml.rb:133:in `load'
        from /usr/lib/ruby/1.8/yaml.rb:144:in `load_file'
        from /usr/lib/ruby/1.8/yaml.rb:143:in `open'
        from /usr/lib/ruby/1.8/yaml.rb:143:in `load_file'
        from /usr/lib64/ruby/gems/1.8/gems/sup-0.12.1/lib/sup.rb:136:in
`load_yaml_obj'
        from /usr/lib64/ruby/gems/1.8/gems/sup-0.12.1/lib/sup.rb:266:in
`load_config'
        from /usr/lib64/ruby/gems/1.8/gems/sup-0.12.1/lib/sup.rb:157:in `start'
        from /usr/lib64/ruby/gems/1.8/gems/sup-0.12.1/bin/sup-sync:80
        from /usr/bin/sup-sync:19:in `load'
        from /usr/bin/sup-sync:19

I have tried to search for others with this error, but can't find
anything relevant (tried only using folders without spaces to no
avail). Any ideas?


Kind regards,

Jason O'Conal
_______________________________________________
sup-talk mailing list
sup-talk@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-talk


^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2010-11-15  0:49 Matthias Vallentin
  2010-11-15  1:42 ` Edward Z. Yang
                   ` (2 more replies)
  0 siblings, 3 replies; 40+ messages in thread
From: Matthias Vallentin @ 2010-11-15  0:49 UTC (permalink / raw)
  To: sup-talk

I am a Mutt user interested in switching to Sup. One thing that is not
clear to me is how to find new unread messages that skipped the inbox.
Coming from the world of mail folders, I can monitor each folder for
unread messages and switch to it when I see that a new one has arrived.
Often, a buffy tool (or the Mutt sidebar) can be used to display the
various folders with their new message counts. How would that mindset
translate to Sup? Would I have to regularly query all (or a just a
subset of) labels to get an idea whether label X "received" a new
message?

  Matthias
_______________________________________________
sup-talk mailing list
sup-talk@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-talk


^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-06-08  0:02 Ben Walton
  2009-06-11 23:50 ` Ben Walton
  2009-06-12 18:23 ` William Morgan
  0 siblings, 2 replies; 40+ messages in thread
From: Ben Walton @ 2009-06-08  0:02 UTC (permalink / raw)


Hi All,

Here's a stab at implementing a message bouncing functionality worthy
of being included on mainline.

The first patch adds the basic functionality with the ability to
supply a command in the :bounce_sendmail option that overrides the
default command used.  The default is to use the sendmail command of
the default account with -t removed.

The second patch takes this a step further and strips the
configuration option in favour of a hook named bounce-command.  This
hooks gets the From header of the message being bounced and an array
of recipient addresses supplied by the user.

I think these are in good shape, with the caveat that the mail sending
(IO.popen) part could still be refactored with the code in
edit-message-mode.

Anyone interested can grab this code from the bw/bounce_message branch
of git://code.chass.utoronto.ca/bwalton-sup.git.  It merges cleanly
into next as of now.

Feedback welcome.

Thanks
-Ben



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-06-01  1:01 Ben Walton
  2009-06-01  1:04 ` Ben Walton
                   ` (2 more replies)
  0 siblings, 3 replies; 40+ messages in thread
From: Ben Walton @ 2009-06-01  1:01 UTC (permalink / raw)


From 702b2cc1e652c1f20f4280b11355cb337291df87 Mon Sep 17 00:00:00 2001
From: Ben Walton <bwalton at artsci.utoronto.ca>
Date: Sun, 31 May 2009 20:37:11 -0400
Subject: [PATCH] Add bounce message feature

By pressing ! in thread view mode, a message can be re-injected to the
mail system without any modification.  The interesting/useful property
of this feature is that, because only the envelope sender changes, the
mail will show up at the new destination with the original From:
header.  A use case for this is redirecting mail sent to an individual
into a ticket system such that the original sender gets the
auto-response.

Signed-off-by: Ben Walton <bwalton at artsci.utoronto.ca>
---
 lib/sup/modes/thread-view-mode.rb |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
index 42c6280..4737dde 100644
--- a/lib/sup/modes/thread-view-mode.rb
+++ b/lib/sup/modes/thread-view-mode.rb
@@ -41,6 +41,7 @@ EOS
 #    k.add :collapse_non_new_messages, "Collapse all but unread messages", 'N'
     k.add :reply, "Reply to a message", 'r'
     k.add :forward, "Forward a message or attachment", 'f'
+    k.add :bounce, "Bounce message to other recipient(s)", '!'
     k.add :alias, "Edit alias/nickname for a person", 'i'
     k.add :edit_as_new, "Edit message as new", 'D'
     k.add :save_to_disk, "Save message/attachment to disk", 's'
@@ -172,6 +173,24 @@ EOS
     end
   end
 
+  def bounce
+    m = @message_lines[curpos] or return
+    to = BufferManager.ask_for_contacts(:people, "Bounce To: ") or return
+
+    if BufferManager.ask_yes_or_no "Really bounce to #{to.join(', ')}?"
+      cmd = "sendmail -oem -i #{to.map { |t| t.email}.join(' ')}"
+      begin
+        IO.popen(cmd, 'w') do |sm|
+          sm.puts m.raw_message
+        end
+        raise SendmailCommandFailed, "Couldn't execute #{cmd}" unless $? == 0
+      rescue SystemCallError, SendmailCommandFailed => e
+        Redwood::log "Problem sending mail: #{e.message}"
+        BufferManager.flash "Problem sending mail: #{e.message}"
+      end
+    end
+  end
+
   include CanAliasContacts
   def alias
     p = @person_lines[curpos] or return
-- 
1.6.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:45 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:45 UTC (permalink / raw)


From e7abf80a590aa2f2de35343fceecea9deae41193 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:11:46 -0500
Subject: [PATCH] Changed README to reflect addition of undo

---
 README.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/README.txt b/README.txt
index 1b2b516..05349d7 100644
--- a/README.txt
+++ b/README.txt
@@ -80,7 +80,7 @@ Current limitations which will be fixed:
 - Unix-centrism in MIME attachment handling and in sendmail
   invocation.
 
-- Several obvious missing features, like undo, filters / saved
+- Several obvious missing features, like filters / saved
   searches, message annotations, etc.
 
 == SYNOPSYS:
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:45 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:45 UTC (permalink / raw)


From 1fd41c30189db832abb54f1cda416d0aa624e028 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:11:28 -0500
Subject: [PATCH] Added undo for label edit

---
 lib/sup/modes/thread-index-mode.rb |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 159839d..f28302b 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -509,6 +509,10 @@ EOS
   def edit_labels
     thread = cursor_thread or return
     speciall = (@hidden_labels + LabelManager::RESERVED_LABELS).uniq
+
+    old_labels = thread.labels
+    pos = curpos
+
     keepl, modifyl = thread.labels.partition { |t| speciall.member? t }
 
     user_labels = BufferManager.ask_for_labels :label, "Labels for thread: ", modifyl, @hidden_labels
@@ -517,6 +521,15 @@ EOS
     thread.labels = keepl + user_labels
     user_labels.each { |l| LabelManager << l }
     update_text_for_line curpos
+
+    undo = lambda{
+      thread.labels = old_labels
+      update_text_for_line pos
+      UpdateManager.relay self, :labeled, thread.first
+    }
+
+    UndoManager.register("labeling thread #{thread.first.id}", undo)
+
     UpdateManager.relay self, :labeled, thread.first
   end
 
@@ -526,8 +539,18 @@ EOS
     
     hl = user_labels.select { |l| @hidden_labels.member? l }
     if hl.empty?
-      threads.each { |t| user_labels.each { |l| t.apply_label l } }
-      user_labels.each { |l| LabelManager << l }
+      undo = threads.map { |t| old_labels = t.labels
+        user_labels.each { |l| t.apply_label l }
+        ## UpdateManager or some other regresh mechanism?
+        UpdateManager.relay self, :labeled, t.first
+        lambda {
+          t.labels = old_labels
+          UpdateManager.relay self, :labeled, t.first
+        }
+      }
+    user_labels.each { |l| LabelManager << l }
+    UndoManager.register("labeling #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda { regen_text})
     else
       BufferManager.flash "'#{hl}' is a reserved label!"
     end
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:45 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:45 UTC (permalink / raw)


From 9a5ac47e979de8030756b88d4e52b6d8a289a25a Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:10:32 -0500
Subject: [PATCH] Added undo for delete thread

---
 lib/sup/modes/thread-index-mode.rb |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index ae7c299..159839d 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -443,11 +443,18 @@ EOS
     multi_kill [t]
   end
 
+  ## m-m-m-m-MULTI-KILL
   def multi_kill threads
-    threads.each do |t|
+    undo = threads.map do |t|
       t.apply_label :killed
       hide_thread t
+      thread = t
+      lambda { thread.remove_label :killed
+        add_or_unhide thread.first
+      }
     end
+    UndoManager.register("killing #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text})
     regen_text
     BufferManager.flash "#{threads.size.pluralize 'Thread'} killed."
   end
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:45 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:45 UTC (permalink / raw)


From d1b5ff3d022e0e6aeabf410b0778fd11a5449ed0 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:08:03 -0500
Subject: [PATCH] Added undo for thread deletion

---
 lib/sup/modes/thread-index-mode.rb |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 1e02b5b..ae7c299 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -326,12 +326,26 @@ EOS
 
   def actually_toggle_deleted t
     if t.has_label? :deleted
+      undo = lambda {
+        t.apply_label :deleted
+        hide_thread t
+        UpdateManager.relay self, :deleted, t.first
+      }
       t.remove_label :deleted
+      add_or_unhide t.first
       UpdateManager.relay self, :undeleted, t.first
     else
+      undo = lambda {
+        t.remove_label :deleted
+        add_or_unhide t.first
+        UpdateManager.relay self, :undeleted, t.first
+      }
       t.apply_label :deleted
+  hide_thread t
       UpdateManager.relay self, :deleted, t.first
     end
+
+    return undo
   end
 
   def toggle_archived 
@@ -418,10 +432,9 @@ EOS
 
   ## see comment for multi_toggle_spam
   def multi_toggle_deleted threads
-    threads.each do |t|
-      actually_toggle_deleted t
-      hide_thread t 
-    end
+    undo = threads.map{ |t| actually_toggle_deleted t}
+    UndoManager.register("deleting/undeleting #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text})
     regen_text
   end
 
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:45 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:45 UTC (permalink / raw)


From 31bb0fd8f6e701107ce79ad2dbd9d42da4635742 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:06:36 -0500
Subject: [PATCH] Added undo for spam

---
 lib/sup/modes/thread-index-mode.rb |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 62fdb85..1e02b5b 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -300,13 +300,28 @@ EOS
   end
 
   def actually_toggle_spammed t
+    thread = t
     if t.has_label? :spam
+      undo = lambda {
+        thread.apply_label :spam
+        self.hide_thread thread
+        UpdateManager.relay self,:spammed, thread.first
+      }
       t.remove_label :spam
+      add_or_unhide t.first
       UpdateManager.relay self, :unspammed, t.first
     else
+      undo = lambda {
+        thread.remove_label :spam
+        add_or_unhide thread.first
+        UpdateManager.relay self,:unspammed, thread.first
+      }
       t.apply_label :spam
+      hide_thread t
       UpdateManager.relay self, :spammed, t.first
     end
+
+    return undo
   end
 
   def actually_toggle_deleted t
@@ -390,10 +405,9 @@ EOS
   ## see deleted or spam emails, and when you undelete or unspam them
   ## you also want them to disappear immediately.
   def multi_toggle_spam threads
-    threads.each do |t|
-      actually_toggle_spammed t
-      hide_thread t 
-    end
+    undo = threads.map{ |t| actually_toggle_spammed t}
+    UndoManager.register("marking/unmarking #{threads.size} #{threads.size.pluralize 'thread'} as spam",
+                         undo <<  lambda {self.regen_text})
     regen_text
   end
 
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:45 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:45 UTC (permalink / raw)


From e42299ce17ed7c12989d0c8a6dea2ed100921e4a Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:03:57 -0500
Subject: [PATCH] Added undo for starring

---
 lib/sup/modes/thread-index-mode.rb |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 120acad..62fdb85 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -237,24 +237,41 @@ EOS
   end
 
   def actually_toggle_starred t
+    thread = t # cargo cult programming
+    pos = curpos
     if t.has_label? :starred # if ANY message has a star
+      undo = lambda {
+        thread.first.add_label :starred
+        update_text_for_line pos
+        UpdateManager.relay self, :starred, thread.first
+      }
       t.remove_label :starred # remove from all
       UpdateManager.relay self, :unstarred, t.first
     else
+      undo = lambda {
+        thread.remove_label :starred
+        update_text_for_line pos
+        UpdateManager.relay self, :unstarred, thread.first
+      }
       t.first.add_label :starred # add only to first
       UpdateManager.relay self, :starred, t.first
     end
+
+    return undo
   end  
 
   def toggle_starred 
     t = cursor_thread or return
-    actually_toggle_starred t
+    undo = actually_toggle_starred t
+    UndoManager.register("starring/unstarring thread #{t.first.id}",undo)
     update_text_for_line curpos
     cursor_down
   end
 
   def multi_toggle_starred threads
-    threads.each { |t| actually_toggle_starred t }
+    undo = threads.map { |t| actually_toggle_starred t }
+    UndoManager.register("starring/unstarring #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo)
     regen_text
   end
 
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:45 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:45 UTC (permalink / raw)


From 61a256d09ec8091e5ab44cc4e0e5c9c24c81a4cf Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:40:39 -0500
Subject: [PATCH] Added undo for archive

---
 lib/sup/modes/inbox-mode.rb        |   35 +++++++++++++++++++++++++++++++++++
 lib/sup/modes/thread-index-mode.rb |   21 +++++++++++++++++++--
 2 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/lib/sup/modes/inbox-mode.rb b/lib/sup/modes/inbox-mode.rb
index 559892d..21eb9ac 100644
--- a/lib/sup/modes/inbox-mode.rb
+++ b/lib/sup/modes/inbox-mode.rb
@@ -26,12 +26,28 @@ class InboxMode < ThreadIndexMode
 
   def archive
     return unless cursor_thread
+    thread = cursor_thread # to make sure lambda only knows about 'old' cursor_thread
+
+    undo = lambda {
+      thread.apply_label :inbox
+      add_or_unhide thread.first
+    }
+    UndoManager.register("archiving thread #{thread.first.id}", undo)
+
     cursor_thread.remove_label :inbox
     hide_thread cursor_thread
     regen_text
   end
 
   def multi_archive threads
+    undo = threads.map {|t|
+             lambda{
+               t.apply_label :inbox
+               add_or_unhide t.first
+             }}
+    UndoManager.register("archiving #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text} )
+
     threads.each do |t|
       t.remove_label :inbox
       hide_thread t
@@ -41,6 +57,15 @@ class InboxMode < ThreadIndexMode
 
   def read_and_archive
     return unless cursor_thread
+    thread = cursor_thread # to make sure lambda only knows about 'old' cursor_thread
+
+    undo = lambda {
+      thread.apply_label :inbox
+      thread.apply_label :unread
+      add_or_unhide thread.first
+    }
+    UndoManager.register("reading and archiving thread ", undo)
+
     cursor_thread.remove_label :unread
     cursor_thread.remove_label :inbox
     hide_thread cursor_thread
@@ -48,6 +73,16 @@ class InboxMode < ThreadIndexMode
   end
 
   def multi_read_and_archive threads
+    undo = threads.map {|t|
+      lambda {
+        t.apply_label :inbox
+        t.apply_label :unread
+        add_or_unhide t.first
+      }
+    }
+    UndoManager.register("reading and archiving #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text})
+
     threads.each do |t|
       t.remove_label :unread
       t.remove_label :inbox
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index ee30284..120acad 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -259,13 +259,27 @@ EOS
   end
 
   def actually_toggle_archived t
+    thread = t
+    pos = curpos
     if t.has_label? :inbox
       t.remove_label :inbox
+      undo = lambda {
+        thread.apply_label :inbox
+        update_text_for_line pos
+        UpdateManager.relay self,:unarchived, thread.first
+      }
       UpdateManager.relay self, :archived, t.first
     else
       t.apply_label :inbox
+      undo = lambda {
+        thread.remove_label :inbox
+        update_text_for_line pos
+        UpdateManager.relay self, :unarchived, thread.first
+      }
       UpdateManager.relay self, :unarchived, t.first
     end
+
+    return undo
   end
 
   def actually_toggle_spammed t
@@ -290,12 +304,15 @@ EOS
 
   def toggle_archived 
     t = cursor_thread or return
-    actually_toggle_archived t
+    undo = [actually_toggle_archived(t), lambda {self.update_text_for_line curpos}]
+    UndoManager.register("deleting/undeleting thread #{t.first.id}",undo)
     update_text_for_line curpos
   end
 
   def multi_toggle_archived threads
-    threads.each { |t| actually_toggle_archived t }
+    undo = threads.map { |t| actually_toggle_archived t}
+    UndoManager.register("deleting/undeleting #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {self.regen_text})
     regen_text
   end
 
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:44 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:44 UTC (permalink / raw)


From 9b863d8c86226b3d148e56060092556e2b13a5df Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:39:50 -0500
Subject: [PATCH] Added UndoManager class

The UndoManager keeps a list of lambdas that undo actions. It's designed to be used by keypress hooks. It is initialized in the main sup thread along with UpdateManager, etc.
---
 lib/sup.rb                         |    2 +
 lib/sup/modes/thread-index-mode.rb |    6 +++++
 lib/sup/undo.rb                    |   42 ++++++++++++++++++++++++++++++++++++
 3 files changed, 50 insertions(+), 0 deletions(-)
 create mode 100644 lib/sup/undo.rb

diff --git a/lib/sup.rb b/lib/sup.rb
index 93369a5..eda673b 100644
--- a/lib/sup.rb
+++ b/lib/sup.rb
@@ -125,6 +125,7 @@ module Redwood
     Redwood::PollManager.new
     Redwood::SuicideManager.new Redwood::SUICIDE_FN
     Redwood::CryptoManager.new
+    Redwood::UndoManager.new
   end
 
   def finish
@@ -281,6 +282,7 @@ require "sup/tagger"
 require "sup/draft"
 require "sup/poll"
 require "sup/crypto"
+require "sup/undo"
 require "sup/horizontal-selector"
 require "sup/modes/line-cursor-mode"
 require "sup/modes/help-mode"
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 4de4613..ee30284 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -44,6 +44,7 @@ EOS
     k.add :tag_matching, "Tag matching threads", 'g'
     k.add :apply_to_tagged, "Apply next command to all tagged threads", ';'
     k.add :join_threads, "Force tagged threads to be joined into the same thread", '#'
+    k.add :undo, "Undo the previous action", 'u'
   end
 
   def initialize hidden_labels=[], load_thread_opts={}
@@ -83,6 +84,7 @@ EOS
 
   def reload
     drop_all_threads
+    UndoManager.clear
     BufferManager.draw_screen
     load_threads :num => buffer.content_height
   end
@@ -208,6 +210,10 @@ EOS
     add_or_unhide m
   end
 
+  def undo
+    UndoManager.undo
+  end
+
   def update
     @mutex.synchronize do
       ## let's see you do THIS in python
diff --git a/lib/sup/undo.rb b/lib/sup/undo.rb
new file mode 100644
index 0000000..250433d
--- /dev/null
+++ b/lib/sup/undo.rb
@@ -0,0 +1,42 @@
+module Redwood
+
+## Implements a single undo list for the Sup instance
+##
+## The basic idea is to keep a list of lambdas to undo
+## things. When an action is called (such as 'archive'),
+## a lambda is registered with UndoManager that will
+## undo the archival action
+
+class UndoManager
+  include Singleton
+
+  def initialize
+    @@actionlist = []
+    self.class.i_am_the_instance self
+  end
+
+  def register desc, actions
+    actions = [actions] unless actions.is_a?Array
+    raise StandardError, "when would I need to undo 'nothing?'" unless actions.length > 0
+    Redwood::log "registering #{actions.length} actions: #{desc}"
+    @@actionlist.push({:desc => desc, :actions => actions})
+  end
+
+  def undo
+    unless @@actionlist.length == 0 then
+      actionset = @@actionlist.pop
+      Redwood::log "undoing #{actionset[:desc]}..."
+      actionset[:actions].each{|action|
+        action.call
+      }
+      BufferManager.flash "undid #{actionset[:desc]}"
+    else
+      BufferManager.flash "nothing more to undo"
+    end
+  end
+
+  def clear
+    @@actionlist = []
+  end
+end
+end
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:27 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:27 UTC (permalink / raw)


From 9b863d8c86226b3d148e56060092556e2b13a5df Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:39:50 -0500
Subject: [PATCH] Added UndoManager class

The UndoManager keeps a list of lambdas that undo actions. It's designed to be used by keypress hooks. It is initialized in the main sup thread along with UpdateManager, etc.
---
 lib/sup.rb                         |    2 +
 lib/sup/modes/thread-index-mode.rb |    6 +++++
 lib/sup/undo.rb                    |   42 ++++++++++++++++++++++++++++++++++++
 3 files changed, 50 insertions(+), 0 deletions(-)
 create mode 100644 lib/sup/undo.rb

diff --git a/lib/sup.rb b/lib/sup.rb
index 93369a5..eda673b 100644
--- a/lib/sup.rb
+++ b/lib/sup.rb
@@ -125,6 +125,7 @@ module Redwood
     Redwood::PollManager.new
     Redwood::SuicideManager.new Redwood::SUICIDE_FN
     Redwood::CryptoManager.new
+    Redwood::UndoManager.new
   end
 
   def finish
@@ -281,6 +282,7 @@ require "sup/tagger"
 require "sup/draft"
 require "sup/poll"
 require "sup/crypto"
+require "sup/undo"
 require "sup/horizontal-selector"
 require "sup/modes/line-cursor-mode"
 require "sup/modes/help-mode"
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 4de4613..ee30284 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -44,6 +44,7 @@ EOS
     k.add :tag_matching, "Tag matching threads", 'g'
     k.add :apply_to_tagged, "Apply next command to all tagged threads", ';'
     k.add :join_threads, "Force tagged threads to be joined into the same thread", '#'
+    k.add :undo, "Undo the previous action", 'u'
   end
 
   def initialize hidden_labels=[], load_thread_opts={}
@@ -83,6 +84,7 @@ EOS
 
   def reload
     drop_all_threads
+    UndoManager.clear
     BufferManager.draw_screen
     load_threads :num => buffer.content_height
   end
@@ -208,6 +210,10 @@ EOS
     add_or_unhide m
   end
 
+  def undo
+    UndoManager.undo
+  end
+
   def update
     @mutex.synchronize do
       ## let's see you do THIS in python
diff --git a/lib/sup/undo.rb b/lib/sup/undo.rb
new file mode 100644
index 0000000..250433d
--- /dev/null
+++ b/lib/sup/undo.rb
@@ -0,0 +1,42 @@
+module Redwood
+
+## Implements a single undo list for the Sup instance
+##
+## The basic idea is to keep a list of lambdas to undo
+## things. When an action is called (such as 'archive'),
+## a lambda is registered with UndoManager that will
+## undo the archival action
+
+class UndoManager
+  include Singleton
+
+  def initialize
+    @@actionlist = []
+    self.class.i_am_the_instance self
+  end
+
+  def register desc, actions
+    actions = [actions] unless actions.is_a?Array
+    raise StandardError, "when would I need to undo 'nothing?'" unless actions.length > 0
+    Redwood::log "registering #{actions.length} actions: #{desc}"
+    @@actionlist.push({:desc => desc, :actions => actions})
+  end
+
+  def undo
+    unless @@actionlist.length == 0 then
+      actionset = @@actionlist.pop
+      Redwood::log "undoing #{actionset[:desc]}..."
+      actionset[:actions].each{|action|
+        action.call
+      }
+      BufferManager.flash "undid #{actionset[:desc]}"
+    else
+      BufferManager.flash "nothing more to undo"
+    end
+  end
+
+  def clear
+    @@actionlist = []
+  end
+end
+end
-- 
1.5.3

From 61a256d09ec8091e5ab44cc4e0e5c9c24c81a4cf Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:40:39 -0500
Subject: [PATCH] Added undo for archive

---
 lib/sup/modes/inbox-mode.rb        |   35 +++++++++++++++++++++++++++++++++++
 lib/sup/modes/thread-index-mode.rb |   21 +++++++++++++++++++--
 2 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/lib/sup/modes/inbox-mode.rb b/lib/sup/modes/inbox-mode.rb
index 559892d..21eb9ac 100644
--- a/lib/sup/modes/inbox-mode.rb
+++ b/lib/sup/modes/inbox-mode.rb
@@ -26,12 +26,28 @@ class InboxMode < ThreadIndexMode
 
   def archive
     return unless cursor_thread
+    thread = cursor_thread # to make sure lambda only knows about 'old' cursor_thread
+
+    undo = lambda {
+      thread.apply_label :inbox
+      add_or_unhide thread.first
+    }
+    UndoManager.register("archiving thread #{thread.first.id}", undo)
+
     cursor_thread.remove_label :inbox
     hide_thread cursor_thread
     regen_text
   end
 
   def multi_archive threads
+    undo = threads.map {|t|
+             lambda{
+               t.apply_label :inbox
+               add_or_unhide t.first
+             }}
+    UndoManager.register("archiving #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text} )
+
     threads.each do |t|
       t.remove_label :inbox
       hide_thread t
@@ -41,6 +57,15 @@ class InboxMode < ThreadIndexMode
 
   def read_and_archive
     return unless cursor_thread
+    thread = cursor_thread # to make sure lambda only knows about 'old' cursor_thread
+
+    undo = lambda {
+      thread.apply_label :inbox
+      thread.apply_label :unread
+      add_or_unhide thread.first
+    }
+    UndoManager.register("reading and archiving thread ", undo)
+
     cursor_thread.remove_label :unread
     cursor_thread.remove_label :inbox
     hide_thread cursor_thread
@@ -48,6 +73,16 @@ class InboxMode < ThreadIndexMode
   end
 
   def multi_read_and_archive threads
+    undo = threads.map {|t|
+      lambda {
+        t.apply_label :inbox
+        t.apply_label :unread
+        add_or_unhide t.first
+      }
+    }
+    UndoManager.register("reading and archiving #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text})
+
     threads.each do |t|
       t.remove_label :unread
       t.remove_label :inbox
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index ee30284..120acad 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -259,13 +259,27 @@ EOS
   end
 
   def actually_toggle_archived t
+    thread = t
+    pos = curpos
     if t.has_label? :inbox
       t.remove_label :inbox
+      undo = lambda {
+        thread.apply_label :inbox
+        update_text_for_line pos
+        UpdateManager.relay self,:unarchived, thread.first
+      }
       UpdateManager.relay self, :archived, t.first
     else
       t.apply_label :inbox
+      undo = lambda {
+        thread.remove_label :inbox
+        update_text_for_line pos
+        UpdateManager.relay self, :unarchived, thread.first
+      }
       UpdateManager.relay self, :unarchived, t.first
     end
+
+    return undo
   end
 
   def actually_toggle_spammed t
@@ -290,12 +304,15 @@ EOS
 
   def toggle_archived 
     t = cursor_thread or return
-    actually_toggle_archived t
+    undo = [actually_toggle_archived(t), lambda {self.update_text_for_line curpos}]
+    UndoManager.register("deleting/undeleting thread #{t.first.id}",undo)
     update_text_for_line curpos
   end
 
   def multi_toggle_archived threads
-    threads.each { |t| actually_toggle_archived t }
+    undo = threads.map { |t| actually_toggle_archived t}
+    UndoManager.register("deleting/undeleting #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {self.regen_text})
     regen_text
   end
 
-- 
1.5.3

From e42299ce17ed7c12989d0c8a6dea2ed100921e4a Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:03:57 -0500
Subject: [PATCH] Added undo for starring

---
 lib/sup/modes/thread-index-mode.rb |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 120acad..62fdb85 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -237,24 +237,41 @@ EOS
   end
 
   def actually_toggle_starred t
+    thread = t # cargo cult programming
+    pos = curpos
     if t.has_label? :starred # if ANY message has a star
+      undo = lambda {
+        thread.first.add_label :starred
+        update_text_for_line pos
+        UpdateManager.relay self, :starred, thread.first
+      }
       t.remove_label :starred # remove from all
       UpdateManager.relay self, :unstarred, t.first
     else
+      undo = lambda {
+        thread.remove_label :starred
+        update_text_for_line pos
+        UpdateManager.relay self, :unstarred, thread.first
+      }
       t.first.add_label :starred # add only to first
       UpdateManager.relay self, :starred, t.first
     end
+
+    return undo
   end  
 
   def toggle_starred 
     t = cursor_thread or return
-    actually_toggle_starred t
+    undo = actually_toggle_starred t
+    UndoManager.register("starring/unstarring thread #{t.first.id}",undo)
     update_text_for_line curpos
     cursor_down
   end
 
   def multi_toggle_starred threads
-    threads.each { |t| actually_toggle_starred t }
+    undo = threads.map { |t| actually_toggle_starred t }
+    UndoManager.register("starring/unstarring #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo)
     regen_text
   end
 
-- 
1.5.3

From 31bb0fd8f6e701107ce79ad2dbd9d42da4635742 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:06:36 -0500
Subject: [PATCH] Added undo for spam

---
 lib/sup/modes/thread-index-mode.rb |   22 ++++++++++++++++++----
 1 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 62fdb85..1e02b5b 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -300,13 +300,28 @@ EOS
   end
 
   def actually_toggle_spammed t
+    thread = t
     if t.has_label? :spam
+      undo = lambda {
+        thread.apply_label :spam
+        self.hide_thread thread
+        UpdateManager.relay self,:spammed, thread.first
+      }
       t.remove_label :spam
+      add_or_unhide t.first
       UpdateManager.relay self, :unspammed, t.first
     else
+      undo = lambda {
+        thread.remove_label :spam
+        add_or_unhide thread.first
+        UpdateManager.relay self,:unspammed, thread.first
+      }
       t.apply_label :spam
+      hide_thread t
       UpdateManager.relay self, :spammed, t.first
     end
+
+    return undo
   end
 
   def actually_toggle_deleted t
@@ -390,10 +405,9 @@ EOS
   ## see deleted or spam emails, and when you undelete or unspam them
   ## you also want them to disappear immediately.
   def multi_toggle_spam threads
-    threads.each do |t|
-      actually_toggle_spammed t
-      hide_thread t 
-    end
+    undo = threads.map{ |t| actually_toggle_spammed t}
+    UndoManager.register("marking/unmarking #{threads.size} #{threads.size.pluralize 'thread'} as spam",
+                         undo <<  lambda {self.regen_text})
     regen_text
   end
 
-- 
1.5.3

From d1b5ff3d022e0e6aeabf410b0778fd11a5449ed0 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:08:03 -0500
Subject: [PATCH] Added undo for thread deletion

---
 lib/sup/modes/thread-index-mode.rb |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 1e02b5b..ae7c299 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -326,12 +326,26 @@ EOS
 
   def actually_toggle_deleted t
     if t.has_label? :deleted
+      undo = lambda {
+        t.apply_label :deleted
+        hide_thread t
+        UpdateManager.relay self, :deleted, t.first
+      }
       t.remove_label :deleted
+      add_or_unhide t.first
       UpdateManager.relay self, :undeleted, t.first
     else
+      undo = lambda {
+        t.remove_label :deleted
+        add_or_unhide t.first
+        UpdateManager.relay self, :undeleted, t.first
+      }
       t.apply_label :deleted
+  hide_thread t
       UpdateManager.relay self, :deleted, t.first
     end
+
+    return undo
   end
 
   def toggle_archived 
@@ -418,10 +432,9 @@ EOS
 
   ## see comment for multi_toggle_spam
   def multi_toggle_deleted threads
-    threads.each do |t|
-      actually_toggle_deleted t
-      hide_thread t 
-    end
+    undo = threads.map{ |t| actually_toggle_deleted t}
+    UndoManager.register("deleting/undeleting #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text})
     regen_text
   end
 
-- 
1.5.3

From 9a5ac47e979de8030756b88d4e52b6d8a289a25a Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:10:32 -0500
Subject: [PATCH] Added undo for delete thread

---
 lib/sup/modes/thread-index-mode.rb |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index ae7c299..159839d 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -443,11 +443,18 @@ EOS
     multi_kill [t]
   end
 
+  ## m-m-m-m-MULTI-KILL
   def multi_kill threads
-    threads.each do |t|
+    undo = threads.map do |t|
       t.apply_label :killed
       hide_thread t
+      thread = t
+      lambda { thread.remove_label :killed
+        add_or_unhide thread.first
+      }
     end
+    UndoManager.register("killing #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda {regen_text})
     regen_text
     BufferManager.flash "#{threads.size.pluralize 'Thread'} killed."
   end
-- 
1.5.3

From 1fd41c30189db832abb54f1cda416d0aa624e028 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:11:28 -0500
Subject: [PATCH] Added undo for label edit

---
 lib/sup/modes/thread-index-mode.rb |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 159839d..f28302b 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -509,6 +509,10 @@ EOS
   def edit_labels
     thread = cursor_thread or return
     speciall = (@hidden_labels + LabelManager::RESERVED_LABELS).uniq
+
+    old_labels = thread.labels
+    pos = curpos
+
     keepl, modifyl = thread.labels.partition { |t| speciall.member? t }
 
     user_labels = BufferManager.ask_for_labels :label, "Labels for thread: ", modifyl, @hidden_labels
@@ -517,6 +521,15 @@ EOS
     thread.labels = keepl + user_labels
     user_labels.each { |l| LabelManager << l }
     update_text_for_line curpos
+
+    undo = lambda{
+      thread.labels = old_labels
+      update_text_for_line pos
+      UpdateManager.relay self, :labeled, thread.first
+    }
+
+    UndoManager.register("labeling thread #{thread.first.id}", undo)
+
     UpdateManager.relay self, :labeled, thread.first
   end
 
@@ -526,8 +539,18 @@ EOS
     
     hl = user_labels.select { |l| @hidden_labels.member? l }
     if hl.empty?
-      threads.each { |t| user_labels.each { |l| t.apply_label l } }
-      user_labels.each { |l| LabelManager << l }
+      undo = threads.map { |t| old_labels = t.labels
+        user_labels.each { |l| t.apply_label l }
+        ## UpdateManager or some other regresh mechanism?
+        UpdateManager.relay self, :labeled, t.first
+        lambda {
+          t.labels = old_labels
+          UpdateManager.relay self, :labeled, t.first
+        }
+      }
+    user_labels.each { |l| LabelManager << l }
+    UndoManager.register("labeling #{threads.size} #{threads.size.pluralize 'thread'}",
+                         undo << lambda { regen_text})
     else
       BufferManager.flash "'#{hl}' is a reserved label!"
     end
-- 
1.5.3

From e7abf80a590aa2f2de35343fceecea9deae41193 Mon Sep 17 00:00:00 2001
From: Mike Stipicevic <stipim at rpi.edu>
Date: Mon, 16 Feb 2009 00:11:46 -0500
Subject: [PATCH] Changed README to reflect addition of undo

---
 README.txt |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/README.txt b/README.txt
index 1b2b516..05349d7 100644
--- a/README.txt
+++ b/README.txt
@@ -80,7 +80,7 @@ Current limitations which will be fixed:
 - Unix-centrism in MIME attachment handling and in sendmail
   invocation.
 
-- Several obvious missing features, like undo, filters / saved
+- Several obvious missing features, like filters / saved
   searches, message annotations, etc.
 
 == SYNOPSYS:
-- 
1.5.3



^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2009-02-16  6:25 Michael John Stipicevic
  0 siblings, 0 replies; 40+ messages in thread
From: Michael John Stipicevic @ 2009-02-16  6:25 UTC (permalink / raw)




^ permalink raw reply	[flat|nested] 40+ messages in thread
* [sup-talk] (no subject)
@ 2008-01-05 19:29 thefed
  0 siblings, 0 replies; 40+ messages in thread
From: thefed @ 2008-01-05 19:29 UTC (permalink / raw)


Hey,

I have two GMail accounts, and they're (of course) on the same server.

However, I am unable to add it in sup-add because it says it already  
knows of it.

I am thinking of just altering the sources.yaml file and config.yaml,  
but I do not want to break my system.

Help?
Ari Brown


^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2011-12-10  3:32 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-02-16  6:25 [sup-talk] (no subject) Michael John Stipicevic
2009-02-16  8:53 ` Ian Smith
2009-02-16 14:08   ` William Morgan
2009-02-16 14:42     ` Mike Stipicevic
  -- strict thread matches above, loose matches on Subject: below --
2011-12-10  3:08 Jason O'Conal
2010-11-15  0:49 Matthias Vallentin
2010-11-15  1:42 ` Edward Z. Yang
2010-11-15  6:57   ` Matthias Vallentin
2010-11-15  8:06     ` Helge Titlestad
2010-11-20 19:04       ` Matthias Vallentin
2010-11-21  1:10         ` Tero Tilus
2010-11-21  1:51           ` Matthias Vallentin
2010-11-15  1:46 ` Ben Walton
2010-11-15  1:50 ` Matias Aguirre
2009-06-08  0:02 Ben Walton
2009-06-11 23:50 ` Ben Walton
2009-06-12  3:44   ` William Morgan
2009-06-12 13:15     ` Ben Walton
2009-06-12 18:23 ` William Morgan
2009-06-01  1:01 Ben Walton
2009-06-01  1:04 ` Ben Walton
2009-06-01  2:13 ` Ben Walton
2009-06-04  2:04 ` Ross Macduff
2009-02-16  6:45 Michael John Stipicevic
2009-02-16  6:45 Michael John Stipicevic
2009-02-16  6:45 Michael John Stipicevic
2009-02-16  6:45 Michael John Stipicevic
2009-02-16  6:45 Michael John Stipicevic
2009-02-16  6:45 Michael John Stipicevic
2009-02-16  6:45 Michael John Stipicevic
2009-02-16  6:44 Michael John Stipicevic
2009-02-16  6:27 Michael John Stipicevic
2009-02-16  6:25 Michael John Stipicevic
2009-02-16  6:25 Michael John Stipicevic
2009-02-16  6:25 Michael John Stipicevic
2009-02-16  6:25 Michael John Stipicevic
2009-02-16  6:25 Michael John Stipicevic
2009-02-16  6:25 Michael John Stipicevic
2009-02-16  6:25 Michael John Stipicevic
2008-01-05 19:29 thefed

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox