Skip to content

Commit 16ba16e

Browse files
committed
commands: skip code actions on auto save
Adds a new `--no-code-actions` flag for the write and write-all commands to disable configured on save code actions.
1 parent ee4854c commit 16ba16e

File tree

3 files changed

+45
-14
lines changed

3 files changed

+45
-14
lines changed

helix-term/src/commands/typed.rs

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ fn exit(cx: &mut compositor::Context, args: Args, event: PromptEvent) -> anyhow:
8080
WriteOptions {
8181
force: false,
8282
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
83+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
8384
},
8485
)?;
8586
}
@@ -99,6 +100,7 @@ fn force_exit(cx: &mut compositor::Context, args: Args, event: PromptEvent) -> a
99100
WriteOptions {
100101
force: true,
101102
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
103+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
102104
},
103105
)?;
104106
}
@@ -420,7 +422,11 @@ fn write_impl(
420422
None
421423
};
422424

423-
let job = code_actions_on_save(cx, doc_id, fmt);
425+
let job = if options.code_actions {
426+
code_actions_on_save(cx, doc_id, fmt)
427+
} else {
428+
fmt
429+
};
424430

425431
if let Some(job) = job {
426432
cx.jobs.add(job);
@@ -496,6 +502,7 @@ fn insert_final_newline(doc: &mut Document, view_id: ViewId) {
496502
pub struct WriteOptions {
497503
pub force: bool,
498504
pub auto_format: bool,
505+
pub code_actions: bool,
499506
}
500507

501508
fn write(cx: &mut compositor::Context, args: Args, event: PromptEvent) -> anyhow::Result<()> {
@@ -509,6 +516,7 @@ fn write(cx: &mut compositor::Context, args: Args, event: PromptEvent) -> anyhow
509516
WriteOptions {
510517
force: false,
511518
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
519+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
512520
},
513521
)
514522
}
@@ -524,6 +532,7 @@ fn force_write(cx: &mut compositor::Context, args: Args, event: PromptEvent) ->
524532
WriteOptions {
525533
force: true,
526534
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
535+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
527536
},
528537
)
529538
}
@@ -543,6 +552,7 @@ fn write_buffer_close(
543552
WriteOptions {
544553
force: false,
545554
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
555+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
546556
},
547557
)?;
548558

@@ -565,6 +575,7 @@ fn force_write_buffer_close(
565575
WriteOptions {
566576
force: true,
567577
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
578+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
568579
},
569580
)?;
570581

@@ -753,6 +764,7 @@ fn write_quit(cx: &mut compositor::Context, args: Args, event: PromptEvent) -> a
753764
WriteOptions {
754765
force: false,
755766
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
767+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
756768
},
757769
)?;
758770
cx.block_try_flush_writes()?;
@@ -774,6 +786,7 @@ fn force_write_quit(
774786
WriteOptions {
775787
force: true,
776788
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
789+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
777790
},
778791
)?;
779792
cx.block_try_flush_writes()?;
@@ -818,6 +831,7 @@ pub struct WriteAllOptions {
818831
pub force: bool,
819832
pub write_scratch: bool,
820833
pub auto_format: bool,
834+
pub code_actions: bool,
821835
}
822836

