Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions Code.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -716,6 +716,12 @@
9FC03E72291F6FE000DECD1B /* ExplorerFileTreeSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC03E70291F6FE000DECD1B /* ExplorerFileTreeSection.swift */; };
9FC03E742920CF1700DECD1B /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC03E732920CF1700DECD1B /* Notification.swift */; };
9FC03E752920CF1700DECD1B /* Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC03E732920CF1700DECD1B /* Notification.swift */; };
9FC6737E2AA03A4800346FD7 /* RemotePortForwardSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC6737D2AA03A4800346FD7 /* RemotePortForwardSection.swift */; };
9FC6737F2AA03A4800346FD7 /* RemotePortForwardSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC6737D2AA03A4800346FD7 /* RemotePortForwardSection.swift */; };
9FC673812AA057F100346FD7 /* PortForwardContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC673802AA057F100346FD7 /* PortForwardContainer.swift */; };
9FC673822AA057F100346FD7 /* PortForwardContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC673802AA057F100346FD7 /* PortForwardContainer.swift */; };
9FC673842AA068EE00346FD7 /* PortForwardServiceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC673832AA068EE00346FD7 /* PortForwardServiceProvider.swift */; };
9FC673852AA068EE00346FD7 /* PortForwardServiceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FC673832AA068EE00346FD7 /* PortForwardServiceProvider.swift */; };
9FD0FAF02938A14C007170F5 /* EncodingMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD0FAEF2938A14C007170F5 /* EncodingMenu.swift */; };
9FD0FAF12938A14C007170F5 /* EncodingMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD0FAEF2938A14C007170F5 /* EncodingMenu.swift */; };
9FD0FAF42939AD86007170F5 /* SimpleWebPreviewExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD0FAF32939AD86007170F5 /* SimpleWebPreviewExtension.swift */; };
Expand Down Expand Up @@ -1743,6 +1749,9 @@
9FC03E6D291F6EE700DECD1B /* ExplorerEditorListSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExplorerEditorListSection.swift; sourceTree = "<group>"; };
9FC03E70291F6FE000DECD1B /* ExplorerFileTreeSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExplorerFileTreeSection.swift; sourceTree = "<group>"; };
9FC03E732920CF1700DECD1B /* Notification.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notification.swift; sourceTree = "<group>"; };
9FC6737D2AA03A4800346FD7 /* RemotePortForwardSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemotePortForwardSection.swift; sourceTree = "<group>"; };
9FC673802AA057F100346FD7 /* PortForwardContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortForwardContainer.swift; sourceTree = "<group>"; };
9FC673832AA068EE00346FD7 /* PortForwardServiceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortForwardServiceProvider.swift; sourceTree = "<group>"; };
9FD0FAEF2938A14C007170F5 /* EncodingMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EncodingMenu.swift; sourceTree = "<group>"; };
9FD0FAF32939AD86007170F5 /* SimpleWebPreviewExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleWebPreviewExtension.swift; sourceTree = "<group>"; };
9FD5BCE42923897200F20C4B /* PanelManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PanelManager.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2421,6 +2430,7 @@
941969242802AB2C008AAEB2 /* FileSystemProvider.swift */,
94A0461228049A7A00182275 /* GitServiceProvider.swift */,
942E3200280877C900233441 /* SearchServiceProvider.swift */,
9FC673832AA068EE00346FD7 /* PortForwardServiceProvider.swift */,
);
path = FileSystem;
sourceTree = "<group>";
Expand Down Expand Up @@ -2644,7 +2654,9 @@
9FA122742A8B5A3B00E7B417 /* Views */ = {
isa = PBXGroup;
children = (
9FC6737D2AA03A4800346FD7 /* RemotePortForwardSection.swift */,
9FA122752A8B5A4800E7B417 /* RemoteConnectedLabel.swift */,
9FC673802AA057F100346FD7 /* PortForwardContainer.swift */,
);
path = Views;
sourceTree = "<group>";
Expand Down Expand Up @@ -3064,6 +3076,7 @@
94196944280316C7008AAEB2 /* getRootDirectory.swift in Sources */,
94A045F5280481A900182275 /* RemoteTypeLabel.swift in Sources */,
94A045FF2804853200182275 /* DescriptionText.swift in Sources */,
9FC673822AA057F100346FD7 /* PortForwardContainer.swift in Sources */,
94196945280316C7008AAEB2 /* SourceControlContainer.swift in Sources */,
94196946280316C7008AAEB2 /* shortcutsMapping.swift in Sources */,
94196947280316C7008AAEB2 /* BottomBar.swift in Sources */,
Expand Down Expand Up @@ -3099,6 +3112,7 @@
94196959280316C7008AAEB2 /* SearchManager.swift in Sources */,
9419695A280316C7008AAEB2 /* ArchiveDir.swift in Sources */,
9419695B280316C7008AAEB2 /* MarkdownView.swift in Sources */,
9FC6737F2AA03A4800346FD7 /* RemotePortForwardSection.swift in Sources */,
9F046C3629222D8E00BDE4E9 /* ExtensionManager.swift in Sources */,
9FD5BCFC2928E02300F20C4B /* LocalExecutionExtension.swift in Sources */,
9419695C280316C7008AAEB2 /* MonacoEditor.swift in Sources */,
Expand Down Expand Up @@ -3126,6 +3140,7 @@
94196967280316C7008AAEB2 /* Executor.swift in Sources */,
94196968280316C7008AAEB2 /* RemoteAuthView.swift in Sources */,
94196969280316C7008AAEB2 /* CodeApp.swift in Sources */,
9FC673852AA068EE00346FD7 /* PortForwardServiceProvider.swift in Sources */,
9419696A280316C7008AAEB2 /* openFilesApp.swift in Sources */,
9419696B280316C7008AAEB2 /* View+If.swift in Sources */,
9419696C280316C7008AAEB2 /* WorkSpaceStorage.swift in Sources */,
Expand Down Expand Up @@ -3232,6 +3247,7 @@
94A7782D257BCEE2008FE7B2 /* getRootDirectory.swift in Sources */,
94A045F4280481A900182275 /* RemoteTypeLabel.swift in Sources */,
94A045FE2804853200182275 /* DescriptionText.swift in Sources */,
9FC673812AA057F100346FD7 /* PortForwardContainer.swift in Sources */,
94A777E0257B8D8E008FE7B2 /* SourceControlContainer.swift in Sources */,
94C893E6279D0C3000DFBF29 /* shortcutsMapping.swift in Sources */,
94A7FFB3268D085300369147 /* BottomBar.swift in Sources */,
Expand Down Expand Up @@ -3267,6 +3283,7 @@
947BF349262453040015DAEB /* SearchManager.swift in Sources */,
94A7781E257BC473008FE7B2 /* ArchiveDir.swift in Sources */,
94A5682B257CBDE4008A6530 /* MarkdownView.swift in Sources */,
9FC6737E2AA03A4800346FD7 /* RemotePortForwardSection.swift in Sources */,
9F046C3529222D8E00BDE4E9 /* ExtensionManager.swift in Sources */,
9FD5BCFB2928E02300F20C4B /* LocalExecutionExtension.swift in Sources */,
94A777AC257B66CF008FE7B2 /* MonacoEditor.swift in Sources */,
Expand Down Expand Up @@ -3294,6 +3311,7 @@
948D12222583F2A5008F877A /* Executor.swift in Sources */,
9437155B26C3C745000376FB /* RemoteAuthView.swift in Sources */,
944EEBF42563C381009D77FE /* CodeApp.swift in Sources */,
9FC673842AA068EE00346FD7 /* PortForwardServiceProvider.swift in Sources */,
94A777DC257B8C99008FE7B2 /* openFilesApp.swift in Sources */,
94B3DDFA260526D200C4F2B1 /* View+If.swift in Sources */,
94A777A2257ABDC3008FE7B2 /* WorkSpaceStorage.swift in Sources */,
Expand Down
11 changes: 11 additions & 0 deletions CodeApp/Localization/de.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@
"common.import" = "Importieren";
"common.add" = "Hinzufügen";
"common.create" = "Erstellen";
"common.remove" = "Entfernen";

"notification.source" = "Quelle: %@";

Expand All @@ -427,6 +428,7 @@
"settings.editor.font.ligatures" = "Schrift Ligaturen";
"settings.editor.font.show_all_fonts" = "Alle Schriftarten anzeigen";
"panels.no_panel_selected" = "Kein Panel ausgewählt";
"sidebar.no_section_selected" = "Kein Abschnitt ausgewählt";

"errors.script_already_running" = "Ein Skript wird bereits ausgeführt. Beenden Sie es, bevor Sie ein anderes ausführen.";
"errors.fs.not_implemented" = "Diese Funktion ist noch nicht implementiert.";
Expand All @@ -450,6 +452,9 @@
"errors.failed_to_save_file.encoding.failed" = "Fehler beim Speichern der Datei. Die Zeichenkodierung ist möglicherweise nicht unterstützt.";
"errors.file_modified_by_another_process" = "Die Datei wurde von einem anderen Prozess geändert.";
"errors.failed_to_import_key" = "Fehler beim Importieren des Schlüssels.";
"errors.port_forward.service_unavailable" = "Dienst nicht verfügbar";
"errors.port_forward.invalid_address" = "Ungültige Adresse";
"errors.port_forward.address_already_in_use" = "Errno 48: Adresse wird bereits verwendet";

"file.copy" = "Kopieren nach..";
"file.download" = "Herunterladen auf..";
Expand Down Expand Up @@ -541,3 +546,9 @@
"remote.private_key_content" = "Inhalt des privaten Schlüssels";
"remote.setup_note" = "Um Schlüsselpaare zu generieren, führen Sie ssh-keygen im Terminal aus. Lassen Sie die Passphrase leer, falls keine vorhanden ist.";
"remote.import_from_file" = "Importieren aus Datei";
"remote.port_forward.new_port_forward" = "Neue Portweiterleitung";
"remote.port_forward.local_port_or_address" = "Lokaler Port oder Adresse";
"remote.port_forward.remote_port_or_address" = "Remote-Port oder Adresse";
"remote.port_forward.port_forwarding" = "Portweiterleitung";
"remote.port_forward.configure_description" = "Um eine Portweiterleitung zu konfigurieren, geben Sie die lokale und die Remote-Adresse ein. Wenn Sie eine Adresse eingeben, wird der Port 22 verwendet.";
"remote.port_forward.address_example" = "z.B. 6000 oder 127.0.0.1:6000";
11 changes: 11 additions & 0 deletions CodeApp/Localization/en.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ are licensed under [BSD-3-Clause License](https://en.wikipedia.org/wiki/BSD_lice
"common.import" = "Import";
"common.add" = "Add";
"common.create" = "Create";
"common.remove" = "Remove";

"notification.source" = "Source: %@";

Expand All @@ -317,6 +318,7 @@ are licensed under [BSD-3-Clause License](https://en.wikipedia.org/wiki/BSD_lice
"settings.editor.font.ligatures" = "Font Ligatures";
"settings.editor.font.show_all_fonts" = "Show all fonts";
"panels.no_panel_selected" = "No panel selected";
"sidebar.no_section_selected" = "No section selected.";

"errors.script_already_running" = "A script is already running. Finish it before running another one.";
"errors.fs.not_implemented" = "Operation not implemented";
Expand All @@ -340,6 +342,9 @@ are licensed under [BSD-3-Clause License](https://en.wikipedia.org/wiki/BSD_lice
"errors.failed_to_save_file.encoding.failed" = "Failed to save file. Encoding failed.";
"errors.file_modified_by_another_process" = "File modified by another process";
"errors.failed_to_import_key" = "Failed to import key";
"errors.port_forward.service_unavailable" = "Service unavailable";
"errors.port_forward.invalid_address" = "Invalid address";
"errors.port_forward.address_already_in_use" = "Errno 48: Address already in use";

"file.copy" = "Copy to..";
"file.download" = "Download to..";
Expand Down Expand Up @@ -431,3 +436,9 @@ are licensed under [BSD-3-Clause License](https://en.wikipedia.org/wiki/BSD_lice
"remote.private_key_content" = "Private key content";
"remote.setup_note" = "To generate key-pairs, run ssh-keygen in the terminal. Leave the passphrase empty if there isn't one.";
"remote.import_from_file" = "Import from file";
"remote.port_forward.new_port_forward" = "New Port Forward";
"remote.port_forward.local_port_or_address" = "Local port or address";
"remote.port_forward.remote_port_or_address" = "Remote port or address";
"remote.port_forward.port_forwarding" = "Port Forwarding";
"remote.port_forward.configure_description" = "Configure port forwarding to access a port on the remote machine.";
"remote.port_forward.address_example" = "e.g. 6000 or 127.0.0.1:6000";
11 changes: 11 additions & 0 deletions CodeApp/Localization/ja.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,7 @@
"common.import" = "インポート";
"common.add" = "追加";
"common.create" = "作成";
"common.remove" = "削除";

"notification.source" = "Source: %@";

Expand All @@ -428,6 +429,7 @@
"settings.editor.font.ligatures" = "フォント合字";
"settings.editor.font.show_all_fonts" = "すべてのフォントを表示";
"panels.no_panel_selected" = "パネルが選択されていません";
"sidebar.no_section_selected" = "セクションが選択されていません";

"errors.script_already_running" = "スクリプトがすでに実行されています。次のスクリプトを実行する前に終了してください。";
"errors.fs.not_implemented" = "その操作は実装されていません";
Expand All @@ -451,6 +453,9 @@
"errors.failed_to_save_file.encoding.failed" = "ファイルの保存に失敗しました。 エンコードに失敗しました。";
"errors.file_modified_by_another_process" = "別のプロセスによって変更されたファイルです";
"errors.failed_to_import_key" = "キーのインポートに失敗しました";
"errors.port_forward.service_unavailable" = "サービスが利用できません";
"errors.port_forward.invalid_address" = "無効なアドレスです";
"errors.port_forward.address_already_in_use" = "Errno 48: アドレスはすでに使用されています";

"file.copy" = "コピー..";
"file.download" = "ダウンロード..";
Expand Down Expand Up @@ -542,3 +547,9 @@
"remote.private_key_content" = "秘密鍵の内容";
"remote.setup_note" = "キーペアを生成するには、ターミナルで ssh-keygen を実行します。 パスフレーズがない場合は空のままにします。";
"remote.import_from_file" = "ファイルからインポート";
"remote.port_forward.new_port_forward" = "新しいポートフォワード";
"remote.port_forward.local_port_or_address" = "ローカル ポートまたはアドレス";
"remote.port_forward.remote_port_or_address" = "リモート ポートまたはアドレス";
"remote.port_forward.port_forwarding" = "ポートフォワーディング";
"remote.port_forward.configure_description" = "ポートフォワーディングを使用すると、リモート ホストのポートをローカル ホストに転送できます。";
"remote.port_forward.address_example" = "例えば 6000 または 127.0.0.1:6000";
11 changes: 11 additions & 0 deletions CodeApp/Localization/ko.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,7 @@
"common.import" = "가져오기";
"common.add" = "추가";
"common.create" = "생성";
"common.rename" = "이름 바꾸기";

"notification.source" = "원천: %@";

Expand All @@ -427,6 +428,7 @@
"settings.editor.font.ligatures" = "글꼴 합자";
"settings.editor.font.show_all_fonts" = "모든 글꼴 표시";
"panels.no_panel_selected" = "패널이 선택되지 않았습니다.";
"sidebar.no_section_selected" = "섹션이 선택되지 않았습니다.";

"errors.script_already_running" = "스크립트가 이미 실행 중입니다. 다른 것을 실행하기 전에 완료하십시오.";
"errors.fs.not_implemented" = "이 기능은 아직 구현되지 않았습니다.";
Expand All @@ -450,6 +452,9 @@
"errors.failed_to_save_file.encoding.failed" = "파일을 저장하지 못했습니다. 인코딩에 실패했습니다.";
"errors.file_modified_by_another_process" = "파일이 다른 프로세스에 의해 수정되었습니다.";
"errors.failed_to_import_key" = "키를 가져 오지 못했습니다.";
"errors.port_forward.service_unavailable" = "서비스를 사용할 수 없습니다.";
"errors.port_forward.invalid_address" = "잘못된 주소입니다.";
"errors.port_forward.address_already_in_use" = "Errno 48: 주소가 이미 사용 중입니다.";

"file.copy" = "에게 복사..";
"file.download" = "다운로드..";
Expand Down Expand Up @@ -541,3 +546,9 @@
"remote.private_key_content" = "개인 키 내용";
"remote.setup_note" = "키 쌍을 생성하려면 터미널에서 ssh-keygen을 실행하십시오. 암호가 없는 경우 암호를 비워 둡니다.";
"remote.import_from_file" = "파일에서 가져 오기";
"remote.port_forward.new_port_forward" = "새 포트 포워드";
"remote.port_forward.local_port_or_address" = "로컬 포트 또는 주소";
"remote.port_forward.remote_port_or_address" = "원격 포트 또는 주소";
"remote.port_forward.port_forwarding" = "포트 포워딩";
"remote.port_forward.configure_description" = "원격 시스템의 포트에 액세스하도록 포트 전달을 구성합니다.";
"remote.port_forward.address_example" = "예를 들어 6000 또는 127.0.0.1:6000";
11 changes: 11 additions & 0 deletions CodeApp/Localization/zh-Hans.lproj/Localizable.strings
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@
"common.import" = "导入";
"common.add" = "添加";
"common.create" = "创建";
"common.remove" = "移除";

"notification.source" = "来源: %@";

Expand All @@ -418,6 +419,7 @@
"settings.editor.font.ligatures" = "合字";
"settings.editor.font.show_all_fonts" = "显示所有字体";
"panels.no_panel_selected" = "没有选中的面板";
"sidebar.no_section_selected" = "没有选中的版面";

"errors.script_already_running" = "脚本已在运行。 在运行另一个之前完成它。";
"errors.fs.not_implemented" = "文件系统不支持此操作。";
Expand All @@ -441,6 +443,9 @@
"errors.failed_to_save_file.encoding.failed" = "无法保存文件。 编码失败。";
"errors.file_modified_by_another_process" = "文件已被另一个进程修改。";
"errors.failed_to_import_key" = "无法导入密钥。";
"errors.port_forward.service_unavailable" = "服务不可用";
"errors.port_forward.invalid_address" = "无效的地址";
"errors.port_forward.address_already_in_use" = "地址已在使用中";

"file.copy" = "复制到..";
"file.download" = "下载到..";
Expand Down Expand Up @@ -516,3 +521,9 @@
"remote.private_key_content" = "私钥内容";
"remote.setup_note" = "要生成密钥,请在终端中运行 ssh-keygen。如果没有密钥密码,请留空。";
"remote.import_from_file" = "从文件导入";
"remote.port_forward.new_port_forward" = "新建端口转发";
"remote.port_forward.local_port_or_address" = "本地端口或地址";
"remote.port_forward.remote_port_or_address" = "远程端口或地址";
"remote.port_forward.port_forwarding" = "端口转发";
"remote.port_forward.configure_description" = "您可以使用端口转发功能将本地端口转发到远程服务器。";
"remote.port_forward.address_example" = "例如 6000 或 127.0.0.1:6000";
15 changes: 8 additions & 7 deletions CodeApp/Managers/ActivityBarManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,15 @@ enum ActivityBarBubble {
struct ActivityBarItem: Identifiable {
let id = UUID()
let itemID: String
let iconSystemName: String
let title: LocalizedStringKey
let shortcutKey: KeyEquivalent
let modifiers: EventModifiers
let view: AnyView
let positionPrecedence: Int = 0
let contextMenuItems: (() -> [ContextMenuItem])?
var iconSystemName: String
var title: LocalizedStringKey
var shortcutKey: KeyEquivalent?
var modifiers: EventModifiers?
var view: AnyView
var contextMenuItems: (() -> [ContextMenuItem])?
var positionPrecedence: Int = 0
var bubble: () -> ActivityBarBubble?
var isVisible: (() -> Bool)
}

class ActivityBarManager: CodeAppContributionPointManager {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class FTPFileSystemProvider: FileSystemProvider {
var gitServiceProvider: GitServiceProvider? = nil
var searchServiceProvider: SearchServiceProvider? = nil
var terminalServiceProvider: TerminalServiceProvider? = nil
var portforwardServiceProvider: (any PortForwardServiceProvider)? = nil

private var fs: FTPFileProvider

Expand Down
1 change: 1 addition & 0 deletions CodeApp/Managers/FileSystem/FileSystemProvider.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ protocol FileSystemProvider {
var gitServiceProvider: GitServiceProvider? { get }
var searchServiceProvider: SearchServiceProvider? { get }
var terminalServiceProvider: TerminalServiceProvider? { get }
var portforwardServiceProvider: (any PortForwardServiceProvider)? { get }

func contentsOfDirectory(at url: URL, completionHandler: @escaping ([URL]?, Error?) -> Void)
func fileExists(at url: URL, completionHandler: @escaping (Bool) -> Void)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class LocalFileSystemProvider: FileSystemProvider {
var gitServiceProvider: GitServiceProvider? = nil
var searchServiceProvider: SearchServiceProvider? = nil
var terminalServiceProvider: TerminalServiceProvider? = nil
var portforwardServiceProvider: (any PortForwardServiceProvider)? = nil

func write(
at: URL, content: Data, atomically: Bool, overwrite: Bool,
Expand Down
Loading