├── .gitattributes ├── .github ├── ISSUE_TEMPLATE.md └── workflows │ └── flakehub-publish-rolling.yml ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── build.rs ├── debian ├── changelog ├── control ├── copyright ├── rules └── source │ ├── format │ └── options ├── flake.lock ├── flake.nix ├── i18n.toml ├── i18n ├── ar │ └── cosmic_edit.ftl ├── be │ └── cosmic_edit.ftl ├── cs │ └── cosmic_edit.ftl ├── de │ └── cosmic_edit.ftl ├── el │ └── cosmic_edit.ftl ├── en │ └── cosmic_edit.ftl ├── es-419 │ └── cosmic_edit.ftl ├── es │ └── cosmic_edit.ftl ├── fi │ └── cosmic_edit.ftl ├── fr │ └── cosmic_edit.ftl ├── ga │ └── cosmic_edit.ftl ├── he │ └── cosmic_edit.ftl ├── hi │ └── cosmic_edit.ftl ├── hu │ └── cosmic_edit.ftl ├── it │ └── cosmic_edit.ftl ├── ja │ └── cosmic_edit.ftl ├── kn │ └── cosmic_edit.ftl ├── ko-KR │ └── cosmic_edit.ftl ├── lt │ └── cosmic_edit.ftl ├── nl │ └── cosmic_edit.ftl ├── pl │ └── cosmic_edit.ftl ├── pt-BR │ └── cosmic_edit.ftl ├── pt │ └── cosmic_edit.ftl ├── ro │ └── cosmic_edit.ftl ├── ru │ └── cosmic_edit.ftl ├── sk │ └── cosmic_edit.ftl ├── sr-Cyrl │ └── cosmic_edit.ftl ├── sr-Latn │ └── cosmic_edit.ftl ├── sv-SE │ └── cosmic_edit.ftl ├── tr │ └── cosmic_edit.ftl ├── uk │ └── cosmic_edit.ftl ├── zh-CN │ └── cosmic_edit.ftl └── zh-TW │ └── cosmic_edit.ftl ├── justfile ├── redoxer.sh ├── res ├── com.system76.CosmicEdit.desktop ├── com.system76.CosmicEdit.metainfo.xml ├── icons │ ├── edit-clear-symbolic.svg │ ├── folder-open-symbolic.svg │ ├── go-down-symbolic.svg │ ├── go-next-symbolic.svg │ ├── go-up-symbolic.svg │ ├── hicolor │ │ ├── 128x128 │ │ │ └── apps │ │ │ │ └── com.system76.CosmicEdit.svg │ │ ├── 16x16 │ │ │ └── apps │ │ │ │ └── com.system76.CosmicEdit.svg │ │ ├── 24x24 │ │ │ └── apps │ │ │ │ └── com.system76.CosmicEdit.svg │ │ ├── 256x256 │ │ │ └── apps │ │ │ │ └── com.system76.CosmicEdit.svg │ │ ├── 32x32 │ │ │ └── apps │ │ │ │ └── com.system76.CosmicEdit.svg │ │ ├── 48x48 │ │ │ └── apps │ │ │ │ └── com.system76.CosmicEdit.svg │ │ └── 64x64 │ │ │ └── apps │ │ │ └── com.system76.CosmicEdit.svg │ ├── list-add-symbolic.svg │ ├── object-select-symbolic.svg │ ├── replace-all-symbolic.svg │ ├── replace-symbolic.svg │ └── window-close-symbolic.svg └── screenshots │ └── screenshot-1.png └── src ├── config.rs ├── git.rs ├── icon_cache.rs ├── key_bind.rs ├── line_number.rs ├── localize.rs ├── main.rs ├── menu.rs ├── project.rs ├── search.rs ├── tab.rs └── text_box.rs /.gitattributes: -------------------------------------------------------------------------------- 1 | *.png filter=lfs diff=lfs merge=lfs -text 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 8 | 9 | **Cosmic-edit version:** 10 | 11 | 12 | **Issue/Bug description:** 13 | 14 | **Steps to reproduce:** 15 | 16 | **Expected behavior:** 17 | 18 | **Other notes:** 19 | -------------------------------------------------------------------------------- /.github/workflows/flakehub-publish-rolling.yml: -------------------------------------------------------------------------------- 1 | name: "Publish every Git push to master to FlakeHub" 2 | on: 3 | push: 4 | branches: 5 | - "master" 6 | jobs: 7 | flakehub-publish: 8 | runs-on: "ubuntu-latest" 9 | permissions: 10 | id-token: "write" 11 | contents: "read" 12 | steps: 13 | - uses: "actions/checkout@v3" 14 | - uses: "DeterminateSystems/nix-installer-action@main" 15 | - uses: "DeterminateSystems/flakehub-push@main" 16 | with: 17 | name: "pop-os/cosmic-edit" 18 | rolling: true 19 | visibility: "public" 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.cargo/ 2 | /debian/*debhelper* 3 | /debian/cosmic-edit.substvars 4 | /debian/cosmic-edit/ 5 | /debian/files 6 | /target/ 7 | /vendor.tar 8 | /vendor/ 9 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "cosmic-edit" 3 | version = "0.1.0" 4 | authors = ["Jeremy Soller "] 5 | edition = "2021" 6 | license = "GPL-3.0-only" 7 | rust-version = "1.71" 8 | 9 | [build-dependencies] 10 | vergen = { version = "8", features = ["git", "gitcl"] } 11 | 12 | [dependencies] 13 | dirs = "6" 14 | env_logger = "0.11.6" 15 | grep = "0.3.2" 16 | ignore = "0.4.23" 17 | log = "0.4.25" 18 | notify = "6.1.1" 19 | open = "5.3.2" 20 | paste = "1.0.15" 21 | patch = "0.7.0" 22 | regex = "1.11" 23 | serde = { version = "1", features = ["serde_derive"] } 24 | tokio = { version = "1", features = ["process", "time"] } 25 | # Extra syntax highlighting 26 | syntect = "5.2.0" 27 | two-face = "0.4.3" 28 | # Internationalization 29 | icu_collator = "1.5" 30 | icu_provider = { version = "1.5", features = ["sync"] } 31 | i18n-embed = { version = "0.15", features = ["fluent-system", "desktop-requester"] } 32 | i18n-embed-fl = "0.9" 33 | rust-embed = "8" 34 | 35 | [dependencies.cosmic-files] 36 | git = "https://github.com/pop-os/cosmic-files.git" 37 | default-features = false 38 | 39 | [dependencies.cosmic-syntax-theme] 40 | git = "https://github.com/pop-os/cosmic-syntax-theme.git" 41 | 42 | [dependencies.cosmic-text] 43 | git = "https://github.com/pop-os/cosmic-text.git" 44 | features = ["syntect", "vi"] 45 | 46 | [dependencies.libcosmic] 47 | git = "https://github.com/pop-os/libcosmic.git" 48 | default-features = false 49 | features = ["a11y", "multi-window", "tokio", "winit", "surface-message"] 50 | 51 | [target.'cfg(unix)'.dependencies] 52 | fork = "0.2" 53 | 54 | [features] 55 | default = ["gvfs", "wgpu"] 56 | gvfs = ["cosmic-files/gvfs"] 57 | wgpu = ["libcosmic/wgpu", "cosmic-files/wgpu"] 58 | 59 | [profile.release-with-debug] 60 | inherits = "release" 61 | debug = true 62 | 63 | [patch.crates-io] 64 | onig = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" } 65 | onig_sys = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" } 66 | # https://github.com/smol-rs/polling/pull/235 67 | polling = { git = "https://github.com/jackpot51/polling.git", branch = "master" } 68 | 69 | # [patch.'https://github.com/pop-os/libcosmic'] 70 | # libcosmic = { path = "../libcosmic" } 71 | # cosmic-config = { path = "../libcosmic/cosmic-config" } 72 | # cosmic-theme = { path = "../libcosmic/cosmic-theme" } 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # COSMIC Text Editor 2 | Text editor for the COSMIC desktop 3 | 4 | ![Screenshot](res/screenshots/screenshot-1.png) 5 | 6 | Currently an incomplete **pre-alpha**, this project is a work in progress - issues are expected. 7 | 8 | ## Testing 9 | You can test by installing a current version of Rust and then building with `cargo`. 10 | 11 | ```SHELL 12 | git clone https://github.com/pop-os/cosmic-edit 13 | cd cosmic-edit 14 | cargo build 15 | ``` 16 | 17 | You can get more detailed errors by using the `RUST_LOG` environment variables, that you can invoke for just that one command like this: `RUST_LOG=debug cargo run`. This will give you more detail about the application state. You can go even further with `RUST_LOG=trace cargo run`, that shows all logging details about the application. 18 | 19 | ## Clippy Lints 20 | PRs are welcome, as it builds a better product for everyone. It is recommended that you check your code with Clippy Lints turned on. You can find more about [Configuring Clippy](https://doc.rust-lang.org/nightly/clippy/configuration.html) here. 21 | -------------------------------------------------------------------------------- /build.rs: -------------------------------------------------------------------------------- 1 | fn main() -> Result<(), Box> { 2 | // Rebuild if i18n files change 3 | println!("cargo:rerun-if-changed=i18n"); 4 | 5 | // Emit version information (if not cached by just vendor) 6 | let mut vergen = vergen::EmitBuilder::builder(); 7 | println!("cargo:rerun-if-env-changed=VERGEN_GIT_COMMIT_DATE"); 8 | if std::env::var_os("VERGEN_GIT_COMMIT_DATE").is_none() { 9 | vergen.git_commit_date(); 10 | } 11 | println!("cargo:rerun-if-env-changed=VERGEN_GIT_SHA"); 12 | if std::env::var_os("VERGEN_GIT_SHA").is_none() { 13 | vergen.git_sha(false); 14 | } 15 | vergen.fail_on_error().emit()?; 16 | Ok(()) 17 | } 18 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | cosmic-edit (0.1.0) jammy; urgency=medium 2 | 3 | * Initial release. 4 | 5 | -- Jeremy Soller Tue, 03 Oct 2023 07:37:28 -0600 6 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: cosmic-edit 2 | Section: admin 3 | Priority: optional 4 | Maintainer: Jeremy Soller 5 | Build-Depends: 6 | debhelper-compat (=13), 7 | git, 8 | just (>= 1.13.0), 9 | pkg-config, 10 | libxkbcommon-dev, 11 | rust-all, 12 | Standards-Version: 4.6.2 13 | Homepage: https://github.com/pop-os/cosmic-edit 14 | 15 | Package: cosmic-edit 16 | Architecture: amd64 arm64 17 | Depends: ${misc:Depends}, ${shlibs:Depends} 18 | Description: Cosmic Text Editor 19 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: cosmic-edit 3 | Upstream-Contact: Jeremy Soller 4 | Source: https://github.com/pop-os/cosmic-edit 5 | Files: * 6 | Copyright: System76 7 | License: GPL-3.0 8 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | 3 | export DESTDIR = debian/cosmic-edit 4 | export VENDOR ?= 1 5 | 6 | %: 7 | dh $@ 8 | 9 | override_dh_auto_clean: 10 | if ! ischroot && test "${VENDOR}" = "1"; then \ 11 | just vendor; \ 12 | fi 13 | 14 | override_dh_auto_build: 15 | just build-vendored 16 | 17 | override_dh_auto_install: 18 | just rootdir=$(DESTDIR) install 19 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /debian/source/options: -------------------------------------------------------------------------------- 1 | tar-ignore=.github 2 | tar-ignore=.vscode 3 | tar-ignore=vendor 4 | tar-ignore=target -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "crane": { 4 | "inputs": { 5 | "nixpkgs": [ 6 | "nixpkgs" 7 | ] 8 | }, 9 | "locked": { 10 | "lastModified": 1698166613, 11 | "narHash": "sha256-y4rdN4flxRiROqNi1waMYIZj/Fs7L2OrszFk/1ry9vU=", 12 | "owner": "ipetkov", 13 | "repo": "crane", 14 | "rev": "b7db46f0f1751f7b1d1911f6be7daf568ad5bc65", 15 | "type": "github" 16 | }, 17 | "original": { 18 | "owner": "ipetkov", 19 | "repo": "crane", 20 | "type": "github" 21 | } 22 | }, 23 | "fenix": { 24 | "inputs": { 25 | "nixpkgs": [ 26 | "nixpkgs" 27 | ], 28 | "rust-analyzer-src": "rust-analyzer-src" 29 | }, 30 | "locked": { 31 | "lastModified": 1698906096, 32 | "narHash": "sha256-xXsjyprR3xhv7V+0Tf4IDFEbGafwAvoK40900UYLkDY=", 33 | "owner": "nix-community", 34 | "repo": "fenix", 35 | "rev": "2634e2ffc5501957922285a87a83e430d8bc29cb", 36 | "type": "github" 37 | }, 38 | "original": { 39 | "owner": "nix-community", 40 | "repo": "fenix", 41 | "type": "github" 42 | } 43 | }, 44 | "flake-utils": { 45 | "inputs": { 46 | "systems": "systems" 47 | }, 48 | "locked": { 49 | "lastModified": 1694529238, 50 | "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", 51 | "owner": "numtide", 52 | "repo": "flake-utils", 53 | "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", 54 | "type": "github" 55 | }, 56 | "original": { 57 | "owner": "numtide", 58 | "repo": "flake-utils", 59 | "type": "github" 60 | } 61 | }, 62 | "nix-filter": { 63 | "locked": { 64 | "lastModified": 1694857738, 65 | "narHash": "sha256-bxxNyLHjhu0N8T3REINXQ2ZkJco0ABFPn6PIe2QUfqo=", 66 | "owner": "numtide", 67 | "repo": "nix-filter", 68 | "rev": "41fd48e00c22b4ced525af521ead8792402de0ea", 69 | "type": "github" 70 | }, 71 | "original": { 72 | "owner": "numtide", 73 | "repo": "nix-filter", 74 | "type": "github" 75 | } 76 | }, 77 | "nixpkgs": { 78 | "locked": { 79 | "lastModified": 1698890957, 80 | "narHash": "sha256-DJ+SppjpPBoJr0Aro9TAcP3sxApCSieY6BYBCoWGUX8=", 81 | "owner": "NixOS", 82 | "repo": "nixpkgs", 83 | "rev": "c082856b850ec60cda9f0a0db2bc7bd8900d708c", 84 | "type": "github" 85 | }, 86 | "original": { 87 | "owner": "NixOS", 88 | "ref": "nixpkgs-unstable", 89 | "repo": "nixpkgs", 90 | "type": "github" 91 | } 92 | }, 93 | "root": { 94 | "inputs": { 95 | "crane": "crane", 96 | "fenix": "fenix", 97 | "flake-utils": "flake-utils", 98 | "nix-filter": "nix-filter", 99 | "nixpkgs": "nixpkgs" 100 | } 101 | }, 102 | "rust-analyzer-src": { 103 | "flake": false, 104 | "locked": { 105 | "lastModified": 1698762780, 106 | "narHash": "sha256-WzuwMjpitp41dacdNzrdGjjP72Z0fFyGuQR2PJk48pE=", 107 | "owner": "rust-lang", 108 | "repo": "rust-analyzer", 109 | "rev": "99e94d2938a743f8f48c6b729de4c517eeced99d", 110 | "type": "github" 111 | }, 112 | "original": { 113 | "owner": "rust-lang", 114 | "ref": "nightly", 115 | "repo": "rust-analyzer", 116 | "type": "github" 117 | } 118 | }, 119 | "systems": { 120 | "locked": { 121 | "lastModified": 1681028828, 122 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 123 | "owner": "nix-systems", 124 | "repo": "default", 125 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 126 | "type": "github" 127 | }, 128 | "original": { 129 | "owner": "nix-systems", 130 | "repo": "default", 131 | "type": "github" 132 | } 133 | } 134 | }, 135 | "root": "root", 136 | "version": 7 137 | } 138 | -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "Text Editor application for the COSMIC desktop environment"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 6 | flake-utils.url = "github:numtide/flake-utils"; 7 | nix-filter.url = "github:numtide/nix-filter"; 8 | crane = { 9 | url = "github:ipetkov/crane"; 10 | inputs.nixpkgs.follows = "nixpkgs"; 11 | }; 12 | fenix = { 13 | url = "github:nix-community/fenix"; 14 | inputs.nixpkgs.follows = "nixpkgs"; 15 | }; 16 | }; 17 | 18 | outputs = { self, nixpkgs, flake-utils, nix-filter, crane, fenix }: 19 | flake-utils.lib.eachSystem [ "x86_64-linux" "aarch64-linux" ] (system: 20 | let 21 | pkgs = nixpkgs.legacyPackages.${system}; 22 | craneLib = crane.lib.${system}.overrideToolchain fenix.packages.${system}.stable.toolchain; 23 | crateNameFromCargoToml = craneLib.crateNameFromCargoToml {cargoToml = ./Cargo.toml;}; 24 | pkgDef = { 25 | inherit (crateNameFromCargoToml) pname version; 26 | src = nix-filter.lib.filter { 27 | root = ./.; 28 | include = [ 29 | ./src 30 | ./Cargo.toml 31 | ./Cargo.lock 32 | ./i18n 33 | ./i18n.toml 34 | ./justfile 35 | ]; 36 | }; 37 | nativeBuildInputs = with pkgs; [ 38 | just 39 | pkg-config 40 | autoPatchelfHook 41 | ]; 42 | buildInputs = with pkgs; [ 43 | systemdMinimal 44 | bashInteractive 45 | libxkbcommon 46 | freetype 47 | fontconfig 48 | expat 49 | lld 50 | desktop-file-utils 51 | stdenv.cc.cc.lib 52 | libinput 53 | ]; 54 | }; 55 | 56 | cargoArtifacts = craneLib.buildDepsOnly pkgDef; 57 | cosmic-edit= craneLib.buildPackage (pkgDef // { 58 | inherit cargoArtifacts; 59 | }); 60 | in { 61 | checks = { 62 | inherit cosmic-edit; 63 | }; 64 | 65 | apps.default = flake-utils.lib.mkApp { 66 | drv = cosmic-edit; 67 | }; 68 | packages.default = cosmic-edit.overrideAttrs (oldAttrs: rec { 69 | installPhase = '' 70 | just prefix=$out install 71 | ''; 72 | }); 73 | 74 | devShells.default = pkgs.mkShell rec { 75 | inputsFrom = builtins.attrValues self.checks.${system}; 76 | LD_LIBRARY_PATH = pkgs.lib.strings.makeLibraryPath (builtins.concatMap (d: d.runtimeDependencies) inputsFrom); 77 | }; 78 | }); 79 | 80 | nixConfig = { 81 | # Cache for the Rust toolchain in fenix 82 | extra-substituters = [ "https://nix-community.cachix.org" ]; 83 | extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; 84 | }; 85 | } 86 | -------------------------------------------------------------------------------- /i18n.toml: -------------------------------------------------------------------------------- 1 | fallback_language = "en" 2 | 3 | [fluent] 4 | assets_dir = "i18n" -------------------------------------------------------------------------------- /i18n/ar/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = محرر نصوص COSMIC 2 | new-document = مستند جديد 3 | open-project = افتح مشروعًا 4 | todo = المهمَّات 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = إيداع جِت {$hash} بتاريخ {$date} 10 | 11 | ## Document statistics 12 | document-statistics = إحصاءات المستند 13 | word-count = عدد الكلمات 14 | character-count = الأحرف 15 | character-count-no-spaces = الأحرف (دون مسافات) 16 | line-count = الأسطر 17 | 18 | ## Git management 19 | git-management = إدارة جِت 20 | git-management-description = إدارة جِت هي أداة يستخدمها المطورون لإدارة عمليات التحكم في الإصدارات. 21 | git-management-loading = إدارة جِت تحمَّل... 22 | stage = رحِّل 23 | staged-changes = تغييرات مرحَّلة 24 | unstage = ألغِ الترحيل 25 | unstaged-changes = تغييرات غير مرحَّلة 26 | 27 | ## Project search 28 | project-search = ابحث المشروع 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = تغييرات غير محفوظة 32 | prompt-unsaved-changes = هناك تغييرات غير محفوظة. أأحفظ؟ 33 | cancel = ألغِ 34 | discard = أهمل التغييرات 35 | save-all = احفظ الكل 36 | 37 | ## Settings 38 | settings = الإعدادات 39 | 40 | ### Appearance 41 | appearance = المظهر 42 | theme = السمة 43 | match-desktop = مطابقة سطح المكتب 44 | dark = داكن 45 | light = فاتح 46 | syntax-dark = صياغة السمة الداكنة 47 | syntax-light = صياغة السمة الفاتحة 48 | default-font = الخط المبدئي 49 | default-font-size = حجم الخط المبدئي 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = اختصارات لوحة المفاتيح 53 | enable-vim-bindings = تفعيل ارتباط مفاتيح Vim 54 | 55 | # Find 56 | find-placeholder = اعثر... 57 | find-previous = اعثر السابق 58 | find-next = اعثر التالي 59 | replace-placeholder = استبدل... 60 | replace = استبدل 61 | replace-all = استبدل الكل 62 | case-sensitive = حساس لحالة الحرف 63 | use-regex = استعمل التعبير النمطي 64 | 65 | # Menu 66 | 67 | ## File 68 | file = ملف 69 | new-file = ملف جديد 70 | new-window = نافذة جديدة 71 | open-file = افتح ملفًا... 72 | open-recent-file = افتح ملفًا حديثًا 73 | close-file = أغلق ملفًا 74 | menu-open-project = افتح مشروعًا... 75 | open-recent-project = افتح مشروعًا حديثًا 76 | close-project = أغلِق مشروعًا 77 | save = احفظ 78 | save-as = احفظ باسم... 79 | revert-all-changes = تراجع عن كل التغييرات 80 | menu-document-statistics = إحصاءات المستند... 81 | document-type = نوع المستند... 82 | encoding = الترميز... 83 | menu-git-management = إدارة جِت... 84 | print = اطبع 85 | quit = غادِر 86 | 87 | ## Edit 88 | edit = تعديل 89 | undo = تراجع 90 | redo = أعِد 91 | cut = قص 92 | copy = انسِخ 93 | paste = ألصِق 94 | select-all = اختر الكل 95 | find = اعثر 96 | find-in-project = اعثر بالمشروع... 97 | spell-check = تدقيق الإملاء... 98 | 99 | ## View 100 | view = عرض 101 | indentation = الإزاحة 102 | 103 | ### Indentation 104 | automatic-indentation = الإزاحة الآلية 105 | tab-width = عرض المسافة الكبيرة: {$tab_width} 106 | convert-indentation-to-spaces = حوِّل الإزاحات غلى مسافات 107 | convert-indentation-to-tabs = حوِّل الإزاحات إلى مسافات كبيرة 108 | 109 | word-wrap = التفاف الكلمات 110 | show-line-numbers = أظهِر أرقام الأسطر 111 | highlight-current-line = أبرِز السطر الحالي 112 | syntax-highlighting = إبراز الصياغة... 113 | menu-settings = الإعدادات... 114 | menu-keyboard-shortcuts = اختصارات لوحة المفاتيح... 115 | menu-about = عَنْ محرر نصوص COSMIC... 116 | -------------------------------------------------------------------------------- /i18n/be/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Тэкставы рэдактар COSMIC 2 | new-document = Новы дакумент 3 | open-project = Адкрыць праект 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git каміт {$hash} ад {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Статыстыка дакументу 13 | word-count = Колькасць слоў 14 | character-count = Сімвалы 15 | character-count-no-spaces = Сімвалы (без прабелаў) 16 | line-count = Радкі 17 | 18 | ## Git management 19 | git-management = Кіраванне Git 20 | git-management-description = Кіраванне Git - гэта інструмент распрацоўшчыка, які выкарыстоўваецца для аперацый кантролю версій. 21 | git-management-loading = Загрузка кіравання Git... 22 | stage = Дадаць да індэксу 23 | staged-changes = Праіндэксаваныя змены 24 | unstage = Прыбраць з індэксу 25 | unstaged-changes = Не праіндэксаваныя змены 26 | 27 | ## Project search 28 | project-search = Пошук праекта 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Незахаваныя змены 32 | prompt-unsaved-changes = У вас ёсць незахаваныя змены. Захаваць? 33 | cancel = Адмяніць 34 | discard = Адхіліць змены 35 | save-all = Захаваць усё 36 | 37 | ## Settings 38 | settings = Налады 39 | 40 | ### Appearance 41 | appearance = Знешні выгляд 42 | theme = Тэма 43 | match-desktop = Як у сістэме 44 | dark = Цёмная 45 | light = Светлая 46 | syntax-dark = Цёмны сінтаксіс 47 | syntax-light = Светлы сінтаксіс 48 | default-font = Шрыфт па змаўчанні 49 | default-font-size = Памер шрыфта па змаўчанні 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Спалучэнні клавіш 53 | enable-vim-bindings = Уключыць прывязкі клавіш Vim 54 | 55 | # Find 56 | find-placeholder = Знайсці... 57 | find-previous = Знайсці папярэдні 58 | find-next = Знайсці наступны 59 | replace-placeholder = Замяніць... 60 | replace = Замяніць 61 | replace-all = Замяніць усё 62 | case-sensitive = З улікам рэгістра 63 | use-regex = Выкарыстоўваць рэгулярны выраз 64 | 65 | # Menu 66 | 67 | ## File 68 | file = Файл 69 | new-file = Новы файл 70 | new-window = Новае акно 71 | open-file = Адкрыць файл... 72 | open-recent-file = Адкрыць нядаўні файл 73 | close-file = Закрыць файл 74 | menu-open-project = Адкрыць праект... 75 | open-recent-project = Адкрыць нядаўні праект 76 | close-project = Закрыць праект 77 | save = Захаваць 78 | save-as = Захаваць як... 79 | revert-all-changes = Скасаваць усе змены 80 | menu-document-statistics = Статыстыка дакументу... 81 | document-type = Тып дакумента... 82 | encoding = Кадзіроўка... 83 | menu-git-management = Кіраванне Git... 84 | print = Друк 85 | quit = Выйсці 86 | 87 | ## Edit 88 | edit = Рэдагаваць 89 | undo = Адрабіць 90 | redo = Паўтарыць 91 | cut = Выразаць 92 | copy = Скапіяваць 93 | paste = Уставіць 94 | select-all = Вылучыць усё 95 | find = Знайсці 96 | find-in-project = Знайсці ў праекце... 97 | spell-check = Праверка правапісу... 98 | 99 | ## View 100 | view = Выгляд 101 | indentation = Водступы 102 | 103 | ### Indentation 104 | automatic-indentation = Аўтаматычныя водступы 105 | tab-width = Шырыня табуляцыі: {$tab_width} 106 | convert-indentation-to-spaces = Пераўтварыць водступы ў прабелы 107 | convert-indentation-to-tabs = Пераўтварыць водступы у табуляцыі 108 | 109 | word-wrap = Перанос радкоў 110 | show-line-numbers = Паказваць нумары радкоў 111 | highlight-current-line = Вылучыць бягучы радок 112 | syntax-highlighting = Падсвятленне сінтаксісу... 113 | menu-settings = Налады... 114 | menu-keyboard-shortcuts = Спалучэнні клавіш... 115 | menu-about = Пра Тэкставы рэдактар COSMIC... 116 | -------------------------------------------------------------------------------- /i18n/cs/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = Nový dokument 2 | open-project = Otevřít projekt 3 | 4 | # Context Pages 5 | 6 | ## Document statistics 7 | document-statistics = Statistiky dokumentu 8 | word-count = Počet slov 9 | character-count = Znaky 10 | character-count-no-spaces = Znaky (bez mezer) 11 | line-count = Řádky 12 | 13 | ## Settings 14 | settings = Nastavení 15 | 16 | ## Appearance 17 | appearance = Vzhled 18 | theme = Téma 19 | default-font = Výchozí font 20 | default-font-size = Výchozí velikost fontu 21 | 22 | ### Keyboard shortcuts 23 | keyboard-shortcuts = Klávesové zkratky 24 | enable-vim-bindings = Povolit režim Vim 25 | 26 | # Menu 27 | 28 | ## File 29 | file = Soubor 30 | new-file = Nový soubor 31 | new-window = Nové okno 32 | open-file = Otevřít... 33 | open-recent = Otevřít nedávný 34 | todo = TODO 35 | save = Uložit 36 | save-as = Uložit jako... 37 | revert-all-changes = Vrátit všechny změny 38 | menu-document-statistics = Statistiky dokumentu... 39 | document-type = Typ dokumentu... 40 | encoding = Kódování... 41 | print = Tisk 42 | quit = Ukončit 43 | 44 | ## Edit 45 | edit = Upravit 46 | undo = Zpět 47 | redo = Opakovat 48 | cut = Vyjmout 49 | copy = Kopírovat 50 | paste = Vložit 51 | find = Najít 52 | replace = Nahradit 53 | spell-check = Kontrola pravopisu... 54 | 55 | ## View 56 | view = Zobrazit 57 | indentation = Odsazení 58 | 59 | ### Indentation 60 | automatic-indentation = Automatické odsazení 61 | tab-width = Šířka tabulátoru: {$tab_width} 62 | convert-indentation-to-spaces = Převést odsazení na mezery 63 | convert-indentation-to-tabs = Převést odsazení na tabulátory 64 | 65 | word-wrap = Zalamování slov 66 | show-line-numbers = Zobrazit čísla řádků 67 | highlight-current-line = Zvýraznění aktuálního řádku 68 | syntax-highlighting = Zvýraznění syntaxe... 69 | menu-settings = Nastavení... 70 | menu-keyboard-shortcuts = Klávesové zkratky... 71 | menu-about = O textovém editoru COSMIC 72 | -------------------------------------------------------------------------------- /i18n/de/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC Text Editor 2 | new-document = Neues Dokument 3 | open-project = Projekt öffnen 4 | todo = TODO 5 | 6 | # Kontextseiten 7 | 8 | ## Über 9 | git-description = Git-Commit {$hash} am {$date} 10 | 11 | ## Dokument-Statistiken 12 | document-statistics = Dokument-Statistiken 13 | word-count = Wörter 14 | character-count = Zeichen 15 | character-count-no-spaces = Zeichen (ohne Leerzeichen) 16 | line-count = Zeilen 17 | 18 | ## Git-Verwaltung 19 | git-management = Git-Verwaltung 20 | git-management-description = Git-Verwaltung ist ein Entwicklerwerkzeug für die Versionskontrolle. 21 | git-management-loading = Git-Verwaltung wird geladen... 22 | stage = Vormerken 23 | staged-changes = Vorgemerkte Änderungen 24 | unstage = Nicht vormerken 25 | unstaged-changes = Nicht vorgemerkte Änderungen 26 | 27 | ## Projektsuche 28 | project-search = Projektsuche 29 | 30 | ## Aufforderung zum Speichern von Änderungen 31 | prompt-save-changes-title = Ungespeicherte Änderungen 32 | prompt-unsaved-changes = Es existieren ungespeicherte Änderungen. Speichern? 33 | cancel = Abbrechen 34 | discard = Änderungen verwerfen 35 | save-all = Alles speichern 36 | 37 | ## Einstellungen 38 | settings = Einstellungen 39 | 40 | ## Aussehen 41 | appearance = Aussehen 42 | theme = Thema 43 | match-desktop = An Desktop anpassen 44 | dark = Dunkel 45 | light = Hell 46 | syntax-dark = Syntax Dunkel 47 | syntax-light = Syntax Hell 48 | default-font = Standard-Schriftart 49 | default-font-size = Standard-Schriftgröße 50 | default-zoom-step = Zoomstufen 51 | 52 | 53 | ### Tastenkombinationen 54 | keyboard-shortcuts = Tastenkombinationen 55 | enable-vim-bindings = Vim-Kombinationen aktivieren 56 | 57 | # Suchen 58 | find-placeholder = Suchen... 59 | find-previous = Vorherigen suchen 60 | find-next = Nächsten suchen 61 | replace-placeholder = Ersetzen... 62 | replace = Ersetzen 63 | replace-all = Alles ersetzen 64 | case-sensitive = Groß-/Kleinschreibung beachten 65 | use-regex = Reguläre Ausdrücke verwenden 66 | wrap-around = Umlauf 67 | 68 | # Menü 69 | 70 | ## Datei 71 | file = Datei 72 | new-file = Neue Datei 73 | new-window = Neues Fenster 74 | open-file = Datei öffnen... 75 | open-recent-file = Letzte Datei öffnen 76 | close-file = Datei schließen 77 | menu-open-project = Projekt öffnen... 78 | open-recent-project = Letztes Projekt öffnen 79 | close-project = Projekt schließen 80 | save = Speichern 81 | save-as = Speichern unter... 82 | revert-all-changes = Alle Änderungen rückgängig machen 83 | menu-document-statistics = Dokument-Statistiken... 84 | document-type = Dokumententyp... 85 | encoding = Kodierung... 86 | menu-git-management = Git-Verwaltung... 87 | print = Drucken 88 | quit = Beenden 89 | 90 | ## Bearbeiten 91 | edit = Bearbeiten 92 | undo = Rückgängig 93 | redo = Wiederholen 94 | cut = Ausschneiden 95 | copy = Kopieren 96 | paste = Einfügen 97 | select-all = Alles auswählen 98 | find = Suchen 99 | find-in-project = Im Projekt suchen... 100 | spell-check = Rechtschreibprüfung... 101 | 102 | ## Ansicht 103 | view = Ansicht 104 | zoom-in = Hineinzoomen 105 | default-size = Standardgröße 106 | zoom-out = Herauszoomen 107 | indentation = Einrückung 108 | 109 | ### Einrückung 110 | automatic-indentation = Automatische Einrückung 111 | tab-width = Tabulator-Breite: {$tab_width} 112 | convert-indentation-to-spaces = Einrückung in Leerzeichen umwandeln 113 | convert-indentation-to-tabs = Einrückung in Tabulatoren umwandeln 114 | 115 | word-wrap = Zeilenumbruch 116 | show-line-numbers = Zeilennummern anzeigen 117 | highlight-current-line = Aktuelle Zeile hervorheben 118 | syntax-highlighting = Syntaxhervorhebung... 119 | menu-settings = Einstellungen... 120 | menu-keyboard-shortcuts = Tastenkombinationen... 121 | menu-about = Über COSMIC Text Editor 122 | -------------------------------------------------------------------------------- /i18n/el/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = Νέο έγγραφο 2 | open-project = Άνοιγμα έργου 3 | 4 | # Context Pages 5 | 6 | ## Document statistics 7 | document-statistics = Στατιστικά εγγράφου 8 | word-count = Λέξεις 9 | character-count = Χαρακτήρες 10 | character-count-no-spaces = Χαρακτήρες (χωρίς κενά) 11 | line-count = Γραμμές 12 | 13 | ## Settings 14 | settings = Ρυθμίσεις 15 | 16 | ## Appearance 17 | appearance = Εμφάνιση 18 | theme = Θέμα 19 | default-font = Γραμματοσειρά 20 | default-font-size = Μέγεθος γραμματοσειράς 21 | 22 | ### Keyboard shortcuts 23 | keyboard-shortcuts = Συντομεύσεις πλήκτρων 24 | enable-vim-bindings = Ενεργοποίηση πλήκτρων vim 25 | 26 | # Menu 27 | 28 | ## File 29 | file = Αρχείο 30 | new-file = Νέο αρχείο 31 | new-window = Νέο παράθυρο 32 | open-file = Άνοιγμα αρχείου... 33 | open-recent = Άνοιγμα πρόσφατου 34 | todo = TODO 35 | save = Αποθήκευση 36 | save-as = Αποθήκευση ως... 37 | revert-all-changes = Αναίρεση όλων των αλλαγών 38 | menu-document-statistics = Στατιστικά εγγράφου... 39 | document-type = Τύπος εγγράφου... 40 | encoding = Κωδικοποίηση... 41 | print = Εκτύπωση 42 | quit = Έξοδος 43 | 44 | ## Edit 45 | edit = Επεξεργασία 46 | undo = Αναίρεση 47 | redo = Επανάληψη 48 | cut = Αποκοπή 49 | copy = Αντιγραφή 50 | paste = Επικόλληση 51 | find = Εύρεση 52 | replace = Αντικατάσταση 53 | spell-check = Έλεγχος ορθογραφίας... 54 | 55 | ## View 56 | view = Προβολή 57 | indentation = Εσοχές 58 | 59 | ### Indentation 60 | automatic-indentation = Αυτόματη εισαγωγή εσοχών 61 | tab-width = Πλάτος Tabs: {$tab_width} 62 | convert-indentation-to-spaces = Μετατροπή εσοχών σε spaces 63 | convert-indentation-to-tabs = Μετατροπή εσοχών σε tabs 64 | 65 | word-wrap = Περιτύλιξη λέξεων 66 | show-line-numbers = Εμφάνιση αριθμού γραμμών 67 | highlight-current-line = Υπογράμμιση τρέχουσας γραμμής 68 | syntax-highlighting = Υπογράμμιση συντακτικού... 69 | menu-settings = Ρυθμίσεις... 70 | menu-keyboard-shortcuts = Συντομεύσεις πλήκτρων... 71 | menu-about = Σχετικά με τον επεξεργαστή κειμένου COSMIC 72 | -------------------------------------------------------------------------------- /i18n/en/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC Text Editor 2 | new-document = New document 3 | open-project = Open project 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} on {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Document statistics 13 | word-count = Word count 14 | character-count = Characters 15 | character-count-no-spaces = Characters (without spaces) 16 | line-count = Lines 17 | 18 | ## Git management 19 | git-management = Git management 20 | git-management-description = Git management is a developer tool used for version control operations. 21 | git-management-loading = Loading Git management... 22 | stage = Stage 23 | staged-changes = Staged changes 24 | unstage = Unstage 25 | unstaged-changes = Unstaged changes 26 | 27 | ## Project search 28 | project-search = Project search 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Unsaved changes 32 | prompt-unsaved-changes = You have unsaved changes. Save? 33 | cancel = Cancel 34 | discard = Discard changes 35 | save-all = Save all 36 | 37 | ## Settings 38 | settings = Settings 39 | 40 | ### Appearance 41 | appearance = Appearance 42 | theme = Theme 43 | match-desktop = Match desktop 44 | dark = Dark 45 | light = Light 46 | syntax-dark = Syntax dark 47 | syntax-light = Syntax light 48 | default-font = Default font 49 | default-font-size = Default font size 50 | default-zoom-step = Zoom steps 51 | 52 | 53 | ### Keyboard shortcuts 54 | keyboard-shortcuts = Keyboard shortcuts 55 | enable-vim-bindings = Enable Vim bindings 56 | 57 | # Find 58 | find-placeholder = Find... 59 | find-previous = Find previous 60 | find-next = Find next 61 | replace-placeholder = Replace... 62 | replace = Replace 63 | replace-all = Replace all 64 | case-sensitive = Case sensitive 65 | use-regex = Use regex 66 | wrap-around = Wrap Around 67 | 68 | # Menu 69 | 70 | ## File 71 | file = File 72 | new-file = New file 73 | new-window = New window 74 | open-file = Open file... 75 | open-recent-file = Open recent file 76 | close-file = Close file 77 | menu-open-project = Open project... 78 | open-recent-project = Open recent project 79 | close-project = Close project 80 | save = Save 81 | save-as = Save as... 82 | revert-all-changes = Revert all changes 83 | menu-document-statistics = Document statistics... 84 | document-type = Document type... 85 | encoding = Encoding... 86 | menu-git-management = Git management... 87 | print = Print 88 | quit = Quit 89 | 90 | ## Edit 91 | edit = Edit 92 | undo = Undo 93 | redo = Redo 94 | cut = Cut 95 | copy = Copy 96 | paste = Paste 97 | select-all = Select all 98 | find = Find 99 | find-in-project = Find in project... 100 | spell-check = Spell check... 101 | 102 | ## View 103 | view = View 104 | zoom-in = Zoom in 105 | default-size = Default size 106 | zoom-out = Zoom out 107 | indentation = Indentation 108 | 109 | ### Indentation 110 | automatic-indentation = Automatic Indentation 111 | tab-width = Tab width: {$tab_width} 112 | convert-indentation-to-spaces = Convert indentation to spaces 113 | convert-indentation-to-tabs = Convert indentation to tabs 114 | 115 | word-wrap = Word wrap 116 | show-line-numbers = Show line numbers 117 | highlight-current-line = Highlight current line 118 | syntax-highlighting = Syntax highlighting... 119 | menu-settings = Settings... 120 | menu-keyboard-shortcuts = Keyboard shortcuts... 121 | menu-about = About COSMIC Text Editor... 122 | -------------------------------------------------------------------------------- /i18n/es-419/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Editor de texto de COSMIC 2 | new-document = Nuevo documento 3 | open-project = Abrir proyecto 4 | 5 | # Context Pages 6 | 7 | ## About 8 | git-description = «Commit» {$hash} de Git del {$date} 9 | 10 | ## Document statistics 11 | document-statistics = Estadísticas del documento 12 | word-count = Número de palabras 13 | character-count = Número de caracteres 14 | character-count-no-spaces = Caracteres (sin contar espacios) 15 | line-count = Número de líneas 16 | 17 | ## Git management 18 | git-management = Git management 19 | git-management-description = Git management (gestión de Git) es una herramienta para desarrolladores utilizada para operaciones de control de versiones. 20 | git-management-loading = Cargando Git management... 21 | stage = Etapa 22 | staged-changes = Cambios en etapa 23 | unstage = Quitar de la etapa 24 | unstaged-changes = Cambios quitados de la etapa 25 | 26 | ## Project search 27 | project-search = Búsqueda del proyecto 28 | 29 | ## Prompt save changes 30 | prompt-save-changes-title = Cambios no guardados 31 | prompt-unsaved-changes = Tienes cambios no guardados. ¿Guardar? 32 | cancel = Cancelar 33 | discard = Descartar cambios 34 | save-all = Guardar todo 35 | 36 | ## Settings 37 | settings = Configuración 38 | 39 | ### Appearance 40 | appearance = Apariencia 41 | theme = Tema 42 | match-desktop = Igual que el escritorio 43 | dark = Oscuro 44 | light = Claro 45 | syntax-dark = Sintaxis oscura 46 | syntax-light = Sintaxis clara 47 | default-font = Fuente predeterminada 48 | default-font-size = Tamaño de fuente predeterminado 49 | 50 | ### Keyboard shortcuts 51 | keyboard-shortcuts = Atajos de teclado 52 | enable-vim-bindings = Activar atajos de teclado de Vim 53 | 54 | # Find 55 | find-placeholder = Buscar... 56 | find-previous = Buscar anterior 57 | find-next = Buscar siguiente 58 | replace-placeholder = Reemplazar... 59 | replace = Reemplazar 60 | replace-all = Reemplazar todo 61 | case-sensitive = Sensible a mayúsculas 62 | use-regex = Usar expresiones regulares 63 | 64 | # Menu 65 | 66 | ## File 67 | file = Archivo 68 | new-file = Nuevo archivo 69 | new-window = Nueva ventana 70 | open-file = Abrir archivo... 71 | open-recent-file = Abrir archivo reciente 72 | close-file = Cerrar archivo 73 | menu-open-project = Abrir proyecto... 74 | open-recent-project = Abrir proyecto reciente 75 | close-project = Cerrar proyecto 76 | save = Guardar 77 | save-as = Guardar como... 78 | revert-all-changes = Deshacer todos los cambios 79 | menu-document-statistics = Estadísticas del documento... 80 | document-type = Tipo del documento... 81 | encoding = Codificando... 82 | menu-git-management = Git management... 83 | print = Imprimir 84 | quit = Cerrar 85 | 86 | ## Edit 87 | edit = Editar 88 | undo = Deshacer 89 | redo = Rehacer 90 | cut = Cortar 91 | copy = Copiar 92 | paste = Pegar 93 | select-all = Seleccionar todo 94 | find = Buscar 95 | find-in-project = Buscar en el proyecto... 96 | spell-check = Corrección ortográfica... 97 | 98 | ## View 99 | view = Ver 100 | indentation = Sangría 101 | 102 | ### Indentation 103 | automatic-indentation = Sangría automática 104 | tab-width = Ancho de tabulación: {$tab_width} 105 | convert-indentation-to-spaces = Convertir sangría a espacios 106 | convert-indentation-to-tabs = Convertir sangría a tabulaciones 107 | 108 | word-wrap = Ajuste de línea 109 | show-line-numbers = Mostrar números de línea 110 | highlight-current-line = Resaltar línea actual 111 | syntax-highlighting = Resaltado de sintaxis... 112 | menu-settings = Configuración... 113 | menu-keyboard-shortcuts = Atajos de teclado... 114 | menu-about = Acerca del editor de texto de COSMIC... 115 | -------------------------------------------------------------------------------- /i18n/es/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC Text Editor 2 | new-document = Nuevo documento 3 | open-project = Abrir proyecto 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git Commit: {$hash} - Fecha: {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Estadísticas del documento 13 | word-count = Número de palabras 14 | character-count = Letras 15 | character-count-no-spaces = Letras (sin espacios) 16 | line-count = Líneas 17 | 18 | ## Git management 19 | git-management = Gestión de Git 20 | git-management-description = {$git-management} es una herramienta para desarrolladores utilizada para las operciones de control de versión. 21 | git-management-loading = Cargando {$git-management}... 22 | stage = Etapa 23 | unstaged-changes = Cambios no confirmados 24 | staged-changes = Cambios confirmados 25 | unstagged-changes = Cambios rectificados 26 | 27 | ## Project search 28 | project-search = Búsqueda del proyecto 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Cambios no guardados 32 | prompt-unsaved-changes = Hay cambios sin guardar, ¿Quiere guardarlos? 33 | cancel = Cancelar 34 | discard = Descartar cambios 35 | save-all = Guardar todo 36 | 37 | ## Settings 38 | settings = Configuración 39 | 40 | ## Appearance 41 | appearance = Apariencia 42 | theme = Tema 43 | match-desktop = Seguir el estilo del escritorio 44 | dark = Oscuro 45 | light = Claro 46 | syntax-dark = Sintaxis oscura 47 | syntax-light = Sintaxis clara 48 | default-font = Fuente predeterminada 49 | default-font-size = Tamaño predeterminado de la fuente 50 | default-zoom-step = Granulidad de la ampliación o disminución 51 | 52 | 53 | ### Keyboard shortcuts 54 | keyboard-shortcuts = Atajos de teclado 55 | enable-vim-bindings = Activar atajos de teclado de Vim 56 | 57 | # Find 58 | find-placeholder = Buscar... 59 | find-previous = Buscar anterior 60 | find-next = Buscar siguiente 61 | replace-placeholder = Remplazar... 62 | replace = Remplazar 63 | replace-all = Remplazar todo 64 | case-sensitive = Sensible a mayúsculas y minúsculas 65 | use-regex = Usar expresiones regulares 66 | wrap-around = Envolver 67 | 68 | # Menu 69 | 70 | ## File 71 | file = Archivo 72 | new-file = Nuevo archivo 73 | new-window = Nueva ventana 74 | open-file = Abrir archivo... 75 | open-recent = Abrir reciente 76 | close-file = Cerrar archivo 77 | menu-open-project = Abrir proyecto... 78 | open-recent-project = Abrir proyecto reciente 79 | close-project = Cerrar proyecto 80 | save = Guardar 81 | save-as = Guardar como... 82 | revert-all-changes = Deshacer todos los cambios 83 | menu-document-statistics = Estadísticas del documento... 84 | document-type = Tipo del documento... 85 | encoding = Codificación... 86 | menu-git-management = Gestión de Git... 87 | print = Imprimir 88 | quit = Salir 89 | 90 | ## Edit 91 | edit = Editar 92 | undo = Deshacer 93 | redo = Rehacer 94 | cut = Cortar 95 | copy = Copiar 96 | paste = Pegar 97 | find = Buscar 98 | replace = Remplazar 99 | find-in-project = Buscar en el proyecto... 100 | spell-check = Corrector ortográfico... 101 | 102 | ## View 103 | view = Vista 104 | zoom-in = Ampliar 105 | default-size = Tamaño predeterminado 106 | zoom-out = Disminuir 107 | indentation = Indentación 108 | 109 | ### Indentation 110 | automatic-indentation = Indentación automática 111 | tab-width = Ancho de tabulación: {$tab_width} 112 | convert-indentation-to-spaces = Convertir indentación a espacios 113 | convert-indentation-to-tabs = Convertir indentación a tabulaciones 114 | 115 | word-wrap = Ajuste de línea 116 | show-line-numbers = Mostrar números de línea 117 | highlight-current-line = Resaltar línea actual 118 | syntax-highlighting = Resaltado de sintaxis... 119 | menu-settings = Configuración... 120 | menu-keyboard-shortcuts = Atajos de teclado... 121 | menu-about = Sobre el COSMIC Text Editor 122 | -------------------------------------------------------------------------------- /i18n/fi/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = Uusi Dokumentti 2 | open-project = Avaa projekti 3 | todo = TODO 4 | 5 | # Context Pages 6 | 7 | ## Document statistics 8 | document-statistics = Dokumentin tilastot 9 | word-count = Sanoja 10 | character-count = Merkkejä 11 | character-count-no-spaces = Merkit (ilman välilyöntejä) 12 | line-count = Rivejä 13 | 14 | ## Git management 15 | git-management = Git-hallinta 16 | unstaged-changes = Vaiheistamattomat muutokset 17 | staged-changes = Vaiheistetut muutokset 18 | 19 | ## Project search 20 | project-search = Projektin haku 21 | 22 | ## Settings 23 | settings = Asetukset 24 | 25 | ## Appearance 26 | appearance = Ulkonäkö 27 | theme = Teema 28 | match-desktop = Sovita työpöydän kanssa 29 | dark = Tumma 30 | light = Vaalea 31 | syntax-dark = Tumma syntaksi 32 | syntax-light = Vaalea syntaksi 33 | default-font = Oletusfontti 34 | default-font-size = Fontin oletuskoko 35 | 36 | ### Keyboard shortcuts 37 | keyboard-shortcuts = Pikanäppäimet 38 | enable-vim-bindings = Ota käyttöön Vim-komennot 39 | 40 | # Menu 41 | 42 | ## File 43 | file = Tiedosto 44 | new-file = Uusi tiedosto 45 | new-window = Uusi ikkuna 46 | open-file = Avaa tiedosto... 47 | open-recent-file = Avaa viimeisin tiedosto 48 | close-file = Sulje tiedosto 49 | menu-open-project = Avaa projekti... 50 | open-recent-project = Avaa viimeisin projekti 51 | close-project = Sulje projekti 52 | save = Tallenna 53 | save-as = Tallenna nimellä... 54 | revert-all-changes = Peru kaiki muutokset 55 | menu-document-statistics = Dokumentin tilastot... 56 | document-type = Dokumentin tyyppi... 57 | encoding = Koodataan... 58 | menu-git-management = Git-hallinta... 59 | print = Tulosta 60 | quit = Lopeta 61 | 62 | ## Edit 63 | edit = Muokkaa 64 | undo = Kumoa 65 | redo = Palauta 66 | cut = Leikkaa 67 | copy = Kopioi 68 | paste = Syötä 69 | select-all = Valitse kaikki 70 | find = Etsi 71 | replace = Korvaa 72 | find-in-project = Etsi projektista... 73 | spell-check = Tarkista oikeinkirjoitus... 74 | 75 | ## View 76 | view = Näytä 77 | indentation = Sisennys 78 | 79 | ### Indentation 80 | automatic-indentation = Automaattinen sisennys 81 | tab-width = Tab width: {$tab_width} 82 | convert-indentation-to-spaces = Muunna sisennykset välilyönneiksi 83 | convert-indentation-to-tabs = Muunna sisennykset tabeiksi 84 | 85 | word-wrap = Rivinvaihto 86 | show-line-numbers = Näytä rivinumerot 87 | highlight-current-line = Korosta nykyinen rivi 88 | syntax-highlighting = Syntaksi korostus... 89 | menu-settings = Asetukset... 90 | menu-keyboard-shortcuts = Pikanäppäimet... 91 | menu-about = Tietoa COSMIC-tekstieditorista 92 | -------------------------------------------------------------------------------- /i18n/fr/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Éditeur de texte COSMIC 2 | new-document = Nouveau document 3 | open-project = Ouvrir un projet 4 | todo = À faire 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} le {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Statistiques du document 13 | word-count = Nombre de mots 14 | character-count = Caractères 15 | character-count-no-spaces = Caractères (sans espaces) 16 | line-count = Lignes 17 | 18 | ## Git management 19 | git-management = Gestion de Git 20 | git-management-description = Git est un outil de développement utilisé pour les opérations de gestion de versions. 21 | git-management-loading = Chargement de Git... 22 | stage = Indexer 23 | staged-changes = Modifications indexées 24 | unstage = Désindexer 25 | unstaged-changes = Modifications non indexées 26 | 27 | ## Project search 28 | project-search = Recherche de projets 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Modifications non sauvegardées 32 | prompt-unsaved-changes = Vous avez des modifications non sauvegardées. Sauvegarder ? 33 | cancel = Annuler 34 | discard = Abandonner les modifications 35 | save-all = Tout enregistrer 36 | 37 | ## Settings 38 | settings = Paramètres 39 | 40 | ## Appearance 41 | appearance = Apparence 42 | theme = Thème 43 | match-desktop = Assortir au bureau 44 | dark = Sombre 45 | light = Clair 46 | syntax-dark = Syntaxe sombre 47 | syntax-light = Syntaxe clair 48 | default-font = Police par défaut 49 | default-font-size = Taille de la police par défaut 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Raccourcis clavier 53 | enable-vim-bindings = Activer les raccourcis Vim 54 | 55 | # Find 56 | find-placeholder = Rechercher... 57 | find-previous = Chercher précédent 58 | find-next = Chercher prochain 59 | replace-placeholder = Remplacer... 60 | replace = Remplacer 61 | replace-all = Remplacer tout 62 | case-sensitive = Respecter la casse 63 | use-regex = Expression régulière 64 | wrap-around = Retour à la ligne 65 | 66 | # Menu 67 | 68 | ## File 69 | file = Fichier 70 | new-file = Nouveau fichier 71 | new-window = Nouvelle fenêtre 72 | open-file = Ouvrir un fichier... 73 | open-recent-file = Ouvrir un fichier récent 74 | close-file = Fermer le fichier 75 | menu-open-project = Ouvrir un projet... 76 | open-recent-project = Ouvrir un projet récent 77 | close-project = Fermer le projet 78 | save = Enregistrer 79 | save-as = Enregistrer sous... 80 | revert-all-changes = Annuler tous les changements 81 | menu-document-statistics = Statistiques du document... 82 | document-type = Type de document... 83 | encoding = Encodage... 84 | menu-git-management = Gestion de Git... 85 | print = Imprimer 86 | quit = Quitter 87 | 88 | ## Edit 89 | edit = Modifier 90 | undo = Annuler 91 | redo = Rétablir 92 | cut = Couper 93 | copy = Copier 94 | paste = Coller 95 | select-all = Sélectionner tout 96 | find = Rechercher 97 | find-in-project = Rechercher dans le projet... 98 | spell-check = Vérification orthographique... 99 | 100 | ## View 101 | view = Affichage 102 | indentation = Indentation 103 | 104 | ### Indentation 105 | automatic-indentation = Indentation automatique 106 | tab-width = Largeur de la tabulation : {$tab_width} 107 | convert-indentation-to-spaces = Convertir l'indentation en espaces 108 | convert-indentation-to-tabs = Convertir l'indentation en tabulations 109 | 110 | word-wrap = Retour à la ligne 111 | show-line-numbers = Afficher les numéros de ligne 112 | highlight-current-line = Surligner la ligne actuelle 113 | syntax-highlighting = Coloration syntaxique... 114 | menu-settings = Paramètres... 115 | menu-keyboard-shortcuts = Raccourcis clavier... 116 | menu-about = À propos de l'éditeur de texte COSMIC 117 | -------------------------------------------------------------------------------- /i18n/ga/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Eagarthóir Téacs COSMIC 2 | new-document = Doiciméad nua 3 | open-project = Tionscadal oscailte 4 | todo = LE DÉANAMH 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git tiomantas {$hash} ar {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Staitisticí Doiciméad 13 | word-count = Comhaireamh focal 14 | character-count = Carachtair 15 | character-count-no-spaces = Carachtair (gan spásanna) 16 | line-count = Comhaireamh línte 17 | 18 | ## Git management 19 | git-management = Bainistíocht Git 20 | git-management-description = Is uirlis do fhorbróirí é Bainistíocht Git, a úsáidtear le haghaidh oibríochtaí rialaithe leagan. 21 | git-management-loading = Bainistíocht Git a luchtú... 22 | stage = Céim 23 | staged-changes = Athruithe faoi chéim 24 | unstage = Céim a bhaint 25 | unstaged-changes = Athruithe neamhchéime 26 | 27 | ## Project search 28 | project-search = Cuardach tionscadail 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Athruithe neamhshábháilte 32 | prompt-unsaved-changes = Tá athruithe neamhshábháilte agat. Sábháil? 33 | cancel = Cealaigh 34 | discard = Athruithe a scriosadh 35 | save-all = Sábháil gach rud 36 | 37 | ## Settings 38 | settings = Socruithe 39 | 40 | ### Appearance 41 | appearance = Dealramh 42 | theme = Téama 43 | match-desktop = Meaitseáil le deasc 44 | dark = Dorcha 45 | light = Solas 46 | syntax-dark = Comhréir Dorcha 47 | syntax-light = Solas comhréir 48 | default-font = Cló réamhshocraithe 49 | default-font-size = Méid cló réamhshocraithe 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Aicearraí méarchláir 53 | enable-vim-bindings = Cumasaigh Ceangail Vim 54 | 55 | # Find 56 | find-placeholder = Faigh... 57 | find-previous = Faigh an roimhe seo 58 | find-next = Faigh an chéad cheann eile 59 | replace-placeholder = Ionadaigh... 60 | replace = Cuir in ionad 61 | replace-all = Cuir gach ceann in ionad 62 | case-sensitive = Íogaireacht cháis 63 | use-regex = Úsáid Regex 64 | wrap-around = Timpeallacht 65 | 66 | # Menu 67 | 68 | ## File 69 | file = Comhad 70 | new-file = Comhad nua 71 | new-window = Fuinneog nua 72 | open-file = Oscail comhad... 73 | open-recent-file = Oscail comhad le déanaí 74 | close-file = Dún an comhad 75 | menu-open-project = Oscail tionscadal... 76 | open-recent-project = Oscail tionscadal le déanaí 77 | close-project = Dún an tionscadal 78 | save = Sábháil 79 | save-as = Sábháil mar... 80 | revert-all-changes = Cuir gach athrú ar ais 81 | menu-document-statistics = Staitisticí an doiciméid... 82 | document-type = Cineál doiciméid... 83 | encoding = Ionchódú... 84 | menu-git-management = Bainistíocht Git... 85 | print = Priontáil 86 | quit = Scoir 87 | 88 | ## Edit 89 | edit = Cuir in eagar 90 | undo = Fill 91 | redo = Déan arís 92 | cut = Gearr 93 | copy = Cóip 94 | paste = Greamaigh 95 | select-all = Roghnaigh gach rud 96 | find = Faigh 97 | find-in-project = Faigh i dTionscadal... 98 | spell-check = Seiceáil litrithe... 99 | 100 | ## View 101 | view = Amharc 102 | indentation = Cuir eangach 103 | 104 | ### Indentation 105 | automatic-indentation = Eangach uathoibríoch 106 | tab-width = Leithead táb: {$tab_width} 107 | convert-indentation-to-spaces = Tiontú eangach go spásanna 108 | convert-indentation-to-tabs = Tiontú eangach go cluaisíní 109 | 110 | word-wrap = Cumhdach focal 111 | show-line-numbers = Taispeáin uimhreacha líne 112 | highlight-current-line = Aibhsigh an líne reatha 113 | syntax-highlighting = Comhréir ag aibhsiú... 114 | menu-settings = Socruithe... 115 | menu-keyboard-shortcuts = Aicearraí méarchláir... 116 | menu-about = Maidir le Eagarthóir Téacs COSMIC... 117 | -------------------------------------------------------------------------------- /i18n/he/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = קובץ חדש 2 | open-project = פתח פרוייקט 3 | 4 | # Context Pages 5 | 6 | ## Document statistics 7 | document-statistics = סטטיסטיקת מסמך 8 | word-count = מילים 9 | character-count = תווים 10 | character-count-no-spaces = תווים (ללא רווחים) 11 | line-count = שורות 12 | 13 | ## Settings 14 | settings = הגדרות 15 | 16 | ## Appearance 17 | appearance = מראה 18 | theme = תמה 19 | default-font = גופן ברירת מחדל 20 | default-font-size = גודל גופן ברירת מחדל 21 | 22 | ### Keyboard shortcuts 23 | keyboard-shortcuts = קיצורי מקשים 24 | enable-vim-bindings = הפעל מקשי Vim 25 | 26 | # Menu 27 | 28 | ## File 29 | file = קובץ 30 | new-file = קובץ חדש 31 | new-window = חלון חדש 32 | open-file = פתח קובץ... 33 | open-recent = פתח אחרונים 34 | todo = TODO 35 | save = שמור 36 | save-as = שמור בשם... 37 | revert-all-changes = התעלם מכלל השינוים 38 | menu-document-statistics = נתוני מסמך... 39 | document-type = סוג מסמך... 40 | encoding = קידוד... 41 | print = הדפסה 42 | quit = יציאה 43 | 44 | ## Edit 45 | edit = עריכה 46 | undo = בטל 47 | redo = החזר 48 | cut = גזור 49 | copy = העתק 50 | paste = הדבק 51 | find = מצא 52 | replace = החלף 53 | spell-check = בדיקת איות... 54 | 55 | ## View 56 | view = תצוגה 57 | indentation = הזחה 58 | 59 | ### Indentation 60 | automatic-indentation = הזחה אוטומטית 61 | tab-width = רוחב טאב: {$tab_width} 62 | convert-indentation-to-spaces = המר הזחה לרווחים 63 | convert-indentation-to-tabs = המר הזחה לטאבים 64 | 65 | word-wrap = גלישת טקסט 66 | show-line-numbers = הצגת מספור שורות 67 | highlight-current-line = הדגשת שורה נוכחית 68 | syntax-highlighting = הדגשה תחבירית... 69 | menu-settings = הגדרות... 70 | menu-keyboard-shortcuts = קיצורי מקשים... 71 | menu-about = אודות עורך טקסט COSMIC 72 | -------------------------------------------------------------------------------- /i18n/hi/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = कॉस्मिक टेक्स्ट एडिटर 2 | new-document = नया दस्तावेज़ 3 | open-project = प्रोजेक्ट खोलें 4 | todo = करने के लिए 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = {$date} को {$hash} पर Git कमिट 10 | 11 | ## Document statistics 12 | document-statistics = दस्तावेज़ आँकड़े 13 | word-count = शब्दों की संख्या 14 | character-count = अक्षरों की संख्या 15 | character-count-no-spaces = अक्षरों की संख्या (स्पेस के बिना) 16 | line-count = पंक्तियाँ 17 | 18 | ## Git management 19 | git-management = Git प्रबंधन 20 | git-management-description = Git प्रबंधन एक डेवलपर टूल है जो संस्करण नियंत्रण कार्यों के लिए उपयोग किया जाता है। 21 | git-management-loading = Git प्रबंधन लोड हो रहा है... 22 | stage = स्टेज 23 | staged-changes = स्टेज पर बदली गई चीज़ें 24 | unstage = स्टेज से हटाएँ 25 | unstaged-changes = बिना स्टेज की गई चीज़ें 26 | 27 | ## Project search 28 | project-search = प्रोजेक्ट खोज 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = बिना सहेजे हुए बदलाव 32 | prompt-unsaved-changes = आपके पास बिना सहेजे हुए बदलाव हैं। सहेजना है? 33 | cancel = रद्द करो 34 | discard = बदलाव को खारिज करें 35 | save-all = सब कुछ सहेजें 36 | 37 | ## Settings 38 | settings = सेटिंग्स 39 | 40 | ### Appearance 41 | appearance = दिखावट 42 | theme = थीम 43 | match-desktop = डेस्कटॉप से मेल करें 44 | dark = डार्क 45 | light = लाइट 46 | syntax-dark = सिंटैक्स डार्क 47 | syntax-light = सिंटैक्स लाइट 48 | default-font = डिफ़ॉल्ट फ़ॉन्ट 49 | default-font-size = डिफ़ॉल्ट फ़ॉन्ट आकार 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = कीबोर्ड शॉर्टकट्स 53 | enable-vim-bindings = Vim बाइंडिंग्स सक्षम करें 54 | 55 | # Find 56 | find-placeholder = खोजें... 57 | find-previous = पिछला खोजें 58 | find-next = अगला खोजें 59 | replace-placeholder = बदलें... 60 | replace = बदलें 61 | replace-all = सब कुछ बदलें 62 | case-sensitive = केस-सेंसिटिव 63 | use-regex = Regex का उपयोग करें 64 | 65 | # Menu 66 | 67 | ## File 68 | file = फ़ाइल 69 | new-file = नई फ़ाइल 70 | new-window = नई विंडो 71 | open-file = फ़ाइल खोलें... 72 | open-recent-file = हाल की फ़ाइल खोलें 73 | close-file = फ़ाइल बंद करें 74 | menu-open-project = प्रोजेक्ट खोलें... 75 | open-recent-project = हाल का प्रोजेक्ट खोलें 76 | close-project = प्रोजेक्ट बंद करें 77 | save = सहेजें 78 | save-as = इस रूप में सहेजें... 79 | revert-all-changes = सभी बदलावों को पलटें 80 | menu-document-statistics = दस्तावेज़ आँकड़े... 81 | document-type = दस्तावेज़ प्रकार... 82 | encoding = एन्कोडिंग... 83 | menu-git-management = Git प्रबंधन... 84 | print = प्रिंट करें 85 | quit = बंद करें 86 | 87 | ## Edit 88 | edit = संपादित करें 89 | undo = पूर्ववत करें 90 | redo = फिर से करें 91 | cut = काटें 92 | copy = कॉपी करें 93 | paste = पेस्ट करें 94 | select-all = सब कुछ चुनें 95 | find = खोजें 96 | find-in-project = प्रोजेक्ट में खोजें... 97 | spell-check = वर्तनी की जांच... 98 | 99 | ## View 100 | view = दृश्य 101 | indentation = इंडेंटेशन 102 | 103 | ### Indentation 104 | automatic-indentation = स्वचालित इंडेंटेशन 105 | tab-width = टैब चौड़ाई: {$tab_width} 106 | convert-indentation-to-spaces = इंडेंटेशन को स्पेस में बदलें 107 | convert-indentation-to-tabs = इंडेंटेशन को टैब्स में बदलें 108 | 109 | word-wrap = वर्ड रैप 110 | show-line-numbers = पंक्ति संख्या दिखाएँ 111 | highlight-current-line = वर्तमान पंक्ति को हाइलाइट करें 112 | syntax-highlighting = सिंटैक्स हाइलाइटिंग... 113 | menu-settings = सेटिंग्स... 114 | menu-keyboard-shortcuts = कीबोर्ड शॉर्टकट्स... 115 | menu-about = कॉस्मिक टेक्स्ट एडिटर के बारे में... 116 | -------------------------------------------------------------------------------- /i18n/hu/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC Szövegszerkesztő 2 | new-document = Új dokumentum 3 | open-project = Projekt megnyitása 4 | todo = Teendők 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} ekkor: {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Dokumentumstatisztika 13 | word-count = Szavak száma 14 | character-count = Karakterszám 15 | character-count-no-spaces = Karakterszám (szóközök nélkül) 16 | line-count = Sorok száma 17 | 18 | ## Git management 19 | git-management = Git-kezelő 20 | git-management-description = A Git-kezelő egy verziókezeléssel kapcsolatos feladatok elvégzésére használt fejlesztői eszköz. 21 | git-management-loading = Git-kezelő betöltése... 22 | stage = Előkészítés 23 | staged-changes = Előkészített változtatások 24 | unstage = Változtatások visszavonása előkészítésből 25 | unstaged-changes = Előkészítésből visszavont változtatások 26 | 27 | ## Project search 28 | project-search = Projektkereső 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Nem mentett változtatások 32 | prompt-unsaved-changes = Nem minden változtatás van elmentve. Mentés? 33 | cancel = Megszakítás 34 | discard = Változtatások elvetése 35 | save-all = Összes mentése 36 | 37 | ## Settings 38 | settings = Beállítások 39 | 40 | ### Appearance 41 | appearance = Megjelenés 42 | theme = Téma 43 | match-desktop = Rendszertéma 44 | dark = Sötét 45 | light = Világos 46 | syntax-dark = Sötét szintaxis 47 | syntax-light = Világos szintaxis 48 | default-font = Alapértelmezett betűtípus 49 | default-font-size = Alapértelmezett betűméret 50 | default-zoom-step = Nagyítási mérték 51 | 52 | 53 | ### Keyboard shortcuts 54 | keyboard-shortcuts = Billentyűparancsok 55 | enable-vim-bindings = Vim billentyűkombinációk engedélyezése 56 | 57 | # Find 58 | find-placeholder = Keresés... 59 | find-previous = Előző találat 60 | find-next = Következő találat 61 | replace-placeholder = Csere... 62 | replace = Csere 63 | replace-all = Összes lecserélése 64 | case-sensitive = Kisbetű-nagybetű érzékenység 65 | use-regex = Regex használata 66 | wrap-around = Körbefutás 67 | 68 | # Menu 69 | 70 | ## File 71 | file = Fájl 72 | new-file = Új fájl 73 | new-window = Új ablak 74 | open-file = Fájl megnyitása... 75 | open-recent-file = Legutóbbi fájl megnyitása 76 | close-file = Fájl bezárása 77 | menu-open-project = Projekt megnyitása... 78 | open-recent-project = Legutóbbi projekt megnyitása 79 | close-project = Projekt bezárása 80 | save = Mentés 81 | save-as = Mentés másként... 82 | revert-all-changes = Minden változtatás visszavonása 83 | menu-document-statistics = Dokumentumstatisztika... 84 | document-type = Dokumentumtípus... 85 | encoding = Karakterkódolás... 86 | menu-git-management = Git-kezelő... 87 | print = Nyomtatás 88 | quit = Kilépés 89 | 90 | ## Edit 91 | edit = Szerkesztés 92 | undo = Visszavonás 93 | redo = Visszaállítás 94 | cut = Kivágás 95 | copy = Másolás 96 | paste = Beillesztés 97 | select-all = Összes kijelölése 98 | find = Keresés 99 | find-in-project = Keresés a projektben... 100 | spell-check = Helyesírás-ellenőrzés... 101 | 102 | ## View 103 | view = Nézet 104 | zoom-in = Nagyítás 105 | default-size = Alapértelmezett méret 106 | zoom-out = Kicsinyítés 107 | indentation = Behúzás 108 | 109 | ### Indentation 110 | automatic-indentation = Automatikus behúzás 111 | tab-width = Tabulátorszélesség: {$tab_width} 112 | convert-indentation-to-spaces = Behúzások szóközökké alakítása 113 | convert-indentation-to-tabs = Behúzások tabulátorokká alakítása 114 | 115 | word-wrap = Sortörés 116 | show-line-numbers = Sorszámok megjelenítése 117 | highlight-current-line = Aktuális sor kiemelése 118 | syntax-highlighting = Szintaxiskiemelés... 119 | menu-settings = Beállítások... 120 | menu-keyboard-shortcuts = Billentyűparancsok... 121 | menu-about = A COSMIC Szövegszerkesztő névjegye... 122 | -------------------------------------------------------------------------------- /i18n/it/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC Text Editor 2 | new-document = Nuovo documento 3 | open-project = Apri progetto 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} del {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Statistiche documento 13 | word-count = Conteggio parole 14 | character-count = Caratteri 15 | character-count-no-spaces = Caratteri (senza spazi) 16 | line-count = Linee 17 | 18 | ## Git management 19 | git-management = Gestione Git 20 | git-management-description = "Gestione git" è un tool per sviluppatori, usato per le operazioni di controllo versione. 21 | git-management-loading = "Gestione git" in caricamento... 22 | stage = Prepara modifiche 23 | staged-changes = Modifiche preparate 24 | unstaged-changes = Modifiche non confirmate 25 | staged-changes = Modifiche confermate 26 | 27 | ## Project search 28 | project-search = Ricerca nel progetto 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Modifiche non salvate 32 | prompt-unsaved-changes = Hai delle modifiche non salvate, vuoi salvarle? 33 | cancel = Annulla 34 | discard = Ignora modifiche 35 | save-all = Salva tutto 36 | 37 | ## Settings 38 | settings = Impostazioni 39 | 40 | ## Appearance 41 | appearance = Aspetto 42 | theme = Tema 43 | match-desktop = Sistema 44 | dark = Scuro 45 | light = Chiaro 46 | syntax-dark = Sintassi scura 47 | syntax-light = Sintassi chiara 48 | default-font = Font predefinito 49 | default-font-size = Dimensione font predefinita 50 | default-zoom-step = Quantità zoom 51 | 52 | ### Keyboard shortcuts 53 | keyboard-shortcuts = Scorciatoie da tastiera 54 | enable-vim-bindings = Abilita scorciatoie VIM 55 | 56 | # Find 57 | find-placeholder = Trova... 58 | find-previous = Trova precedente 59 | find-next = Trove successivo 60 | replace-placeholder = Sostituisci... 61 | replace = Sostituisci 62 | replace-all = Sostituisci tutto 63 | case-sensitive = Case sensitive 64 | use-regex = Usa REGEX 65 | wrap-around = Wrap Around 66 | 67 | # Menu 68 | 69 | ## File 70 | file = File 71 | new-file = Nuovo file 72 | new-window = Nuova finestra 73 | open-file = Apri file... 74 | open-recent-file = Apri recente 75 | close-file = Chiudi file 76 | menu-open-project = Apri progetto... 77 | open-recent-project = Apri progetto recente 78 | close-project = Chiudi progetto 79 | save = Salva 80 | save-as = Salva come... 81 | revert-all-changes = Annulla tutte le modifiche 82 | menu-document-statistics = Statistiche documento... 83 | document-type = Tipo documento... 84 | encoding = Codifica... 85 | menu-git-management = Gestione Git... 86 | print = Stampa 87 | quit = Esci 88 | 89 | ## Edit 90 | edit = Modifica 91 | undo = Annulla 92 | redo = Ripeti 93 | cut = Taglia 94 | copy = Copia 95 | paste = Incolla 96 | select-all = Seleziona tutto 97 | find = Trova 98 | find-in-project = Trova nel progetto... 99 | spell-check = Controllo ortografico... 100 | 101 | ## View 102 | view = Visualizza 103 | zoom-in = Aumenta zoom 104 | default-size = Dimensione predefinita 105 | zoom-out = Diminuisci zoom 106 | indentation = Indentazione 107 | 108 | ### Indentation 109 | automatic-indentation = Indentazione automatica 110 | tab-width = Larghezza tabulazione: {$tab_width} 111 | convert-indentation-to-spaces = Converti indentazione in spazi 112 | convert-indentation-to-tabs = Converti indentazione in tabulazioni 113 | 114 | word-wrap = "a capo" automatico 115 | show-line-numbers = Mostra numeri linea 116 | highlight-current-line = Evidenzia linea corrente 117 | syntax-highlighting = Evidenziazione sintassi... 118 | menu-settings = Impostazioni... 119 | menu-keyboard-shortcuts = Scorciatoie da tastiera... 120 | menu-about = Informazioni su "COSMIC - Editor di testo" 121 | -------------------------------------------------------------------------------- /i18n/ja/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMICテキストデータ 2 | new-document = 新しいドキュメント 3 | open-project = プロジェクトを開く... 4 | todo = 今後追加 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = {$date}の{$hash}というGitコミット 10 | 11 | ## Document statistics 12 | document-statistics = 統計 13 | word-count = 単語数 14 | character-count = 文字数 15 | character-count-no-spaces = 文字数(スペース除く) 16 | line-count = 行数 17 | 18 | ## Git management 19 | git-management = Gitの操作 20 | git-management-description = Gitの操作はバージョンコントロールための開発ツールです。 21 | git-management-loading = Gitの操作を読み込んでいます... 22 | stage = 変更をステージ 23 | staged-changes = コミットされる変更 24 | unstage = 変更をアンステージ 25 | unstaged-changes = コミットされない変更 26 | 27 | ## Project search 28 | project-search = プロジェクトの検索 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = 未保存の変更 32 | prompt-unsaved-changes = 未保存の変更があります。保存しますか? 33 | cancel = キャンセル 34 | discard = 保存しない 35 | save-all = すべてを保存 36 | 37 | ## Settings 38 | settings = 設定 39 | 40 | ### Appearance 41 | appearance = 外観 42 | theme = テーマ 43 | match-desktop = システム設定に従う 44 | dark = ダーク 45 | light = ライト 46 | syntax-dark = ダークテーマのシンタックス 47 | syntax-light = ライトテーマのシンタックス 48 | default-font = デフォルトのフォント 49 | default-font-size = デフォルトのフォントサイズ 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = キーボードショートカット 53 | enable-vim-bindings = Vimのキーバインドを有効にする 54 | 55 | # Find 56 | find-placeholder = 検索... 57 | find-previous = 前を検索 58 | find-next = 次を検索 59 | replace-placeholder = 置き換える... 60 | replace = 置き換える 61 | replace-all = すべてを置き換える 62 | case-sensitive = 大文字と小文字を区別 63 | use-regex = 正規表現を使用 64 | 65 | # Menu 66 | 67 | ## File 68 | file = ファイル 69 | new-file = 新しいファイル 70 | new-window = 新しいウィンドウ 71 | open-file = 開く... 72 | open-recent-file = 最近のファイルを開く 73 | close-file = ファイルを閉じる 74 | menu-open-project = プロジェクトを開く... 75 | open-recent-project = 最近のプロジェクトを開く 76 | close-project = プロジェクトを閉じる 77 | save = 保存 78 | save-as = 名前を付けて保存... 79 | revert-all-changes = 変更を全て元に戻す 80 | menu-document-statistics = 統計... 81 | document-type = ドキュメントのタイプ... 82 | encoding = 文字コード... 83 | menu-git-management = Gitの管理... 84 | print = 印刷 85 | quit = 終了 86 | 87 | ## Edit 88 | edit = 編集 89 | undo = 元に戻す 90 | redo = やり直す 91 | cut = 切り取り 92 | copy = コピー 93 | paste = 貼り付け 94 | select-all = すべて選択 95 | find = 検索 96 | find-in-project = プロジェクト内を検索... 97 | spell-check = スペルチェック... 98 | 99 | ## View 100 | view = 表示 101 | indentation = 字下げ 102 | 103 | ### Indentation 104 | automatic-indentation = 自動的に字下げ 105 | tab-width = タブ幅: {$tab_width} 106 | convert-indentation-to-spaces = 字下げをスペース化 107 | convert-indentation-to-tabs = 字下げをタブ化 108 | 109 | word-wrap = ワードラップ 110 | show-line-numbers = 行番号を表示 111 | highlight-current-line = 現在の行をハイライト 112 | syntax-highlighting = シンタックスハイライト... 113 | menu-settings = 設定... 114 | menu-keyboard-shortcuts = キーボードショートカット... 115 | menu-about = COSMICテキストデータについて... 116 | -------------------------------------------------------------------------------- /i18n/kn/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = ಕಾಸ್ಮಿಕ್ ಪಠ್ಯ ಸಂಪಾದಕ 2 | new-document = ಹೊಸ ದಾಖಲೆ 3 | open-project = ಪ್ರಾಜೆಕ್ಟ್ ತೆರೆಯಿರಿ 4 | todo = ಟೊಡೊ 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = {$date} ರಂದು {$hash} ಗೆ Git ಕಮಿಟ್ 10 | 11 | ## Document statistics 12 | document-statistics = ದಾಖಲೆ ಅಂಕಿಅಂಶಗಳು 13 | word-count = ಪದಗಳ ಸಂಖ್ಯೆ 14 | character-count = ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆ 15 | character-count-no-spaces = ಅಕ್ಷರಗಳ ಸಂಖ್ಯೆ (ಜಾಗಗಳಿಲ್ಲದೆ) 16 | line-count = ಸಾಲುಗಳ ಸಂಖ್ಯೆ 17 | 18 | ## Git management 19 | git-management = Git ನಿರ್ವಹಣೆ 20 | git-management-description = Git ನಿರ್ವಹಣೆ ಎಂದರೆ ಆವೃತ್ತಿ ನಿಯಂತ್ರಣ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಬಳಸುವ ಡೆವಲಪರ್ ಸಾಧನ. 21 | git-management-loading = Git ನಿರ್ವಹಣೆ ಲೋಡ್ ಆಗುತ್ತಿದೆ... 22 | stage = ಹಂತ 23 | staged-changes = ಹಂತಕ್ಕೆ ಸೇರಿಸಿದ ಬದಲಾವಣೆಗಳು 24 | unstage = ಹಂತದಿಂದ ತೆಗೆದುಹಾಕು 25 | unstaged-changes = ಹಂತಕ್ಕೆ ಸೇರಿಸದ ಬದಲಾವಣೆಗಳು 26 | 27 | ## Project search 28 | project-search = ಪ್ರಾಜೆಕ್ಟ್ಯಲ್ಲಿ ಹುಡುಕಿ 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = ಉಳಿಸಲಾಗದ ಬದಲಾವಣೆಗಳು 32 | prompt-unsaved-changes = ನೀವು ಉಳಿಸಲಾಗದ ಬದಲಾವಣೆಗಳನ್ನು ಹೊಂದಿದ್ದಾರೆ. ಉಳಿಸಬೇಕಾ? 33 | cancel = ರದ್ದುಗೊಳಿಸಿ 34 | discard = ಬದಲಾವಣೆಗಳನ್ನು ಕೈಬಿಡಿ 35 | save-all = ಎಲ್ಲವನ್ನೂ ಉಳಿಸಿ 36 | 37 | ## Settings 38 | settings = ಸೆಟ್ಟಿಂಗ್‌ಗಳು 39 | 40 | ### Appearance 41 | appearance = ರೂಪ 42 | theme = ಥೀಮ್ 43 | match-desktop = ಡೆಸ್ಕ್‌ಟಾಪ್‌ಗೆ ಹೊಂದಿಸಿ 44 | dark = ಡಾರ್ಕ್ 45 | light = ಲೈಟ್ 46 | syntax-dark = ಸಿಂಟ್ಯಾಕ್ಸ್ ಡಾರ್ಕ್ 47 | syntax-light = ಸಿಂಟ್ಯಾಕ್ಸ್ ಲೈಟ್ 48 | default-font = ಡೀಫಾಲ್ಟ್ ಫಾಂಟ್ 49 | default-font-size = ಡೀಫಾಲ್ಟ್ ಫಾಂಟ್ ಗಾತ್ರ 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು 53 | enable-vim-bindings = Vim ಬಿಂಡಿಂಗ್‌ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ 54 | 55 | # Find 56 | find-placeholder = ಹುಡುಕಿ... 57 | find-previous = ಹಿಂದಿನದು ಹುಡುಕಿ 58 | find-next = ಮುಂದಿನದು ಹುಡುಕಿ 59 | replace-placeholder = ಬದಲಾಯಿಸಿ... 60 | replace = ಬದಲಾಯಿಸಿ 61 | replace-all = ಎಲ್ಲವನ್ನೂ ಬದಲಾಯಿಸಿ 62 | case-sensitive = ಕೇಸ್-ಸೆನ್ಸಿಟಿವ್ 63 | use-regex = Regex ಬಳಸಿರಿ 64 | 65 | # Menu 66 | 67 | ## File 68 | file = ಫೈಲ್ 69 | new-file = ಹೊಸ ಫೈಲ್ 70 | new-window = ಹೊಸ ವಿಂಡೋ 71 | open-file = ಫೈಲ್ ತೆರೆಯಿರಿ... 72 | open-recent-file = ಇತ್ತೀಚಿನ ಫೈಲ್ ತೆರೆಯಿರಿ 73 | close-file = ಫೈಲ್ ಮುಚ್ಚಿ 74 | menu-open-project = ಪ್ರಾಜೆಕ್ಟ್ ತೆರೆಯಿರಿ... 75 | open-recent-project = ಇತ್ತೀಚಿನ ಪ್ರಾಜೆಕ್ಟ್ ತೆರೆಯಿರಿ 76 | close-project = ಪ್ರಾಜೆಕ್ಟ್ ಮುಚ್ಚಿ 77 | save = ಉಳಿಸಿ 78 | save-as = ಉಳಿಸಿ... 79 | revert-all-changes = ಎಲ್ಲ ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿ 80 | menu-document-statistics = ದಾಖಲೆ ಅಂಕಿಅಂಶಗಳು... 81 | document-type = ದಾಖಲೆ ಪ್ರಕಾರ... 82 | encoding = ಎನ್‌ಕೋಡಿಂಗ್... 83 | menu-git-management = Git ನಿರ್ವಹಣೆ... 84 | print = ಮುದ್ರಿಸಿ 85 | quit = ನಿರ್ಗಮಿಸಿ 86 | 87 | ## Edit 88 | edit = ಸಂಪಾದಿಸಿ 89 | undo = ಹಿಂದಿರುಗಿಸಿ 90 | redo = ಮರು ಕಾರ್ಯಗತಗೊಳಿಸಿ 91 | cut = ಕತ್ತರಿಸಿ 92 | copy = ನಕಲಿಸಿ 93 | paste = ಅಂಟಿಸಿ 94 | select-all = ಎಲ್ಲವನ್ನೂ ಆಯ್ಕೆಮಾಡಿ 95 | find = ಹುಡುಕಿ 96 | find-in-project = ಪ್ರಾಜೆಕ್ಟ್ ಯಲ್ಲಿ ಹುಡುಕಿ... 97 | spell-check = ಕಾಗುಣಿತ ಪರಿಶೀಲನೆ... 98 | 99 | ## View 100 | view = ವೀಕ್ಷಣೆ 101 | indentation = ಇಂಡೆಂಟೇಶನ್ 102 | 103 | ### Indentation 104 | automatic-indentation = ಸ್ವಯಂ ಇಂಡೆಂಟೇಶನ್ 105 | tab-width = ಟ್ಯಾಬ್ ಅಗಲ: {$tab_width} 106 | convert-indentation-to-spaces = ಇಂಡೆಂಟೇಶನ್ ಅನ್ನು ಜಾಗಗಳಿಗೆ ಪರಿವರ್ತಿಸಿ 107 | convert-indentation-to-tabs = ಇಂಡೆಂಟೇಶನ್ ಅನ್ನು ಟ್ಯಾಬ್‌ಗಳಿಗೆ ಪರಿವರ್ತಿಸಿ 108 | 109 | word-wrap = ಪದ ತಟ್ಟೆ 110 | show-line-numbers = ಸಾಲು ಸಂಖ್ಯೆಗಳನ್ನು ತೋರಿಸಿ 111 | highlight-current-line = ಪ್ರಸ್ತುತ ಸಾಲನ್ನು ಹೈಲೈಟ್ ಮಾಡಿ 112 | syntax-highlighting = ಸಿಂಟ್ಯಾಕ್ಸ್ ಹೈಲೈಟಿಂಗ್... 113 | menu-settings = ಸೆಟ್ಟಿಂಗ್‌ಗಳು... 114 | menu-keyboard-shortcuts = ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು... 115 | menu-about = ಕಾಸ್ಮಿಕ್ ಪಠ್ಯ ಸಂಪಾದಕ ಬಗ್ಗೆ... 116 | -------------------------------------------------------------------------------- /i18n/ko-KR/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = 새 문서 2 | open-project = 프로젝트 열기 3 | 4 | # Context Pages 5 | 6 | ## Document statistics 7 | document-statistics = 문서 통계 8 | word-count = 단어 수 9 | character-count = 문자 수 10 | character-count-no-spaces = 문자 수 (공백없음) 11 | line-count = 줄 수 12 | 13 | ## Settings 14 | settings = 설정 15 | 16 | ## Appearance 17 | appearance = 외관 18 | theme = 테마 19 | default-font = 기본 글꼴 20 | default-font-size = 기본 글꼴 크기 21 | 22 | ### Keyboard shortcuts 23 | keyboard-shortcuts = 키보드 단축키 24 | enable-vim-bindings = Vim 바인딩 사용 25 | 26 | # Menu 27 | 28 | ## File 29 | file = 파일 30 | new-file = 새 파일 31 | new-window = 새창 32 | open-file = 파일 열기 33 | open-recent = 최근 파일을 열기 34 | todo = 할 것 35 | save = 저장 36 | save-as = 다른 이름으로 저장... 37 | revert-all-changes = 모든 변경 사항 되돌리기 38 | menu-document-statistics = 문서 통계... 39 | document-type = 문서 유형... 40 | encoding = 부호화... 41 | print = 인쇄 42 | quit = 종료 43 | 44 | ## Edit 45 | edit = 수정 46 | undo = 실행취소 47 | redo = 재실행 48 | cut = 잘라내기 49 | copy = 복사 50 | paste = 붙여넣기 51 | find = 찾기 52 | replace = 바꾸기 53 | spell-check = 맞춤법 검사... 54 | 55 | ## View 56 | view = 보기 57 | indentation = 들여 쓰기 58 | 59 | ### Indentation 60 | automatic-indentation = 자동 들여쓰기 61 | tab-width = 탭 너비: {$tab_width} 62 | convert-indentation-to-spaces = 들여쓰기를 공백으로 변환 63 | convert-indentation-to-tabs = 들여쓰기를 탭으로 변환 64 | 65 | word-wrap = 줄 바꿈 66 | show-line-numbers = 줄번호 표시 67 | highlight-current-line = 현재 줄 강조 표시 68 | syntax-highlighting = 구문 강조... 69 | menu-settings = 설정... 70 | menu-keyboard-shortcuts = 단축키... 71 | menu-about = COSMIC Text Editor 대해 72 | -------------------------------------------------------------------------------- /i18n/lt/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = Naujas dokumentas 2 | open-project = Atviras projektas 3 | 4 | # Context Pages 5 | 6 | ## Document statistics 7 | document-statistics = Apie dokumentą 8 | word-count = Žodžių skaičius 9 | character-count = Simbolių skaičius 10 | character-count-no-spaces = Simbolių skaičius (be tarpų) 11 | line-count = Eilučių skaičius 12 | 13 | ## Settings 14 | settings = Nustatymai 15 | 16 | ## Appearance 17 | appearance = Išvaizda 18 | theme = Stilius 19 | default-font = Numatytasis šriftas 20 | default-font-size = Numatytojo šrifto dydis 21 | 22 | ### Keyboard shortcuts 23 | keyboard-shortcuts = Spartieji klavišai 24 | enable-vim-bindings = Naudoti Vim sąsajas 25 | 26 | # Menu 27 | 28 | ## File 29 | file = Failas 30 | new-file = Kurti naują failą 31 | new-window = Atidaryti naują langą 32 | open-file = Atidaryti failą... 33 | open-recent = Atidaryti neseniai naudotą 34 | todo = TODO 35 | save = Išsaugoti 36 | save-as = Išsaugoti kaip... 37 | revert-all-changes = Atstatyti visus pakeitimus 38 | menu-document-statistics = Apie dokumentą... 39 | document-type = Dokumento tipas... 40 | encoding = Užkoduoti... 41 | print = Spausdinti 42 | quit = Išeiti 43 | 44 | ## Edit 45 | edit = Redagavimas 46 | undo = Atšaukti 47 | redo = Atstatyti 48 | cut = Iškirpti 49 | copy = Kopijuoti 50 | paste = Įklijuoti 51 | find = Surasti 52 | replace = Pakeisti 53 | spell-check = Rašybos tikrinimas... 54 | 55 | ## View 56 | view = Rodymas 57 | indentation = Įtrauka 58 | 59 | ### Indentation 60 | automatic-indentation = Automatinė įtrauka 61 | tab-width = Skirtuko plotis: {$tab_width} 62 | convert-indentation-to-spaces = Pakeisti įtrauką tarpais 63 | convert-indentation-to-tabs = Pakeisti įtrauką skirtukais 64 | 65 | word-wrap = Žodžių perkėlimas 66 | show-line-numbers = Rodyti eilučių numerius 67 | highlight-current-line = Paryškinti dabartinę eilutę 68 | syntax-highlighting = Sintaksės tikrinimas... 69 | menu-settings = Nustatymai... 70 | menu-keyboard-shortcuts = Spartieji klavišai... 71 | menu-about = Apie COSMIC Text Editor 72 | -------------------------------------------------------------------------------- /i18n/nl/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC-tekstbewerker 2 | new-document = Nieuw document 3 | open-project = Open project 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} op {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Document statistieken 13 | word-count = Aantal woorden 14 | character-count = Tekens 15 | character-count-no-spaces = Tekens (zonder spaties) 16 | line-count = Regels 17 | 18 | ## Git management 19 | git-management = Git-beheer 20 | git-management-description = Git-beheer is een hulpmiddel voor ontwikkelaars dat wordt gebruikt voor versiebeheer. 21 | git-management-loading = Git-beheer wordt geladen... 22 | stage = Voorbereiden 23 | staged-changes = Voorbereide wijzigingen 24 | unstage = Niet voorbereiden 25 | unstaged-changes = Niet-voorbereide wijzigingen 26 | 27 | ## Project search 28 | project-search = Project zoeken 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Wijzigingen niet opgeslagen 32 | prompt-unsaved-changes = Er zijn wijzigingen die niet zijn opgeslagen. Opslaan? 33 | cancel = Annuleren 34 | discard = Wijzigingen verwerpen 35 | save-all = Alles opslaan 36 | 37 | ## Settings 38 | settings = Instellingen 39 | 40 | ## Appearance 41 | appearance = Weergave 42 | theme = Thema 43 | match-desktop = Systeemstandaard 44 | dark = Donker 45 | light = Licht 46 | syntax-dark = Donkere syntaxiskleuring 47 | syntax-light = Lichte syntaxiskleuring 48 | default-font = Standaard lettertype 49 | default-font-size = Standaard lettertypegrootte 50 | default-zoom-step = Zoom-stapgrootte 51 | 52 | 53 | ### Keyboard shortcuts 54 | keyboard-shortcuts = Toetsenbord snelkoppelingen 55 | enable-vim-bindings = Vim-snelkoppelingen inschakelen 56 | 57 | # Find 58 | find-placeholder = Zoeken... 59 | find-previous = Vorige zoeken 60 | find-next = Volgende zoeken 61 | replace-placeholder = Vervangen... 62 | replace = Vervangen 63 | replace-all = Alles vervangen 64 | case-sensitive = Hoofdlettergevoelig 65 | use-regex = Reguliere expressies 66 | wrap-around = Achterwaarts vervangen 67 | 68 | # Menu 69 | 70 | ## File 71 | file = Bestand 72 | new-file = Nieuw bestand 73 | new-window = Nieuw venster 74 | open-file = Bestand openen... 75 | open-recent = Recent bestand openen 76 | close-file = Bestand sluiten 77 | menu-open-project = Project openen... 78 | open-recent-project = Recent project openen 79 | close-project = Project sluiten 80 | save = Opslaan 81 | save-as = Opslaan als... 82 | revert-all-changes = Alle aanpassingen ongedaan maken 83 | menu-document-statistics = Document statistieken... 84 | document-type = Documenttype... 85 | encoding = Tekenset... 86 | menu-git-management = Git-beheer... 87 | print = Afdrukken 88 | quit = Afsluiten 89 | 90 | ## Edit 91 | edit = Bewerken 92 | undo = Ongedaan maken 93 | redo = Opnieuw doen 94 | cut = Knippen 95 | copy = Kopiëren 96 | paste = Plakken 97 | select-all = Alles selecteren 98 | find = Zoeken 99 | find-in-project = Project doorzoeken... 100 | spell-check = Spellingscontrole... 101 | 102 | ## View 103 | view = Beeld 104 | zoom-in = Inzoomen 105 | default-size = Normaal zoomniveau 106 | zoom-out = Uitzoomen 107 | indentation = Inspringing 108 | 109 | ### Indentation 110 | automatic-indentation = Automatische inspringing 111 | tab-width = Tab breedte: {$tab_width} 112 | convert-indentation-to-spaces = Inspringing omzetten in spaties 113 | convert-indentation-to-tabs = Inspringing omzetten in tabs 114 | 115 | word-wrap = Woordomloop 116 | show-line-numbers = Toon regelnummers 117 | highlight-current-line = Markeer huidige regel 118 | syntax-highlighting = Syntaxiskleuring... 119 | menu-settings = Instellingen... 120 | menu-keyboard-shortcuts = Toetsenbord snelkoppelingen... 121 | menu-about = Over COSMIC-tekstbewerker... 122 | -------------------------------------------------------------------------------- /i18n/pl/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Edytor Tekstu COSMIC 2 | new-document = Nowy dokument 3 | open-project = Otwórz projekt 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} z {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Statystyki dokumentu 13 | word-count = Liczba słów 14 | character-count = Znaki 15 | character-count-no-spaces = Znaki (bez spacji) 16 | line-count = Linie 17 | 18 | ## Git management 19 | git-management = Zarządzanie git 20 | git-management-description = Zarządzanie git jest narzędziem programistycznym używanym do kontroli werji oprogramowania. 21 | git-management-loading = Ładuje zarządzanie git 22 | stage = Przemieść 23 | staged-changes = Przemieszczone zmiany 24 | unstage = Nie przemieszczaj 25 | unstaged-changes = Nieprzemieszczone zmiany 26 | 27 | ## Project search 28 | project-search = Wyszukiwanie w Projekcie 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Niezapisane zmiany 32 | prompt-unsaved-changes = Masz niezapisane zmiany. Zapisać? 33 | cancel = Anuluj 34 | discard = Odrzuć zmiany 35 | save-all = Zapisz wszystko 36 | 37 | ## Settings 38 | settings = Ustawienia 39 | 40 | ## Appearance 41 | appearance = Wygląd 42 | theme = Motyw 43 | match-desktop = Dopasuj do Pulpitu 44 | dark = Ciemny 45 | light = Jasny 46 | syntax-dark = Ciemna składnia 47 | syntax-light = Jasna składnia 48 | default-font = Domyślna czcionka 49 | default-font-size = Domyślny rozmiar czcionki 50 | default-zoom-step = Rozmiar kroków powiększania 51 | 52 | ### Keyboard shortcuts 53 | keyboard-shortcuts = Skróty klawiszowe 54 | enable-vim-bindings = Włącz tryb Vim 55 | 56 | # Find 57 | find-placeholder = Szukaj… 58 | find-previous = Szukaj poprzedni 59 | find-next = Szukaj następny 60 | replace-placeholder = Zastąp… 61 | replace = Zastąp 62 | replace-all = Zastąp wszystkie 63 | case-sensitive = Uwzględnienie wielkości liter 64 | use-regex = Użyj wyrażenia regularnego 65 | 66 | # Menu 67 | 68 | ## File 69 | file = Plik 70 | new-file = Nowy plik 71 | new-window = Nowe okno 72 | open-file = Otwórz plik… 73 | open-recent-file = Otwórz ubiegły plik 74 | close-file = Zamknij plik 75 | menu-open-project = Otwórz projekt… 76 | open-recent-project = Otwórz ubiegły projekt 77 | close-project = Zamknij projekt 78 | save = Zapisz 79 | save-as = Zapisz jako… 80 | revert-all-changes = Usuń zmiany 81 | menu-document-statistics = Statystyki dokumentu… 82 | document-type = Typ dokumentu… 83 | encoding = Kodowanie… 84 | menu-git-management = Zarządzanie Git… 85 | print = Drukuj 86 | quit = Zamknij 87 | 88 | ## Edit 89 | edit = Edytuj 90 | undo = Cofnij 91 | redo = Przywróć 92 | cut = Wytnij 93 | copy = Kopiuj 94 | paste = Wklej 95 | select-all = Zaznacz wszystko 96 | find = Szukaj 97 | find-in-project = Szukaj w projekcie… 98 | spell-check = Sprawdź ortografię… 99 | 100 | ## View 101 | view = Widok 102 | zoom-in = Pomniejsz 103 | default-size = Domyślny rozmiar 104 | zoom-out = Powiększ 105 | indentation = Wcięcia 106 | 107 | ### Indentation 108 | automatic-indentation = Automatyczne wcięcia 109 | tab-width = Szerokość tabulacji: {$tab_width} 110 | convert-indentation-to-spaces = Konwertuj wcięcia na spacje 111 | convert-indentation-to-tabs = Konwertuj wcięcia na tabulację 112 | 113 | word-wrap = Zawijanie słów 114 | show-line-numbers = Pokaż numery linii 115 | highlight-current-line = Podświetl aktualną linię 116 | syntax-highlighting = Podświetlanie składni… 117 | menu-settings = Ustawienia… 118 | menu-keyboard-shortcuts = Skróty klawiszowe… 119 | menu-about = O Edytorze Tekstu COSMIC 120 | -------------------------------------------------------------------------------- /i18n/pt-BR/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Editor de Texto 2 | new-document = Novo documento 3 | open-project = Abrir projeto 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} de {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Estatísticas do documento 13 | word-count = Contagem de palavras 14 | character-count = Caracteres 15 | character-count-no-spaces = Caracteres (sem espaços) 16 | line-count = Linhas 17 | 18 | ## Git management 19 | git-management = Gestor do Git 20 | git-management-description = O gestor do Git é uma ferramenta de desenvolvedor usada para operações de controle de versão. 21 | git-management-loading = Carregando o gestor do Git... 22 | stage = Adicionar em stage 23 | staged-changes = Alterações em stage 24 | unstage = Remover do stage 25 | unstaged-changes = Alterações fora do stage 26 | 27 | ## Project search 28 | project-search = Localizar no projeto 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Alterações não salvas 32 | prompt-unsaved-changes = Você possui alterações não salvas. Deseja salvar? 33 | cancel = Cancelar 34 | discard = Descartar alterações 35 | save-all = Salvar tudo 36 | 37 | ## Settings 38 | settings = Configurações 39 | 40 | ## Appearance 41 | appearance = Aparência 42 | theme = Tema 43 | match-desktop = Seguir tema do sistema 44 | dark = Escuro 45 | light = Claro 46 | syntax-dark = Esquema de cores escuro 47 | syntax-light = Esquema de cores claro 48 | default-font = Fonte padrão 49 | default-font-size = Tamanho padrão da fonte 50 | default-zoom-step = Etapas de zoom 51 | 52 | 53 | ### Keyboard shortcuts 54 | keyboard-shortcuts = Atalhos do teclado 55 | enable-vim-bindings = Habilitar atalhos do Vim 56 | 57 | # Find 58 | find-placeholder = Localizar... 59 | find-previous = Localizar o anterior 60 | find-next = Localizar o próximo 61 | replace-placeholder = Substituir... 62 | replace = Substituir 63 | replace-all = Substituir tudo 64 | case-sensitive = Diferenciar maiúsculas de minúsculas 65 | use-regex = Usar expressão regular 66 | wrap-around = Envolver ao redor 67 | 68 | # Menu 69 | 70 | ## File 71 | file = Arquivo 72 | new-file = Novo arquivo 73 | new-window = Nova janela 74 | open-file = Abrir arquivo... 75 | open-recent-file = Abrir arquivo recente 76 | close-file = Fechar arquivo 77 | menu-open-project = Abrir projeto... 78 | open-recent-project = Abrir projeto recente 79 | close-project = Fechar projeto 80 | save = Salvar 81 | save-as = Salvar como... 82 | revert-all-changes = Reverter todas alterações 83 | menu-document-statistics = Estatísticas do documento... 84 | document-type = Tipo de documento... 85 | encoding = Codificação... 86 | menu-git-management = Gestor do Git... 87 | print = Imprimir 88 | quit = Sair 89 | 90 | ## Edit 91 | edit = Editar 92 | undo = Desfazer 93 | redo = Refazer 94 | cut = Cortar 95 | copy = Copiar 96 | paste = Colar 97 | select-all = Selecionar tudo 98 | find = Localizar 99 | find-in-project = Localizar no projeto... 100 | spell-check = Verificação ortográfica... 101 | 102 | ## View 103 | view = Exibir 104 | zoom-in = Aumentar o zoom 105 | default-size = Tamanho padrão 106 | zoom-out = Diminuir o zoom 107 | indentation = Recuo de texto 108 | 109 | ### Indentation 110 | automatic-indentation = Recuo automático 111 | tab-width = Largura da tabulação: {$tab_width} 112 | convert-indentation-to-spaces = Converter recuo para espaços 113 | convert-indentation-to-tabs = Converter recuo para tabulações 114 | 115 | word-wrap = Quebra de linha 116 | show-line-numbers = Mostrar números das linhas 117 | highlight-current-line = Destacar linha atual 118 | syntax-highlighting = Destaque de sintaxe... 119 | menu-settings = Configurações... 120 | menu-keyboard-shortcuts = Atalhos do teclado... 121 | menu-about = Sobre o Editor de Texto 122 | -------------------------------------------------------------------------------- /i18n/pt/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC Text Editor 2 | new-document = Novo documento 3 | open-project = Abrir projeto 4 | todo = Afazer 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} em {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Estatísticas do documento 13 | word-count = Contagem de palavras 14 | character-count = Caracteres 15 | character-count-no-spaces = Caracteres (sem espaços) 16 | line-count = Linhas 17 | 18 | ## Git management 19 | git-management = Gestão do Git 20 | git-management-description = A gestão do Git é uma ferramenta para programadores usada para operações de controlo de versões. 21 | git-management-loading = A carregar a gestão Git... 22 | stage = Marcado 23 | staged-changes = Alterações marcadas 24 | unstage = Não Marcado 25 | unstaged-changes = Alterações não marcadas 26 | 27 | ## Project search 28 | project-search = Pesquisa de projectos 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Alterações não guardadas 32 | prompt-unsaved-changes = As alterações não foram guardadas. Guardar? 33 | cancel = Cancelar 34 | discard = Descartar as alterações 35 | save-all = Salvar todas 36 | 37 | ## Settings 38 | settings = Definições 39 | 40 | ### Appearance 41 | appearance = Aparência 42 | theme = Tema 43 | match-desktop = Acompanhar o ambiente de trabalho 44 | dark = Escuro 45 | light = Claro 46 | syntax-dark = Sintaxe escura 47 | syntax-light = Sintaxe clara 48 | default-font = Tipo de letra predefinido 49 | default-font-size = Tamanho predefinido do tipo de letra 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Teclas de atalho 53 | enable-vim-bindings = Ativar atalhos do Vim 54 | 55 | # Find 56 | find-placeholder = Localizar... 57 | find-previous = Localizar anterior 58 | find-next = Localizar seguinte 59 | replace-placeholder = Substituir... 60 | replace = Substituir 61 | replace-all = Substituir tudo 62 | case-sensitive = Maiúsculas/Minúsculas 63 | use-regex = Usar expressão regular 64 | 65 | # Menu 66 | 67 | ## File 68 | file = Ficheiro 69 | new-file = Novo ficheiro 70 | new-window = Nova janela 71 | open-file = Abrir ficheiro... 72 | open-recent-file = Abrir ficheiro recente 73 | close-file = Fechar ficheiro 74 | menu-open-project = Abrir projeto... 75 | open-recent-project = Abrir projeto recente 76 | close-project = Fechar projeto 77 | save = Guardar 78 | save-as = Guardar como... 79 | revert-all-changes = Reverter todas as alterações 80 | menu-document-statistics = Estatísticas do documento... 81 | document-type = Tipo de documento... 82 | encoding = Codificação... 83 | menu-git-management = Gestão do Git... 84 | print = Imprimir 85 | quit = Sair 86 | 87 | ## Edit 88 | edit = Editar 89 | undo = Desfazer 90 | redo = Refazer 91 | cut = Cortar 92 | copy = Copiar 93 | paste = Colar 94 | select-all = Selecionar tudo 95 | find = Localizar 96 | find-in-project = Localizar no projeto... 97 | spell-check = Verificação ortográfica... 98 | 99 | ## View 100 | view = Ver 101 | indentation = Indentação 102 | 103 | ### Indentation 104 | automatic-indentation = Indentação automática 105 | tab-width = Largura do tab: {$tab_width} 106 | convert-indentation-to-spaces = Converter indentação para espaços 107 | convert-indentation-to-tabs = Converter indentação para tabs 108 | 109 | word-wrap = Quebra de linha 110 | show-line-numbers = Mostrar números das linhas 111 | highlight-current-line = Destacar linha atual 112 | syntax-highlighting = Destaque de sintaxe... 113 | menu-settings = Definições... 114 | menu-keyboard-shortcuts = Teclas de atalho... 115 | menu-about = Acerca do Editor de Texto COSMIC 116 | -------------------------------------------------------------------------------- /i18n/ro/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Editor de text COSMIC 2 | new-document = Document nou 3 | open-project = Deschide proiect 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Commit Git {$hash} din {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Statistici document 13 | word-count = Număr de cuvinte 14 | character-count = Caractere 15 | character-count-no-spaces = Caractere (fără spații) 16 | line-count = Linii 17 | 18 | ## Git management 19 | git-management = Management Git 20 | git-management-description = Managementul Git este un instrument pentru dezvoltatori folosit pentru operațiuni de control al versiunilor. 21 | git-management-loading = Se încarcă managementul Git... 22 | stage = Marchează 23 | staged-changes = Modificări marcate 24 | unstage = Demarchează 25 | unstaged-changes = Modificări nemarcate 26 | 27 | ## Project search 28 | project-search = Căutare în proiect 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Modificări nesalvate 32 | prompt-unsaved-changes = Ai modificări nesalvate. Salvezi? 33 | cancel = Anulează 34 | discard = Renunță la modificări 35 | save-all = Salvează tot 36 | 37 | ## Settings 38 | settings = Setări 39 | 40 | ### Appearance 41 | appearance = Aspect 42 | theme = Temă 43 | match-desktop = Potrivește cu desktopul 44 | dark = Întunecat 45 | light = Deschis 46 | syntax-dark = Sintaxă întunecată 47 | syntax-light = Sintaxă deschisă 48 | default-font = Font implicit 49 | default-font-size = Mărime font implicită 50 | default-zoom-step = Pași de zoom 51 | 52 | 53 | ### Keyboard shortcuts 54 | keyboard-shortcuts = Scurtături tastatură 55 | enable-vim-bindings = Activează comenzile Vim 56 | 57 | # Find 58 | find-placeholder = Caută... 59 | find-previous = Caută anteriorul 60 | find-next = Caută următorul 61 | replace-placeholder = Înlocuiește... 62 | replace = Înlocuiește 63 | replace-all = Înlocuiește tot 64 | case-sensitive = Sensibil la majuscule 65 | use-regex = Folosește expresii regulate 66 | wrap-around = Căutare circulară 67 | 68 | # Menu 69 | 70 | ## File 71 | file = Fișier 72 | new-file = Fișier nou 73 | new-window = Fereastră nouă 74 | open-file = Deschide fișier... 75 | open-recent-file = Deschide fișier recent 76 | close-file = Închide fișier 77 | menu-open-project = Deschide proiect... 78 | open-recent-project = Deschide proiect recent 79 | close-project = Închide proiect 80 | save = Salvează 81 | save-as = Salvează ca... 82 | revert-all-changes = Revocă toate modificările 83 | menu-document-statistics = Statistici document... 84 | document-type = Tip document... 85 | encoding = Codare... 86 | menu-git-management = Management Git... 87 | print = Tipărește 88 | quit = Închide 89 | 90 | ## Edit 91 | edit = Editare 92 | undo = Anulează 93 | redo = Refă 94 | cut = Taie 95 | copy = Copiază 96 | paste = Lipește 97 | select-all = Selectează tot 98 | find = Caută 99 | find-in-project = Caută în proiect... 100 | spell-check = Verificare ortografică... 101 | 102 | ## View 103 | view = Vizualizare 104 | zoom-in = Mărește 105 | default-size = Mărime implicită 106 | zoom-out = Micșorează 107 | indentation = Indentare 108 | 109 | ### Indentation 110 | automatic-indentation = Indentare automată 111 | tab-width = Lățime tab: {$tab_width} 112 | convert-indentation-to-spaces = Conversie indentare în spații 113 | convert-indentation-to-tabs = Conversie indentare în taburi 114 | 115 | word-wrap = Încadrare cuvinte 116 | show-line-numbers = Afișează numerele liniilor 117 | highlight-current-line = Evidențiază linia curentă 118 | syntax-highlighting = Evidențiere sintaxă... 119 | menu-settings = Setări... 120 | menu-keyboard-shortcuts = Scurtături tastatură... 121 | menu-about = Despre Editorul de text COSMIC... 122 | -------------------------------------------------------------------------------- /i18n/ru/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Текстовый редактор COSMIC 2 | new-document = Новый документ 3 | open-project = Открыть проект 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git-коммит {$hash} от {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Статистика документа 13 | word-count = Число слов 14 | character-count = Символов 15 | character-count-no-spaces = Символов (без пробелов) 16 | line-count = Строк 17 | 18 | ## Git management 19 | git-management = Управление Git 20 | git-management-description = Управление Git - это инструмент разработчика, используемый для контроля версий. 21 | git-management-loading = Загружается Управление Git... 22 | stage = Проиндексировать 23 | unstaged-changes = Не проиндексированные изменения 24 | unstage = Отменить индексацию 25 | staged-changes = Проиндексированные изменения 26 | 27 | ## Project search 28 | project-search = Поиск проекта 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Несохраненные изменения 32 | prompt-unsaved-changes = У вас есть несохраненные изменения. Сохранить их? 33 | cancel = Отмена 34 | discard = Отменить изменения 35 | save-all = Сохранить все 36 | 37 | ## Settings 38 | settings = Параметры 39 | 40 | ## Appearance 41 | appearance = Внешний вид 42 | theme = Тема 43 | match-desktop = Как в системе 44 | dark = Темная 45 | light = Светлая 46 | syntax-dark = Синтаксис темный 47 | syntax-light = Синтаксис светлый 48 | default-font = Шрифт по умолчанию 49 | default-font-size = Размер шрифта по умолчанию 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Сочетания клавиш 53 | enable-vim-bindings = Привязки клавиш Vim 54 | 55 | # Find 56 | find-placeholder = Найти... 57 | find-previous = Найти ранее 58 | find-next = Найти далее 59 | replace-placeholder = Заменить... 60 | replace = Заменить 61 | replace-all = Заменить все 62 | case-sensitive = Учитывать регистр 63 | use-regex = Регулярные выражения 64 | 65 | # Menu 66 | 67 | ## File 68 | file = Файл 69 | new-file = Новый файл 70 | new-window = Новое окно 71 | open-file = Открыть файл... 72 | open-recent-file = Открыть последний файл 73 | close-file = Закрыть файл 74 | menu-open-project = Открыть проект... 75 | open-recent-project = Открыть последний проект 76 | close-project = Закрыть проект 77 | save = Сохранить 78 | save-as = Сохранить как... 79 | revert-all-changes = Отменить все изменения 80 | menu-document-statistics = Статистика документа... 81 | document-type = Тип документа... 82 | encoding = Кодировка... 83 | menu-git-management = Управление Git... 84 | print = Печать 85 | quit = Завершить 86 | 87 | ## Edit 88 | edit = Правка 89 | undo = Отменить 90 | redo = Повторить 91 | cut = Вырезать 92 | copy = Копировать 93 | paste = Вставить 94 | select-all = Выбрать все 95 | find = Найти 96 | find-in-project = Найти в проекте... 97 | spell-check = Проверить правописание... 98 | 99 | ## View 100 | view = Вид 101 | indentation = Отступ 102 | 103 | ### Indentation 104 | automatic-indentation = Автоматические отступы 105 | tab-width = Длинна символа Tab: {$tab_width} 106 | convert-indentation-to-spaces = Сконвертировать отступы в пробелы 107 | convert-indentation-to-tabs = Сконвертировать отступы в символы Tab 108 | 109 | word-wrap = Перенос слов 110 | show-line-numbers = Показ номеров строк 111 | highlight-current-line = Подсветка текущей строки 112 | syntax-highlighting = Подсветка синтаксиса... 113 | menu-settings = Параметры... 114 | menu-keyboard-shortcuts = Сочетания клавиш... 115 | menu-about = О Текстовом редакторе COSMIC 116 | -------------------------------------------------------------------------------- /i18n/sk/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Textový Editor COSMIC 2 | new-document = Nový dokument 3 | open-project = Otvoriť projekt 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} z {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Štatistiky dokumentu 13 | word-count = Počet slov 14 | character-count = Znakov 15 | character-count-no-spaces = Znakov (bez medzier) 16 | line-count = Riadkov 17 | 18 | ## Git management 19 | git-management = Správa Git 20 | git-management-description = Správa Git je vývojársky nástroj používaný na operácie verzovania. 21 | git-management-loading = Načítať Git správu... 22 | stage = Pripraviť 23 | staged-changes = Pripravené zmeny 24 | unstage = Zrušiť prípravu 25 | unstaged-changes = Nepripravené zmeny 26 | 27 | ## Project search 28 | project-search = Nájsť projekt 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Neuložené zmeny 32 | prompt-unsaved-changes = Máte neuložené zmeny. Uložiť? 33 | cancel = Zrušiť 34 | discard = Zahodiť zmeny 35 | save-all = Uložiť všetko 36 | 37 | ## Settings 38 | settings = Nastavenia 39 | 40 | ### Appearance 41 | appearance = Vzhľad 42 | theme = Téma 43 | match-desktop = Podľa systému 44 | dark = Tmavá 45 | light = Svetlá 46 | syntax-dark = Syntax tmavá 47 | syntax-light = Syntax svetlá 48 | default-font = Východzie písmo 49 | default-font-size = Východzia veľkosť písma 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Klávesové skratky 53 | enable-vim-bindings = Zapnúť Vim ovládanie 54 | 55 | # Find 56 | find-placeholder = Nájsť... 57 | find-previous = Nájsť predchádzajúce 58 | find-next = Nájsť následujúce 59 | replace-placeholder = Nahradiť... 60 | replace = Nahradiť 61 | replace-all = Nahradiť všetko 62 | case-sensitive = Rozlišovanie veľkosti písmen 63 | use-regex = Použiť regex 64 | wrap-around = Pokračovať od začiatku 65 | 66 | # Menu 67 | 68 | ## File 69 | file = Súbor 70 | new-file = Nový súbor 71 | new-window = Nové okno 72 | open-file = Otvoriť súbor... 73 | open-recent-file = Otvoriť nedávny súbor 74 | close-file = Zatvoriť súbor 75 | menu-open-project = Otvoriť projekt... 76 | open-recent-project = Otvoriť nedávny projekt 77 | close-project = Zatvoriť projekt 78 | save = Uložiť 79 | save-as = Uložiť ako... 80 | revert-all-changes = Vrátiť všetky zmeny 81 | menu-document-statistics = Štatistiky dokumentu... 82 | document-type = Typ dokumentu... 83 | encoding = Kódovanie... 84 | menu-git-management = Git správa... 85 | print = Tlač 86 | quit = Ukončiť 87 | 88 | ## Edit 89 | edit = Upraviť 90 | undo = Späť 91 | redo = Znovu 92 | cut = Vystrihnúť 93 | copy = Kopírovať 94 | paste = Prilepiť 95 | select-all = Vybrať všetko 96 | find = Nájsť 97 | find-in-project = Nájsť v projekte... 98 | spell-check = Kontrola pravopisu... 99 | 100 | ## View 101 | view = Zobraziť 102 | indentation = Odsadenie 103 | 104 | ### Indentation 105 | automatic-indentation = Automatické odsadenie 106 | tab-width = Šírka tabulátora: {$tab_width} 107 | convert-indentation-to-spaces = Previesť odsadenie na medzery 108 | convert-indentation-to-tabs = Previesť odsadenie na tabulátory 109 | 110 | word-wrap = Zalamovanie slov 111 | show-line-numbers = Zobraziť čísla riadkov 112 | highlight-current-line = Zvýrazniť aktuálny riadok 113 | syntax-highlighting = Zvýraznenie syntaxe... 114 | menu-settings = Nastavenia... 115 | menu-keyboard-shortcuts = Klávesové skratky... 116 | menu-about = O textovom editore COSMIC 117 | -------------------------------------------------------------------------------- /i18n/sr-Cyrl/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = Нови документ 2 | open-project = Отвори пројекат 3 | todo = TODO 4 | 5 | # Context Pages 6 | 7 | ## Document statistics 8 | document-statistics = Статистике документа 9 | word-count = Број речи 10 | character-count = Знакови 11 | character-count-no-spaces = Знакови (без размака) 12 | line-count = Редови 13 | 14 | ## Git management 15 | git-management = Гит управљање 16 | unstaged-changes = Нестејџоване промене 17 | staged-changes = Стејџоване промене 18 | 19 | ## Project search 20 | project-search = Претрага пројекта 21 | 22 | ## Settings 23 | settings = Подешавања 24 | 25 | ## Appearance 26 | appearance = Изглед 27 | theme = Тема 28 | match-desktop = Као систем 29 | dark = Тамна 30 | light = Светла 31 | syntax-dark = Тамна тема синтаксе 32 | syntax-light = Светла тема синтаксе 33 | default-font = Подразумевани фонт 34 | default-font-size = Подразумевана величина фонта 35 | 36 | ### Keyboard shortcuts 37 | keyboard-shortcuts = Пречице на тастатури 38 | enable-vim-bindings = Омогући Vim режим 39 | 40 | # Find 41 | find-placeholder = Пронађи... 42 | find-previous = Пронађи претходно 43 | find-next = Пронађи следеће 44 | replace-placeholder = Замени... 45 | replace = Замени 46 | replace-all = Замени све 47 | 48 | # Menu 49 | 50 | ## File 51 | file = Датотека 52 | new-file = Нова датотека 53 | new-window = Нови прозор 54 | open-file = Отвори датотеку... 55 | open-recent-file = Отвори недавну датотеку 56 | close-file = Затвори датотеку 57 | menu-open-project = Отвори пројекат... 58 | open-recent-project = Отвори недавни пројекат 59 | close-project = Затвори пројекат 60 | save = Сачувај 61 | save-as = Сачувај као... 62 | revert-all-changes = Врати све измене 63 | menu-document-statistics = Статистике документа... 64 | document-type = Врста документа... 65 | encoding = Кодирање... 66 | menu-git-management = Гит управљање... 67 | print = Штампај 68 | quit = Изађи 69 | 70 | ## Edit 71 | edit = Уреди 72 | undo = Поништи 73 | redo = Понови 74 | cut = Исеци 75 | copy = Копирај 76 | paste = Налепи 77 | select-all = Изабери све 78 | find = Пронађи 79 | find-in-project = Пронађи у пројекту... 80 | spell-check = Провера правописа... 81 | 82 | ## View 83 | view = Приказ 84 | indentation = Увлачење 85 | 86 | ### Indentation 87 | automatic-indentation = Аутоматско увлачење 88 | tab-width = Ширина табулатора: {$tab_width} 89 | convert-indentation-to-spaces = Претвори увлачење у размаке 90 | convert-indentation-to-tabs = Претвори увлачење у табулаторе 91 | 92 | word-wrap = Заокруживање речи 93 | show-line-numbers = Прикажи бројеве редова 94 | highlight-current-line = Истакни тренутни ред 95 | syntax-highlighting = Истицање синтаксе... 96 | menu-settings = Подешавања... 97 | menu-keyboard-shortcuts = Пречице на тастатури... 98 | menu-about = О COSMIC уређивачу текста 99 | -------------------------------------------------------------------------------- /i18n/sr-Latn/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = Novi dokument 2 | open-project = Otvori projekat 3 | todo = TODO 4 | 5 | # Context Pages 6 | 7 | ## Document statistics 8 | document-statistics = Statistike dokumenta 9 | word-count = Broj reči 10 | character-count = Znakovi 11 | character-count-no-spaces = Znakovi (bez razmaka) 12 | line-count = Redovi 13 | 14 | ## Git management 15 | git-management = Git upravljanje 16 | unstaged-changes = Nestejdžovane promene 17 | staged-changes = Stejdžovane promene 18 | 19 | ## Project search 20 | project-search = Pretraga projekta 21 | 22 | ## Settings 23 | settings = Podešavanja 24 | 25 | ## Appearance 26 | appearance = Izgled 27 | theme = Tema 28 | match-desktop = Kao sistem 29 | dark = Tamna 30 | light = Svetla 31 | syntax-dark = Tamna tema sintakse 32 | syntax-light = Svetla tema sintakse 33 | default-font = Podrazumevani font 34 | default-font-size = Podrazumevana veličina fonta 35 | 36 | ### Keyboard shortcuts 37 | keyboard-shortcuts = Prečice na tastaturi 38 | enable-vim-bindings = Omogući Vim režim 39 | 40 | # Find 41 | find-placeholder = Pronađi... 42 | find-previous = Pronađi prethodno 43 | find-next = Pronađi sledeće 44 | replace-placeholder = Zameni... 45 | replace = Zameni 46 | replace-all = Zameni sve 47 | 48 | # Menu 49 | 50 | ## File 51 | file = Datoteka 52 | new-file = Nova datoteka 53 | new-window = Novi prozor 54 | open-file = Otvori datoteku... 55 | open-recent-file = Otvori nedavnu datoteku 56 | close-file = Zatvori datoteku 57 | menu-open-project = Otvori projekat... 58 | open-recent-project = Otvori nedavni projekat 59 | close-project = Zatvori projekat 60 | save = Sačuvaj 61 | save-as = Sačuvaj kao... 62 | revert-all-changes = Vrati sve izmene 63 | menu-document-statistics = Statistike dokumenta... 64 | document-type = Vrsta dokumenta... 65 | encoding = Kodiranje... 66 | menu-git-management = Git upravljanje... 67 | print = Štampaj 68 | quit = Izađi 69 | 70 | ## Edit 71 | edit = Uredi 72 | undo = Poništi 73 | redo = Ponovi 74 | cut = Iseci 75 | copy = Kopiraj 76 | paste = Nalepi 77 | select-all = Izaberi sve 78 | find = Pronađi 79 | find-in-project = Pronađi u projektu... 80 | spell-check = Provera pravopisa... 81 | 82 | ## View 83 | view = Prikaz 84 | indentation = Uvlačenje 85 | 86 | ### Indentation 87 | automatic-indentation = Automatsko uvlačenje 88 | tab-width = Širina tabulatora: {$tab_width} 89 | convert-indentation-to-spaces = Pretvori uvlačenje u razmake 90 | convert-indentation-to-tabs = Pretvori uvlačenje u tabulatore 91 | 92 | word-wrap = Zaokruživanje reči 93 | show-line-numbers = Prikaži brojeve redova 94 | highlight-current-line = Istakni trenutni red 95 | syntax-highlighting = Isticanje sintakse... 96 | menu-settings = Podešavanja... 97 | menu-keyboard-shortcuts = Prečice na tastaturi... 98 | menu-about = O COSMIC uređivaču teksta 99 | -------------------------------------------------------------------------------- /i18n/sv-SE/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | new-document = Nytt dokument 2 | open-project = Öppna projekt 3 | todo = TODO 4 | 5 | # Context sidor 6 | 7 | ## Dokument statistik 8 | document-statistics = Dokument statistik 9 | word-count = Ordräknare 10 | character-count = Tecken 11 | character-count-no-spaces = Tecken (utan mellanslag) 12 | line-count = Rader 13 | 14 | ## Git hantering 15 | git-management = Git hantering 16 | unstaged-changes = Oscenerade förändringar 17 | staged-changes = Iscensatta förändringar 18 | 19 | 20 | ## Projektsök 21 | project-search = Projektsök 22 | 23 | ## Fråga om ändringarna sparas 24 | prompt-save-changes-title = Osparade ändringar 25 | prompt-unsaved-changes = Du har osparade ändringar. Spara? 26 | cancel = Avbryt 27 | discard = Kasta ändringar 28 | save-all = Spara alla 29 | 30 | 31 | ## Inställningar 32 | settings = Inställningar 33 | 34 | ## Utseende 35 | appearance = Utseende 36 | theme = Tema 37 | match-desktop = Matcha skrivbordet 38 | dark = Ljus 39 | light = Mörk 40 | syntax-dark = Syntax mörk 41 | syntax-light = Syntax ljus 42 | default-font = Standard teckensnitt 43 | default-font-size = Standard teckensnittsstorlek 44 | default-zoom-step = Zoom steg 45 | 46 | ### Tangentbordsgenvägar 47 | keyboard-shortcuts = Tangentbordsgenvägar 48 | enable-vim-bindings = Aktivera Vim bindningar 49 | 50 | # Sök 51 | find-placeholder = Sök... 52 | find-previous = Sök föregående 53 | find-next = Sök nästa 54 | replace-placeholder = Ersätt... 55 | replace = Ersätt 56 | replace-all = Ersätt alla 57 | case-sensitive = Skiftlägeskänslig 58 | use-regex = Använd regex 59 | wrap-around = Linda runt 60 | 61 | # Meny 62 | 63 | ## File 64 | file = Fil 65 | new-file = Ny fil 66 | new-window = Nytt fönster 67 | open-file = Öppna fil... 68 | open-recent-file = Öppna senaste fil 69 | close-file = Stäng fil 70 | menu-open-project = Öppna projekt... 71 | open-recent-project = Öppna senaste projekt 72 | close-project = Stäng projekt 73 | save = Spara 74 | save-as = Spara som... 75 | revert-all-changes = Återställ alla ändringar 76 | menu-document-statistics = Dokumentstatistik... 77 | document-type = Dokument typ... 78 | encoding = Kodning... 79 | menu-git-management = Git hantering... 80 | print = Skriv ut 81 | quit = Avsluta 82 | 83 | ## Redigera 84 | edit = Redigera 85 | undo = Ångra 86 | redo = Gör om 87 | cut = Klipp ut 88 | copy = Kopiera 89 | paste = Klistra in 90 | select-all = Välj alla 91 | find = Sök 92 | find-in-project = Sök i projekt... 93 | replace = Ersätt 94 | spell-check = Stavningskontroll... 95 | 96 | ## Visa 97 | view = Visa 98 | zoom-in = Zooma in 99 | default-size = Standard storlek 100 | zoom-out = Zooma ut 101 | indentation = Indrag 102 | 103 | ### Indentation 104 | automatic-indentation = Automatiska indrag 105 | tab-width = Tab width: {$tab_width} 106 | convert-indentation-to-spaces = Konvertera indrag till mellanslag 107 | convert-indentation-to-tabs = Konvertera indrag till tabbar 108 | 109 | word-wrap = Ordlinding 110 | show-line-numbers = Visa radnummer 111 | highlight-current-line = Markera aktuell rad 112 | syntax-highlighting = Syntax markering... 113 | menu-settings = Inställningar... 114 | menu-keyboard-shortcuts = Tangentbordsgenvägar... 115 | menu-about = Om COSMIC Textredigerare 116 | -------------------------------------------------------------------------------- /i18n/tr/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC Metin Düzenleyici 2 | new-document = Yeni belge 3 | open-project = Proje aç 4 | todo = TODO 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = {$date} tarihli {$hash} numaralı git işlemesi 10 | 11 | ## Document statistics 12 | document-statistics = Belge istatikleri 13 | word-count = Sözcük sayısı 14 | character-count = Karakterler 15 | character-count-no-spaces = Karakterler (boşluksuz) 16 | line-count = Satırlar 17 | 18 | ## Git management 19 | git-management = Git yönetimi 20 | git-management-description = Git, sürüm denetimi işlemlerinin yönetimi için kullanılan bir geliştirici aracıdır. 21 | git-management-loading = Git yönetimi yükleniyor... 22 | stage = Hazırla 23 | staged-changes = Hazırlanmış değişiklikler 24 | unstage = Hazırlıktan çıkar 25 | unstaged-changes = Hazırlanmamış değişiklikler 26 | 27 | ## Project search 28 | project-search = Proje arama 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Değişiklikler Kaydedilmedi 32 | prompt-unsaved-changes = Kaydedilmemiş değişiklikler var, kaydedilsin mi? 33 | cancel = İptal 34 | discard = Gözden çıkar 35 | save-all = Tümünü kaydet 36 | 37 | ## Settings 38 | settings = Ayarlar 39 | 40 | ### Appearance 41 | appearance = Görünüm 42 | theme = Tema 43 | match-desktop = Masaüstüne eşle 44 | dark = Koyu 45 | light = Açık 46 | syntax-dark = Koyu söz dizimi 47 | syntax-light = Açık söz dizimi 48 | default-font = Öntanımlı yazı tipi 49 | default-font-size = Öntanımlı yazı tipi boyutu 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Klavye kısayolları 53 | enable-vim-bindings = Vim tuşlarını kullan 54 | 55 | # Find 56 | find-placeholder = Bul... 57 | find-previous = Öncekini bul 58 | find-next = Sonrakini bul 59 | replace-placeholder = Değiştir... 60 | replace = Değiştir 61 | replace-all = Tümünü değiştir 62 | case-sensitive = Büyük/küçük harfe duyarlı 63 | use-regex = Regex düzenli ifadelerini kullan 64 | 65 | # Menu 66 | 67 | ## File 68 | file = Dosya 69 | new-file = Yeni dosya 70 | new-window = Yeni pencere 71 | open-file = Dosya aç... 72 | open-recent-file = Son kullanılan dosyalardan aç 73 | close-file = Dosyayı kapat 74 | menu-open-project = Proje aç... 75 | open-recent-project = Son kullanılan projelerden aç 76 | close-project = Projeyi kapat 77 | save = Kaydet 78 | save-as = Farklı kaydet... 79 | revert-all-changes = Bütün değişiklikleri geri al 80 | menu-document-statistics = Belge istatistikleri... 81 | document-type = Belge türü... 82 | encoding = Kodlama... 83 | menu-git-management = Git yönetimi... 84 | print = Yazdır 85 | quit = Çık 86 | 87 | ## Edit 88 | edit = Düzenle 89 | undo = Geri al 90 | redo = Yinele 91 | cut = Kes 92 | copy = Kopyala 93 | paste = Yapıştır 94 | select-all = Tümünü seç 95 | find = Bul 96 | find-in-project = Projede bul... 97 | spell-check = Yazım denetimi... 98 | 99 | ## View 100 | view = Görünüm 101 | indentation = Girintileme 102 | 103 | ### Indentation 104 | automatic-indentation = Kendiliğinden girintile 105 | tab-width = Sekme genişliği: {$tab_width} 106 | convert-indentation-to-spaces = Girintileri boşluklara çevir 107 | convert-indentation-to-tabs = Girintileri sekmelere çevir 108 | 109 | word-wrap = Sözcük kaydırma 110 | show-line-numbers = Satır numaralarını göster 111 | highlight-current-line = Geçerli satırı vurgula 112 | syntax-highlighting = Söz dizimi vurgulama... 113 | menu-settings = Ayarlar... 114 | menu-keyboard-shortcuts = Klavye kısayolları... 115 | menu-about = COSMIC Metin Düzenleyici Hakkında ... 116 | -------------------------------------------------------------------------------- /i18n/uk/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = Текстовий редактор COSMIC 2 | new-document = Новий документ 3 | open-project = Відкрити проєкт 4 | todo = ЗРОБИТИ 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git commit {$hash} за {$date} 10 | 11 | ## Document statistics 12 | document-statistics = Статистика документа 13 | word-count = Кількість слів 14 | character-count = Символів 15 | character-count-no-spaces = Символів (без пропусків) 16 | line-count = Рядків 17 | 18 | ## Git management 19 | git-management = Керування Git 20 | git-management-description = Керування Git — це інструмент розробника для керування версіями. 21 | git-management-loading = Завантажується керування Git... 22 | stage = Додати до індексу 23 | staged-changes = Індексовані зміни 24 | unstage = Прибрати з індексу 25 | unstaged-changes = Неіндексовані зміни 26 | 27 | ## Project search 28 | project-search = Пошук у проєкті 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = Незбережені зміни 32 | prompt-unsaved-changes = У вас є незбережені зміни. Зберегти їх? 33 | cancel = Скасувати 34 | discard = Відкинути зміни 35 | save-all = Зберегти всі 36 | 37 | ## Settings 38 | settings = Налаштування 39 | 40 | ## Appearance 41 | appearance = Зовнішній вигляд 42 | theme = Тема 43 | match-desktop = Системна 44 | dark = Темна 45 | light = Світла 46 | syntax-dark = Синтаксис темної теми 47 | syntax-light = Синтаксис світлої теми 48 | default-font = Типовий шрифт 49 | default-font-size = Типовий розмір шрифту 50 | 51 | ### Keyboard shortcuts 52 | keyboard-shortcuts = Клавіатурні скорочення 53 | enable-vim-bindings = Увімкнути режим Vim 54 | 55 | # Find 56 | find-placeholder = Знайти... 57 | find-previous = Знайти попередній 58 | find-next = Знайти наступний 59 | replace-placeholder = Замінити... 60 | replace = Замінити 61 | replace-all = Замінити всі 62 | case-sensitive = З урахуванням регістру 63 | use-regex = Використовувати регулярні вирази 64 | 65 | # Menu 66 | 67 | ## File 68 | file = Файл 69 | new-file = Новий файл 70 | new-window = Нове вікно 71 | open-file = Відкрити файл... 72 | open-recent = Відкрити нещодавній файл 73 | close-file = Закрити файл 74 | menu-open-project = Відкрити проєкт... 75 | open-recent-project = Відкрити нещодавній проєкт 76 | close-project = Закрити проєкт 77 | save = Зберегти 78 | save-as = Зберегти як… 79 | revert-all-changes = Скасувати всі зміни 80 | menu-document-statistics = Статистика документа... 81 | document-type = Тип документа... 82 | encoding = Кодування... 83 | menu-git-management = Керування Git... 84 | print = Друк 85 | quit = Вийти 86 | 87 | ## Edit 88 | edit = Зміни 89 | undo = Скасувати 90 | redo = Повторити 91 | cut = Вирізати 92 | copy = Копіювати 93 | paste = Вставити 94 | select-all = Вибрати все 95 | find = Пошук 96 | find-in-project = Пошук у проєкті... 97 | spell-check = Перевірка орфографії... 98 | 99 | ## View 100 | view = Вигляд 101 | indentation = Відступ 102 | 103 | ### Indentation 104 | automatic-indentation = Автоматичні відступи 105 | tab-width = Ширина табуляції: {$tab_width} 106 | convert-indentation-to-spaces = Перетворити відступи на пропуски 107 | convert-indentation-to-tabs = Перетворити відступи на табуляцію 108 | 109 | word-wrap = Перенесення слів 110 | show-line-numbers = Показувати номери рядків 111 | highlight-current-line = Підсвічувати поточний рядок 112 | syntax-highlighting = Підсвічування синтаксису... 113 | menu-settings = Налаштування... 114 | menu-keyboard-shortcuts = Гарячі клавіші... 115 | menu-about = Про текстовий редактор COSMIC 116 | -------------------------------------------------------------------------------- /i18n/zh-CN/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC 文本编辑器 2 | new-document = 新建文件 3 | open-project = 打开项目 4 | todo = 待办事项 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git 提交 {$hash} 于 {$date} 10 | 11 | ## Document statistics 12 | document-statistics = 文件统计 13 | word-count = 字数 14 | character-count = 字符数 15 | character-count-no-spaces = 字符数(不含空格) 16 | line-count = 行数 17 | 18 | ## Git management 19 | git-management = Git 管理 20 | git-management-description = Git 管理是一个用于版本控制操作的开发工具。 21 | git-management-loading = 正在加载 Git 管理... 22 | stage = 暂存 23 | staged-changes = 已暂存的更改 24 | unstage = 取消暂存 25 | unstaged-changes = 未暂存的更改 26 | 27 | ## Project search 28 | project-search = 项目搜索 29 | 30 | ## Prompt save changes 31 | prompt-save-changes-title = 未保存的更改 32 | prompt-unsaved-changes = 您有未保存的更改。是否保存? 33 | cancel = 取消 34 | discard = 放弃更改 35 | save-all = 全部保存 36 | 37 | ## Settings 38 | settings = 设置 39 | 40 | ### Appearance 41 | appearance = 外观 42 | theme = 主题 43 | match-desktop = 匹配桌面 44 | dark = 深色 45 | light = 亮色 46 | syntax-dark = 深色语法 47 | syntax-light = 亮色语法 48 | default-font = 默认字体 49 | default-font-size = 默认字体大小 50 | default-zoom-step = 缩放步长 51 | 52 | ### Keyboard shortcuts 53 | keyboard-shortcuts = 键盘快捷键 54 | enable-vim-bindings = 启用 Vim 绑定 55 | 56 | # Find 57 | find-placeholder = 查找... 58 | find-previous = 查找上一个 59 | find-next = 查找下一个 60 | replace-placeholder = 替换... 61 | replace = 替换 62 | replace-all = 全部替换 63 | case-sensitive = 区分大小写 64 | use-regex = 使用正则表达式 65 | wrap-around = 循环查找 66 | 67 | # Menu 68 | 69 | ## File 70 | file = 文件 71 | new-file = 新建文件 72 | new-window = 新建窗口 73 | open-file = 打开文件... 74 | open-recent-file = 打开最近文件 75 | close-file = 关闭文件 76 | menu-open-project = 打开项目... 77 | open-recent-project = 打开最近项目 78 | close-project = 关闭项目 79 | save = 保存 80 | save-as = 另存为... 81 | revert-all-changes = 撤销所有更改 82 | menu-document-statistics = 文档统计... 83 | document-type = 文档类型... 84 | encoding = 编码... 85 | menu-git-management = Git 管理... 86 | print = 打印 87 | quit = 退出 88 | 89 | ## Edit 90 | edit = 编辑 91 | undo = 撤销 92 | redo = 重做 93 | cut = 剪切 94 | copy = 复制 95 | paste = 粘贴 96 | select-all = 全选 97 | find = 查找 98 | find-in-project = 在项目中查找... 99 | spell-check = 拼写检查... 100 | 101 | ## View 102 | view = 视图 103 | zoom-in = 放大 104 | default-size = 默认大小 105 | zoom-out = 缩小 106 | indentation = 缩进 107 | 108 | ### Indentation 109 | automatic-indentation = 自动缩进 110 | tab-width = Tab 宽度:{$tab_width} 111 | convert-indentation-to-spaces = 将缩进转换为空格 112 | convert-indentation-to-tabs = 将缩进转换为 Tab 113 | 114 | word-wrap = 自动换行 115 | show-line-numbers = 显示行号 116 | highlight-current-line = 高亮当前行 117 | syntax-highlighting = 语法高亮... 118 | menu-settings = 设置... 119 | menu-keyboard-shortcuts = 键盘快捷键... 120 | menu-about = 关于 COSMIC 文本编辑器... 121 | -------------------------------------------------------------------------------- /i18n/zh-TW/cosmic_edit.ftl: -------------------------------------------------------------------------------- 1 | cosmic-text-editor = COSMIC 編輯器 2 | new-document = 新文件 3 | open-project = 開啟專案 4 | todo = 待辦事項 5 | 6 | # Context Pages 7 | 8 | ## About 9 | git-description = Git 提交 {$hash} 於 {$date} 10 | 11 | ## Document statistics 12 | document-statistics = 文件統計 13 | word-count = 字數 14 | character-count = 字元數 15 | character-count-no-spaces = 字元數(不含空格) 16 | line-count = 行數 17 | 18 | ## Git management 19 | git-management = Git 管理 20 | git-management-description = Git 管理是用於版本控制操作的開發者工具。 21 | git-management-loading = 正在載入 Git 管理... 22 | unstaged-changes = 未暫存的變更 23 | staged-changes = 已暫存的變更 24 | 25 | ## Project search 26 | project-search = 專案搜尋 27 | 28 | ## Prompt save changes 29 | prompt-save-changes-title = 未儲存的變更 30 | prompt-unsaved-changes = 您有未儲存的變更。是否儲存? 31 | discard = 放棄變更 32 | 33 | ## Settings 34 | settings = 設定 35 | 36 | ### Appearance 37 | appearance = 外觀 38 | theme = 主題 39 | match-desktop = 與桌面一致 40 | dark = 深色模式 41 | light = 亮色模式 42 | syntax-dark = 語法深色 43 | syntax-light = 語法亮色 44 | default-font = 預設字型 45 | default-font-size = 預設字型大小 46 | 47 | ### Keyboard shortcuts 48 | keyboard-shortcuts = 鍵盤快捷鍵 49 | enable-vim-bindings = 啟用 Vim 綁定 50 | 51 | # Find 52 | find-placeholder = 尋找... 53 | find-previous = 上一個 54 | find-next = 下一個 55 | replace-placeholder = 替換... 56 | replace = 替換 57 | replace-all = 全部替換 58 | case-sensitive = 區分大小寫 59 | use-regex = 使用正規表達式 60 | 61 | # Menu 62 | 63 | ## File 64 | file = 檔案 65 | new-file = 新檔案 66 | new-window = 新視窗 67 | open-file = 開啟檔案... 68 | open-recent-file = 開啟最近檔案 69 | close-file = 關閉檔案 70 | menu-open-project = 開啟專案... 71 | open-recent-project = 開啟最近專案 72 | close-project = 關閉專案 73 | save = 儲存 74 | save-as = 另存為... 75 | revert-all-changes = 復原所有變更 76 | menu-document-statistics = 文件統計... 77 | document-type = 文件類型... 78 | encoding = 編碼... 79 | menu-git-management = Git 管理... 80 | print = 列印 81 | quit = 結束 82 | 83 | ## Edit 84 | edit = 編輯 85 | undo = 復原 86 | redo = 重做 87 | cut = 剪下 88 | copy = 複製 89 | paste = 貼上 90 | select-all = 全選 91 | find = 尋找 92 | find-in-project = 在專案中尋找... 93 | spell-check = 拼寫檢查... 94 | 95 | ## View 96 | view = 檢視 97 | indentation = 縮排 98 | 99 | ### Indentation 100 | automatic-indentation = 自動縮排 101 | tab-width = Tab 寬度: {$tab_width} 102 | convert-indentation-to-spaces = 將縮排轉換為空格 103 | convert-indentation-to-tabs = 將縮排轉換為 Tabs 104 | 105 | word-wrap = 自動換行 106 | show-line-numbers = 顯示行號 107 | highlight-current-line = 突顯當前行 108 | syntax-highlighting = 語法突顯... 109 | menu-settings = 設定... 110 | menu-keyboard-shortcuts = 鍵盤快捷鍵... 111 | menu-about = 關於 COSMIC 編輯器... 112 | -------------------------------------------------------------------------------- /justfile: -------------------------------------------------------------------------------- 1 | name := 'cosmic-edit' 2 | export APPID := 'com.system76.CosmicEdit' 3 | 4 | rootdir := '' 5 | prefix := '/usr' 6 | 7 | base-dir := absolute_path(clean(rootdir / prefix)) 8 | 9 | export INSTALL_DIR := base-dir / 'share' 10 | 11 | cargo-target-dir := env('CARGO_TARGET_DIR', 'target') 12 | bin-src := cargo-target-dir / 'release' / name 13 | bin-dst := base-dir / 'bin' / name 14 | 15 | desktop := APPID + '.desktop' 16 | desktop-src := 'res' / desktop 17 | desktop-dst := clean(rootdir / prefix) / 'share' / 'applications' / desktop 18 | 19 | metainfo := APPID + '.metainfo.xml' 20 | metainfo-src := 'res' / metainfo 21 | metainfo-dst := clean(rootdir / prefix) / 'share' / 'metainfo' / metainfo 22 | 23 | icons-src := 'res' / 'icons' / 'hicolor' 24 | icons-dst := clean(rootdir / prefix) / 'share' / 'icons' / 'hicolor' 25 | 26 | # Default recipe which runs `just build-release` 27 | default: build-release 28 | 29 | # Runs `cargo clean` 30 | clean: 31 | cargo clean 32 | 33 | # Removes vendored dependencies 34 | clean-vendor: 35 | rm -rf .cargo vendor vendor.tar 36 | 37 | # `cargo clean` and removes vendored dependencies 38 | clean-dist: clean clean-vendor 39 | 40 | # Compiles with debug profile 41 | build-debug *args: 42 | cargo build {{args}} 43 | 44 | # Compiles with release profile 45 | build-release *args: (build-debug '--release' args) 46 | 47 | # Compiles release profile with vendored dependencies 48 | build-vendored *args: vendor-extract (build-release '--frozen --offline' args) 49 | 50 | # Runs a clippy check 51 | check *args: 52 | cargo clippy --all-features {{args}} -- -W clippy::pedantic 53 | 54 | # Runs a clippy check with JSON message format 55 | check-json: (check '--message-format=json') 56 | 57 | dev *args: 58 | cargo fmt 59 | just run {{args}} 60 | 61 | # Run with debug logs 62 | run *args: 63 | env RUST_LOG=cosmic_edit=info RUST_BACKTRACE=full cargo run --release {{args}} 64 | 65 | # Installs files 66 | install: 67 | install -Dm0755 {{bin-src}} {{bin-dst}} 68 | install -Dm0644 {{desktop-src}} {{desktop-dst}} 69 | install -Dm0644 {{metainfo-src}} {{metainfo-dst}} 70 | for size in `ls {{icons-src}}`; do \ 71 | install -Dm0644 "{{icons-src}}/$size/apps/{{APPID}}.svg" "{{icons-dst}}/$size/apps/{{APPID}}.svg"; \ 72 | done 73 | 74 | # Uninstalls installed files 75 | uninstall: 76 | rm {{bin-dst}} 77 | 78 | # Vendor dependencies locally 79 | vendor: 80 | #!/usr/bin/env bash 81 | mkdir -p .cargo 82 | cargo vendor --sync Cargo.toml | head -n -1 > .cargo/config.toml 83 | echo 'directory = "vendor"' >> .cargo/config.toml 84 | echo >> .cargo/config.toml 85 | echo '[env]' >> .cargo/config.toml 86 | if [ -n "${SOURCE_DATE_EPOCH}" ] 87 | then 88 | source_date="$(date -d "@${SOURCE_DATE_EPOCH}" "+%Y-%m-%d")" 89 | echo "VERGEN_GIT_COMMIT_DATE = \"${source_date}\"" >> .cargo/config.toml 90 | fi 91 | if [ -n "${SOURCE_GIT_HASH}" ] 92 | then 93 | echo "VERGEN_GIT_SHA = \"${SOURCE_GIT_HASH}\"" >> .cargo/config.toml 94 | fi 95 | tar pcf vendor.tar .cargo vendor 96 | rm -rf .cargo vendor 97 | 98 | # Extracts vendored dependencies 99 | vendor-extract: 100 | rm -rf vendor 101 | tar pxf vendor.tar 102 | -------------------------------------------------------------------------------- /redoxer.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -ex 4 | 5 | rm -rf target/redoxer 6 | mkdir -p target/redoxer 7 | 8 | redoxer install \ 9 | --no-default-features \ 10 | --no-track \ 11 | --path . \ 12 | --root "target/redoxer" 13 | 14 | cmd="env RUST_LOG=cosmic_text=debug,cosmic_edit=debug ./bin/cosmic-edit" 15 | if [ -f "$1" ] 16 | then 17 | filename="$(basename "$1")" 18 | cp "$1" "target/redoxer/${filename}" 19 | cmd="${cmd} '${filename}'" 20 | fi 21 | 22 | cd target/redoxer 23 | 24 | redoxer exec \ 25 | --gui \ 26 | --folder . \ 27 | /bin/sh -c \ 28 | "${cmd}" 29 | -------------------------------------------------------------------------------- /res/com.system76.CosmicEdit.desktop: -------------------------------------------------------------------------------- 1 | #TODO: more build-out, desktop actions, translations? 2 | [Desktop Entry] 3 | Name=COSMIC Text Editor 4 | Name[zh_CN]=COSMIC 文本编辑器 5 | Name[pl]=Edytor Tekstu COSMIC 6 | Name[pt_BR]=Editor de Texto 7 | Name[hu]=COSMIC Szövegszerkesztő 8 | Name[pt]=Editor de Texto 9 | Exec=cosmic-edit %F 10 | Terminal=false 11 | Type=Application 12 | StartupNotify=true 13 | MimeType=text/plain; 14 | Icon=com.system76.CosmicEdit 15 | Categories=COSMIC;Utility;TextEditor; 16 | Keywords=Text;Editor; 17 | Keywords[pl]=Edytor;Tekstu; 18 | Keywords[pt_BR]=Texto;Editor;Notas; 19 | Keywords[hu]=szöveg;szerkesztő; 20 | -------------------------------------------------------------------------------- /res/com.system76.CosmicEdit.metainfo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.system76.CosmicEdit 4 | CC0-1.0 5 | GPL-3.0-only 6 | COSMIC 7 | System76 8 | jeremy@system76.com 9 | https://github.com/pop-os/cosmic-edit 10 | https://github.com/pop-os/cosmic-edit 11 | COSMIC Text Editor 12 | Edytor tekstu COSMIC 13 | COSMIC Szövegszerkesztő 14 | Editor de Texto 15 | Text editor for the COSMIC desktop 16 | Edytor tekstu pulpitu COSMIC 17 | Szövegszerkesztő a COSMIC asztali környezethez 18 | Editor de texto do desktop COSMIC 19 | 20 |

Text editor that provides advanced features with high performance

21 |

Edytor tekstu oferujący zaawansowane funkcje i wysoką wydajność

22 |

Editor de texto que fornece funcionalidades avançadas com alta performance

23 |

Nagy teljesítményű szövegszerkesztő fejlett funkciókkal

24 |
    25 |
  • Written in Rust for performance and safety
  • 26 |
  • Napisany w Ruście dla wydajności i bezpieczeństwa
  • 27 |
  • Rustban írva a teljesítmény és biztonság érdekében
  • 28 |
  • Escrito em Rust visando performance e segurança
  • 29 |
  • Syntax highlighting built in for most languages
  • 30 |
  • Wbudowane podświetlanie składni dla większości języków
  • 31 |
  • Szintaxiskiemelés a legtöbb nyelvhez
  • 32 |
  • Realce de sintaxe embutido para a maioria das linguagens
  • 33 |
  • Provides project-based editing
  • 34 |
  • Możliwość edycji projektów
  • 35 |
  • Projektalapú szerkesztést biztosít
  • 36 |
  • Fornece edição baseada em projeto
  • 37 |
  • Integrated git management
  • 38 |
  • Wbudowane zarządzanie repozytoriami git
  • 39 |
  • Integrált Git-kezelő
  • 40 |
  • Gerenciador Git integrado
  • 41 |
42 |
43 | com.system76.CosmicEdit.desktop 44 | https://raw.githubusercontent.com/pop-os/cosmic-edit/master/res/icons/hicolor/256x256/apps/com.system76.CosmicEdit.svg 45 | 46 | 47 | https://media.githubusercontent.com/media/pop-os/cosmic-edit/master/res/screenshots/screenshot-1.png 48 | 49 | 50 | 51 | com.system76.CosmicApplication 52 | 53 | text/plain 54 | 55 | 56 | cosmic-edit 57 | 58 | 59 |
60 | -------------------------------------------------------------------------------- /res/icons/edit-clear-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /res/icons/folder-open-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /res/icons/go-down-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /res/icons/go-next-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /res/icons/go-up-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /res/icons/hicolor/128x128/apps/com.system76.CosmicEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /res/icons/hicolor/16x16/apps/com.system76.CosmicEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /res/icons/hicolor/24x24/apps/com.system76.CosmicEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /res/icons/hicolor/256x256/apps/com.system76.CosmicEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /res/icons/hicolor/32x32/apps/com.system76.CosmicEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /res/icons/hicolor/48x48/apps/com.system76.CosmicEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /res/icons/hicolor/64x64/apps/com.system76.CosmicEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /res/icons/list-add-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /res/icons/object-select-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /res/icons/replace-all-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /res/icons/replace-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /res/icons/window-close-symbolic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /res/screenshots/screenshot-1.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3ba78b19f6c4ecce1cbbb7a85495426ab5102575fef9838b5a1df199c951e985 3 | size 258913 4 | -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-only 2 | 3 | use cosmic::{ 4 | cosmic_config::{self, cosmic_config_derive::CosmicConfigEntry, CosmicConfigEntry}, 5 | theme, 6 | }; 7 | use cosmic_text::Metrics; 8 | use serde::{Deserialize, Serialize}; 9 | use std::{collections::VecDeque, path::PathBuf}; 10 | 11 | pub const CONFIG_VERSION: u64 = 1; 12 | 13 | #[derive(Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)] 14 | pub enum AppTheme { 15 | Dark, 16 | Light, 17 | System, 18 | } 19 | 20 | impl AppTheme { 21 | pub fn theme(&self) -> theme::Theme { 22 | match self { 23 | Self::Dark => { 24 | let mut t = theme::system_dark(); 25 | t.theme_type.prefer_dark(Some(true)); 26 | t 27 | } 28 | Self::Light => { 29 | let mut t = theme::system_light(); 30 | t.theme_type.prefer_dark(Some(false)); 31 | t 32 | } 33 | Self::System => theme::system_preference(), 34 | } 35 | } 36 | } 37 | 38 | #[derive(Clone, CosmicConfigEntry, Debug, Deserialize, Eq, PartialEq, Serialize)] 39 | pub struct Config { 40 | pub app_theme: AppTheme, 41 | pub auto_indent: bool, 42 | pub find_case_sensitive: bool, 43 | pub find_use_regex: bool, 44 | pub find_wrap_around: bool, 45 | pub font_name: String, 46 | pub font_size: u16, 47 | pub font_size_zoom_step_mul_100: u16, 48 | pub highlight_current_line: bool, 49 | pub line_numbers: bool, 50 | pub syntax_theme_dark: String, 51 | pub syntax_theme_light: String, 52 | pub tab_width: u16, 53 | pub vim_bindings: bool, 54 | pub word_wrap: bool, 55 | } 56 | 57 | impl Default for Config { 58 | fn default() -> Self { 59 | Self { 60 | app_theme: AppTheme::System, 61 | auto_indent: true, 62 | find_case_sensitive: false, 63 | find_use_regex: false, 64 | find_wrap_around: true, 65 | font_name: "Noto Sans Mono".to_string(), 66 | font_size: 14, 67 | font_size_zoom_step_mul_100: 100, 68 | highlight_current_line: true, 69 | line_numbers: true, 70 | syntax_theme_dark: "COSMIC Dark".to_string(), 71 | syntax_theme_light: "COSMIC Light".to_string(), 72 | tab_width: 4, 73 | vim_bindings: false, 74 | word_wrap: true, 75 | } 76 | } 77 | } 78 | 79 | impl Config { 80 | pub fn font_size_adjusted(&self, zoom_adj: i8) -> f32 { 81 | let font_size = f32::from(self.font_size).max(1.0); 82 | let adj = f32::from(zoom_adj); 83 | let adj_step = f32::from(self.font_size_zoom_step_mul_100) / 100.0; 84 | (font_size + adj * adj_step).max(1.0) 85 | } 86 | 87 | pub fn find_regex(&self, pattern: &str) -> Result { 88 | let mut builder = if self.find_use_regex { 89 | regex::RegexBuilder::new(pattern) 90 | } else { 91 | regex::RegexBuilder::new(®ex::escape(pattern)) 92 | }; 93 | builder.case_insensitive(!self.find_case_sensitive); 94 | builder.build() 95 | } 96 | 97 | // Calculate metrics from font size 98 | pub fn metrics(&self, zoom_adj: i8) -> Metrics { 99 | let font_size = self.font_size_adjusted(zoom_adj); 100 | let line_height = (font_size * 1.4).ceil(); 101 | Metrics::new(font_size, line_height) 102 | } 103 | 104 | // Get current syntax theme based on dark mode 105 | pub fn syntax_theme(&self) -> &str { 106 | let dark = self.app_theme.theme().theme_type.is_dark(); 107 | if dark { 108 | &self.syntax_theme_dark 109 | } else { 110 | &self.syntax_theme_light 111 | } 112 | } 113 | } 114 | 115 | #[derive(Clone, CosmicConfigEntry, Debug, Deserialize, Eq, PartialEq, Serialize)] 116 | pub struct ConfigState { 117 | pub recent_files: VecDeque, 118 | pub recent_projects: VecDeque, 119 | } 120 | 121 | impl Default for ConfigState { 122 | fn default() -> Self { 123 | Self { 124 | recent_files: VecDeque::new(), 125 | recent_projects: VecDeque::new(), 126 | } 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /src/git.rs: -------------------------------------------------------------------------------- 1 | //TODO: try to use gitoxide 2 | 3 | use std::{ 4 | fs, io, 5 | path::{Path, PathBuf}, 6 | }; 7 | use tokio::process::Command; 8 | 9 | #[derive(Clone, Debug, Eq, PartialEq)] 10 | pub struct GitDiff { 11 | pub path: PathBuf, 12 | pub staged: bool, 13 | pub hunks: Vec, 14 | } 15 | 16 | #[derive(Clone, Debug, Eq, PartialEq)] 17 | pub struct GitDiffHunk { 18 | pub old_range: patch::Range, 19 | pub new_range: patch::Range, 20 | pub lines: Vec, 21 | } 22 | 23 | #[derive(Clone, Debug, Eq, PartialEq)] 24 | pub enum GitDiffLine { 25 | Context { 26 | old_line: u64, 27 | new_line: u64, 28 | text: String, 29 | }, 30 | Added { 31 | new_line: u64, 32 | text: String, 33 | }, 34 | Deleted { 35 | old_line: u64, 36 | text: String, 37 | }, 38 | } 39 | 40 | #[derive(Clone, Debug, Eq, PartialEq)] 41 | pub struct GitStatus { 42 | pub path: PathBuf, 43 | pub old_path: Option, 44 | pub staged: GitStatusKind, 45 | pub unstaged: GitStatusKind, 46 | } 47 | 48 | #[derive(Clone, Copy, Debug, Eq, PartialEq)] 49 | pub enum GitStatusKind { 50 | Unmodified, 51 | Modified, 52 | FileTypeChanged, 53 | Added, 54 | Deleted, 55 | Renamed, 56 | Copied, 57 | Updated, 58 | Untracked, 59 | SubmoduleModified, 60 | } 61 | 62 | impl TryFrom for GitStatusKind { 63 | type Error = char; 64 | 65 | fn try_from(c: char) -> Result { 66 | // https://git-scm.com/docs/git-status#_short_format 67 | match c { 68 | ' ' => Ok(Self::Unmodified), 69 | 'M' => Ok(Self::Modified), 70 | 'T' => Ok(Self::FileTypeChanged), 71 | 'A' => Ok(Self::Added), 72 | 'D' => Ok(Self::Deleted), 73 | 'R' => Ok(Self::Renamed), 74 | 'C' => Ok(Self::Copied), 75 | 'U' => Ok(Self::Updated), 76 | '?' => Ok(Self::Untracked), 77 | 'm' => Ok(Self::SubmoduleModified), 78 | _ => Err(c), 79 | } 80 | } 81 | } 82 | 83 | pub struct GitRepository { 84 | path: PathBuf, 85 | } 86 | 87 | impl GitRepository { 88 | pub fn new>(path: P) -> io::Result { 89 | let path = path.as_ref(); 90 | if path.join(".git").exists() { 91 | let path = fs::canonicalize(path)?; 92 | Ok(Self { path }) 93 | } else { 94 | Err(io::Error::new( 95 | io::ErrorKind::NotFound, 96 | format!("{:?} is not a git repository", path), 97 | )) 98 | } 99 | } 100 | 101 | fn command(&self) -> Command { 102 | let mut command = Command::new("git"); 103 | command.arg("-C").arg(&self.path); 104 | command 105 | } 106 | 107 | async fn command_stdout(mut command: Command) -> io::Result { 108 | log::info!("{:?}", command); 109 | let output = command.output().await?; 110 | if output.status.success() { 111 | String::from_utf8(output.stdout).map_err(|err| { 112 | io::Error::new( 113 | io::ErrorKind::InvalidData, 114 | format!("failed to parse git stdout: {}", err), 115 | ) 116 | }) 117 | } else { 118 | let mut msg = format!("git exited with {}", output.status); 119 | for line in String::from_utf8_lossy(&output.stdout).lines() { 120 | msg.push_str("\nstdout> "); 121 | msg.push_str(line); 122 | } 123 | for line in String::from_utf8_lossy(&output.stderr).lines() { 124 | msg.push_str("\nstderr> "); 125 | msg.push_str(line); 126 | } 127 | Err(io::Error::new(io::ErrorKind::Other, msg)) 128 | } 129 | } 130 | 131 | pub async fn diff>(&self, path: P, staged: bool) -> io::Result { 132 | let path = path.as_ref(); 133 | let mut command = self.command(); 134 | command.arg("diff"); 135 | if staged { 136 | command.arg("--staged"); 137 | } 138 | command.arg("--").arg(path); 139 | let diff = Self::command_stdout(command).await?; 140 | let patch = patch::Patch::from_single(&diff).map_err(|err| { 141 | io::Error::new( 142 | io::ErrorKind::InvalidData, 143 | format!("failed to parse diff: {}", err), 144 | ) 145 | })?; 146 | 147 | let mut hunks = Vec::with_capacity(patch.hunks.len()); 148 | for hunk in patch.hunks.iter() { 149 | //TODO: validate range counts 150 | let mut old_line = hunk.old_range.start; 151 | let mut new_line = hunk.new_range.start; 152 | 153 | let mut lines = Vec::with_capacity(hunk.lines.len()); 154 | for line in hunk.lines.iter() { 155 | match line { 156 | patch::Line::Context(text) => { 157 | lines.push(GitDiffLine::Context { 158 | old_line, 159 | new_line, 160 | text: text.to_string(), 161 | }); 162 | old_line += 1; 163 | new_line += 1; 164 | } 165 | patch::Line::Add(text) => { 166 | lines.push(GitDiffLine::Added { 167 | new_line, 168 | text: text.to_string(), 169 | }); 170 | new_line += 1; 171 | } 172 | patch::Line::Remove(text) => { 173 | lines.push(GitDiffLine::Deleted { 174 | old_line, 175 | text: text.to_string(), 176 | }); 177 | old_line += 1; 178 | } 179 | } 180 | } 181 | 182 | hunks.push(GitDiffHunk { 183 | old_range: hunk.old_range.clone(), 184 | new_range: hunk.new_range.clone(), 185 | lines, 186 | }); 187 | } 188 | 189 | Ok(GitDiff { 190 | path: path.to_path_buf(), 191 | staged, 192 | hunks, 193 | }) 194 | } 195 | 196 | pub async fn status(&self) -> io::Result> { 197 | let mut command = self.command(); 198 | command.arg("status").arg("-z"); 199 | let stdout = Self::command_stdout(command).await?; 200 | 201 | let mut status = Vec::new(); 202 | let mut lines = stdout.split('\0'); 203 | while let Some(line) = lines.next() { 204 | macro_rules! invalid_line { 205 | () => {{ 206 | log::warn!("invalid git status line {:?}", line); 207 | continue; 208 | }}; 209 | } 210 | 211 | if line.is_empty() { 212 | // Ignore empty lines 213 | continue; 214 | } 215 | 216 | let mut chars = line.chars(); 217 | 218 | // Get staged status 219 | let staged = match chars.next() { 220 | Some(some) => match GitStatusKind::try_from(some) { 221 | Ok(ok) => ok, 222 | Err(_) => invalid_line!(), 223 | }, 224 | None => invalid_line!(), 225 | }; 226 | 227 | // Get unstaged status 228 | let unstaged = match chars.next() { 229 | Some(some) => match GitStatusKind::try_from(some) { 230 | Ok(ok) => ok, 231 | Err(_) => invalid_line!(), 232 | }, 233 | None => invalid_line!(), 234 | }; 235 | 236 | // Skip space 237 | match chars.next() { 238 | Some(' ') => {} 239 | _ => invalid_line!(), 240 | } 241 | 242 | // The rest of the chars are in the path 243 | let relative_path: String = chars.collect(); 244 | 245 | let old_path = if staged == GitStatusKind::Renamed || unstaged == GitStatusKind::Renamed 246 | { 247 | match lines.next() { 248 | Some(old_relative_path) => Some(self.path.join(old_relative_path)), 249 | None => invalid_line!(), 250 | } 251 | } else { 252 | None 253 | }; 254 | 255 | status.push(GitStatus { 256 | path: self.path.join(relative_path), 257 | old_path, 258 | staged, 259 | unstaged, 260 | }) 261 | } 262 | 263 | Ok(status) 264 | } 265 | 266 | pub async fn stage>(&self, path: P) -> io::Result<()> { 267 | let path = path.as_ref(); 268 | let mut command = self.command(); 269 | command.arg("stage"); 270 | command.arg("--").arg(path); 271 | Self::command_stdout(command).await?; 272 | Ok(()) 273 | } 274 | 275 | pub async fn unstage>(&self, path: P) -> io::Result<()> { 276 | let path = path.as_ref(); 277 | let mut command = self.command(); 278 | command.arg("restore"); 279 | command.arg("--staged"); 280 | command.arg("--").arg(path); 281 | Self::command_stdout(command).await?; 282 | Ok(()) 283 | } 284 | } 285 | -------------------------------------------------------------------------------- /src/icon_cache.rs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-only 2 | 3 | use cosmic::widget::icon; 4 | use std::collections::HashMap; 5 | 6 | #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] 7 | pub struct IconCacheKey { 8 | name: &'static str, 9 | size: u16, 10 | } 11 | 12 | pub struct IconCache { 13 | cache: HashMap, 14 | } 15 | 16 | impl IconCache { 17 | pub fn new() -> Self { 18 | let mut cache = HashMap::new(); 19 | 20 | macro_rules! bundle { 21 | ($name:expr, $size:expr) => { 22 | let data: &'static [u8] = include_bytes!(concat!("../res/icons/", $name, ".svg")); 23 | cache.insert( 24 | IconCacheKey { 25 | name: $name, 26 | size: $size, 27 | }, 28 | icon::from_svg_bytes(data).symbolic(true), 29 | ); 30 | }; 31 | } 32 | 33 | bundle!("edit-clear-symbolic", 16); 34 | bundle!("folder-open-symbolic", 16); 35 | bundle!("go-down-symbolic", 16); 36 | bundle!("go-next-symbolic", 16); 37 | bundle!("go-up-symbolic", 16); 38 | bundle!("list-add-symbolic", 16); 39 | bundle!("object-select-symbolic", 16); 40 | bundle!("replace-symbolic", 16); 41 | bundle!("replace-all-symbolic", 16); 42 | bundle!("window-close-symbolic", 16); 43 | 44 | Self { cache } 45 | } 46 | 47 | pub fn get(&mut self, name: &'static str, size: u16) -> icon::Icon { 48 | let handle = self 49 | .cache 50 | .entry(IconCacheKey { name, size }) 51 | .or_insert_with(|| icon::from_name(name).size(size).handle()) 52 | .clone(); 53 | icon::icon(handle).size(size) 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/key_bind.rs: -------------------------------------------------------------------------------- 1 | use cosmic::widget::menu::key_bind::{KeyBind, Modifier}; 2 | use cosmic::{iced::keyboard::Key, iced_core::keyboard::key::Named}; 3 | use std::collections::HashMap; 4 | 5 | use crate::Action; 6 | 7 | //TODO: load from config 8 | pub fn key_binds() -> HashMap { 9 | let mut key_binds = HashMap::new(); 10 | 11 | macro_rules! bind { 12 | ([$($modifier:ident),+ $(,)?], $key:expr, $action:ident) => {{ 13 | key_binds.insert( 14 | KeyBind { 15 | modifiers: vec![$(Modifier::$modifier),+], 16 | key: $key, 17 | }, 18 | Action::$action, 19 | ); 20 | }}; 21 | } 22 | 23 | bind!([Ctrl], Key::Character("w".into()), CloseFile); 24 | bind!([Ctrl], Key::Character("x".into()), Cut); 25 | bind!([Ctrl], Key::Character("c".into()), Copy); 26 | bind!([Ctrl], Key::Character("f".into()), Find); 27 | bind!([Ctrl], Key::Character("h".into()), FindAndReplace); 28 | bind!([Ctrl], Key::Character("v".into()), Paste); 29 | bind!([Ctrl], Key::Character("t".into()), NewFile); 30 | bind!([Ctrl], Key::Character("n".into()), NewWindow); 31 | bind!([Ctrl], Key::Character("o".into()), OpenFileDialog); 32 | bind!([Ctrl, Shift], Key::Character("O".into()), OpenProjectDialog); 33 | bind!([Ctrl], Key::Character("q".into()), Quit); 34 | bind!([Ctrl, Shift], Key::Character("Z".into()), Redo); 35 | bind!([Ctrl], Key::Character("s".into()), Save); 36 | bind!([Ctrl, Shift], Key::Character("S".into()), SaveAsDialog); 37 | bind!([Ctrl], Key::Character("a".into()), SelectAll); 38 | // Ctrl+0, Ctrl+-, and Ctrl+= are not special keys for terminals and are free to use 39 | bind!([Ctrl], Key::Character("0".into()), ZoomReset); 40 | bind!([Ctrl], Key::Character("-".into()), ZoomOut); 41 | bind!([Ctrl], Key::Character("=".into()), ZoomIn); 42 | bind!([Ctrl], Key::Character("+".into()), ZoomIn); 43 | 44 | bind!([Ctrl], Key::Character("1".into()), TabActivate0); 45 | bind!([Ctrl], Key::Character("2".into()), TabActivate1); 46 | bind!([Ctrl], Key::Character("3".into()), TabActivate2); 47 | bind!([Ctrl], Key::Character("4".into()), TabActivate3); 48 | bind!([Ctrl], Key::Character("5".into()), TabActivate4); 49 | bind!([Ctrl], Key::Character("6".into()), TabActivate5); 50 | bind!([Ctrl], Key::Character("7".into()), TabActivate6); 51 | bind!([Ctrl], Key::Character("8".into()), TabActivate7); 52 | bind!([Ctrl], Key::Character("9".into()), TabActivate8); 53 | bind!([Ctrl], Key::Named(Named::Tab), TabNext); 54 | bind!([Ctrl, Shift], Key::Named(Named::Tab), TabPrev); 55 | bind!( 56 | [Ctrl, Shift], 57 | Key::Character("G".into()), 58 | ToggleGitManagement 59 | ); 60 | bind!( 61 | [Ctrl, Shift], 62 | Key::Character("F".into()), 63 | ToggleProjectSearch 64 | ); 65 | bind!([Ctrl], Key::Character(",".into()), ToggleSettingsPage); 66 | bind!([Alt], Key::Character("z".into()), ToggleWordWrap); 67 | bind!([Ctrl], Key::Character("z".into()), Undo); 68 | 69 | key_binds 70 | } 71 | -------------------------------------------------------------------------------- /src/line_number.rs: -------------------------------------------------------------------------------- 1 | use cosmic_text::{ 2 | Align, Attrs, AttrsList, BufferLine, Family, FontSystem, LayoutLine, LineEnding, Shaping, Wrap, 3 | }; 4 | use std::collections::HashMap; 5 | 6 | #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] 7 | pub struct LineNumberKey { 8 | pub number: usize, 9 | pub width: usize, 10 | } 11 | 12 | #[derive(Debug)] 13 | pub struct LineNumberCache { 14 | cache: HashMap>, 15 | } 16 | 17 | impl LineNumberCache { 18 | pub fn new() -> Self { 19 | Self { 20 | cache: HashMap::new(), 21 | } 22 | } 23 | 24 | pub fn clear(&mut self) { 25 | self.cache.clear(); 26 | } 27 | 28 | pub fn get(&mut self, font_system: &mut FontSystem, key: LineNumberKey) -> &Vec { 29 | self.cache.entry(key).or_insert_with(|| { 30 | //TODO: do not repeat, used in App::init 31 | let attrs = Attrs::new().family(Family::Monospace); 32 | let text = format!("{:width$}", key.number, width = key.width); 33 | let mut buffer_line = BufferLine::new( 34 | text, 35 | LineEnding::default(), 36 | AttrsList::new(&attrs), 37 | Shaping::Advanced, 38 | ); 39 | buffer_line.set_align(Some(Align::Left)); 40 | buffer_line 41 | .layout( 42 | font_system, 43 | 1.0, /* font size adjusted later */ 44 | None, 45 | Wrap::None, 46 | None, 47 | 8, /* default tab width */ 48 | ) 49 | .to_vec() 50 | }) 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/localize.rs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-only 2 | 3 | use std::str::FromStr; 4 | use std::sync::OnceLock; 5 | 6 | use i18n_embed::{ 7 | fluent::{fluent_language_loader, FluentLanguageLoader}, 8 | DefaultLocalizer, LanguageLoader, Localizer, 9 | }; 10 | use icu_collator::{Collator, CollatorOptions, Numeric}; 11 | use icu_provider::DataLocale; 12 | use rust_embed::RustEmbed; 13 | 14 | #[derive(RustEmbed)] 15 | #[folder = "i18n/"] 16 | struct Localizations; 17 | 18 | pub static LANGUAGE_LOADER: OnceLock = OnceLock::new(); 19 | pub static LANGUAGE_SORTER: OnceLock = OnceLock::new(); 20 | 21 | #[macro_export] 22 | macro_rules! fl { 23 | ($message_id:literal) => {{ 24 | i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER.get().unwrap(), $message_id) 25 | }}; 26 | 27 | ($message_id:literal, $($args:expr),*) => {{ 28 | i18n_embed_fl::fl!($crate::localize::LANGUAGE_LOADER.get().unwrap(), $message_id, $($args), *) 29 | }}; 30 | } 31 | 32 | // Get the `Localizer` to be used for localizing this library. 33 | pub fn localizer() -> Box { 34 | LANGUAGE_LOADER.get_or_init(|| { 35 | let loader: FluentLanguageLoader = fluent_language_loader!(); 36 | 37 | loader 38 | .load_fallback_language(&Localizations) 39 | .expect("Error while loading fallback language"); 40 | 41 | loader 42 | }); 43 | 44 | Box::from(DefaultLocalizer::new( 45 | LANGUAGE_LOADER.get().unwrap(), 46 | &Localizations, 47 | )) 48 | } 49 | 50 | pub fn localize() { 51 | let localizer = localizer(); 52 | let requested_languages = i18n_embed::DesktopLanguageRequester::requested_languages(); 53 | 54 | if let Err(error) = localizer.select(&requested_languages) { 55 | eprintln!("Error while loading language for App List {}", error); 56 | } 57 | } 58 | 59 | pub fn sorter() -> &'static Collator { 60 | LANGUAGE_SORTER.get_or_init(|| { 61 | let mut options = CollatorOptions::new(); 62 | options.numeric = Some(Numeric::On); 63 | let localizer = localizer(); 64 | let language_loader = localizer.language_loader(); 65 | 66 | DataLocale::from_str(&language_loader.current_language().to_string()) 67 | .or_else(|_| DataLocale::from_str(&language_loader.fallback_language().to_string())) 68 | .ok() 69 | .and_then(|locale| Collator::try_new(&locale, options).ok()) 70 | .or_else(|| { 71 | let locale = DataLocale::from_str("en-US").expect("en-US is a valid BCP-47 tag"); 72 | Collator::try_new(&locale, options).ok() 73 | }) 74 | .expect("Creating a collator from the system's current language, the fallback language, or American English should succeed") 75 | }) 76 | } 77 | -------------------------------------------------------------------------------- /src/menu.rs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-only 2 | 3 | use cosmic::widget::menu::key_bind::KeyBind; 4 | use cosmic::widget::menu::{items as menu_items, root as menu_root, Item as MenuItem}; 5 | use cosmic::{ 6 | app::Core, 7 | iced::{widget::column, Background, Length}, 8 | iced_core::Border, 9 | widget::{ 10 | self, divider, horizontal_space, 11 | menu::{menu_button, ItemHeight, ItemWidth, MenuBar, Tree as MenuTree}, 12 | responsive_menu_bar, segmented_button, 13 | }, 14 | Element, 15 | }; 16 | use std::{collections::HashMap, path::PathBuf, sync::LazyLock}; 17 | 18 | use crate::{fl, Action, Config, ConfigState, Message}; 19 | 20 | static MENU_ID: LazyLock = 21 | LazyLock::new(|| cosmic::widget::Id::new("responsive-menu")); 22 | 23 | pub fn context_menu<'a>( 24 | key_binds: &HashMap, 25 | entity: segmented_button::Entity, 26 | ) -> Element<'a, Message> { 27 | let menu_item = |menu_label, menu_action| { 28 | let mut key = String::new(); 29 | for (key_bind, key_action) in key_binds.iter() { 30 | if key_action == &menu_action { 31 | key = key_bind.to_string(); 32 | break; 33 | } 34 | } 35 | menu_button(vec![ 36 | widget::text(menu_label).into(), 37 | horizontal_space().into(), 38 | widget::text(key).into(), 39 | ]) 40 | .on_press(Message::TabContextAction(entity, menu_action)) 41 | }; 42 | 43 | widget::container(column!( 44 | menu_item(fl!("undo"), Action::Undo), 45 | menu_item(fl!("redo"), Action::Redo), 46 | divider::horizontal::light(), 47 | menu_item(fl!("cut"), Action::Cut), 48 | menu_item(fl!("copy"), Action::Copy), 49 | menu_item(fl!("paste"), Action::Paste), 50 | menu_item(fl!("select-all"), Action::SelectAll), 51 | )) 52 | .padding(1) 53 | //TODO: move style to libcosmic 54 | .style(|theme| { 55 | let cosmic = theme.cosmic(); 56 | let component = &cosmic.background.component; 57 | widget::container::Style { 58 | icon_color: Some(component.on.into()), 59 | text_color: Some(component.on.into()), 60 | background: Some(Background::Color(component.base.into())), 61 | border: Border { 62 | radius: cosmic.radius_s().map(|x| x + 1.0).into(), 63 | width: 1.0, 64 | color: component.divider.into(), 65 | }, 66 | ..Default::default() 67 | } 68 | }) 69 | .width(Length::Fixed(240.0)) 70 | .into() 71 | } 72 | 73 | pub fn menu_bar<'a>( 74 | core: &Core, 75 | config: &Config, 76 | config_state: &ConfigState, 77 | key_binds: &HashMap, 78 | projects: &Vec<(String, PathBuf)>, 79 | ) -> Element<'a, Message> { 80 | //TODO: port to libcosmic 81 | let menu_tab_width = |tab_width: u16| { 82 | MenuItem::CheckBox( 83 | fl!("tab-width", tab_width = tab_width), 84 | None, 85 | config.tab_width == tab_width, 86 | Action::TabWidth(tab_width), 87 | ) 88 | }; 89 | 90 | let home_dir_opt = dirs::home_dir(); 91 | let format_path = |path: &PathBuf| -> String { 92 | if let Some(home_dir) = &home_dir_opt { 93 | if let Ok(part) = path.strip_prefix(home_dir) { 94 | return format!("~/{}", part.display()); 95 | } 96 | } 97 | path.display().to_string() 98 | }; 99 | 100 | let mut recent_files = Vec::with_capacity(config_state.recent_files.len()); 101 | for (i, path) in config_state.recent_files.iter().enumerate() { 102 | recent_files.push(MenuItem::Button( 103 | format_path(path), 104 | None, 105 | Action::OpenRecentFile(i), 106 | )); 107 | } 108 | 109 | let mut recent_projects = Vec::with_capacity(config_state.recent_projects.len()); 110 | for (i, path) in config_state.recent_projects.iter().enumerate() { 111 | recent_projects.push(MenuItem::Button( 112 | format_path(path), 113 | None, 114 | Action::OpenRecentProject(i), 115 | )); 116 | } 117 | 118 | let mut close_projects = Vec::with_capacity(projects.len()); 119 | for (project_i, (name, _path)) in projects.iter().enumerate() { 120 | close_projects.push(MenuItem::Button( 121 | name.clone(), 122 | None, 123 | Action::CloseProject(project_i), 124 | )); 125 | } 126 | 127 | responsive_menu_bar() 128 | .item_height(ItemHeight::Dynamic(40)) 129 | .item_width(ItemWidth::Uniform(320)) 130 | .spacing(4.0) 131 | .into_element( 132 | core, 133 | key_binds, 134 | MENU_ID.clone(), 135 | Message::Surface, 136 | vec![ 137 | ( 138 | (fl!("file")), 139 | vec![ 140 | MenuItem::Button(fl!("new-file"), None, Action::NewFile), 141 | MenuItem::Button(fl!("new-window"), None, Action::NewWindow), 142 | MenuItem::Divider, 143 | MenuItem::Button(fl!("open-file"), None, Action::OpenFileDialog), 144 | MenuItem::Folder(fl!("open-recent-file"), recent_files), 145 | MenuItem::Button(fl!("close-file"), None, Action::CloseFile), 146 | MenuItem::Divider, 147 | MenuItem::Button(fl!("menu-open-project"), None, Action::OpenProjectDialog), 148 | MenuItem::Folder(fl!("open-recent-project"), recent_projects), 149 | MenuItem::Folder(fl!("close-project"), close_projects), 150 | MenuItem::Divider, 151 | MenuItem::Button(fl!("save"), None, Action::Save), 152 | MenuItem::Button(fl!("save-as"), None, Action::SaveAsDialog), 153 | MenuItem::Divider, 154 | MenuItem::Button(fl!("revert-all-changes"), None, Action::RevertAllChanges), 155 | MenuItem::Divider, 156 | MenuItem::Button( 157 | fl!("menu-document-statistics"), 158 | None, 159 | Action::ToggleDocumentStatistics, 160 | ), 161 | //TODO MenuItem::Button(fl!("document-type"), Action::Todo), 162 | //TODO MenuItem::Button(fl!("encoding"), Action::Todo), 163 | MenuItem::Button( 164 | fl!("menu-git-management"), 165 | None, 166 | Action::ToggleGitManagement, 167 | ), 168 | //TODO MenuItem::Button(fl!("print"), Action::Todo), 169 | MenuItem::Divider, 170 | MenuItem::Button(fl!("quit"), None, Action::Quit), 171 | ], 172 | ), 173 | ( 174 | (fl!("edit")), 175 | vec![ 176 | MenuItem::Button(fl!("undo"), None, Action::Undo), 177 | MenuItem::Button(fl!("redo"), None, Action::Redo), 178 | MenuItem::Divider, 179 | MenuItem::Button(fl!("cut"), None, Action::Cut), 180 | MenuItem::Button(fl!("copy"), None, Action::Copy), 181 | MenuItem::Button(fl!("paste"), None, Action::Paste), 182 | MenuItem::Button(fl!("select-all"), None, Action::SelectAll), 183 | MenuItem::Divider, 184 | MenuItem::Button(fl!("find"), None, Action::Find), 185 | MenuItem::Button(fl!("replace"), None, Action::FindAndReplace), 186 | MenuItem::Button(fl!("find-in-project"), None, Action::ToggleProjectSearch), 187 | /*TODO: implement spell-check 188 | MenuItem::Divider, 189 | MenuItem::Button(fl!("spell-check"), None, Action::Todo), 190 | */ 191 | ], 192 | ), 193 | ( 194 | (fl!("view")), 195 | vec![ 196 | MenuItem::Folder( 197 | fl!("indentation"), 198 | vec![ 199 | MenuItem::CheckBox( 200 | fl!("automatic-indentation"), 201 | None, 202 | config.auto_indent, 203 | Action::ToggleAutoIndent, 204 | ), 205 | MenuItem::Divider, 206 | menu_tab_width(1), 207 | menu_tab_width(2), 208 | menu_tab_width(3), 209 | menu_tab_width(4), 210 | menu_tab_width(5), 211 | menu_tab_width(6), 212 | menu_tab_width(7), 213 | menu_tab_width(8), 214 | //TODO MenuItem::Divider, 215 | //TODO MenuItem::Button(fl!("convert-indentation-to-spaces"), Action::Todo), 216 | //TODO MenuItem::Button(fl!("convert-indentation-to-tabs"), Action::Todo), 217 | ], 218 | ), 219 | MenuItem::Divider, 220 | MenuItem::Button(fl!("zoom-in"), None, Action::ZoomIn), 221 | MenuItem::Button(fl!("default-size"), None, Action::ZoomReset), 222 | MenuItem::Button(fl!("zoom-out"), None, Action::ZoomOut), 223 | MenuItem::Divider, 224 | MenuItem::CheckBox( 225 | fl!("word-wrap"), 226 | None, 227 | config.word_wrap, 228 | Action::ToggleWordWrap, 229 | ), 230 | MenuItem::CheckBox( 231 | fl!("show-line-numbers"), 232 | None, 233 | config.line_numbers, 234 | Action::ToggleLineNumbers, 235 | ), 236 | MenuItem::CheckBox( 237 | fl!("highlight-current-line"), 238 | None, 239 | config.highlight_current_line, 240 | Action::ToggleHighlightCurrentLine, 241 | ), 242 | //TODO: MenuItem::CheckBox(fl!("syntax-highlighting"), Action::Todo), 243 | MenuItem::Divider, 244 | MenuItem::Button(fl!("menu-settings"), None, Action::ToggleSettingsPage), 245 | //TODO MenuItem::Divider, 246 | //TODO MenuItem::Button(fl!("menu-keyboard-shortcuts"), Action::Todo), 247 | MenuItem::Divider, 248 | MenuItem::Button(fl!("menu-about"), None, Action::About), 249 | ], 250 | ), 251 | ], 252 | ) 253 | } 254 | -------------------------------------------------------------------------------- /src/project.rs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-only 2 | 3 | use cosmic::widget::icon; 4 | use cosmic_files::mime_icon::{mime_for_path, mime_icon}; 5 | use std::{ 6 | cmp::Ordering, 7 | fs, io, 8 | path::{Path, PathBuf}, 9 | }; 10 | 11 | use crate::icon_cache_get; 12 | 13 | #[derive(Clone, Debug, Eq, PartialEq)] 14 | pub enum ProjectNode { 15 | Folder { 16 | name: String, 17 | path: PathBuf, 18 | open: bool, 19 | root: bool, 20 | }, 21 | File { 22 | name: String, 23 | path: PathBuf, 24 | }, 25 | } 26 | 27 | impl ProjectNode { 28 | pub fn new>(path: P) -> io::Result { 29 | let path = fs::canonicalize(path)?; 30 | let name = path 31 | .file_name() 32 | .ok_or(io::Error::new( 33 | io::ErrorKind::Other, 34 | format!("path {:?} has no file name", path), 35 | ))? 36 | .to_str() 37 | .ok_or(io::Error::new( 38 | io::ErrorKind::Other, 39 | format!("path {:?} is not valid UTF-8", path), 40 | ))? 41 | .to_string(); 42 | Ok(if path.is_dir() { 43 | Self::Folder { 44 | path, 45 | name, 46 | open: false, 47 | root: false, 48 | } 49 | } else { 50 | Self::File { path, name } 51 | }) 52 | } 53 | 54 | pub fn icon(&self, size: u16) -> icon::Icon { 55 | match self { 56 | //TODO: different icon for project root? 57 | Self::Folder { open, .. } => { 58 | if *open { 59 | icon_cache_get("go-down-symbolic", size) 60 | } else { 61 | icon_cache_get("go-next-symbolic", size) 62 | } 63 | } 64 | Self::File { path, .. } => icon::icon(mime_icon(mime_for_path(path), size)).size(size), 65 | } 66 | } 67 | 68 | pub fn name(&self) -> &str { 69 | match self { 70 | Self::Folder { name, .. } => name, 71 | Self::File { name, .. } => name, 72 | } 73 | } 74 | } 75 | 76 | impl Ord for ProjectNode { 77 | fn cmp(&self, other: &Self) -> Ordering { 78 | match self { 79 | // Folders are always before files 80 | Self::Folder { .. } => { 81 | if let Self::File { .. } = other { 82 | return Ordering::Less; 83 | } 84 | } 85 | // Files are always after folders 86 | Self::File { .. } => { 87 | if let Self::Folder { .. } = other { 88 | return Ordering::Greater; 89 | } 90 | } 91 | } 92 | crate::localize::sorter().compare(self.name(), other.name()) 93 | } 94 | } 95 | 96 | impl PartialOrd for ProjectNode { 97 | fn partial_cmp(&self, other: &Self) -> Option { 98 | Some(self.cmp(other)) 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /src/search.rs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-only 2 | 3 | use grep::matcher::{Match, Matcher}; 4 | use grep::regex::RegexMatcher; 5 | use grep::searcher::{sinks::UTF8, Searcher}; 6 | use std::path::PathBuf; 7 | 8 | #[derive(Clone, Debug, Eq, PartialEq)] 9 | pub struct LineSearchResult { 10 | pub number: usize, 11 | pub text: String, 12 | pub first: Match, 13 | } 14 | 15 | #[derive(Clone, Debug, Eq, PartialEq)] 16 | pub struct FileSearchResult { 17 | pub path: PathBuf, 18 | pub lines: Vec, 19 | } 20 | 21 | #[derive(Clone, Debug, Eq, PartialEq)] 22 | pub struct ProjectSearchResult { 23 | //TODO: should this be included? 24 | pub value: String, 25 | pub in_progress: bool, 26 | pub files: Vec, 27 | } 28 | 29 | impl ProjectSearchResult { 30 | pub fn search_projects(&mut self, projects: Vec<(String, PathBuf)>) { 31 | //TODO: support literal search 32 | //TODO: use ignore::WalkParallel? 33 | match RegexMatcher::new(&self.value) { 34 | Ok(matcher) => { 35 | let mut searcher = Searcher::new(); 36 | let mut walk_builder_opt: Option = None; 37 | for (_, project_path) in projects.iter() { 38 | walk_builder_opt = match walk_builder_opt.take() { 39 | Some(mut walk_builder) => { 40 | walk_builder.add(project_path); 41 | Some(walk_builder) 42 | } 43 | None => Some(ignore::WalkBuilder::new(project_path)), 44 | }; 45 | } 46 | 47 | if let Some(walk_builder) = walk_builder_opt { 48 | for entry_res in walk_builder.build() { 49 | let entry = match entry_res { 50 | Ok(ok) => ok, 51 | Err(err) => { 52 | log::error!("failed to walk projects {:?}: {}", projects, err); 53 | continue; 54 | } 55 | }; 56 | 57 | if let Some(file_type) = entry.file_type() { 58 | if file_type.is_dir() { 59 | continue; 60 | } 61 | } 62 | 63 | let entry_path = entry.path(); 64 | 65 | let mut lines = Vec::new(); 66 | match searcher.search_path( 67 | &matcher, 68 | entry_path, 69 | UTF8(|number_u64, text| { 70 | match usize::try_from(number_u64) { 71 | Ok(number) => match matcher.find(text.as_bytes()) { 72 | Ok(Some(first)) => { 73 | lines.push(LineSearchResult { 74 | number, 75 | text: text.to_string(), 76 | first, 77 | }); 78 | }, 79 | Ok(None) => { 80 | log::error!("first match in file {:?} line {} not found", entry_path, number); 81 | } 82 | Err(err) => { 83 | log::error!("failed to find first match in file {:?} line {}: {}", entry_path, number, err); 84 | } 85 | }, 86 | Err(err) => { 87 | log::error!("failed to convert file {:?} line {} to usize: {}", entry_path, number_u64, err); 88 | } 89 | } 90 | Ok(true) 91 | }), 92 | ) { 93 | Ok(()) => { 94 | if !lines.is_empty() { 95 | self.files.push(FileSearchResult { 96 | path: entry_path.to_path_buf(), 97 | lines, 98 | }); 99 | } 100 | } 101 | Err(err) => { 102 | log::error!("failed to search file {:?}: {}", entry_path, err); 103 | } 104 | } 105 | } 106 | } 107 | } 108 | Err(err) => { 109 | log::error!( 110 | "failed to create regex matcher with value {:?}: {}", 111 | self.value, 112 | err 113 | ); 114 | } 115 | } 116 | self.in_progress = false; 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /src/tab.rs: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: GPL-3.0-only 2 | 3 | use cosmic::{ 4 | iced::{advanced::graphics::text::font_system, Point}, 5 | widget::icon, 6 | }; 7 | use cosmic_files::mime_icon::{mime_for_path, mime_icon, FALLBACK_MIME_ICON}; 8 | use cosmic_text::{Attrs, Buffer, Cursor, Edit, Selection, Shaping, SyntaxEditor, ViEditor, Wrap}; 9 | use notify::Watcher; 10 | use regex::Regex; 11 | use std::{ 12 | fs, 13 | io::Write, 14 | path::PathBuf, 15 | process::{Command, Stdio}, 16 | sync::{Arc, Mutex}, 17 | }; 18 | 19 | use crate::{fl, git::GitDiff, Config, SYNTAX_SYSTEM}; 20 | 21 | pub enum Tab { 22 | Editor(EditorTab), 23 | GitDiff(GitDiffTab), 24 | } 25 | 26 | impl Tab { 27 | pub fn title(&self) -> String { 28 | match self { 29 | Self::Editor(tab) => tab.title(), 30 | Self::GitDiff(tab) => tab.title.clone(), 31 | } 32 | } 33 | } 34 | 35 | pub struct GitDiffTab { 36 | pub title: String, 37 | pub diff: GitDiff, 38 | } 39 | 40 | pub struct EditorTab { 41 | pub path_opt: Option, 42 | attrs: Attrs<'static>, 43 | pub editor: Mutex>, 44 | pub context_menu: Option, 45 | pub zoom_adj: i8, 46 | } 47 | 48 | impl EditorTab { 49 | pub fn new(config: &Config) -> Self { 50 | //TODO: do not repeat, used in App::init 51 | let attrs = Attrs::new().family(cosmic_text::Family::Monospace); 52 | let zoom_adj = Default::default(); 53 | let mut buffer = Buffer::new_empty(config.metrics(zoom_adj)); 54 | buffer.set_text( 55 | font_system().write().unwrap().raw(), 56 | "", 57 | &attrs, 58 | Shaping::Advanced, 59 | ); 60 | 61 | let editor = SyntaxEditor::new( 62 | Arc::new(buffer), 63 | SYNTAX_SYSTEM.get().unwrap(), 64 | config.syntax_theme(), 65 | ) 66 | .unwrap(); 67 | 68 | let mut tab = Self { 69 | path_opt: None, 70 | attrs, 71 | editor: Mutex::new(ViEditor::new(editor)), 72 | context_menu: None, 73 | zoom_adj, 74 | }; 75 | 76 | // Update any other config settings 77 | tab.set_config(config); 78 | 79 | tab 80 | } 81 | 82 | pub fn set_config(&mut self, config: &Config) { 83 | let mut editor = self.editor.lock().unwrap(); 84 | let mut font_system = font_system().write().unwrap(); 85 | let mut editor = editor.borrow_with(font_system.raw()); 86 | editor.set_auto_indent(config.auto_indent); 87 | editor.set_passthrough(!config.vim_bindings); 88 | editor.set_tab_width(config.tab_width); 89 | editor.with_buffer_mut(|buffer| { 90 | buffer.set_wrap(if config.word_wrap { 91 | Wrap::WordOrGlyph 92 | } else { 93 | Wrap::None 94 | }) 95 | }); 96 | //TODO: dynamically discover light/dark changes 97 | editor.update_theme(config.syntax_theme()); 98 | } 99 | 100 | pub fn open(&mut self, path: PathBuf) { 101 | let mut editor = self.editor.lock().unwrap(); 102 | let mut font_system = font_system().write().unwrap(); 103 | let mut editor = editor.borrow_with(font_system.raw()); 104 | match editor.load_text(&path, self.attrs.clone()) { 105 | Ok(()) => { 106 | log::info!("opened {:?}", path); 107 | self.path_opt = match fs::canonicalize(&path) { 108 | Ok(ok) => Some(ok), 109 | Err(err) => { 110 | log::error!("failed to canonicalize {:?}: {}", path, err); 111 | Some(path) 112 | } 113 | }; 114 | } 115 | Err(err) => { 116 | log::error!("failed to open {:?}: {}", path, err); 117 | self.path_opt = None; 118 | } 119 | } 120 | } 121 | 122 | pub fn reload(&mut self) { 123 | let mut editor = self.editor.lock().unwrap(); 124 | let mut font_system = font_system().write().unwrap(); 125 | let mut editor = editor.borrow_with(font_system.raw()); 126 | if let Some(path) = &self.path_opt { 127 | // Save scroll 128 | let scroll = editor.with_buffer(|buffer| buffer.scroll()); 129 | //TODO: save/restore more? 130 | 131 | match editor.load_text(path, self.attrs.clone()) { 132 | Ok(()) => { 133 | log::info!("reloaded {:?}", path); 134 | 135 | // Clear changed state 136 | editor.set_changed(false); 137 | } 138 | Err(err) => { 139 | log::error!("failed to reload {:?}: {}", path, err); 140 | } 141 | } 142 | 143 | // Restore scroll 144 | editor.with_buffer_mut(|buffer| buffer.set_scroll(scroll)); 145 | } else { 146 | log::warn!("tried to reload with no path"); 147 | } 148 | } 149 | 150 | pub fn save(&mut self) { 151 | if let Some(path) = &self.path_opt { 152 | let mut editor = self.editor.lock().unwrap(); 153 | let mut text = String::new(); 154 | 155 | editor.with_buffer(|buffer| { 156 | for line in buffer.lines.iter() { 157 | text.push_str(line.text()); 158 | text.push_str(line.ending().as_str()); 159 | } 160 | }); 161 | 162 | match fs::write(path, &text) { 163 | Ok(()) => { 164 | editor.save_point(); 165 | log::info!("saved {:?}", path); 166 | } 167 | Err(err) => { 168 | if err.kind() == std::io::ErrorKind::PermissionDenied { 169 | log::warn!("Permission denied. Attempting to save with pkexec."); 170 | 171 | if let Ok(mut output) = Command::new("pkexec") 172 | .arg("tee") 173 | .arg(path) 174 | .stdin(Stdio::piped()) 175 | .stdout(Stdio::null()) // Redirect stdout to /dev/null 176 | .stderr(Stdio::inherit()) // Retain stderr for error visibility 177 | .spawn() 178 | { 179 | if let Some(mut stdin) = output.stdin.take() { 180 | if let Err(e) = stdin.write_all(text.as_bytes()) { 181 | log::error!("Failed to write to stdin: {}", e); 182 | } 183 | } else { 184 | log::error!("Failed to access stdin of pkexec process."); 185 | } 186 | 187 | // Ensure the child process is reaped 188 | match output.wait() { 189 | Ok(status) => { 190 | if status.success() { 191 | // Mark the editor's state as saved if the process succeeds 192 | editor.save_point(); 193 | log::info!("File saved successfully with pkexec."); 194 | } else { 195 | log::error!( 196 | "pkexec process exited with a non-zero status: {:?}", 197 | status 198 | ); 199 | } 200 | } 201 | Err(e) => { 202 | log::error!("Failed to wait on pkexec process: {}", e); 203 | } 204 | } 205 | } else { 206 | log::error!( 207 | "Failed to spawn pkexec process. Check permissions or path." 208 | ); 209 | } 210 | } 211 | } 212 | } 213 | } else { 214 | log::warn!("tab has no path yet"); 215 | } 216 | } 217 | 218 | pub fn watch(&self, watcher_opt: &mut Option) { 219 | if let Some(path) = &self.path_opt { 220 | if let Some(watcher) = watcher_opt { 221 | match watcher.watch(path, notify::RecursiveMode::NonRecursive) { 222 | Ok(()) => { 223 | log::info!("watching {:?} for changes", path); 224 | } 225 | Err(err) => { 226 | log::warn!("failed to watch {:?} for changes: {:?}", path, err); 227 | } 228 | } 229 | } 230 | } 231 | } 232 | 233 | pub fn changed(&self) -> bool { 234 | let editor = self.editor.lock().unwrap(); 235 | editor.changed() 236 | } 237 | 238 | pub fn icon(&self, size: u16) -> icon::Icon { 239 | match &self.path_opt { 240 | Some(path) => icon::icon(mime_icon(mime_for_path(path), size)).size(size), 241 | None => icon::from_name(FALLBACK_MIME_ICON).size(size).icon(), 242 | } 243 | } 244 | 245 | pub fn title(&self) -> String { 246 | //TODO: show full title when there is a conflict 247 | if let Some(path) = &self.path_opt { 248 | match path.file_name() { 249 | Some(file_name_os) => match file_name_os.to_str() { 250 | Some(file_name) => match file_name { 251 | "mod.rs" => title_with_parent(path, file_name), 252 | _ => file_name.to_string(), 253 | }, 254 | None => format!("{}", path.display()), 255 | }, 256 | None => format!("{}", path.display()), 257 | } 258 | } else { 259 | fl!("new-document") 260 | } 261 | } 262 | 263 | pub fn replace(&self, regex: &Regex, replace: &str, wrap_around: bool) -> bool { 264 | let mut editor = self.editor.lock().unwrap(); 265 | let mut cursor = editor.cursor(); 266 | let mut wrapped = false; // Keeps track of whether the search has wrapped around yet. 267 | let start_line = cursor.line; 268 | while cursor.line < editor.with_buffer(|buffer| buffer.lines.len()) { 269 | if let Some((index, len)) = editor.with_buffer(|buffer| { 270 | regex 271 | .find_iter(buffer.lines[cursor.line].text()) 272 | .filter_map(|m| { 273 | if cursor.line != start_line 274 | || m.start() >= cursor.index 275 | || m.start() < cursor.index && wrapped == true 276 | { 277 | Some((m.start(), m.len())) 278 | } else { 279 | None 280 | } 281 | }) 282 | .next() 283 | }) { 284 | cursor.index = index; 285 | let mut end = cursor; 286 | end.index = index + len; 287 | 288 | editor.start_change(); 289 | // if index = 0 and len = 0, we are targeting and deleting an empty line 290 | // we'll move either cursor or end to delete the newline 291 | if index == 0 && len == 0 { 292 | if cursor.line > 0 { 293 | // move the cursor up one line 294 | cursor.line -= 1; 295 | cursor.index = 296 | editor.with_buffer(|buffer| buffer.lines[cursor.line].text().len()); 297 | } else if cursor.line + 1 < editor.with_buffer(|buffer| buffer.lines.len()) { 298 | // move the end down one line 299 | end.line += 1; 300 | end.index = 0; 301 | } 302 | } 303 | editor.delete_range(cursor, end); 304 | cursor = editor.insert_at(cursor, replace, None); 305 | editor.set_cursor(cursor); 306 | // Need to disable selection to prevent the new cursor showing selection to old location 307 | editor.set_selection(Selection::None); 308 | editor.finish_change(); 309 | return true; 310 | } 311 | 312 | cursor.line += 1; 313 | 314 | // If we haven't wrapped yet and we've reached the last line, reset cursor line to 0 and 315 | // set wrapped to true so we don't wrap again 316 | if wrap_around 317 | && !wrapped 318 | && cursor.line == editor.with_buffer(|buffer| buffer.lines.len()) 319 | { 320 | cursor.line = 0; 321 | wrapped = true; 322 | } 323 | } 324 | false 325 | } 326 | 327 | pub fn zoom_adj(&self) -> i8 { 328 | self.zoom_adj 329 | } 330 | 331 | pub fn set_zoom_adj(&mut self, value: i8) { 332 | self.zoom_adj = value; 333 | } 334 | 335 | // Code adapted from cosmic-text ViEditor search 336 | pub fn search(&self, regex: &Regex, forwards: bool, wrap_around: bool) -> bool { 337 | let mut editor = self.editor.lock().unwrap(); 338 | let mut cursor = editor.cursor(); 339 | let mut wrapped = false; // Keeps track of whether the search has wrapped around yet. 340 | let start_line = cursor.line; 341 | let current_selection = editor.selection(); 342 | 343 | if forwards { 344 | while cursor.line < editor.with_buffer(|buffer| buffer.lines.len()) { 345 | if let Some((start, end)) = editor.with_buffer(|buffer| { 346 | regex 347 | .find_iter(buffer.lines[cursor.line].text()) 348 | .filter_map(|m| { 349 | if cursor.line != start_line 350 | || m.start() > cursor.index 351 | || m.start() == cursor.index && current_selection == Selection::None 352 | || m.start() < cursor.index && wrapped == true 353 | { 354 | Some((m.start(), m.end())) 355 | } else { 356 | None 357 | } 358 | }) 359 | .next() 360 | }) { 361 | cursor.index = start; 362 | editor.set_cursor(cursor); 363 | 364 | // Highlight searched text 365 | let selection = Selection::Normal(Cursor::new(cursor.line, end)); 366 | editor.set_selection(selection); 367 | 368 | return true; 369 | } 370 | 371 | cursor.line += 1; 372 | 373 | // If we haven't wrapped yet and we've reached the last line, reset cursor line to 0 and 374 | // set wrapped to true so we don't wrap again 375 | if wrap_around 376 | && !wrapped 377 | && cursor.line == editor.with_buffer(|buffer| buffer.lines.len()) 378 | { 379 | cursor.line = 0; 380 | wrapped = true; 381 | } 382 | } 383 | } else { 384 | cursor.line += 1; 385 | while cursor.line > 0 { 386 | cursor.line -= 1; 387 | 388 | if let Some((start, end)) = editor.with_buffer(|buffer| { 389 | regex 390 | .find_iter(buffer.lines[cursor.line].text()) 391 | .filter_map(|m| { 392 | if cursor.line != start_line 393 | || m.start() < cursor.index 394 | || m.start() == cursor.index && current_selection == Selection::None 395 | || m.start() > cursor.index && wrapped == true 396 | { 397 | Some((m.start(), m.end())) 398 | } else { 399 | None 400 | } 401 | }) 402 | .last() 403 | }) { 404 | cursor.index = start; 405 | editor.set_cursor(cursor); 406 | 407 | // Highlight searched text 408 | let selection = Selection::Normal(Cursor::new(cursor.line, end)); 409 | editor.set_selection(selection); 410 | 411 | return true; 412 | } 413 | 414 | // If we haven't wrapped yet and we've reached the first line, reset cursor line to the 415 | // last line and set wrapped to true so we don't wrap again 416 | if wrap_around && !wrapped && cursor.line == 0 { 417 | cursor.line = editor.with_buffer(|buffer| buffer.lines.len()); 418 | wrapped = true; 419 | } 420 | } 421 | } 422 | false 423 | } 424 | } 425 | 426 | /// Includes parent name in tab title 427 | /// 428 | /// Useful for distinguishing between Rust modules named `mod.rs` 429 | fn title_with_parent(path: &std::path::Path, file_name: &str) -> String { 430 | let parent_name = path 431 | .parent() 432 | .and_then(|path| path.file_name()) 433 | .and_then(|os_str| os_str.to_str()); 434 | 435 | match parent_name { 436 | Some(parent) => [parent, "/", file_name].concat(), 437 | None => file_name.to_string(), 438 | } 439 | } 440 | --------------------------------------------------------------------------------