Archive of RubyForge sup-talk mailing list
 help / color / mirror / Atom feed
From: its.jeff.balogh@gmail.com (Jeff Balogh)
Subject: [sup-talk] [PATCH] don't try to open the next thread if there isn't one available
Date: Wed, 30 Jan 2008 18:05:40 -0500	[thread overview]
Message-ID: <1201732604-sup-4815@archie> (raw)
In-Reply-To: <1201681010-sup-3463@archie>

Jeff Balogh wrote:
> When you're on the last thread of a ThreadSet and press ',<key>',
> nothing happens, but you can't '.<key>' since @dying == true.  This
> patch changes :next to :kill if there is no next thread.
> ---
> I usually traverse my inbox with ',a', so it annoys me when sup gets stuck on
> the last thread.  This patch implements what I expect to happen: the thread is
> killed and the previous buffer pops up.

Ok, this patch causes a no block given exception with ',n' on the last thread.
As you might expect, no block is given with the do nothing command.

Here's where it's happening:
  def dispatch op
    return if @dying
    @dying = true

    op = :kill unless @index_mode.has_thread_after(@thread)

    case op
    when :next
      @index_mode.launch_next_thread_after(@thread) do
        @thread.save Index if block_given? && yield
        BufferManager.kill_buffer_safely buffer
      end
    when :kill
      @thread.save Index if yield
      BufferManager.kill_buffer_safely buffer
    else
      raise ArgumentError, "unknown thread dispatch operation #{op.inspect}"
    end
  end

The :next case guards against this exception with 'if block_given? && yield'.  If
I put that in the :kill case, those two lines will be exact duplicates of the
lines above.

Is there a clean way to handle this?  I'm learning Ruby as I go along, so please
forgive me if the answer is obvious.


  parent reply	other threads:[~2008-01-30 23:05 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-30  8:21 Jeff Balogh
2008-01-30 15:43 ` John Bent
2008-02-05 17:27   ` William Morgan
2008-02-06 16:21     ` John Bent
2008-01-30 23:05 ` Jeff Balogh [this message]
2008-02-03  4:35   ` William Morgan
2008-02-03  4:31 ` William Morgan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1201732604-sup-4815@archie \
    --to=its.jeff.balogh@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox