Method: Textbringer::Window.start

Defined in:
lib/textbringer/window.rb

.startObject



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# File 'lib/textbringer/window.rb', line 122

def self.start
  if @@started
    raise EditorError, "Already started"
  end
  Curses.init_screen
  Curses.noecho
  Curses.raw
  Curses.nonl
  self.has_colors = Curses.has_colors?
  if has_colors?
    Curses.start_color
    Curses.use_default_colors
    load_faces
  end
  begin
    window =
      Textbringer::Window.new(Window.lines - 1, Window.columns, 0, 0)
    window.buffer = Buffer.new_buffer("*scratch*")
    @@list.push(window)
    Window.current = window
    @@echo_area = Textbringer::EchoArea.new(1, Window.columns,
                                            Window.lines - 1, 0)
    Buffer.minibuffer.keymap = MINIBUFFER_LOCAL_MAP
    @@echo_area.buffer = Buffer.minibuffer
    @@list.push(@@echo_area)
    @@started = true
    yield
  ensure
    @@list.each do |win|
      win.close
    end
    @@list.clear
    Curses.echo
    Curses.noraw
    Curses.nl
    Curses.close_screen
    @@started = false
  end
end