@fresh-editor/fresh-editor 0.1.65 → 0.1.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +106 -0
- package/README.md +4 -2
- package/package.json +1 -1
- package/plugins/audit_mode.i18n.json +380 -0
- package/plugins/audit_mode.ts +1813 -0
- package/plugins/buffer_modified.i18n.json +32 -0
- package/plugins/buffer_modified.ts +5 -3
- package/plugins/calculator.i18n.json +44 -0
- package/plugins/calculator.ts +6 -4
- package/plugins/clangd-lsp.ts +168 -0
- package/plugins/clangd_support.i18n.json +104 -0
- package/plugins/clangd_support.ts +18 -16
- package/plugins/color_highlighter.i18n.json +68 -0
- package/plugins/color_highlighter.ts +12 -10
- package/plugins/config-schema.json +79 -141
- package/plugins/csharp-lsp.ts +147 -0
- package/plugins/csharp_support.i18n.json +38 -0
- package/plugins/csharp_support.ts +6 -4
- package/plugins/css-lsp.ts +143 -0
- package/plugins/diagnostics_panel.i18n.json +110 -0
- package/plugins/diagnostics_panel.ts +19 -17
- package/plugins/find_references.i18n.json +128 -0
- package/plugins/find_references.ts +22 -20
- package/plugins/git_blame.i18n.json +230 -0
- package/plugins/git_blame.ts +39 -37
- package/plugins/git_find_file.i18n.json +146 -0
- package/plugins/git_find_file.ts +24 -22
- package/plugins/git_grep.i18n.json +80 -0
- package/plugins/git_grep.ts +15 -13
- package/plugins/git_gutter.i18n.json +44 -0
- package/plugins/git_gutter.ts +7 -5
- package/plugins/git_log.i18n.json +224 -0
- package/plugins/git_log.ts +41 -39
- package/plugins/go-lsp.ts +143 -0
- package/plugins/html-lsp.ts +145 -0
- package/plugins/json-lsp.ts +145 -0
- package/plugins/lib/fresh.d.ts +150 -14
- package/plugins/lib/index.ts +1 -1
- package/plugins/lib/navigation-controller.ts +3 -3
- package/plugins/lib/panel-manager.ts +15 -13
- package/plugins/lib/virtual-buffer-factory.ts +84 -112
- package/plugins/live_grep.i18n.json +80 -0
- package/plugins/live_grep.ts +15 -13
- package/plugins/markdown_compose.i18n.json +104 -0
- package/plugins/markdown_compose.ts +17 -15
- package/plugins/merge_conflict.i18n.json +380 -0
- package/plugins/merge_conflict.ts +72 -73
- package/plugins/path_complete.i18n.json +38 -0
- package/plugins/path_complete.ts +6 -4
- package/plugins/python-lsp.ts +162 -0
- package/plugins/rust-lsp.ts +166 -0
- package/plugins/search_replace.i18n.json +188 -0
- package/plugins/search_replace.ts +31 -29
- package/plugins/test_i18n.i18n.json +12 -0
- package/plugins/test_i18n.ts +18 -0
- package/plugins/theme_editor.i18n.json +1417 -0
- package/plugins/theme_editor.ts +73 -69
- package/plugins/todo_highlighter.i18n.json +86 -0
- package/plugins/todo_highlighter.ts +15 -13
- package/plugins/typescript-lsp.ts +167 -0
- package/plugins/vi_mode.i18n.json +716 -0
- package/plugins/vi_mode.ts +2747 -0
- package/plugins/welcome.i18n.json +110 -0
- package/plugins/welcome.ts +18 -16
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/// <reference path="./lib/fresh.d.ts" />
|
|
2
|
+
const editor = getEditor();
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Python LSP Helper Plugin
|
|
7
|
+
*
|
|
8
|
+
* Provides user-friendly error handling for Python LSP server issues.
|
|
9
|
+
* When the Python LSP server fails to start, this plugin shows an
|
|
10
|
+
* actionable popup with installation instructions.
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Detects Python LSP server errors (pylsp, python-lsp-server)
|
|
14
|
+
* - Shows popup with install commands (pip, pipx)
|
|
15
|
+
* - Allows copying install commands to clipboard
|
|
16
|
+
* - Provides option to disable Python LSP
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
interface LspServerErrorData {
|
|
20
|
+
language: string;
|
|
21
|
+
server_command: string;
|
|
22
|
+
error_type: string;
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface LspStatusClickedData {
|
|
27
|
+
language: string;
|
|
28
|
+
has_error: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface ActionPopupResultData {
|
|
32
|
+
popup_id: string;
|
|
33
|
+
action_id: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Install commands for Python LSP server (python-lsp-server / pylsp)
|
|
37
|
+
// pipx provides isolated installation (recommended)
|
|
38
|
+
// pip_all includes all optional dependencies (rope, pyflakes, etc.)
|
|
39
|
+
// See: https://github.com/python-lsp/python-lsp-server
|
|
40
|
+
const INSTALL_COMMANDS = {
|
|
41
|
+
pipx: "pipx install python-lsp-server",
|
|
42
|
+
pip: "pip install python-lsp-server",
|
|
43
|
+
pip_all: "pip install 'python-lsp-server[all]'",
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Track error state for Python LSP
|
|
47
|
+
let pythonLspError: { serverCommand: string; message: string } | null = null;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Handle LSP server errors for Python
|
|
51
|
+
*/
|
|
52
|
+
globalThis.on_python_lsp_server_error = function (
|
|
53
|
+
data: LspServerErrorData
|
|
54
|
+
): void {
|
|
55
|
+
// Only handle Python language errors
|
|
56
|
+
if (data.language !== "python") {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
editor.debug(
|
|
61
|
+
`python-lsp: Server error - ${data.error_type}: ${data.message}`
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
// Store error state for later reference
|
|
65
|
+
pythonLspError = {
|
|
66
|
+
serverCommand: data.server_command,
|
|
67
|
+
message: data.message,
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Show a status message for immediate feedback
|
|
71
|
+
if (data.error_type === "not_found") {
|
|
72
|
+
editor.setStatus(
|
|
73
|
+
`Python LSP server '${data.server_command}' not found. Click status bar for help.`
|
|
74
|
+
);
|
|
75
|
+
} else {
|
|
76
|
+
editor.setStatus(`Python LSP error: ${data.message}`);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// Register hook for LSP server errors
|
|
81
|
+
editor.on("lsp_server_error", "on_python_lsp_server_error");
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Handle status bar click when there's a Python LSP error
|
|
85
|
+
*/
|
|
86
|
+
globalThis.on_python_lsp_status_clicked = function (
|
|
87
|
+
data: LspStatusClickedData
|
|
88
|
+
): void {
|
|
89
|
+
// Only handle Python language clicks when there's an error
|
|
90
|
+
if (data.language !== "python" || !pythonLspError) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
editor.debug("python-lsp: Status clicked, showing help popup");
|
|
95
|
+
|
|
96
|
+
// Show action popup with install options
|
|
97
|
+
editor.showActionPopup({
|
|
98
|
+
id: "python-lsp-help",
|
|
99
|
+
title: "Python Language Server Not Found",
|
|
100
|
+
message: `"${pythonLspError.serverCommand}" provides code completion, diagnostics, and navigation for Python files. Copy a command below to install it, or search online for your platform.`,
|
|
101
|
+
actions: [
|
|
102
|
+
{ id: "copy_pipx", label: `Copy: ${INSTALL_COMMANDS.pipx}` },
|
|
103
|
+
{ id: "copy_pip", label: `Copy: ${INSTALL_COMMANDS.pip}` },
|
|
104
|
+
{ id: "copy_pip_all", label: `Copy: ${INSTALL_COMMANDS.pip_all}` },
|
|
105
|
+
{ id: "disable", label: "Disable Python LSP" },
|
|
106
|
+
{ id: "dismiss", label: "Dismiss (ESC)" },
|
|
107
|
+
],
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// Register hook for status bar clicks
|
|
112
|
+
editor.on("lsp_status_clicked", "on_python_lsp_status_clicked");
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Handle action popup results for Python LSP help
|
|
116
|
+
*/
|
|
117
|
+
globalThis.on_python_lsp_action_result = function (
|
|
118
|
+
data: ActionPopupResultData
|
|
119
|
+
): void {
|
|
120
|
+
// Only handle our popup
|
|
121
|
+
if (data.popup_id !== "python-lsp-help") {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
editor.debug(`python-lsp: Action selected - ${data.action_id}`);
|
|
126
|
+
|
|
127
|
+
switch (data.action_id) {
|
|
128
|
+
case "copy_pipx":
|
|
129
|
+
editor.setClipboard(INSTALL_COMMANDS.pipx);
|
|
130
|
+
editor.setStatus("Copied: " + INSTALL_COMMANDS.pipx);
|
|
131
|
+
break;
|
|
132
|
+
|
|
133
|
+
case "copy_pip":
|
|
134
|
+
editor.setClipboard(INSTALL_COMMANDS.pip);
|
|
135
|
+
editor.setStatus("Copied: " + INSTALL_COMMANDS.pip);
|
|
136
|
+
break;
|
|
137
|
+
|
|
138
|
+
case "copy_pip_all":
|
|
139
|
+
editor.setClipboard(INSTALL_COMMANDS.pip_all);
|
|
140
|
+
editor.setStatus("Copied: " + INSTALL_COMMANDS.pip_all);
|
|
141
|
+
break;
|
|
142
|
+
|
|
143
|
+
case "disable":
|
|
144
|
+
editor.disableLspForLanguage("python");
|
|
145
|
+
editor.setStatus("Python LSP disabled");
|
|
146
|
+
pythonLspError = null;
|
|
147
|
+
break;
|
|
148
|
+
|
|
149
|
+
case "dismiss":
|
|
150
|
+
case "dismissed":
|
|
151
|
+
// Just close the popup without action
|
|
152
|
+
break;
|
|
153
|
+
|
|
154
|
+
default:
|
|
155
|
+
editor.debug(`python-lsp: Unknown action: ${data.action_id}`);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
// Register hook for action popup results
|
|
160
|
+
editor.on("action_popup_result", "on_python_lsp_action_result");
|
|
161
|
+
|
|
162
|
+
editor.debug("python-lsp: Plugin loaded");
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/// <reference path="./lib/fresh.d.ts" />
|
|
2
|
+
const editor = getEditor();
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Rust LSP Helper Plugin
|
|
7
|
+
*
|
|
8
|
+
* Provides user-friendly error handling for Rust LSP server issues.
|
|
9
|
+
* When rust-analyzer fails to start, this plugin shows an actionable
|
|
10
|
+
* popup with installation instructions.
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Detects Rust LSP server errors (rust-analyzer)
|
|
14
|
+
* - Shows popup with install commands (rustup, brew)
|
|
15
|
+
* - Allows copying install commands to clipboard
|
|
16
|
+
* - Provides option to disable Rust LSP
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
interface LspServerErrorData {
|
|
20
|
+
language: string;
|
|
21
|
+
server_command: string;
|
|
22
|
+
error_type: string;
|
|
23
|
+
message: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface LspStatusClickedData {
|
|
27
|
+
language: string;
|
|
28
|
+
has_error: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface ActionPopupResultData {
|
|
32
|
+
popup_id: string;
|
|
33
|
+
action_id: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Install commands for Rust LSP server
|
|
37
|
+
// rustup is the official recommended method
|
|
38
|
+
// brew is a good alternative for macOS users
|
|
39
|
+
// See: https://rust-analyzer.github.io/book/installation.html
|
|
40
|
+
const INSTALL_COMMANDS = {
|
|
41
|
+
rustup: "rustup component add rust-analyzer",
|
|
42
|
+
brew: "brew install rust-analyzer",
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// Track error state for Rust LSP
|
|
46
|
+
let rustLspError: { serverCommand: string; message: string } | null = null;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Handle LSP server errors for Rust
|
|
50
|
+
*/
|
|
51
|
+
globalThis.on_rust_lsp_server_error = function (
|
|
52
|
+
data: LspServerErrorData
|
|
53
|
+
): void {
|
|
54
|
+
// Only handle Rust language errors
|
|
55
|
+
if (data.language !== "rust") {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
editor.debug(`rust-lsp: Server error - ${data.error_type}: ${data.message}`);
|
|
60
|
+
|
|
61
|
+
// Store error state for later reference
|
|
62
|
+
rustLspError = {
|
|
63
|
+
serverCommand: data.server_command,
|
|
64
|
+
message: data.message,
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// Show a status message for immediate feedback
|
|
68
|
+
if (data.error_type === "not_found") {
|
|
69
|
+
editor.setStatus(
|
|
70
|
+
`Rust LSP server '${data.server_command}' not found. Click status bar for help.`
|
|
71
|
+
);
|
|
72
|
+
} else {
|
|
73
|
+
editor.setStatus(`Rust LSP error: ${data.message}`);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// Register hook for LSP server errors
|
|
78
|
+
editor.on("lsp_server_error", "on_rust_lsp_server_error");
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Handle status bar click when there's a Rust LSP error
|
|
82
|
+
*/
|
|
83
|
+
globalThis.on_rust_lsp_status_clicked = function (
|
|
84
|
+
data: LspStatusClickedData
|
|
85
|
+
): void {
|
|
86
|
+
editor.debug(
|
|
87
|
+
`rust-lsp: lsp_status_clicked hook received - language=${data.language}, has_error=${data.has_error}, rustLspError=${rustLspError ? "SET" : "NULL"}`
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
// Only handle Rust language clicks when there's an error
|
|
91
|
+
if (data.language !== "rust" || !rustLspError) {
|
|
92
|
+
editor.debug(
|
|
93
|
+
`rust-lsp: Skipping - language check=${data.language !== "rust"}, error check=${!rustLspError}`
|
|
94
|
+
);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
editor.debug("rust-lsp: Status clicked, showing help popup");
|
|
99
|
+
|
|
100
|
+
// Show action popup with install options
|
|
101
|
+
const result = editor.showActionPopup({
|
|
102
|
+
id: "rust-lsp-help",
|
|
103
|
+
title: "Rust Language Server Not Found",
|
|
104
|
+
message: `"${rustLspError.serverCommand}" provides code completion, diagnostics, and navigation for Rust files. Copy a command below to install it, or search online for your platform.`,
|
|
105
|
+
actions: [
|
|
106
|
+
{ id: "copy_rustup", label: `Copy: ${INSTALL_COMMANDS.rustup}` },
|
|
107
|
+
{ id: "copy_brew", label: `Copy: ${INSTALL_COMMANDS.brew}` },
|
|
108
|
+
{ id: "disable", label: "Disable Rust LSP" },
|
|
109
|
+
{ id: "dismiss", label: "Dismiss (ESC)" },
|
|
110
|
+
],
|
|
111
|
+
});
|
|
112
|
+
editor.debug(`rust-lsp: showActionPopup returned ${result}`);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// Register hook for status bar clicks
|
|
116
|
+
editor.on("lsp_status_clicked", "on_rust_lsp_status_clicked");
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Handle action popup results for Rust LSP help
|
|
120
|
+
*/
|
|
121
|
+
globalThis.on_rust_lsp_action_result = function (
|
|
122
|
+
data: ActionPopupResultData
|
|
123
|
+
): void {
|
|
124
|
+
editor.debug(
|
|
125
|
+
`rust-lsp: action_popup_result received - popup_id=${data.popup_id}, action_id=${data.action_id}`
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
// Only handle our popup
|
|
129
|
+
if (data.popup_id !== "rust-lsp-help") {
|
|
130
|
+
editor.debug("rust-lsp: Not our popup, skipping");
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
editor.debug(`rust-lsp: Action selected - ${data.action_id}, rustLspError will remain SET`);
|
|
135
|
+
|
|
136
|
+
switch (data.action_id) {
|
|
137
|
+
case "copy_rustup":
|
|
138
|
+
editor.setClipboard(INSTALL_COMMANDS.rustup);
|
|
139
|
+
editor.setStatus("Copied: " + INSTALL_COMMANDS.rustup);
|
|
140
|
+
break;
|
|
141
|
+
|
|
142
|
+
case "copy_brew":
|
|
143
|
+
editor.setClipboard(INSTALL_COMMANDS.brew);
|
|
144
|
+
editor.setStatus("Copied: " + INSTALL_COMMANDS.brew);
|
|
145
|
+
break;
|
|
146
|
+
|
|
147
|
+
case "disable":
|
|
148
|
+
editor.disableLspForLanguage("rust");
|
|
149
|
+
editor.setStatus("Rust LSP disabled");
|
|
150
|
+
rustLspError = null;
|
|
151
|
+
break;
|
|
152
|
+
|
|
153
|
+
case "dismiss":
|
|
154
|
+
case "dismissed":
|
|
155
|
+
// Just close the popup without action
|
|
156
|
+
break;
|
|
157
|
+
|
|
158
|
+
default:
|
|
159
|
+
editor.debug(`rust-lsp: Unknown action: ${data.action_id}`);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// Register hook for action popup results
|
|
164
|
+
editor.on("action_popup_result", "on_rust_lsp_action_result");
|
|
165
|
+
|
|
166
|
+
editor.debug("rust-lsp: Plugin loaded");
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
{
|
|
2
|
+
"en": {
|
|
3
|
+
"cmd.search_replace": "Search and Replace in Project",
|
|
4
|
+
"cmd.search_replace_desc": "Search and replace text across all git-tracked files",
|
|
5
|
+
"status.ready": "Search & Replace plugin ready",
|
|
6
|
+
"status.enter_pattern": "Enter search pattern...",
|
|
7
|
+
"status.no_matches": "No matches found for \"{pattern}\"",
|
|
8
|
+
"status.found_matches": "Found {count} matches",
|
|
9
|
+
"status.search_error": "Search error: {error}",
|
|
10
|
+
"status.cancelled_empty": "Search cancelled - empty pattern",
|
|
11
|
+
"status.cancelled": "Search/Replace cancelled",
|
|
12
|
+
"status.no_selected": "No items selected for replacement",
|
|
13
|
+
"status.no_items_selected": "No items selected",
|
|
14
|
+
"status.selected_count": "{selected}/{total} selected",
|
|
15
|
+
"status.replacing": "Replacing {count} occurrences...",
|
|
16
|
+
"status.replaced_with_errors": "Replaced in {files} files ({errors} errors)",
|
|
17
|
+
"status.replaced": "Replaced {count} occurrences in {files} files",
|
|
18
|
+
"status.closed": "Search/Replace closed",
|
|
19
|
+
"status.failed_open_panel": "Failed to open search/replace panel",
|
|
20
|
+
"status.preview": "Preview: {file}:{line}",
|
|
21
|
+
"prompt.search": "Search (in project): ",
|
|
22
|
+
"prompt.replace": "Replace with: ",
|
|
23
|
+
"panel.header": "Search & Replace",
|
|
24
|
+
"panel.search_label": "Search:",
|
|
25
|
+
"panel.replace_label": "Replace:",
|
|
26
|
+
"panel.regex": "(regex)",
|
|
27
|
+
"panel.no_matches": "No matches found",
|
|
28
|
+
"panel.results": "Results: {count}",
|
|
29
|
+
"panel.limited": "(limited to {max})",
|
|
30
|
+
"panel.selected": "({selected} selected)",
|
|
31
|
+
"panel.help": "[SPC] toggle [a] all [n] none [r] REPLACE [RET] preview [q] close"
|
|
32
|
+
},
|
|
33
|
+
"es": {
|
|
34
|
+
"cmd.search_replace": "Buscar y Reemplazar en Proyecto",
|
|
35
|
+
"cmd.search_replace_desc": "Buscar y reemplazar texto en todos los archivos rastreados por git",
|
|
36
|
+
"status.ready": "Plugin de Buscar y Reemplazar listo",
|
|
37
|
+
"status.enter_pattern": "Ingresa el patrón de búsqueda...",
|
|
38
|
+
"status.no_matches": "No se encontraron coincidencias para \"{pattern}\"",
|
|
39
|
+
"status.found_matches": "Se encontraron {count} coincidencias",
|
|
40
|
+
"status.search_error": "Error de búsqueda: {error}",
|
|
41
|
+
"status.cancelled_empty": "Búsqueda cancelada - patrón vacío",
|
|
42
|
+
"status.cancelled": "Buscar/Reemplazar cancelado",
|
|
43
|
+
"status.no_selected": "No hay elementos seleccionados para reemplazar",
|
|
44
|
+
"status.no_items_selected": "No hay elementos seleccionados",
|
|
45
|
+
"status.selected_count": "{selected}/{total} seleccionados",
|
|
46
|
+
"status.replacing": "Reemplazando {count} ocurrencias...",
|
|
47
|
+
"status.replaced_with_errors": "Reemplazado en {files} archivos ({errors} errores)",
|
|
48
|
+
"status.replaced": "Se reemplazaron {count} ocurrencias en {files} archivos",
|
|
49
|
+
"status.closed": "Buscar/Reemplazar cerrado",
|
|
50
|
+
"status.failed_open_panel": "Error al abrir el panel de buscar/reemplazar",
|
|
51
|
+
"status.preview": "Vista previa: {file}:{line}",
|
|
52
|
+
"prompt.search": "Buscar (en proyecto): ",
|
|
53
|
+
"prompt.replace": "Reemplazar con: ",
|
|
54
|
+
"panel.header": "Buscar y Reemplazar",
|
|
55
|
+
"panel.search_label": "Buscar:",
|
|
56
|
+
"panel.replace_label": "Reemplazar:",
|
|
57
|
+
"panel.regex": "(regex)",
|
|
58
|
+
"panel.no_matches": "No se encontraron coincidencias",
|
|
59
|
+
"panel.results": "Resultados: {count}",
|
|
60
|
+
"panel.limited": "(limitado a {max})",
|
|
61
|
+
"panel.selected": "({selected} seleccionados)",
|
|
62
|
+
"panel.help": "[ESP] alternar [a] todos [n] ninguno [r] REEMPLAZAR [RET] vista previa [q] cerrar"
|
|
63
|
+
},
|
|
64
|
+
"de": {
|
|
65
|
+
"cmd.search_replace": "Suchen und Ersetzen im Projekt",
|
|
66
|
+
"cmd.search_replace_desc": "Text in allen von Git verfolgten Dateien suchen und ersetzen",
|
|
67
|
+
"status.ready": "Suchen & Ersetzen Plugin bereit",
|
|
68
|
+
"status.enter_pattern": "Suchmuster eingeben...",
|
|
69
|
+
"status.no_matches": "Keine Treffer für \"{pattern}\" gefunden",
|
|
70
|
+
"status.found_matches": "{count} Treffer gefunden",
|
|
71
|
+
"status.search_error": "Suchfehler: {error}",
|
|
72
|
+
"status.cancelled_empty": "Suche abgebrochen - leeres Muster",
|
|
73
|
+
"status.cancelled": "Suchen/Ersetzen abgebrochen",
|
|
74
|
+
"status.no_selected": "Keine Elemente zum Ersetzen ausgewählt",
|
|
75
|
+
"status.no_items_selected": "Keine Elemente ausgewählt",
|
|
76
|
+
"status.selected_count": "{selected}/{total} ausgewählt",
|
|
77
|
+
"status.replacing": "Ersetze {count} Vorkommen...",
|
|
78
|
+
"status.replaced_with_errors": "Ersetzt in {files} Dateien ({errors} Fehler)",
|
|
79
|
+
"status.replaced": "{count} Vorkommen in {files} Dateien ersetzt",
|
|
80
|
+
"status.closed": "Suchen/Ersetzen geschlossen",
|
|
81
|
+
"status.failed_open_panel": "Fehler beim Öffnen des Suchen/Ersetzen-Panels",
|
|
82
|
+
"status.preview": "Vorschau: {file}:{line}",
|
|
83
|
+
"prompt.search": "Suchen (im Projekt): ",
|
|
84
|
+
"prompt.replace": "Ersetzen durch: ",
|
|
85
|
+
"panel.header": "Suchen & Ersetzen",
|
|
86
|
+
"panel.search_label": "Suchen:",
|
|
87
|
+
"panel.replace_label": "Ersetzen:",
|
|
88
|
+
"panel.regex": "(Regex)",
|
|
89
|
+
"panel.no_matches": "Keine Treffer gefunden",
|
|
90
|
+
"panel.results": "Ergebnisse: {count}",
|
|
91
|
+
"panel.limited": "(begrenzt auf {max})",
|
|
92
|
+
"panel.selected": "({selected} ausgewählt)",
|
|
93
|
+
"panel.help": "[LEER] umschalten [a] alle [n] keine [r] ERSETZEN [RET] Vorschau [q] schließen"
|
|
94
|
+
},
|
|
95
|
+
"fr": {
|
|
96
|
+
"cmd.search_replace": "Rechercher et Remplacer dans le Projet",
|
|
97
|
+
"cmd.search_replace_desc": "Rechercher et remplacer du texte dans tous les fichiers suivis par git",
|
|
98
|
+
"status.ready": "Plugin Rechercher et Remplacer prêt",
|
|
99
|
+
"status.enter_pattern": "Entrez le motif de recherche...",
|
|
100
|
+
"status.no_matches": "Aucune correspondance trouvée pour \"{pattern}\"",
|
|
101
|
+
"status.found_matches": "{count} correspondances trouvées",
|
|
102
|
+
"status.search_error": "Erreur de recherche : {error}",
|
|
103
|
+
"status.cancelled_empty": "Recherche annulée - motif vide",
|
|
104
|
+
"status.cancelled": "Rechercher/Remplacer annulé",
|
|
105
|
+
"status.no_selected": "Aucun élément sélectionné pour le remplacement",
|
|
106
|
+
"status.no_items_selected": "Aucun élément sélectionné",
|
|
107
|
+
"status.selected_count": "{selected}/{total} sélectionnés",
|
|
108
|
+
"status.replacing": "Remplacement de {count} occurrences...",
|
|
109
|
+
"status.replaced_with_errors": "Remplacé dans {files} fichiers ({errors} erreurs)",
|
|
110
|
+
"status.replaced": "{count} occurrences remplacées dans {files} fichiers",
|
|
111
|
+
"status.closed": "Rechercher/Remplacer fermé",
|
|
112
|
+
"status.failed_open_panel": "Échec de l'ouverture du panneau rechercher/remplacer",
|
|
113
|
+
"status.preview": "Aperçu : {file}:{line}",
|
|
114
|
+
"prompt.search": "Rechercher (dans le projet) : ",
|
|
115
|
+
"prompt.replace": "Remplacer par : ",
|
|
116
|
+
"panel.header": "Rechercher et Remplacer",
|
|
117
|
+
"panel.search_label": "Rechercher :",
|
|
118
|
+
"panel.replace_label": "Remplacer :",
|
|
119
|
+
"panel.regex": "(regex)",
|
|
120
|
+
"panel.no_matches": "Aucune correspondance trouvée",
|
|
121
|
+
"panel.results": "Résultats : {count}",
|
|
122
|
+
"panel.limited": "(limité à {max})",
|
|
123
|
+
"panel.selected": "({selected} sélectionnés)",
|
|
124
|
+
"panel.help": "[ESP] basculer [a] tous [n] aucun [r] REMPLACER [RET] aperçu [q] fermer"
|
|
125
|
+
},
|
|
126
|
+
"ja": {
|
|
127
|
+
"cmd.search_replace": "プロジェクト内で検索と置換",
|
|
128
|
+
"cmd.search_replace_desc": "git追跡されているすべてのファイルでテキストを検索して置換",
|
|
129
|
+
"status.ready": "検索と置換プラグイン準備完了",
|
|
130
|
+
"status.enter_pattern": "検索パターンを入力...",
|
|
131
|
+
"status.no_matches": "\"{pattern}\" に一致するものが見つかりません",
|
|
132
|
+
"status.found_matches": "{count} 件の一致が見つかりました",
|
|
133
|
+
"status.search_error": "検索エラー: {error}",
|
|
134
|
+
"status.cancelled_empty": "検索キャンセル - 空のパターン",
|
|
135
|
+
"status.cancelled": "検索/置換がキャンセルされました",
|
|
136
|
+
"status.no_selected": "置換対象が選択されていません",
|
|
137
|
+
"status.no_items_selected": "項目が選択されていません",
|
|
138
|
+
"status.selected_count": "{selected}/{total} 選択済み",
|
|
139
|
+
"status.replacing": "{count} 件を置換中...",
|
|
140
|
+
"status.replaced_with_errors": "{files} ファイルで置換しました ({errors} エラー)",
|
|
141
|
+
"status.replaced": "{files} ファイルで {count} 件を置換しました",
|
|
142
|
+
"status.closed": "検索/置換を閉じました",
|
|
143
|
+
"status.failed_open_panel": "検索/置換パネルを開けませんでした",
|
|
144
|
+
"status.preview": "プレビュー: {file}:{line}",
|
|
145
|
+
"prompt.search": "検索 (プロジェクト内): ",
|
|
146
|
+
"prompt.replace": "置換文字列: ",
|
|
147
|
+
"panel.header": "検索と置換",
|
|
148
|
+
"panel.search_label": "検索:",
|
|
149
|
+
"panel.replace_label": "置換:",
|
|
150
|
+
"panel.regex": "(正規表現)",
|
|
151
|
+
"panel.no_matches": "一致するものが見つかりません",
|
|
152
|
+
"panel.results": "結果: {count}",
|
|
153
|
+
"panel.limited": "(最大 {max} 件)",
|
|
154
|
+
"panel.selected": "({selected} 件選択)",
|
|
155
|
+
"panel.help": "[スペース] 切替 [a] 全選択 [n] 全解除 [r] 置換 [RET] プレビュー [q] 閉じる"
|
|
156
|
+
},
|
|
157
|
+
"zh": {
|
|
158
|
+
"cmd.search_replace": "在项目中搜索和替换",
|
|
159
|
+
"cmd.search_replace_desc": "在所有 git 跟踪的文件中搜索和替换文本",
|
|
160
|
+
"status.ready": "搜索和替换插件已就绪",
|
|
161
|
+
"status.enter_pattern": "输入搜索模式...",
|
|
162
|
+
"status.no_matches": "未找到 \"{pattern}\" 的匹配项",
|
|
163
|
+
"status.found_matches": "找到 {count} 个匹配项",
|
|
164
|
+
"status.search_error": "搜索错误: {error}",
|
|
165
|
+
"status.cancelled_empty": "搜索已取消 - 空模式",
|
|
166
|
+
"status.cancelled": "搜索/替换已取消",
|
|
167
|
+
"status.no_selected": "没有选择要替换的项目",
|
|
168
|
+
"status.no_items_selected": "没有选择项目",
|
|
169
|
+
"status.selected_count": "已选择 {selected}/{total}",
|
|
170
|
+
"status.replacing": "正在替换 {count} 处...",
|
|
171
|
+
"status.replaced_with_errors": "已在 {files} 个文件中替换 ({errors} 个错误)",
|
|
172
|
+
"status.replaced": "已在 {files} 个文件中替换 {count} 处",
|
|
173
|
+
"status.closed": "搜索/替换已关闭",
|
|
174
|
+
"status.failed_open_panel": "无法打开搜索/替换面板",
|
|
175
|
+
"status.preview": "预览: {file}:{line}",
|
|
176
|
+
"prompt.search": "搜索 (在项目中): ",
|
|
177
|
+
"prompt.replace": "替换为: ",
|
|
178
|
+
"panel.header": "搜索和替换",
|
|
179
|
+
"panel.search_label": "搜索:",
|
|
180
|
+
"panel.replace_label": "替换:",
|
|
181
|
+
"panel.regex": "(正则表达式)",
|
|
182
|
+
"panel.no_matches": "未找到匹配项",
|
|
183
|
+
"panel.results": "结果: {count}",
|
|
184
|
+
"panel.limited": "(限制为 {max})",
|
|
185
|
+
"panel.selected": "(已选择 {selected})",
|
|
186
|
+
"panel.help": "[空格] 切换 [a] 全选 [n] 全不选 [r] 替换 [回车] 预览 [q] 关闭"
|
|
187
|
+
}
|
|
188
|
+
}
|