7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/kward/prompt_interface/git_prompt.rb', line 7
def git_commit_message(status_lines)
start
@mutex.synchronize do
prepare_modal_input_locked("Git>", clear_attachments: true)
@git_state = git_state_for(status_lines)
render_prompt_locked
end
loop do
key = read_key(nonblock: true)
result = nil
@mutex.synchronize do
if key.nil?
resized = handle_resize_locked
=
render_prompt_locked if resized ||
else
result = handle_git_key(key)
render_prompt_locked unless result.is_a?(String) || result == SELECT_CANCEL || git_action?(result)
end
end
if git_action?(result)
action_result = block_given? ? yield(result) : status_lines
refreshed_status = git_action_status_lines(action_result)
open_git_diff_viewer(action_result[:diff]) if action_result.is_a?(Hash) && action_result[:diff]
@mutex.synchronize do
selected_index = @git_state ? @git_state[:selected_index].to_i : 0
@git_state = git_state_for(refreshed_status, selected_index: selected_index)
@prompt_label = "Git>"
render_prompt_locked
end
elsif result.is_a?(String) || result == SELECT_CANCEL
finish_git_prompt
return result == SELECT_CANCEL ? nil : result
end
sleep 0.02 if key.nil?
end
end
|