7 def self.register_keymap keymap=nil, &b
8 keymap = Keymap.new(&b) if keymap.nil?
9 @@keymaps[self] = keymap
16 def self.make_name s; s.gsub(/.*::/, "").camel_to_hyphy; end
17 def name; Mode.make_name self.class.name; end
19 def self.load_all_modes dir
20 Dir[File.join(dir, "*.rb")].each do |f|
21 $stderr.puts "## loading mode #{f}"
26 def killable?; true; end
31 def resize rows, cols; end
36 ## turns an input keystroke into an action symbol
38 ## try all keymaps in order of age
42 ancestors.each do |klass|
43 action = @@keymaps.member?(klass) && @@keymaps[klass].action_for(c)
44 return action if action
51 if(action = resolve_input c)
61 ancestors.map do |klass|
62 km = @@keymaps[klass] or next
63 title = "Keybindings from #{Mode.make_name klass.name}"
68 #{km.help_text used_keys}
71 used_keys.merge! km.keysyms.to_boolean_h
73 raise km.keysyms.inspect