Просмотр исходного кода

Added Enable Roo Code quick fixes setting to disable quick fixes. (#4878)

* Added Enable Roo Code quick fixes setting to disable quick fixes.

* Fix: Address PR review comments and failing tests for #4878

* Fix localization consistency and add test coverage

- Add missing period to French translation for consistency
- Add test case for disabled enableCodeActions setting
- Fix existing test mock setup for proper configuration handling

---------

Co-authored-by: hannesrudolph <[email protected]>
Co-authored-by: RooCode <[email protected]>
OlegOAndreev 6 месяцев назад
Родитель
Сommit
82f7e88c2c

+ 5 - 0
src/activate/CodeActionProvider.ts

@@ -1,6 +1,7 @@
 import * as vscode from "vscode"
 
 import { CodeActionName, CodeActionId } from "@roo-code/types"
+import { Package } from "../shared/package"
 
 import { getCodeActionCommand } from "../utils/commands"
 import { EditorUtils } from "../integrations/editor/EditorUtils"
@@ -36,6 +37,10 @@ export class CodeActionProvider implements vscode.CodeActionProvider {
 		context: vscode.CodeActionContext,
 	): vscode.ProviderResult<(vscode.CodeAction | vscode.Command)[]> {
 		try {
+			if (!vscode.workspace.getConfiguration(Package.name).get<boolean>("enableCodeActions", true)) {
+				return []
+			}
+
 			const effectiveRange = EditorUtils.getEffectiveRange(document, range)
 
 			if (!effectiveRange) {

+ 26 - 0
src/activate/__tests__/CodeActionProvider.spec.ts

@@ -25,6 +25,11 @@ vi.mock("vscode", () => ({
 		Information: 2,
 		Hint: 3,
 	},
+	workspace: {
+		getConfiguration: vi.fn().mockReturnValue({
+			get: vi.fn().mockReturnValue(true),
+		}),
+	},
 }))
 
 vi.mock("../../integrations/editor/EditorUtils", () => ({
@@ -94,9 +99,30 @@ describe("CodeActionProvider", () => {
 			expect(actions).toEqual([])
 		})
 
+		it("should return empty array when enableCodeActions is disabled", () => {
+			// Mock the configuration to return false for enableCodeActions
+			const mockGet = vi.fn().mockReturnValue(false)
+			const mockGetConfiguration = vi.fn().mockReturnValue({
+				get: mockGet,
+			})
+			;(vscode.workspace.getConfiguration as Mock).mockReturnValue(mockGetConfiguration())
+
+			const actions = provider.provideCodeActions(mockDocument, mockRange, mockContext)
+
+			expect(actions).toEqual([])
+			expect(vscode.workspace.getConfiguration).toHaveBeenCalledWith("roo-cline")
+			expect(mockGet).toHaveBeenCalledWith("enableCodeActions", true)
+		})
+
 		it("should handle errors gracefully", () => {
 			const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {})
 
+			// Reset the workspace mock to return true for enableCodeActions
+			const mockGet = vi.fn().mockReturnValue(true)
+			const mockGetConfiguration = vi.fn().mockReturnValue({
+				get: mockGet,
+			})
+			;(vscode.workspace.getConfiguration as Mock).mockReturnValue(mockGetConfiguration())
 			;(EditorUtils.getEffectiveRange as Mock).mockImplementation(() => {
 				throw new Error("Test error")
 			})

+ 5 - 0
src/package.json

@@ -344,6 +344,11 @@
 					"type": "boolean",
 					"default": false,
 					"description": "%settings.rooCodeCloudEnabled.description%"
+				},
+				"roo-cline.enableCodeActions": {
+					"type": "boolean",
+					"default": true,
+					"description": "%settings.enableCodeActions.description%"
 				}
 			}
 		}

+ 2 - 1
src/package.nls.ca.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "El proveïdor del model de llenguatge (p. ex. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "La família del model de llenguatge (p. ex. gpt-4)",
 	"settings.customStoragePath.description": "Ruta d'emmagatzematge personalitzada. Deixeu-la buida per utilitzar la ubicació predeterminada. Admet rutes absolutes (p. ex. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Habilitar Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Habilitar Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Habilitar correccions ràpides de Roo Code."
 }

+ 2 - 1
src/package.nls.de.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Der Anbieter des Sprachmodells (z.B. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "Die Familie des Sprachmodells (z.B. gpt-4)",
 	"settings.customStoragePath.description": "Benutzerdefinierter Speicherpfad. Leer lassen, um den Standardspeicherort zu verwenden. Unterstützt absolute Pfade (z.B. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Aktiviere Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Aktiviere Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Roo Code Schnelle Problembehebung aktivieren."
 }

+ 2 - 1
src/package.nls.es.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "El proveedor del modelo de lenguaje (ej. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "La familia del modelo de lenguaje (ej. gpt-4)",
 	"settings.customStoragePath.description": "Ruta de almacenamiento personalizada. Dejar vacío para usar la ubicación predeterminada. Admite rutas absolutas (ej. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Habilitar Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Habilitar Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Habilitar correcciones rápidas de Roo Code."
 }

+ 2 - 1
src/package.nls.fr.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Le fournisseur du modèle de langage (ex: copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "La famille du modèle de langage (ex: gpt-4)",
 	"settings.customStoragePath.description": "Chemin de stockage personnalisé. Laisser vide pour utiliser l'emplacement par défaut. Prend en charge les chemins absolus (ex: 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Activer Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Activer Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Activer les correctifs rapides de Roo Code."
 }

+ 2 - 1
src/package.nls.hi.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "भाषा मॉडल का विक्रेता (उदा. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "भाषा मॉडल का परिवार (उदा. gpt-4)",
 	"settings.customStoragePath.description": "कस्टम स्टोरेज पाथ। डिफ़ॉल्ट स्थान का उपयोग करने के लिए खाली छोड़ें। पूर्ण पथ का समर्थन करता है (उदा. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud सक्षम करें।"
+	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud सक्षम करें।",
+	"settings.enableCodeActions.description": "Roo Code त्वरित सुधार सक्षम करें"
 }

+ 2 - 1
src/package.nls.id.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Vendor dari model bahasa (misalnya copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "Keluarga dari model bahasa (misalnya gpt-4)",
 	"settings.customStoragePath.description": "Path penyimpanan kustom. Biarkan kosong untuk menggunakan lokasi default. Mendukung path absolut (misalnya 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Aktifkan Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Aktifkan Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Aktifkan perbaikan cepat Roo Code."
 }

+ 2 - 1
src/package.nls.it.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Il fornitore del modello linguistico (es. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "La famiglia del modello linguistico (es. gpt-4)",
 	"settings.customStoragePath.description": "Percorso di archiviazione personalizzato. Lasciare vuoto per utilizzare la posizione predefinita. Supporta percorsi assoluti (es. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Abilita Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Abilita Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Abilita correzioni rapide di Roo Code."
 }

+ 2 - 1
src/package.nls.ja.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "言語モデルのベンダー(例:copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "言語モデルのファミリー(例:gpt-4)",
 	"settings.customStoragePath.description": "カスタムストレージパス。デフォルトの場所を使用する場合は空のままにします。絶対パスをサポートします(例:'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud を有効にする。"
+	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud を有効にする。",
+	"settings.enableCodeActions.description": "Roo Codeのクイック修正を有効にする。"
 }

