Class: Redwood::Mode
Direct Known Subclasses
Constant Summary collapse
- @@keymaps =
{}
Instance Attribute Summary collapse
-
#buffer ⇒ Object
Returns the value of attribute buffer.
Class Method Summary collapse
Instance Method Summary collapse
- #blur ⇒ Object
- #cancel_search! ⇒ Object
- #cleanup ⇒ Object
- #draw ⇒ Object
- #focus ⇒ Object
- #handle_input(c) ⇒ Object
- #help_text ⇒ Object
- #in_search? ⇒ Boolean
-
#initialize ⇒ Mode
constructor
A new instance of Mode.
- #killable? ⇒ Boolean
- #name ⇒ Object
- #resize(rows, cols) ⇒ Object
-
#resolve_input(c) ⇒ Object
turns an input keystroke into an action symbol.
-
#save_to_file(fn) ⇒ Object
helper function.
- #status ⇒ Object
Constructor Details
#initialize ⇒ Mode
Returns a new instance of Mode.
12 13 14 |
# File 'lib/sup/mode.rb', line 12 def initialize @buffer = nil end |
Instance Attribute Details
#buffer ⇒ Object
Returns the value of attribute buffer.
4 5 6 |
# File 'lib/sup/mode.rb', line 4 def buffer @buffer end |
Class Method Details
.load_all_modes(dir) ⇒ Object
19 20 21 22 23 24 |
# File 'lib/sup/mode.rb', line 19 def self.load_all_modes dir Dir[File.join(dir, "*.rb")].each do |f| $stderr.puts "## loading mode #{f}" require f end end |
.make_name(s) ⇒ Object
16 |
# File 'lib/sup/mode.rb', line 16 def self.make_name s; s.gsub(/.*::/, "").camel_to_hyphy; end |
.register_keymap(keymap = nil, &b) ⇒ Object
7 8 9 10 |
# File 'lib/sup/mode.rb', line 7 def self.register_keymap keymap=nil, &b keymap = Keymap.new(&b) if keymap.nil? @@keymaps[self] = keymap end |
Instance Method Details
#blur ⇒ Object
29 |
# File 'lib/sup/mode.rb', line 29 def blur; end |
#cancel_search! ⇒ Object
30 |
# File 'lib/sup/mode.rb', line 30 def cancel_search!; end |
#cleanup ⇒ Object
34 35 36 |
# File 'lib/sup/mode.rb', line 34 def cleanup @buffer = nil end |
#draw ⇒ Object
27 |
# File 'lib/sup/mode.rb', line 27 def draw; end |
#focus ⇒ Object
28 |
# File 'lib/sup/mode.rb', line 28 def focus; end |
#handle_input(c) ⇒ Object
52 53 54 55 56 |
# File 'lib/sup/mode.rb', line 52 def handle_input c action = resolve_input(c) or return false send action true end |
#help_text ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/sup/mode.rb', line 58 def help_text used_keys = {} ancestors.map do |klass| km = @@keymaps[klass] or next title = "Keybindings from #{Mode.make_name klass.name}" s = <<EOS #{title} #{'-' * title.length} #{km.help_text used_keys} EOS begin used_keys.merge! km.keysyms.to_boolean_h rescue ArgumentError raise km.keysyms.inspect end s end.compact.join "\n" end |
#in_search? ⇒ Boolean
31 |
# File 'lib/sup/mode.rb', line 31 def in_search?; false end |
#killable? ⇒ Boolean
26 |
# File 'lib/sup/mode.rb', line 26 def killable?; true; end |
#resize(rows, cols) ⇒ Object
33 |
# File 'lib/sup/mode.rb', line 33 def resize rows, cols; end |
#resolve_input(c) ⇒ Object
turns an input keystroke into an action symbol
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/sup/mode.rb', line 39 def resolve_input c ## try all keymaps in order of age action = nil klass = self.class ancestors.each do |klass| action = @@keymaps.member?(klass) && @@keymaps[klass].action_for(c) return action if action end nil end |
#save_to_file(fn) ⇒ Object
helper function
79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/sup/mode.rb', line 79 def save_to_file fn if File.exists? fn return unless BufferManager.ask_yes_or_no "File exists. Overwrite?" end begin File.open(fn, "w") { |f| yield f } BufferManager.flash "Successfully wrote #{fn}." rescue SystemCallError, IOError => e BufferManager.flash "Error writing to file: #{e.}" end end |
#status ⇒ Object
32 |
# File 'lib/sup/mode.rb', line 32 def status; ""; end |