cli: spawn pager after command arguments are validated

Just like hg, it's probably better to show short error message without pager.
This commit is contained in:
Yuya Nishihara 2022-12-04 17:01:12 +09:00
parent c5c89b9e9b
commit ce84d17060

View file

@ -1377,7 +1377,6 @@ fn show_color_words_diff_line(
} }
fn cmd_diff(ui: &mut Ui, command: &CommandHelper, args: &DiffArgs) -> Result<(), CommandError> { fn cmd_diff(ui: &mut Ui, command: &CommandHelper, args: &DiffArgs) -> Result<(), CommandError> {
ui.request_pager();
let workspace_command = command.workspace_helper(ui)?; let workspace_command = command.workspace_helper(ui)?;
let from_tree; let from_tree;
let to_tree; let to_tree;
@ -1395,6 +1394,7 @@ fn cmd_diff(ui: &mut Ui, command: &CommandHelper, args: &DiffArgs) -> Result<(),
} }
let matcher = workspace_command.matcher_from_values(&args.paths)?; let matcher = workspace_command.matcher_from_values(&args.paths)?;
let diff_iterator = from_tree.diff(&to_tree, matcher.as_ref()); let diff_iterator = from_tree.diff(&to_tree, matcher.as_ref());
ui.request_pager();
show_diff( show_diff(
ui.stdout_formatter().as_mut(), ui.stdout_formatter().as_mut(),
&workspace_command, &workspace_command,
@ -1405,7 +1405,6 @@ fn cmd_diff(ui: &mut Ui, command: &CommandHelper, args: &DiffArgs) -> Result<(),
} }
fn cmd_show(ui: &mut Ui, command: &CommandHelper, args: &ShowArgs) -> Result<(), CommandError> { fn cmd_show(ui: &mut Ui, command: &CommandHelper, args: &ShowArgs) -> Result<(), CommandError> {
ui.request_pager();
let workspace_command = command.workspace_helper(ui)?; let workspace_command = command.workspace_helper(ui)?;
let commit = workspace_command.resolve_single_rev(&args.revision)?; let commit = workspace_command.resolve_single_rev(&args.revision)?;
let parents = commit.parents(); let parents = commit.parents();
@ -1435,6 +1434,7 @@ fn cmd_show(ui: &mut Ui, command: &CommandHelper, args: &ShowArgs) -> Result<(),
&workspace_command.workspace_id(), &workspace_command.workspace_id(),
&template_string, &template_string,
); );
ui.request_pager();
let mut formatter = ui.stdout_formatter(); let mut formatter = ui.stdout_formatter();
let formatter = formatter.as_mut(); let formatter = formatter.as_mut();
template.format(&commit, formatter)?; template.format(&commit, formatter)?;
@ -2078,7 +2078,6 @@ fn log_template(settings: &UserSettings) -> String {
} }
fn cmd_log(ui: &mut Ui, command: &CommandHelper, args: &LogArgs) -> Result<(), CommandError> { fn cmd_log(ui: &mut Ui, command: &CommandHelper, args: &LogArgs) -> Result<(), CommandError> {
ui.request_pager();
let workspace_command = command.workspace_helper(ui)?; let workspace_command = command.workspace_helper(ui)?;
let default_revset = ui.settings().default_revset(); let default_revset = ui.settings().default_revset();
@ -2110,6 +2109,7 @@ fn cmd_log(ui: &mut Ui, command: &CommandHelper, args: &LogArgs) -> Result<(), C
); );
{ {
ui.request_pager();
let mut formatter = ui.stdout_formatter(); let mut formatter = ui.stdout_formatter();
let mut formatter = formatter.as_mut(); let mut formatter = formatter.as_mut();
formatter.add_label("log")?; formatter.add_label("log")?;
@ -2241,7 +2241,6 @@ fn show_patch(
} }
fn cmd_obslog(ui: &mut Ui, command: &CommandHelper, args: &ObslogArgs) -> Result<(), CommandError> { fn cmd_obslog(ui: &mut Ui, command: &CommandHelper, args: &ObslogArgs) -> Result<(), CommandError> {
ui.request_pager();
let workspace_command = command.workspace_helper(ui)?; let workspace_command = command.workspace_helper(ui)?;
let start_commit = workspace_command.resolve_single_rev(&args.revision)?; let start_commit = workspace_command.resolve_single_rev(&args.revision)?;
@ -2264,6 +2263,7 @@ fn cmd_obslog(ui: &mut Ui, command: &CommandHelper, args: &ObslogArgs) -> Result
&template_string, &template_string,
); );
ui.request_pager();
let mut formatter = ui.stdout_formatter(); let mut formatter = ui.stdout_formatter();
let mut formatter = formatter.as_mut(); let mut formatter = formatter.as_mut();
formatter.add_label("log")?; formatter.add_label("log")?;
@ -2337,7 +2337,6 @@ fn cmd_interdiff(
command: &CommandHelper, command: &CommandHelper,
args: &InterdiffArgs, args: &InterdiffArgs,
) -> Result<(), CommandError> { ) -> Result<(), CommandError> {
ui.request_pager();
let workspace_command = command.workspace_helper(ui)?; let workspace_command = command.workspace_helper(ui)?;
let from = workspace_command.resolve_single_rev(args.from.as_deref().unwrap_or("@"))?; let from = workspace_command.resolve_single_rev(args.from.as_deref().unwrap_or("@"))?;
let to = workspace_command.resolve_single_rev(args.to.as_deref().unwrap_or("@"))?; let to = workspace_command.resolve_single_rev(args.to.as_deref().unwrap_or("@"))?;
@ -2345,6 +2344,7 @@ fn cmd_interdiff(
let from_tree = rebase_to_dest_parent(&workspace_command, &from, &to)?; let from_tree = rebase_to_dest_parent(&workspace_command, &from, &to)?;
let matcher = workspace_command.matcher_from_values(&args.paths)?; let matcher = workspace_command.matcher_from_values(&args.paths)?;
let diff_iterator = from_tree.diff(&to.tree(), matcher.as_ref()); let diff_iterator = from_tree.diff(&to.tree(), matcher.as_ref());
ui.request_pager();
show_diff( show_diff(
ui.stdout_formatter().as_mut(), ui.stdout_formatter().as_mut(),
&workspace_command, &workspace_command,
@ -3670,11 +3670,11 @@ fn cmd_op_log(
command: &CommandHelper, command: &CommandHelper,
_args: &OperationLogArgs, _args: &OperationLogArgs,
) -> Result<(), CommandError> { ) -> Result<(), CommandError> {
ui.request_pager();
let workspace_command = command.workspace_helper(ui)?; let workspace_command = command.workspace_helper(ui)?;
let repo = workspace_command.repo(); let repo = workspace_command.repo();
let head_op = repo.operation().clone(); let head_op = repo.operation().clone();
let head_op_id = head_op.id().clone(); let head_op_id = head_op.id().clone();
ui.request_pager();
let mut formatter = ui.stdout_formatter(); let mut formatter = ui.stdout_formatter();
let mut formatter = formatter.as_mut(); let mut formatter = formatter.as_mut();
struct OpTemplate; struct OpTemplate;