+ 2 - 1
src/package.nls.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "The vendor of the language model (e.g. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "The family of the language model (e.g. gpt-4)",
 	"settings.customStoragePath.description": "Custom storage path. Leave empty to use the default location. Supports absolute paths (e.g. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Enable Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Enable Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Enable Roo Code quick fixes"
 }

+ 2 - 1
src/package.nls.ko.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "언어 모델 공급자 (예: copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "언어 모델 계열 (예: gpt-4)",
 	"settings.customStoragePath.description": "사용자 지정 저장소 경로. 기본 위치를 사용하려면 비워두세요. 절대 경로를 지원합니다 (예: 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud 사용 설정"
+	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud 사용 설정",
+	"settings.enableCodeActions.description": "Roo Code 빠른 수정 사용 설정"
 }

+ 2 - 1
src/package.nls.nl.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "De leverancier van het taalmodel (bijv. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "De familie van het taalmodel (bijv. gpt-4)",
 	"settings.customStoragePath.description": "Aangepast opslagpad. Laat leeg om de standaardlocatie te gebruiken. Ondersteunt absolute paden (bijv. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud inschakelen."
+	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud inschakelen.",
+	"settings.enableCodeActions.description": "Snelle correcties van Roo Code inschakelen."
 }

+ 2 - 1
src/package.nls.pl.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Dostawca modelu językowego (np. copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "Rodzina modelu językowego (np. gpt-4)",
 	"settings.customStoragePath.description": "Niestandardowa ścieżka przechowywania. Pozostaw puste, aby użyć domyślnej lokalizacji. Obsługuje ścieżki bezwzględne (np. 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Włącz Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Włącz Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Włącz szybkie poprawki Roo Code."
 }

