@@ -846,7 +846,10 @@
// "mode": "eager"
// 2. Display predictions inline only when holding a modifier key (alt by default).
// "mode": "subtle"
- "mode": "eager"
+ "mode": "eager",
+ // Whether edit predictions are enabled in the assistant prompt editor.
+ // This setting has no effect if globally disabled.
+ "enabled_in_assistant": true
},
// Settings specific to journaling
"journal": {
@@ -29,7 +29,10 @@ use gpui::{
WeakEntity,
};
use indexed_docs::IndexedDocsStore;
-use language::{language_settings::SoftWrap, BufferSnapshot, LspAdapterDelegate, ToOffset};
+use language::{
+ language_settings::{all_language_settings, SoftWrap},
+ BufferSnapshot, LspAdapterDelegate, ToOffset,
+};
use language_model::{
LanguageModelImage, LanguageModelProvider, LanguageModelProviderTosView, LanguageModelRegistry,
Role,
@@ -41,7 +44,7 @@ use project::lsp_store::LocalLspAdapterDelegate;
use project::{Project, Worktree};
use rope::Point;
use serde::{Deserialize, Serialize};
-use settings::{update_settings_file, Settings};
+use settings::{update_settings_file, Settings, SettingsStore};
use std::{any::TypeId, borrow::Cow, cmp, ops::Range, path::PathBuf, sync::Arc, time::Duration};
use text::SelectionGoal;
use ui::{
@@ -228,6 +231,13 @@ impl ContextEditor {
editor.set_completion_provider(Some(Box::new(completion_provider)));
editor.set_menu_inline_completions_policy(MenuInlineCompletionsPolicy::Never);
editor.set_collaboration_hub(Box::new(project.clone()));
+
+ let show_edit_predictions = all_language_settings(None, cx)
+ .edit_predictions
+ .enabled_in_assistant;
+
+ editor.set_show_edit_predictions(Some(show_edit_predictions), window, cx);
+
editor
});
@@ -236,6 +246,7 @@ impl ContextEditor {
cx.subscribe_in(&context, window, Self::handle_context_event),
cx.subscribe_in(&editor, window, Self::handle_editor_event),
cx.subscribe_in(&editor, window, Self::handle_editor_search_event),
+ cx.observe_global_in::<SettingsStore>(window, Self::settings_changed),
];
let fs_clone = fs.clone();
@@ -286,6 +297,16 @@ impl ContextEditor {
this
}
+ fn settings_changed(&mut self, window: &mut Window, cx: &mut Context<Self>) {
+ self.editor.update(cx, |editor, cx| {
+ let show_edit_predictions = all_language_settings(None, cx)
+ .edit_predictions
+ .enabled_in_assistant;
+
+ editor.set_show_edit_predictions(Some(show_edit_predictions), window, cx);
+ });
+ }
+
pub fn context(&self) -> &Entity<AssistantContext> {
&self.context
}
@@ -236,6 +236,9 @@ pub struct EditPredictionSettings {
pub mode: EditPredictionsMode,
/// Settings specific to GitHub Copilot.
pub copilot: CopilotSettings,
+ /// Whether edit predictions are enabled in the assistant prompt editor.
+ /// This setting has no effect if globally disabled.
+ pub enabled_in_assistant: bool,
}
impl EditPredictionSettings {
@@ -500,6 +503,10 @@ pub struct EditPredictionSettingsContent {
/// Settings specific to GitHub Copilot.
#[serde(default)]
pub copilot: CopilotSettingsContent,
+ /// Whether edit predictions are enabled in the assistant prompt editor.
+ /// This has no effect if globally disabled.
+ #[serde(default = "default_true")]
+ pub enabled_in_assistant: bool,
}
#[derive(Clone, Debug, Default, Serialize, Deserialize, JsonSchema, PartialEq)]
@@ -1119,6 +1126,12 @@ impl settings::Settings for AllLanguageSettings {
})
.unwrap_or_default();
+ let mut edit_predictions_enabled_in_assistant = default_value
+ .edit_predictions
+ .as_ref()
+ .map(|settings| settings.enabled_in_assistant)
+ .unwrap_or(true);
+
let mut file_types: HashMap<Arc<str>, GlobSet> = HashMap::default();
for (language, suffixes) in &default_value.file_types {
@@ -1145,6 +1158,7 @@ impl settings::Settings for AllLanguageSettings {
if let Some(edit_predictions) = user_settings.edit_predictions.as_ref() {
edit_predictions_mode = edit_predictions.mode;
+ edit_predictions_enabled_in_assistant = edit_predictions.enabled_in_assistant;
if let Some(disabled_globs) = edit_predictions.disabled_globs.as_ref() {
completion_globs.extend(disabled_globs.iter());
@@ -1224,6 +1238,7 @@ impl settings::Settings for AllLanguageSettings {
.collect(),
mode: edit_predictions_mode,
copilot: copilot_settings,
+ enabled_in_assistant: edit_predictions_enabled_in_assistant,
},
defaults,
languages,