commit e8a896d9ccb7a27f1bff1e116f0cc67a39b57386
parent db6ccaa995be5195381473487c1c2aa83c1e37fa
Author: Gaute Hope <eg@gaute.vetsj.com>
Date: Wed, 6 Nov 2013 08:47:10 +0100
dont fail on edit or delete predefined searches
Diffstat:
2 files changed, 30 insertions(+), 0 deletions(-)
diff --git a/lib/sup/modes/search_list_mode.rb b/lib/sup/modes/search_list_mode.rb
@@ -145,6 +145,12 @@ protected
def rename_selected_search
old_name, num_unread = @searches[curpos]
return unless old_name
+
+ if SearchManager.predefined_searches.has_key? old_name
+ BufferManager.flash "Cannot be edited: predefined search."
+ return
+ end
+
new_name = BufferManager.ask :save_search, "Rename this saved search: ", old_name
return unless new_name && new_name !~ /^\s*$/ && new_name != old_name
new_name.strip!
@@ -163,6 +169,12 @@ protected
def edit_selected_search
name, num_unread = @searches[curpos]
return unless name
+
+ if SearchManager.predefined_searches.has_key? name
+ BufferManager.flash "Cannot be edited: predefined search."
+ return
+ end
+
old_search_string = SearchManager.search_string_for name
new_search_string = BufferManager.ask :search, "Edit this saved search: ", (old_search_string + " ")
return unless new_search_string && new_search_string !~ /^\s*$/ && new_search_string != old_search_string
diff --git a/lib/sup/search.rb b/lib/sup/search.rb
@@ -7,6 +7,8 @@ class SearchManager
class ExpansionError < StandardError; end
+ attr_reader :predefined_searches
+
def initialize fn
@fn = fn
@searches = {}
@@ -43,24 +45,40 @@ class SearchManager
def add name, search_string
return unless valid_name? name
+ if @predefined_searches.has_key? name
+ warn "cannot add search: #{name} is already taken by a predefined search"
+ return
+ end
@searches[name] = search_string
@modified = true
end
def rename old, new
return unless @searches.has_key? old
+ if [old, new].any? { |x| @predefined_searches.has_key? x }
+ warn "cannot rename search: #{old} or #{new} is already taken by a predefined search"
+ return
+ end
search_string = @searches[old]
delete old if add new, search_string
end
def edit name, search_string
return unless @searches.has_key? name
+ if @predefined_searches.has_key? name
+ warn "cannot edit predefined search: #{name}."
+ return
+ end
@searches[name] = search_string
@modified = true
end
def delete name
return unless @searches.has_key? name
+ if @predefined_searches.has_key? name
+ warn "cannot delete predefined search: #{name}."
+ return
+ end
@searches.delete name
@modified = true
end