sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/

lib/sup/modes/label_search_results_mode.rb (1051B) - raw

      1 module Redwood
      2 
      3 class LabelSearchResultsMode < ThreadIndexMode
      4   def initialize labels
      5     @labels = labels
      6     opts = { :labels => @labels }
      7     opts[:load_deleted] = true if labels.include? :deleted
      8     opts[:load_spam] = true if labels.include? :spam
      9     super [], opts
     10   end
     11 
     12   register_keymap do |k|
     13     k.add :refine_search, "Refine search", '|'
     14   end
     15 
     16   def refine_search
     17     label_query = @labels.size > 1 ? "(#{@labels.join('||')})" : @labels.first
     18     query = BufferManager.ask :search, "refine query: ", "+label:#{label_query} "
     19     return unless query && query !~ /^\s*$/
     20     SearchResultsMode.spawn_from_query query
     21   end
     22 
     23   def is_relevant? m; @labels.all? { |l| m.has_label? l } end
     24 
     25   def self.spawn_nicely label
     26     label = LabelManager.label_for(label) unless label.is_a?(Symbol)
     27     case label
     28     when nil
     29     when :inbox
     30       BufferManager.raise_to_front InboxMode.instance.buffer
     31     else
     32       BufferManager.spawn_unless_exists("All threads with label '#{label}'") { LabelSearchResultsMode.new [label] }
     33     end
     34   end
     35 end
     36 
     37 end