Add :cquit!
command and prevent :cquit
from ignoring unsaved changes (#1414)
* Add `:cquit!` command and prevent `:cquit` from ignoring unsaved changes * `cargo xtask docgen`
This commit is contained in:
parent
ea095ca5fb
commit
ed97ecceb8
2 changed files with 29 additions and 17 deletions
|
@ -20,6 +20,7 @@
|
||||||
| `:quit-all`, `:qa` | Close all views. |
|
| `:quit-all`, `:qa` | Close all views. |
|
||||||
| `:quit-all!`, `:qa!` | Close all views forcefully (ignoring unsaved changes). |
|
| `:quit-all!`, `:qa!` | Close all views forcefully (ignoring unsaved changes). |
|
||||||
| `:cquit`, `:cq` | Quit with exit code (default 1). Accepts an optional integer exit code (:cq 2). |
|
| `:cquit`, `:cq` | Quit with exit code (default 1). Accepts an optional integer exit code (:cq 2). |
|
||||||
|
| `:cquit!`, `:cq!` | Quit with exit code (default 1) forcefully (ignoring unsaved changes). Accepts an optional integer exit code (:cq! 2). |
|
||||||
| `:theme` | Change the editor theme. |
|
| `:theme` | Change the editor theme. |
|
||||||
| `:clipboard-yank` | Yank main selection into system clipboard. |
|
| `:clipboard-yank` | Yank main selection into system clipboard. |
|
||||||
| `:clipboard-yank-join` | Yank joined selections into system clipboard. A separator can be provided as first argument. Default value is newline. |
|
| `:clipboard-yank-join` | Yank joined selections into system clipboard. A separator can be provided as first argument. Default value is newline. |
|
||||||
|
|
|
@ -2322,12 +2322,7 @@ pub mod cmd {
|
||||||
write_all_impl(cx, args, event, true, true)
|
write_all_impl(cx, args, event, true, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn quit_all_impl(
|
fn quit_all_impl(editor: &mut Editor, force: bool) -> anyhow::Result<()> {
|
||||||
editor: &mut Editor,
|
|
||||||
_args: &[Cow<str>],
|
|
||||||
_event: PromptEvent,
|
|
||||||
force: bool,
|
|
||||||
) -> anyhow::Result<()> {
|
|
||||||
if !force {
|
if !force {
|
||||||
buffers_remaining_impl(editor)?;
|
buffers_remaining_impl(editor)?;
|
||||||
}
|
}
|
||||||
|
@ -2343,18 +2338,18 @@ pub mod cmd {
|
||||||
|
|
||||||
fn quit_all(
|
fn quit_all(
|
||||||
cx: &mut compositor::Context,
|
cx: &mut compositor::Context,
|
||||||
args: &[Cow<str>],
|
_args: &[Cow<str>],
|
||||||
event: PromptEvent,
|
_event: PromptEvent,
|
||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
quit_all_impl(cx.editor, args, event, false)
|
quit_all_impl(cx.editor, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn force_quit_all(
|
fn force_quit_all(
|
||||||
cx: &mut compositor::Context,
|
cx: &mut compositor::Context,
|
||||||
args: &[Cow<str>],
|
_args: &[Cow<str>],
|
||||||
event: PromptEvent,
|
_event: PromptEvent,
|
||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
quit_all_impl(cx.editor, args, event, true)
|
quit_all_impl(cx.editor, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cquit(
|
fn cquit(
|
||||||
|
@ -2368,12 +2363,21 @@ pub mod cmd {
|
||||||
.unwrap_or(1);
|
.unwrap_or(1);
|
||||||
cx.editor.exit_code = exit_code;
|
cx.editor.exit_code = exit_code;
|
||||||
|
|
||||||
let views: Vec<_> = cx.editor.tree.views().map(|(view, _)| view.id).collect();
|
quit_all_impl(cx.editor, false)
|
||||||
for view_id in views {
|
}
|
||||||
cx.editor.close(view_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
fn force_cquit(
|
||||||
|
cx: &mut compositor::Context,
|
||||||
|
args: &[Cow<str>],
|
||||||
|
_event: PromptEvent,
|
||||||
|
) -> anyhow::Result<()> {
|
||||||
|
let exit_code = args
|
||||||
|
.first()
|
||||||
|
.and_then(|code| code.parse::<i32>().ok())
|
||||||
|
.unwrap_or(1);
|
||||||
|
cx.editor.exit_code = exit_code;
|
||||||
|
|
||||||
|
quit_all_impl(cx.editor, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn theme(
|
fn theme(
|
||||||
|
@ -2877,6 +2881,13 @@ pub mod cmd {
|
||||||
fun: cquit,
|
fun: cquit,
|
||||||
completer: None,
|
completer: None,
|
||||||
},
|
},
|
||||||
|
TypableCommand {
|
||||||
|
name: "cquit!",
|
||||||
|
aliases: &["cq!"],
|
||||||
|
doc: "Quit with exit code (default 1) forcefully (ignoring unsaved changes). Accepts an optional integer exit code (:cq! 2).",
|
||||||
|
fun: force_cquit,
|
||||||
|
completer: None,
|
||||||
|
},
|
||||||
TypableCommand {
|
TypableCommand {
|
||||||
name: "theme",
|
name: "theme",
|
||||||
aliases: &[],
|
aliases: &[],
|
||||||
|
|
Loading…
Add table
Reference in a new issue