rebase -i: rewrite the edit-todo functionality in C
This rewrites the edit-todo functionality from shell to C. To achieve that, a new command mode, `edit-todo`, is added, and the `write-edit-todo` flag is removed, as the shell script does not need to write the edit todo help message to the todo list anymore. The shell version is then stripped in favour of a call to the helper. Signed-off-by: Alban Gruin <alban.gruin@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
2aed01811d
commit
64a43cbd5d
@ -66,3 +66,30 @@ int append_todo_help(unsigned edit_todo, unsigned keep_empty)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int edit_todo_list(unsigned flags)
|
||||
{
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
const char *todo_file = rebase_path_todo();
|
||||
|
||||
if (strbuf_read_file(&buf, todo_file, 0) < 0)
|
||||
return error_errno(_("could not read '%s'."), todo_file);
|
||||
|
||||
strbuf_stripspace(&buf, 1);
|
||||
if (write_message(buf.buf, buf.len, todo_file, 0)) {
|
||||
strbuf_release(&buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
strbuf_release(&buf);
|
||||
|
||||
transform_todos(flags | TODO_LIST_SHORTEN_IDS);
|
||||
append_todo_help(1, 0);
|
||||
|
||||
if (launch_sequence_editor(todo_file, NULL, NULL))
|
||||
return -1;
|
||||
|
||||
transform_todos(flags & ~(TODO_LIST_SHORTEN_IDS));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user