lib/sup/buffer.rb in sup-0.9.1 vs lib/sup/buffer.rb in sup-0.10

- old
+ new

@@ -1,9 +1,14 @@ require 'etc' require 'thread' -require 'ncurses' +begin + require 'ncursesw' +rescue LoadError + require 'ncurses' +end + if defined? Ncurses module Ncurses def rows lame, lamer = [], [] stdscr.getmaxyx lame, lamer @@ -468,11 +473,11 @@ prefix = prefix.join(", ") + (prefix.empty? ? "" : ", ") completions.select { |x| x =~ /^#{Regexp::escape target}/i }.sort_by { |c| [ContactManager.contact_for(c) ? 0 : 1, c] }.map { |x| [prefix + x, x] } end end - def ask_for_filename domain, question, default=nil + def ask_for_filename domain, question, default=nil, allow_directory=false answer = ask domain, question, default do |s| if s =~ /(~([^\s\/]*))/ # twiddle directory expansion full = $1 name = $2.empty? ? Etc.getlogin : $2 dir = Etc.getpwnam(name).dir rescue nil @@ -493,11 +498,11 @@ if answer answer = if answer.empty? spawn_modal "file browser", FileBrowserMode.new - elsif File.directory?(answer) + elsif File.directory?(answer) && !allow_directory spawn_modal "file browser", FileBrowserMode.new(answer) else File.expand_path answer end end @@ -528,11 +533,11 @@ end user_labels end def ask_for_contacts domain, question, default_contacts=[] - default = default_contacts.map { |s| s.to_s }.join(" ") + default = default_contacts.is_a?(String) ? default_contacts : default_contacts.map { |s| s.to_s }.join(", ") default += " " unless default.empty? recent = Index.load_contacts(AccountManager.user_emails, :num => 10).map { |c| [c.full_address, c.email] } contacts = ContactManager.contacts.map { |c| [ContactManager.alias_for(c), c.full_address, c.email] } @@ -602,11 +607,11 @@ end def ask_getch question, accept=nil raise "impossible!" if @asking - accept = accept.split(//).map { |x| x[0] } if accept + accept = accept.split(//).map { |x| x.ord } if accept status, title = get_status_and_title @focus_buf Ncurses.sync do draw_screen :sync => false, :status => status, :title => title Ncurses.mvaddstr Ncurses.rows - 1, 0, question @@ -638,11 +643,11 @@ end ## returns true (y), false (n), or nil (ctrl-g / cancel) def ask_yes_or_no question case(r = ask_getch question, "ynYN") - when ?y, ?Y + when ?y.ord, ?Y.ord true when nil nil else false @@ -753,9 +758,10 @@ end @shelled = false end private + def default_status_bar buf " [#{buf.mode.name}] #{buf.title} #{buf.mode.status}" end def default_terminal_title buf