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