+ 2 - 1
src/package.nls.pt-BR.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "O fornecedor do modelo de linguagem (ex: copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "A família do modelo de linguagem (ex: gpt-4)",
 	"settings.customStoragePath.description": "Caminho de armazenamento personalizado. Deixe vazio para usar o local padrão. Suporta caminhos absolutos (ex: 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Habilitar Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Habilitar Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Habilitar correções rápidas do Roo Code."
 }

+ 2 - 1
src/package.nls.ru.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Поставщик языковой модели (например, copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "Семейство языковой модели (например, gpt-4)",
 	"settings.customStoragePath.description": "Пользовательский путь хранения. Оставьте пустым для использования пути по умолчанию. Поддерживает абсолютные пути (например, 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Включить Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Включить Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Включить быстрые исправления Roo Code."
 }

+ 2 - 1
src/package.nls.tr.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Dil modelinin sağlayıcısı (örn: copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "Dil modelinin ailesi (örn: gpt-4)",
 	"settings.customStoragePath.description": "Özel depolama yolu. Varsayılan konumu kullanmak için boş bırakın. Mutlak yolları destekler (örn: 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud'u Etkinleştir."
+	"settings.rooCodeCloudEnabled.description": "Roo Code Cloud'u Etkinleştir.",
+	"settings.enableCodeActions.description": "Roo Code hızlı düzeltmeleri etkinleştir."
 }

+ 2 - 1
src/package.nls.vi.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "Nhà cung cấp mô hình ngôn ngữ (ví dụ: copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "Họ mô hình ngôn ngữ (ví dụ: gpt-4)",
 	"settings.customStoragePath.description": "Đường dẫn lưu trữ tùy chỉnh. Để trống để sử dụng vị trí mặc định. Hỗ trợ đường dẫn tuyệt đối (ví dụ: 'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "Bật Roo Code Cloud."
+	"settings.rooCodeCloudEnabled.description": "Bật Roo Code Cloud.",
+	"settings.enableCodeActions.description": "Bật sửa lỗi nhanh Roo Code."
 }

+ 2 - 1
src/package.nls.zh-CN.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "语言模型的供应商(例如:copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "语言模型的系列(例如:gpt-4)",
 	"settings.customStoragePath.description": "自定义存储路径。留空以使用默认位置。支持绝对路径(例如:'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "启用 Roo Code Cloud。"
+	"settings.rooCodeCloudEnabled.description": "启用 Roo Code Cloud。",
+	"settings.enableCodeActions.description": "启用 Roo Code 快速修复"
 }

+ 2 - 1
src/package.nls.zh-TW.json

@@ -30,5 +30,6 @@
 	"settings.vsCodeLmModelSelector.vendor.description": "語言模型供應商(例如:copilot)",
 	"settings.vsCodeLmModelSelector.family.description": "語言模型系列(例如:gpt-4)",
 	"settings.customStoragePath.description": "自訂儲存路徑。留空以使用預設位置。支援絕對路徑(例如:'D:\\RooCodeStorage')",
-	"settings.rooCodeCloudEnabled.description": "啟用 Roo Code Cloud。"
+	"settings.rooCodeCloudEnabled.description": "啟用 Roo Code Cloud。",
+	"settings.enableCodeActions.description": "啟用 Roo Code 快速修復。"
 }