]> git.cworth.org Git - sup/blobdiff - lib/sup/buffer.rb
global search and replace: raw_full_message -> raw_message
[sup] / lib / sup / buffer.rb
index 55a53ff5ebdd040c656885448362291f7bc0c422..3a696824a444873870c72c723fbb5be8c856e22d 100644 (file)
@@ -2,6 +2,7 @@ require 'etc'
 require 'thread'
 require 'ncurses'
 
+if defined? Ncurses
 module Ncurses
   def rows
     lame, lamer = [], []
@@ -43,6 +44,7 @@ module Ncurses
   KEY_CANCEL = 7 # ctrl-g
   KEY_TAB = 9
 end
+end
 
 module Redwood
 
@@ -360,8 +362,7 @@ class BufferManager
     end
   end
 
-  ## returns an ARRAY of filenames!
-  def ask_for_filenames domain, question, default=nil
+  def ask_for_filename domain, question, default=nil
     answer = ask domain, question, default do |s|
       if s =~ /(~([^\s\/]*))/ # twiddle directory expansion
         full = $1
@@ -389,11 +390,11 @@ class BufferManager
         elsif File.directory?(answer)
           spawn_modal "file browser", FileBrowserMode.new(answer)
         else
-          [answer]
+          answer
         end
     end
 
-    answer || []
+    answer
   end
 
   ## returns an array of labels
@@ -421,10 +422,14 @@ class BufferManager
   def ask_for_contacts domain, question, default_contacts=[]
     default = default_contacts.map { |s| s.to_s }.join(" ")
     default += " " unless default.empty?
+    
+    recent = Index.load_contacts(AccountManager.user_emails, :num => 10).map { |c| [c.longname, c.email] }
+    contacts = ContactManager.contacts.map { |c| [ContactManager.alias_for(c), c.longname, c.email] }
 
-    all_contacts = ContactManager.contacts.map { |c| [ContactManager.alias_for(c), c.longname, c.email] }.flatten.uniq.sort
+    Redwood::log "recent: #{recent.inspect}"
 
-    answer = BufferManager.ask_many_with_completions domain, question, all_contacts, default, /\s*,\s*/
+    completions = (recent + contacts).flatten.uniq.sort
+    answer = BufferManager.ask_many_with_completions domain, question, completions, default, /\s*,\s*/
 
     if answer
       answer.split_on_commas.map { |x| ContactManager.contact_for(x.downcase) || PersonManager.person_for(x) }