141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
|
# File 'lib/textbringer/utils.rb', line 141
def read_from_minibuffer(prompt, completion_proc: nil, default: nil,
initial_value: nil, completion_ignore_case: false,
keymap: MINIBUFFER_LOCAL_MAP)
if Window.echo_area.active?
raise EditorError,
"Command attempted to use minibuffer while in minibuffer"
end
old_buffer = Buffer.current
old_window = Window.current
old_completion_proc = Buffer.minibuffer[:completion_proc]
old_completion_ignore_case = Buffer.minibuffer[:completion_ignore_case]
old_current_prefix_arg = Controller.current.current_prefix_arg
old_minibuffer_map = Buffer.minibuffer.keymap
Buffer.minibuffer.keymap = keymap
Buffer.minibuffer[:completion_proc] = completion_proc
Buffer.minibuffer[:completion_ignore_case] = completion_ignore_case
Window.echo_area.active = true
begin
Window.current = Window.echo_area
Buffer.minibuffer.clear
Buffer.minibuffer.insert(initial_value) if initial_value
if default
prompt = prompt.sub(/:/, " (default #{default}):")
end
Window.echo_area.prompt = prompt
Window.echo_area.redisplay
Window.update
recursive_edit
s = Buffer.minibuffer.to_s
if default && s.empty?
default
else
s
end
ensure
Window.echo_area.clear
Window.echo_area.redisplay
Window.update
Window.echo_area.active = false
Window.current = old_window
Window.current.buffer = Buffer.current = old_buffer
Buffer.minibuffer[:completion_ignore_case] = old_completion_ignore_case
Buffer.minibuffer[:completion_proc] = old_completion_proc
Buffer.minibuffer.keymap = old_minibuffer_map
Buffer.minibuffer.disable_input_method
Controller.current.current_prefix_arg = old_current_prefix_arg
if COMPLETION[:original_buffer]
COMPLETION[:completions_window].buffer = COMPLETION[:original_buffer]
COMPLETION[:completions_window] = nil
COMPLETION[:original_buffer] = nil
end
end
end
|