Subject: Re: [sup-talk] next search in buffer view..

From: William Morgan <[email-masked]>
Date: Tue, 06 Oct 2009 09:35:36 -0700

Reformatted excerpts from Marc Weber's message of 2009-10-04:
> However the search_query_input should be global. So where is the place
> to add this "last-search-term" ? Isn't it already present in the ask
> history? Can you give me a hint to find it faster?

Probably the best place is to make it a class variable, i.e.
@@search_query_input. Then it will be shared across all buffers with
modes that have search functionality.
-- 
William <[email-masked]>
_______________________________________________
sup-talk mailing list
[email-masked]
http://rubyforge.org/mailman/listinfo/sup-talk

---

From: Marc Weber <[email-masked]>
Date: Sun, 04 Oct 2009 22:55:42 +0200

Mmh. Maybe its not that a bad idea to keep the search mode.

However it would be nice to provide the last search term as default.

This minimal patch adds this feature.
However the search_query_input should be global. So where is the place
to add this "last-search-term" ? Isn't it already present in the ask
history? Can you give me a hint to find it faster?

Marc Weber

diff --git a/lib/sup/modes/scroll-mode.rb b/lib/sup/modes/scroll-mode.rb
index c131425..a97f13c 100644
--- a/lib/sup/modes/scroll-mode.rb
+++ b/lib/sup/modes/scroll-mode.rb
@@ -35,6 +35,7 @@ class ScrollMode < Mode
     @slip_rows = opts[:slip_rows] || 0 # when we pgup/pgdown,
                                        # how many lines do we keep?
     @twiddles = opts.member?(:twiddles) ? opts[:twiddles] : true
+    @search_query_input = ""
     @search_query = nil
     @search_line = nil
     @status = ""
@@ -81,9 +82,10 @@ class ScrollMode < Mode
   end
 
   def search_in_buffer
-    query = BufferManager.ask :search, "search in buffer: "
+    query = BufferManager.ask :search, "search in buffer: ", @search_query_input
     return if query.nil? || query.empty?
     @search_query = Regexp.escape query
+    @search_query_input = query
     continue_search_in_buffer
   end

---

From: Marc Weber <[email-masked]>
Date: Sat, 03 Oct 2009 22:49:40 +0200

buffer.rb

  def handle_input c
    if @focus_buf
      if @focus_buf.mode.in_search? && c != CONTINUE_IN_BUFFER_SEARCH_KEY[0]
        @focus_buf.mode.cancel_search!
        @focus_buf.mark_dirty
      end
      @focus_buf.mode.handle_input c
    end
  end

Why is the search canceled when typing any other char?

That's really annoying because there are some mails I have to use the
same search multiple times. However I also have to scroll up /down to
see enough context.

So why has this been implemented? Is it safe to remove that if
statement?
Seems to work for me.

It would be better if the next search would continue from the current
line rather than the last search result.

I'd like to see 'N' (search backward) as well.

If you like these ideas I'm going to supply a patch.

Comments?

Marc Weber