823837
pub fn write_all_impl(
@@ -891,7 +905,11 @@ pub fn write_all_impl(
891905
None
892906
};
893907

894-
let job = code_actions_on_save(cx, doc_id, fmt);
908+
let job = if options.code_actions {
909+
code_actions_on_save(cx, doc_id, fmt)
910+
} else {
911+
fmt
912+
};
895913

896914
if let Some(job) = job {
897915
cx.jobs.add(job);
@@ -918,6 +936,7 @@ fn write_all(cx: &mut compositor::Context, args: Args, event: PromptEvent) -> an
918936
force: false,
919937
write_scratch: true,
920938
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
939+
code_actions: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
921940
},
922941
)
923942
}
@@ -937,6 +956,7 @@ fn force_write_all(
937956
force: true,
938957
write_scratch: true,
939958
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
959+
code_actions: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
940960
},
941961
)
942962
}
@@ -955,6 +975,7 @@ fn write_all_quit(
955975
force: false,
956976
write_scratch: true,
957977
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
978+
code_actions: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
958979
},
959980
)?;
960981
quit_all_impl(cx, false)
@@ -974,6 +995,7 @@ fn force_write_all_quit(
974995
force: true,
975996
write_scratch: true,
976997
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
998+
code_actions: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
977999
},
9781000
);
9791001
quit_all_impl(cx, true)
@@ -1610,6 +1632,7 @@ fn update(cx: &mut compositor::Context, args: Args, event: PromptEvent) -> anyho
16101632
WriteOptions {
16111633
force: false,
16121634
auto_format: !args.has_flag(WRITE_NO_FORMAT_FLAG.name),
1635+
code_actions: !args.has_flag(WRITE_NO_CODE_ACTIONS_FLAG.name),
16131636
},
16141637
)
16151638
} else {
@@ -2915,6 +2938,12 @@ const WRITE_NO_FORMAT_FLAG: Flag = Flag {
29152938
..Flag::DEFAULT
29162939
};
29172940

2941+
const WRITE_NO_CODE_ACTIONS_FLAG: Flag = Flag {
2942+
name: "no-code-actions",
2943+
doc: "skip code actions on save",
2944+
..Flag::DEFAULT
2945+
};
2946+
29182947
pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
29192948
TypableCommand {
29202949
name: "exit",
@@ -2924,7 +2953,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
29242953
completer: CommandCompleter::positional(&[completers::filename]),
29252954
signature: Signature {
29262955
positionals: (0, Some(1)),
2927-
flags: &[WRITE_NO_FORMAT_FLAG],
2956+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
29282957
..Signature::DEFAULT
29292958
},
29302959
},
@@ -2936,7 +2965,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
29362965
completer: CommandCompleter::positional(&[completers::filename]),
29372966
signature: Signature {
29382967
positionals: (0, Some(1)),
2939-
flags: &[WRITE_NO_FORMAT_FLAG],
2968+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
29402969
..Signature::DEFAULT
29412970
},
29422971
},
@@ -3063,7 +3092,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
30633092
completer: CommandCompleter::positional(&[completers::filename]),
30643093
signature: Signature {
30653094
positionals: (0, Some(1)),
3066-
flags: &[WRITE_NO_FORMAT_FLAG],
3095+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
30673096
..Signature::DEFAULT
30683097
},
30693098
},
@@ -3075,7 +3104,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
30753104
completer: CommandCompleter::positional(&[completers::filename]),
30763105
signature: Signature {
30773106
positionals: (0, Some(1)),
3078-
flags: &[WRITE_NO_FORMAT_FLAG],
3107+
flags: &[WRITE_NO_FORMAT_FLAG,WRITE_NO_CODE_ACTIONS_FLAG],
30793108
..Signature::DEFAULT
30803109
},
30813110
},
@@ -3087,7 +3116,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
30873116
completer: CommandCompleter::positional(&[completers::filename]),
30883117
signature: Signature {
30893118
positionals: (0, Some(1)),
3090-
flags: &[WRITE_NO_FORMAT_FLAG],
3119+
flags: &[WRITE_NO_FORMAT_FLAG,WRITE_NO_CODE_ACTIONS_FLAG],
30913120
..Signature::DEFAULT
30923121
},
30933122
},
@@ -3099,7 +3128,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
30993128
completer: CommandCompleter::positional(&[completers::filename]),
31003129
signature: Signature {
31013130
positionals: (0, Some(1)),
3102-
flags: &[WRITE_NO_FORMAT_FLAG],
3131+
flags: &[WRITE_NO_FORMAT_FLAG,WRITE_NO_CODE_ACTIONS_FLAG],
31033132
..Signature::DEFAULT
31043133
},
31053134
},
@@ -3180,7 +3209,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
31803209
completer: CommandCompleter::positional(&[completers::filename]),
31813210
signature: Signature {
31823211
positionals: (0, Some(1)),
3183-
flags: &[WRITE_NO_FORMAT_FLAG],
3212+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
31843213
..Signature::DEFAULT
31853214
},
31863215
},
@@ -3192,7 +3221,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
31923221
completer: CommandCompleter::positional(&[completers::filename]),
31933222
signature: Signature {
31943223
positionals: (0, Some(1)),
3195-
flags: &[WRITE_NO_FORMAT_FLAG],
3224+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
31963225
..Signature::DEFAULT
31973226
},
31983227
},
@@ -3204,7 +3233,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
32043233
completer: CommandCompleter::none(),
32053234
signature: Signature {
32063235
positionals: (0, Some(0)),
3207-
flags: &[WRITE_NO_FORMAT_FLAG],
3236+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
32083237
..Signature::DEFAULT
32093238
},
32103239
},
@@ -3216,7 +3245,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
32163245
completer: CommandCompleter::none(),
32173246
signature: Signature {
32183247
positionals: (0, Some(0)),
3219-
flags: &[WRITE_NO_FORMAT_FLAG],
3248+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
32203249
..Signature::DEFAULT
32213250
},
32223251
},
@@ -3228,7 +3257,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
32283257
completer: CommandCompleter::none(),
32293258
signature: Signature {
32303259
positionals: (0, Some(0)),
3231-
flags: &[WRITE_NO_FORMAT_FLAG],
3260+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
32323261
..Signature::DEFAULT
32333262
},
32343263
},
@@ -3240,7 +3269,7 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
32403269
completer: CommandCompleter::none(),
32413270
signature: Signature {
32423271
positionals: (0, Some(0)),
3243-
flags: &[WRITE_NO_FORMAT_FLAG],
3272+
flags: &[WRITE_NO_FORMAT_FLAG, WRITE_NO_CODE_ACTIONS_FLAG],
32443273
..Signature::DEFAULT
32453274
},
32463275
},

helix-term/src/handlers/auto_save.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ fn request_auto_save(editor: &mut Editor) {
9191
force: false,
9292
write_scratch: false,
9393
auto_format: false,
94+
code_actions: false,
9495
};
9596

9697
if let Err(e) = commands::typed::write_all_impl(context, options) {

helix-term/src/ui/editor.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1585,6 +1585,7 @@ impl Component for EditorView {
15851585
force: false,
15861586
write_scratch: false,
15871587
auto_format: false,
1588+
code_actions: false,
15881589
};
15891590
if let Err(e) = commands::typed::write_all_impl(context, options) {
15901591
context.editor.set_error(format!("{}", e));

0 commit comments

Comments
 (0)