From: Nicolas Pouillard Date: Mon, 16 Mar 2009 18:40:09 +0000 (+0100) Subject: Resync listable_labels and applyable_labels with reality X-Git-Url: https://git.notmuchmail.org/git?a=commitdiff_plain;h=9b8b4ae2c15c8ba6c8fc77c3f3748e7d65328e3b;p=sup Resync listable_labels and applyable_labels with reality The listable_labels method listed all labels except unread which seems an unneeded complication/restriction, so it's renamed to all_labels. The applyable_labels was in fact user-defined labels so it's renamed to user_defined_labels. --- diff --git a/bin/sup b/bin/sup index d8eee0e..d72e30e 100644 --- a/bin/sup +++ b/bin/sup @@ -241,7 +241,7 @@ begin when :search_unread SearchResultsMode.spawn_from_query "is:unread" when :list_labels - labels = LabelManager.listable_labels.map { |l| LabelManager.string_for l } + labels = LabelManager.all_labels.map { |l| LabelManager.string_for l } user_label = bm.ask_with_completions :label, "Show threads with label (enter for listing): ", labels unless user_label.nil? if user_label.empty? diff --git a/lib/sup/buffer.rb b/lib/sup/buffer.rb index 2143deb..3610e74 100644 --- a/lib/sup/buffer.rb +++ b/lib/sup/buffer.rb @@ -478,7 +478,9 @@ EOS default = default_labels.join(" ") default += " " unless default.empty? - applyable_labels = (LabelManager.applyable_labels - forbidden_labels).map { |l| LabelManager.string_for l }.sort_by { |s| s.downcase } + # here I would prefer to give more control and allow all_labels instead of + # user_defined_labels only + applyable_labels = (LabelManager.user_defined_labels - forbidden_labels).map { |l| LabelManager.string_for l }.sort_by { |s| s.downcase } answer = ask_many_with_completions domain, question, applyable_labels, default diff --git a/lib/sup/label.rb b/lib/sup/label.rb index 70a26ea..e63db9e 100644 --- a/lib/sup/label.rb +++ b/lib/sup/label.rb @@ -7,9 +7,6 @@ class LabelManager ## add/remove these via normal label mechanisms. RESERVED_LABELS = [ :starred, :spam, :draft, :unread, :killed, :sent, :deleted, :inbox, :attachment ] - ## labels which it nonetheless makes sense to search for by - LISTABLE_RESERVED_LABELS = [ :starred, :spam, :draft, :sent, :killed, :deleted, :inbox, :attachment ] - ## labels that will typically be hidden from the user HIDDEN_RESERVED_LABELS = [ :starred, :unread, :attachment ] @@ -28,18 +25,18 @@ class LabelManager self.class.i_am_the_instance self end - ## all listable (just user-defined at the moment) labels, ordered + ## all labels user-defined and system, ordered ## nicely and converted to pretty strings. use #label_for to recover ## the original label. - def listable_labels + def all_labels ## uniq's only necessary here because of certain upgrade issues - (LISTABLE_RESERVED_LABELS + @labels.keys).uniq + (RESERVED_LABELS + @labels.keys).uniq end - ## all apply-able (user-defined and system listable) labels, ordered + ## all user-defined labels, ordered ## nicely and converted to pretty strings. use #label_for to recover ## the original label. - def applyable_labels + def user_defined_labels @labels.keys end diff --git a/lib/sup/modes/label-list-mode.rb b/lib/sup/modes/label-list-mode.rb index 132b654..a35d110 100644 --- a/lib/sup/modes/label-list-mode.rb +++ b/lib/sup/modes/label-list-mode.rb @@ -48,12 +48,12 @@ protected def regen_text @text = [] - labels = LabelManager.listable_labels + labels = LabelManager.all_labels counts = labels.map do |label| string = LabelManager.string_for label total = Index.num_results_for :label => label - unread = Index.num_results_for :labels => [label, :unread] + unread = (label == :unread)? total : Index.num_results_for(:labels => [label, :unread]) [label, string, total, unread] end.sort_by { |l, s, t, u| s.downcase }