Compare commits

...
Sign in to create a new pull request.

72 commits

Author SHA1 Message Date
936e57b63e chore: fige Cargo.lock (epoch-1.9.0, [patch] locaux)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 21:03:54 +02:00
c45b23aa85 merge: epoch-1.9.0 d'upstream
# Conflicts:
#	Cargo.lock
2026-09-24 20:50:47 +02:00
Hojjat
bfc98bf219 chore: update libcosmic to fix esc, and bindings in context menu 2026-09-23 11:30:54 -06:00
Michael Aaron Murphy
14aba66228 chore: update debian/rules 2026-09-16 16:28:59 -04:00
Michael Aaron Murphy
430120f6ff chore: update cosmic-files and libcosmic 2026-09-16 16:28:59 -04:00
Hojjat
9307793661 feat: use libcosmic's context_menu widget 2026-09-16 16:28:59 -04:00
Hojjat
505ecd18fe chore: adopt typed surface actions from libcosmic 2026-09-16 16:28:59 -04:00
Michael Aaron Murphy
4b4871ecf4 Epoch 1.9.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-09-16 16:28:59 -04:00
Michael Murphy
1054b6a7fd
i18n: translation update from Hosted Weblate (#616)
Translations update from [Hosted Weblate](https://hosted.weblate.org)
for [Pop OS/COSMIC
Edit](https://hosted.weblate.org/projects/pop-os/cosmic-edit/).



Current translation status:

![Weblate translation
status](https://hosted.weblate.org/widget/pop-os/cosmic-edit/matrix-auto.svg)
2026-09-15 21:56:46 +02:00
Hosted Weblate
139cfaaf5c
i18n: translation updates from weblate
Co-authored-by: Amadɣas <massiin@proton.me>
Co-authored-by: Blauen <butterflee555@gmail.com>
Co-authored-by: CYAXXX <85353920+CYAXXX@users.noreply.github.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kurt Harren Catindig <kurtharrencatindig03@gmail.com>
Co-authored-by: Quentin PAGÈS <quentinantonin@free.fr>
Co-authored-by: Satakun Utama <galaxytomostore@gmail.com>
Co-authored-by: VandaL <vandalhj@gmail.com>
Co-authored-by: therealmate <hellogaming91@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/hu/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/kab/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/kmr/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/oc/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/pl/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/th/
Translation: Pop OS/COSMIC Edit
2026-09-13 01:54:35 +02:00
85da7f90f2 chore: fige Cargo.lock 2026-09-10 18:12:37 +02:00
70c1765b1f Merge tag 'epoch-1.8.0' into local/libcosmic-path-patch
Epoch 1.8.0

# Conflicts:
#	Cargo.lock
2026-09-10 17:57:28 +02:00
20c47377a8 chore: fige Cargo.lock (reordonnancement patch.unused par cargo) 2026-09-04 10:48:53 +02:00
Jeremy Soller
26f6ffd3e6 Epoch 1.8.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-09-03 13:18:38 -06:00
6150549a9b chore: fige Cargo.lock tel que resolu apres le merge 1.7.0
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 07:58:51 +02:00
de9ae6890a Merge tag 'epoch-1.7.0' into local/libcosmic-path-patch
Epoch 1.7.0
2026-08-27 07:50:01 +02:00
Jeremy Soller
13b1d4aac0 Epoch 1.7.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-08-25 11:39:01 -06:00
Michael Murphy
6c800ce1f1
i18n: translation update from Hosted Weblate (#610)
Translations update from [Hosted Weblate](https://hosted.weblate.org)
for [Pop OS/COSMIC
Edit](https://hosted.weblate.org/projects/pop-os/cosmic-edit/).



Current translation status:

![Weblate translation
status](https://hosted.weblate.org/widget/pop-os/cosmic-edit/matrix-auto.svg)
2026-08-24 20:52:37 +02:00
Jeremy Soller
0e9c927f1a
Fix tab auto focus on TabCloseForce (#603)
Auto focus should only trigger if the current tab is selected or else
closing an unfocused tab would move the focused tab.

See: pop-os/cosmic-files#1949

- [x] I have disclosed use of any AI generated code in my commit
messages.
- If you are using an LLM, and do not fully understand the changes it is
making to the code base, do not create a PR.
- In our experience, AI generated code often results in overly complex
code that lacks enough context for a proper fix or feature inclusion.
This results in considerably longer code reviews. Due to this, AI
authored or partially authored PRs may be closed without comment.
- [x] I understand these changes in full and will be able to respond to
review comments.
- [x] My change is accurately described in the commit message.
- [x] My contribution is tested and working as described.
- [x] I have read the [Developer Certificate of
Origin](https://developercertificate.org/) and certify my contribution
under its conditions.
2026-08-20 19:02:21 -06:00
Jeremy Soller
b23384043e
feat: disable Cut and Copy buttons when no text is selected (#588)
- [x] I have disclosed use of any AI generated code in my commit
messages.
- If you are using an LLM, and do not fully understand the changes it is
making to the code base, do not create a PR.
- In our experience, AI generated code often results in overly complex
code that lacks enough context for a proper fix or feature inclusion.
This results in considerably longer code reviews. Due to this, AI
authored or partially authored PRs may be closed without comment.
- [x] I understand these changes in full and will be able to respond to
review comments.
- [x] My change is accurately described in the commit message.
- [x] My contribution is tested and working as described.
- [x] I have read the [Developer Certificate of
Origin](https://developercertificate.org/) and certify my contribution
under its conditions.
2026-08-20 19:01:35 -06:00
36d66d7ef2 Merge remote-tracking branch 'upstream/master' into local/libcosmic-path-patch
# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	src/menu.rs
#	src/text_box.rs
2026-08-19 21:59:53 +02:00
Hosted Weblate
4a5be62b02
i18n: translation updates from weblate
Co-authored-by: Jens Peter Nielsen <mail@jp-nielsen.dk>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/da/
Translation: Pop OS/COSMIC Edit
2026-08-19 09:52:58 +00:00
nicole mikołajczyk
8c9c15de85 feat: disable Cut and Copy buttons when no text is selected
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
2026-08-18 15:49:12 -06:00
Jeremy Soller
0f725de5e6
Epoch 1.6.0 version update (#609)
Generated by cosmic-epoch scripts/version-update.sh
2026-08-18 15:25:10 -06:00
Jeremy Soller
1727fe3108 Epoch 1.6.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-08-18 14:14:57 -06:00
Jeremy Soller
98191e32c7
Better efficiency (fewer redraws) and context menu in input fields (#604)
Depends on 
- [x] https://github.com/pop-os/iced/pull/377
- [x] https://github.com/pop-os/libcosmic/pull/1382
- [x] https://github.com/pop-os/libcosmic/pull/1387
- [x] https://github.com/pop-os/cosmic-files/pull/1815



This pulls the changes in Iced and libcosmic that removes "redraw on any
message", which means moving the cursor doesn't automatically call a
redraw, widgets need to ask for it. I have found all places that
previously was working normally because we were redrawing almost
unconditionally. But it is possible that a custom widget somewhere still
isn't asking for a redraw explicitly when its state changes. So, for QA
I'd keep an eye on that.

For example I found that moving the cursor to middle of a word and
pressing delete doesn't redraw, because we only redraw if the cursor
changes position. Or pressing ctrl+a and then backspace doesn't redraw
for the same reason. Or double-click to select a text wasn't drawing the
selection. I have fixed those, but just examples for the QA team to
check.

Demo:


https://github.com/user-attachments/assets/5e5940a8-fd89-498a-8670-85d540fcaa72


___
- [x] I have disclosed use of any AI generated code in my commit
messages.
- If you are using an LLM, and do not fully understand the changes it is
making to the code base, do not create a PR.
- In our experience, AI generated code often results in overly complex
code that lacks enough context for a proper fix or feature inclusion.
This results in considerably longer code reviews. Due to this, AI
authored or partially authored PRs may be closed without comment.
- [x] I understand these changes in full and will be able to respond to
review comments.
- [x] My change is accurately described in the commit message.
- [x] My contribution is tested and working as described.
- [x] I have read the [Developer Certificate of
Origin](https://developercertificate.org/) and certify my contribution
under its conditions.
2026-08-18 14:14:43 -06:00
Hojjat
067e2e0441 chore: update libcosmic and cosmic-files 2026-08-18 07:26:03 -06:00
Michael Murphy
3f2c1af3fa
i18n: translation update from Hosted Weblate (#601) 2026-08-18 14:08:59 +02:00
Hosted Weblate
8b3cff1afd
i18n: translation updates from weblate
Co-authored-by: Andi Chandler <andi@gowling.com>
Co-authored-by: CodeBeats <nicholai67@hotmail.com>
Co-authored-by: Feike Donia <feikedonia@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Martin Meizoso <martinmeizoso@gmail.com>
Co-authored-by: Michael Millet <mikevlet@protonmail.com>
Co-authored-by: Prasanta-Hembram <Prasantahembram720@gmail.com>
Co-authored-by: Quentin PAGÈS <quentinantonin@free.fr>
Co-authored-by: Sproston <ojspr2007@gmail.com>
Co-authored-by: Steen Rabol <steen@rabol.dev>
Co-authored-by: Walter William Beckerleg Bruckman <spayk.99@protonmail.com>
Co-authored-by: Wilbur Lindqvist <william@willmantrade.com>
Co-authored-by: lucamosca1 <luca.moscato@gmail.com>
Co-authored-by: sicKat <giuseppecatillo2003@gmail.com>
Co-authored-by: therealmate <hellogaming91@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/da/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/en_GB/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/fi/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/gl/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/hu/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/it/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/oc/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/pt_BR/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/sat/
Translation: Pop OS/COSMIC Edit
2026-08-17 06:51:31 +00:00
Hojjat
aad6c21ab4 fix: request redraw when editor needs to redraw
chore: update libcosmic

fix: redraw when deleting text where cursor doesn't move

editor only redraws if the action causes the cursor to move.
ctrl+a+backspace or presseing delete doesn't move the cursor.
2026-08-10 10:26:54 -06:00
Josh Megnauth
e4006945c6
Fix tab auto focus on TabCloseForce
Auto focus should only trigger if the current tab is selected or else
closing an unfocused tab would move the focused tab.

See: pop-os/cosmic-files#1949
2026-08-01 20:11:53 -04:00
542d943211 chore: normalize the libcosmic-yoda dependency idiom
Key the local libcosmic fork as `cosmic` with `package =
"libcosmic-yoda"` rather than keying it by package name, so every repo
in the local stack declares it the same way. The extern name stays
`cosmic` either way, so no source change is needed; the feature strings
move with the key.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 12:14:30 +02:00
Jeremy Soller
4ac0da3af9
Epoch 1.5.0 version update (#600)
Generated by cosmic-epoch scripts/version-update.sh
2026-07-28 18:04:45 -06:00
Jeremy Soller
97d310a94c Epoch 1.5.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-07-28 09:14:00 -06:00
Michael Murphy
dec809369a
i18n: translation update from Hosted Weblate (#582)
Translations update from [Hosted Weblate](https://hosted.weblate.org)
for [Pop OS/COSMIC
Edit](https://hosted.weblate.org/projects/pop-os/cosmic-edit/).



Current translation status:

![Weblate translation
status](https://hosted.weblate.org/widget/pop-os/cosmic-edit/horizontal-auto.svg)
2026-07-28 16:46:09 +02:00
Hosted Weblate
94b1e6cfa9
i18n: translation updates from weblate
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: Aman Alam <aalam@users.noreply.hosted.weblate.org>
Co-authored-by: Aman Shaw <shaw4m4n@netc.fr>
Co-authored-by: Arve Eriksson <arve.eriksson@startmail.com>
Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Co-authored-by: CYAXXX <85353920+CYAXXX@users.noreply.github.com>
Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Co-authored-by: Fedorov Alexei <aleksejfedorov963@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jim Spentzos <jimspentzos2000@gmail.com>
Co-authored-by: Kartik Nayak <65574961+kodebarista@users.noreply.github.com>
Co-authored-by: Prasanta-Hembram <Prasantahembram720@gmail.com>
Co-authored-by: VandaL <vandalhj@gmail.com>
Co-authored-by: Vilius Paliokas <viliuspaliokas@gmail.com>
Co-authored-by: Zahid Rizky Fakhri <zahidrizkyfakhri@gmail.com>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: lorduskordus <lorduskordus@gmail.com>
Co-authored-by: taijuin Lee <taijuin@gmail.com>
Co-authored-by: therealmate <hellogaming91@gmail.com>
Co-authored-by: Димко <Dymkovych@proton.me>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/ar/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/ca/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/cs/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/de/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/el/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/hi/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/hu/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/id/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/kk/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/kmr/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/lt/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/pa/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/pl/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/ru/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/sat/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/sv/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/uk/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/zh_Hant/
Translation: Pop OS/COSMIC Edit
2026-07-28 06:02:06 +00:00
39a4e4beec chore: bump version to 1.3.0 2026-07-22 15:56:59 +02:00
Jeremy Soller
a3d4920285
Merge pull request #597 from pop-os/epoch-update
Epoch 1.4.0 version update
2026-07-20 18:07:47 -06:00
Jeremy Soller
e11896dac2 Epoch 1.4.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-07-20 14:35:58 -06:00
Jeremy Soller
60c38e818a Epoch 1.3.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-07-13 08:31:18 -06:00
Ashley Wulber
34eecb7dcd chore: update libcosmic 2026-07-10 01:29:44 +02:00
Jeremy Soller
2cbbf48e70
Merge pull request #590 from pop-os/theme-v2
Theme v2
2026-07-07 14:12:59 -06:00
Ashley Wulber
9c927e040d chore: update deps 2026-07-07 11:47:15 -04:00
Ashley Wulber
171de79535 chore: frosted glass 2026-07-06 09:34:42 -04:00
c3bd3782da yoda: unify cosmic-text via patch.crates-io + lockfile post-1.2.0 rebase
Leyoda 2026 – GPLv3
2026-07-03 15:11:11 +02:00
30b334693f fix: adapt to cosmic-theme background(transparent) accessor
Leyoda 2026 – GPLv3
2026-07-03 15:02:11 +02:00
00e4487038 chore: align about license metadata 2026-07-03 15:01:39 +02:00
cc2c274538 chore: align editor with local files stack 2026-07-03 15:01:21 +02:00
229b92c507 yoda: relocate local fork paths from ~/Devels to ~/Projets/COSMIC
Mise à jour des path= absolus (window_clipboard, dnd, mime, cosmic-text)
après consolidation des forks cosmic-* sous ~/Projets/COSMIC/.

Leyoda 2026 – GPLv3
2026-07-03 15:01:21 +02:00
cde36b1a5f yoda wayland-v5: redirect window_clipboard + cosmic-text to local forks
Propagates the [patch] blocks added in cosmic-yoterm v5 to keep the
whole yoda app family on a single Wayland-only stack. Without these,
iced_winit fails to select a window_clipboard version because our
fork exposes a `wayland` feature that upstream doesn't.

- window_clipboard → /home/lionel/Devels/window_clipboard (x11 gated
  behind opt-in feature)
- cosmic-text → /home/lionel/Devels/cosmic-text (EAW terminal_cells +
  upstream PR#503 applied)
2026-07-03 15:01:21 +02:00
6effc415e1 yoda: rewire onto libcosmic-yoda + leyoda/cosmic-files paths
- libcosmic git dep replaced by libcosmic-yoda = { path = ../libcosmic }
- cosmic-files git dep replaced by path = ../cosmic-files (leyoda fork)
- winit feature dropped from libcosmic-yoda deps, wayland added
- feature refs libcosmic/* -> libcosmic-yoda/*
- [patch] block for pop-os/libcosmic removed

Installed at /usr/bin/cosmic-edit. Pre-yoda binary kept as
/usr/bin/cosmic-edit.pre-yoda-fork.
2026-07-03 15:01:21 +02:00
Votre Nom
2600c6d38a Cargo.toml: patch libcosmic via local path for dev builds
Activates the [patch.'https://github.com/pop-os/libcosmic'] override
pointing at ../libcosmic, enabling local development against a
patched libcosmic checkout (e.g. to pick up
WindowControlsPosition / macOS-style window controls).

This branch is intentionally dev-local: do NOT merge upstream.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-07-03 15:01:06 +02:00
Nathan Rowe
dfcef22632 Save file to recents on save 2026-06-30 15:58:35 -04:00
Jeremy Soller
495f52cd5b Epoch 1.2.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-06-30 13:37:33 -06:00
Hojjat
eae9127fbe fix: add alt_clipboard bindings 2026-06-25 14:06:11 +02:00
Jeremy Soller
6ce200c84b Epoch 1.1.0 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-06-23 10:24:19 -06:00
Michael Aaron Murphy
b6627523f9 fix: add application/x-zerosize mime type association 2026-06-17 19:08:10 -04:00
Jeremy Soller
00a76ee709 Epoch 1.0.16 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-06-09 11:29:30 -06:00
Jeremy Soller
bf217ab250 Epoch 1.0.15 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-06-02 11:46:28 -06:00
Hojjat Abdollahi
a56297f855
fix(libcosmic): fix item highlight in wayland context menu 2026-05-28 23:11:52 +02:00
Ashley Wulber
2db1c80078 fix: update cosmic-files 2026-05-26 13:48:13 -06:00
Jeremy Soller
4edfc6aa8e
Merge pull request #573 from pop-os/epoch-update
Epoch 1.0.14 version update
2026-05-26 13:07:40 -06:00
Ashley Wulber
12cee06253 fix: libcosmic updates 2026-05-26 14:15:00 -04:00
Jeremy Soller
4b231042e7
Merge pull request #572 from weblate/weblate-pop-os-cosmic-edit
i18n: translation update from Hosted Weblate
2026-05-26 09:12:36 -06:00
Jeremy Soller
aadff7540e Epoch 1.0.14 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-05-26 08:30:47 -06:00
Hosted Weblate
2efddc1833
i18n: translation updates from weblate
Co-authored-by: therealmate <hellogaming91@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/hu/
Translation: Pop OS/COSMIC Edit
2026-05-26 01:11:34 +02:00
Jeremy Soller
7bbe82ec3f Epoch 1.0.13 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-05-12 12:09:43 -06:00
Jeremy Soller
448da77cd5
Merge pull request #565 from weblate/weblate-pop-os-cosmic-edit
i18n: translation update from Hosted Weblate
2026-05-12 09:41:41 -06:00
Levi Portenier
d123bc0a51
Merge pull request #566 from pop-os/epoch-update
Epoch 1.0.12 version update
2026-05-05 14:57:43 -06:00
Jeremy Soller
2a60283f14 Epoch 1.0.12 version update
Generated by cosmic-epoch scripts/version-update.sh
2026-05-05 13:21:26 -06:00
Hosted Weblate
7de9ba756c
i18n: translation updates from weblate
Co-authored-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Co-authored-by: BoneNI <bounkirdni@gmail.com>
Co-authored-by: Feike Donia <feikedonia@proton.me>
Co-authored-by: Filippos Papadopoulos <filippospap.developer@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jim Spentzos <jimspentzos2000@gmail.com>
Co-authored-by: Konstantinos <kostas.lampropoulos94@gmail.com>
Co-authored-by: Nara Díaz Viñolas <nara.diaz.vinolas@gmail.com>
Co-authored-by: Tadas Misiūnas <tadujo@gmail.com>
Co-authored-by: Vilius Paliokas <viliuspaliokas@gmail.com>
Co-authored-by: Марко М. Костић <marko.m.kostic@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/ca/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/el/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/lt/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-edit/sr/
Translation: Pop OS/COSMIC Edit
2026-05-03 01:52:13 +02:00
KENZ
4c53d607f7
feat(ime): minimal IME support for the text_box widget (#539)
* Support CJK input method

* Fix the input method window occasionally jumps around

Use the previous caret(text cursor) position to place the input method
window when the position is not available

* refactor: Omit calling request_input_method() if doesn't focus

- iced UserInterface.update() starts with InputMethod::Disabled state,
  and merges any input_method_request() which is InputMethod::Enabled in
  widgets tree traversal.
- We don't enable the input method feature if the widget doesn't have
  focus, we can safely omit request_input_method() call itself.
2026-04-27 16:05:22 -06:00
41 changed files with 2381 additions and 1964 deletions

3004
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,10 @@
[package] [package]
name = "cosmic-edit" name = "cosmic-edit"
version = "1.0.11" version = "1.9.0"
authors = ["Jeremy Soller <jeremy@system76.com>"] authors = ["Jeremy Soller <jeremy@system76.com>"]
edition = "2024" edition = "2024"
license = "GPL-3.0-only" license = "GPL-3.0-only"
rust-version = "1.90" rust-version = "1.93"
[dependencies] [dependencies]
dirs = "6" dirs = "6"
@ -33,21 +33,23 @@ i18n-embed-fl = "0.10"
rust-embed = "8" rust-embed = "8"
[dependencies.cosmic-files] [dependencies.cosmic-files]
git = "https://github.com/pop-os/cosmic-files.git" path = "../cosmic-files"
default-features = false default-features = false
[dependencies.cosmic-syntax-theme] [dependencies.cosmic-syntax-theme]
git = "https://github.com/pop-os/cosmic-syntax-theme.git" git = "https://github.com/pop-os/cosmic-syntax-theme.git"
[dependencies.cosmic-text] [dependencies.cosmic-text]
git = "https://github.com/pop-os/cosmic-text.git" version = "0.19"
features = ["syntect", "vi"] features = ["syntect", "vi"]
[dependencies.libcosmic] # Yoda fork.
git = "https://github.com/pop-os/libcosmic.git" [dependencies.cosmic]
package = "libcosmic-yoda"
path = "../libcosmic"
default-features = false default-features = false
#TODO: a11y feature crashes file choser dialog #TODO: a11y feature crashes file choser dialog
features = ["about", "multi-window", "tokio", "winit", "surface-message"] features = ["about", "multi-window", "tokio", "wayland", "surface-message"]
[target.'cfg(unix)'.dependencies] [target.'cfg(unix)'.dependencies]
fork = "0.2" fork = "0.2"
@ -57,10 +59,10 @@ xdgen = "0.1"
[features] [features]
default = ["dbus-config", "gvfs", "wgpu", "wayland"] default = ["dbus-config", "gvfs", "wgpu", "wayland"]
dbus-config = ["libcosmic/dbus-config"] dbus-config = ["cosmic/dbus-config"]
gvfs = ["cosmic-files/gvfs"] gvfs = ["cosmic-files/gvfs"]
wgpu = ["libcosmic/wgpu", "cosmic-files/wgpu"] wgpu = ["cosmic/wgpu", "cosmic-files/wgpu"]
wayland = ["libcosmic/wayland", "cosmic-files/wayland"] wayland = ["cosmic/wayland", "cosmic-files/wayland"]
[profile.release-with-debug] [profile.release-with-debug]
inherits = "release" inherits = "release"
@ -69,8 +71,12 @@ debug = true
[patch.crates-io] [patch.crates-io]
onig = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" } onig = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" }
onig_sys = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" } onig_sys = { git = "https://github.com/rust-onig/rust-onig.git", branch = "main" }
# Yoda: unify cosmic-text with the local checkout used by libcosmic/iced/glyphon.
cosmic-text = { path = "../cosmic-text" }
# [patch.'https://github.com/pop-os/libcosmic'] # Yoda wayland cut v5: redirect window_clipboard to the local fork
# libcosmic = { git = "https://github.com/pop-os/libcosmic//" } # (x11 gated behind opt-in feature).
# cosmic-config = { git = "https://github.com/pop-os/libcosmic//" } [patch.'https://forge.aditua.com/leyoda/window_clipboard.git']
# cosmic-theme = { git = "https://github.com/pop-os/libcosmic//" } window_clipboard = { path = "/home/lionel/Projets/COSMIC/window_clipboard" }
dnd = { path = "/home/lionel/Projets/COSMIC/window_clipboard/dnd" }
mime = { path = "/home/lionel/Projets/COSMIC/window_clipboard/mime" }

84
debian/changelog vendored
View file

@ -1,3 +1,87 @@
cosmic-edit (1.9.0) noble; urgency=medium
* Epoch 1.9.0 version update
-- Michael Murphy <michael@mmurphy.dev> Mon, 14 Sep 2026 21:54:06 +0200
cosmic-edit (1.8.0) noble; urgency=medium
* Epoch 1.8.0 version update
-- Jeremy Soller <jeremy@system76.com> Wed, 02 Sep 2026 08:14:30 -0600
cosmic-edit (1.7.0) noble; urgency=medium
* Epoch 1.7.0 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 25 Aug 2026 09:19:59 -0600
cosmic-edit (1.6.0) noble; urgency=medium
* Epoch 1.6.0 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 18 Aug 2026 07:13:06 -0600
cosmic-edit (1.5.0) noble; urgency=medium
* Epoch 1.5.0 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 28 Jul 2026 09:13:50 -0600
cosmic-edit (1.4.0) noble; urgency=medium
* Epoch 1.4.0 version update
-- Jeremy Soller <jeremy@system76.com> Mon, 20 Jul 2026 14:35:49 -0600
cosmic-edit (1.3.0) noble; urgency=medium
* Epoch 1.3.0 version update
-- Jeremy Soller <jeremy@system76.com> Sun, 12 Jul 2026 13:20:55 -0600
cosmic-edit (1.2.0) noble; urgency=medium
* Epoch 1.2.0 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 30 Jun 2026 12:20:53 -0600
cosmic-edit (1.1.0) noble; urgency=medium
* Epoch 1.1.0 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 23 Jun 2026 08:47:04 -0600
cosmic-edit (1.0.16) noble; urgency=medium
* Epoch 1.0.16 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 09 Jun 2026 10:25:21 -0600
cosmic-edit (1.0.15) noble; urgency=medium
* Epoch 1.0.15 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 02 Jun 2026 11:02:06 -0600
cosmic-edit (1.0.14) noble; urgency=medium
* Epoch 1.0.14 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 26 May 2026 08:30:39 -0600
cosmic-edit (1.0.13) noble; urgency=medium
* Epoch 1.0.13 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 12 May 2026 09:37:51 -0600
cosmic-edit (1.0.12) noble; urgency=medium
* Epoch 1.0.12 version update
-- Jeremy Soller <jeremy@system76.com> Tue, 05 May 2026 10:23:41 -0600
cosmic-edit (1.0.11) noble; urgency=medium cosmic-edit (1.0.11) noble; urgency=medium
* Epoch 1.0.11 version update * Epoch 1.0.11 version update

5
debian/rules vendored
View file

@ -1,15 +1,12 @@
#!/usr/bin/make -f #!/usr/bin/make -f
export DESTDIR = debian/cosmic-edit export DESTDIR = debian/cosmic-edit
export VENDOR ?= 1
%: %:
dh $@ dh $@
override_dh_auto_clean: override_dh_auto_clean:
if ! ischroot && test "${VENDOR}" = "1"; then \ ischroot || just vendor
just vendor; \
fi
override_dh_auto_build: override_dh_auto_build:
just build-vendored just build-vendored

View file

@ -1,4 +1,6 @@
tar-ignore=.github tar-ignore=.github
tar-ignore=.vscode tar-ignore=target/.rustc_info.json
tar-ignore=target/CACHEDIR.TAG
tar-ignore=target/debug
tar-ignore=target/release
tar-ignore=vendor tar-ignore=vendor
tar-ignore=target

View file

@ -49,7 +49,7 @@ settings = الإعدادات
### Appearance ### Appearance
appearance = المظهر appearance = المظهر
theme = النسق theme = السمة
match-desktop = طابق سطح المكتب match-desktop = طابق سطح المكتب
dark = داكن dark = داكن
light = فاتح light = فاتح
@ -96,7 +96,7 @@ document-type = نوع المستند...
encoding = الترميز... encoding = الترميز...
menu-git-management = إدارة Git... menu-git-management = إدارة Git...
print = اطبع print = اطبع
quit = أنهِ quit = إنهِ
## Edit ## Edit

View file

@ -0,0 +1,5 @@
cancel = Cancel·lar
quit = Surt
settings = Configuració
save = Desa
undo = Desfés

View file

@ -71,9 +71,9 @@ automatic-indentation = Automatické odsazení
tab-width = Šířka tabulátoru: { $tab_width } tab-width = Šířka tabulátoru: { $tab_width }
convert-indentation-to-spaces = Převést odsazení na mezery convert-indentation-to-spaces = Převést odsazení na mezery
convert-indentation-to-tabs = Převést odsazení na tabulátory convert-indentation-to-tabs = Převést odsazení na tabulátory
word-wrap = Zalamování slov word-wrap = Zalamování řádků
show-line-numbers = Zobrazit čísla řádků show-line-numbers = Zobrazit čísla řádků
highlight-current-line = Zvýraznění aktuálního řádku highlight-current-line = Zvýraznit aktuální řádek
syntax-highlighting = Zvýraznění syntaxe... syntax-highlighting = Zvýraznění syntaxe...
menu-settings = Nastavení... menu-settings = Nastavení...
menu-keyboard-shortcuts = Klávesové zkratky... menu-keyboard-shortcuts = Klávesové zkratky...

View file

@ -0,0 +1,91 @@
save = Gem
cancel = Afbryd
quit = Afslut
cosmic-text-editor = COSMIC-teksteditor
new-document = Nyt dokument
open-project = Åbn project
repository = Pakkearkiv
todo = TODO
document-statistics = Dokument-statistikker
word-count = Antal ord
character-count = Tegn
character-count-no-spaces = Tegn (uden mellemrum)
line-count = Linjer
appearance = Udseende
git-management = Git-håndtering
theme = Tema
git-management-description = Git.håndtering er et udvikler-værktøj, som bruges til versionskontrol-operationer.
match-desktop = Følg skrivebordets indstillinger
git-management-loading = Indlæser Git-håndtering...
dark = Mørkt
stage = Bered
light = Lyst
staged-changes = Forberedte ændringer
file = Fil
unstage = Fjern fra forberedelse
unstaged-changes = Uforberedte ændringer
project-search = Projektsøgning
prompt-save-changes-title = Gem ændringer før lukning?
close-file = Luk fil
prompt-unsaved-changes = Du har ugemte ændringer. Hvis du fortsætter uden at gemme, vil disse ændringer gå tabt.
discard = Kassér ændringer
save-all = Gem alle
default-zoom-step = Zoom-trin
syntax-dark = Syntaks mørk
syntax-light = Syntaks lys
default-font = Standard skrifttype
default-font-size = Standard skriftstørrelse
keyboard-shortcuts = Tastaturgenveje
enable-vim-bindings = Aktivér Vim-bindinger
find-placeholder = Find...
find-previous = Find forrige
find-next = Find næste
replace-placeholder = Erstat...
replace = Erstat
replace-all = Erstat alle
case-sensitive = Forskel på store og små bogstaver
use-regex = Anvend regex
wrap-around = Omslut
new-file = Ny fil
new-window = Nyt vindue
open-file = Åbn fil...
open-recent-file = Åbn seneste fil
menu-open-project = Åbn projekt...
open-recent-project = Åbn seneste projekt
close-project = Luk projekt
edit = Redigér
save-as = Gem som...
copy = Kopiér
revert-all-changes = Tilbagefør alle ændringer
paste = Indsæt
menu-document-statistics = Dokument-statistikker...
select-all = Vælg alle
document-type = Dokumenttype...
find = Find
encoding = Kodning...
menu-git-management = Git-håndtering...
print = Udskriv
view = Vis
undo = Fortryd
redo = Omgør
cut = Klip
find-in-project = Find i projekt...
menu-settings = Indstillinger...
spell-check = Stavekontrol...
zoom-in = Zoom ind
default-size = Standardstørrelse
zoom-out = Zoom ud
indentation = Indrykning
automatic-indentation = Automatisk Indrykning
tab-width = Fanebladsbredde: { $tab_width }
convert-indentation-to-spaces = Konvertér indryk til mellemrum
convert-indentation-to-tabs = Konvertér indryk til tabulaturer
comment = Teksteditor til COSMIC-skrivebordet
menu-keyboard-shortcuts = Tastaturgenveje…
word-wrap = Tekstombrydning
show-line-numbers = Vis linjenumre
highlight-current-line = Fremhæv aktuel linje
syntax-highlighting = Syntaksfremhævning…
menu-about = Om COSMIC Teksteditor…
support = Support
settings = Indstillinger

View file

@ -21,7 +21,7 @@ line-count = Zeilen
git-management = Git-Verwaltung git-management = Git-Verwaltung
git-management-description = Git-Verwaltung ist ein Entwicklerwerkzeug, das für die Versionskontrolle eingesetzt wird. git-management-description = Git-Verwaltung ist ein Entwicklerwerkzeug, das für die Versionskontrolle eingesetzt wird.
git-management-loading = Git-Verwaltung wird geladen... git-management-loading = Git-Verwaltung wird geladen ...
stage = Vormerken stage = Vormerken
staged-changes = Vorgemerkte Änderungen staged-changes = Vorgemerkte Änderungen
unstage = Nicht vormerken unstage = Nicht vormerken
@ -50,8 +50,8 @@ theme = Thema
match-desktop = An Desktop anpassen match-desktop = An Desktop anpassen
dark = Dunkel dark = Dunkel
light = Hell light = Hell
syntax-dark = Syntax dunkel syntax-dark = Dunkle Syntax
syntax-light = Syntax hell syntax-light = Helle Syntax
default-font = Standardschriftart default-font = Standardschriftart
default-font-size = Standardschriftgröße default-font-size = Standardschriftgröße
default-zoom-step = Zoomstufen default-zoom-step = Zoomstufen
@ -61,10 +61,10 @@ default-zoom-step = Zoomstufen
keyboard-shortcuts = Tastenkombinationen keyboard-shortcuts = Tastenkombinationen
enable-vim-bindings = Vim-Kombinationen aktivieren enable-vim-bindings = Vim-Kombinationen aktivieren
# Suchen # Suchen
find-placeholder = Suchen... find-placeholder = Suchen ...
find-previous = Vorherigen suchen find-previous = Vorherigen suchen
find-next = Nächsten suchen find-next = Nächsten suchen
replace-placeholder = Ersetzen... replace-placeholder = Ersetzen ...
replace = Ersetzen replace = Ersetzen
replace-all = Alles ersetzen replace-all = Alles ersetzen
case-sensitive = Groß-/Kleinschreibung beachten case-sensitive = Groß-/Kleinschreibung beachten
@ -79,19 +79,19 @@ wrap-around = Umlaufen
file = Datei file = Datei
new-file = Neue Datei new-file = Neue Datei
new-window = Neues Fenster new-window = Neues Fenster
open-file = Datei öffnen... open-file = Datei öffnen ...
open-recent-file = Letzte Datei öffnen open-recent-file = Letzte Datei öffnen
close-file = Datei schließen close-file = Datei schließen
menu-open-project = Projekt öffnen... menu-open-project = Projekt öffnen ...
open-recent-project = Letztes Projekt öffnen open-recent-project = Letztes Projekt öffnen
close-project = Projekt schließen close-project = Projekt schließen
save = Speichern save = Speichern
save-as = Speichern unter... save-as = Speichern unter ...
revert-all-changes = Alle Änderungen rückgängig machen revert-all-changes = Alle Änderungen rückgängig machen
menu-document-statistics = Dokument-Statistiken... menu-document-statistics = Dokument-Statistiken ...
document-type = Dokumententyp... document-type = Dokumententyp ...
encoding = Kodierung... encoding = Kodierung ...
menu-git-management = Git-Verwaltung... menu-git-management = Git-Verwaltung ...
print = Drucken print = Drucken
quit = Beenden quit = Beenden
@ -105,8 +105,8 @@ copy = Kopieren
paste = Einfügen paste = Einfügen
select-all = Alles auswählen select-all = Alles auswählen
find = Suchen find = Suchen
find-in-project = Im Projekt suchen... find-in-project = Im Projekt suchen ...
spell-check = Rechtschreibprüfung... spell-check = Rechtschreibprüfung ...
## Ansicht ## Ansicht
@ -125,10 +125,10 @@ convert-indentation-to-tabs = Einrückung in Tabulatoren umwandeln
word-wrap = Zeilenumbruch word-wrap = Zeilenumbruch
show-line-numbers = Zeilennummern anzeigen show-line-numbers = Zeilennummern anzeigen
highlight-current-line = Aktuelle Zeile hervorheben highlight-current-line = Aktuelle Zeile hervorheben
syntax-highlighting = Syntaxhervorhebung... syntax-highlighting = Syntaxhervorhebung ...
menu-settings = Einstellungen... menu-settings = Einstellungen ...
menu-keyboard-shortcuts = Tastenkombinationen... menu-keyboard-shortcuts = Tastenkombinationen ...
menu-about = Über COSMIC Texteditor... menu-about = Über COSMIC Texteditor ...
repository = Repository repository = Repositorium
support = Unterstützung support = Unterstützung
comment = Texteditor für den COSMIC Desktop comment = Texteditor für den COSMIC Desktop

View file

@ -7,7 +7,7 @@ open-project = Άνοιγμα έργου
## Document statistics ## Document statistics
document-statistics = Στατιστικά εγγράφου document-statistics = Στατιστικά εγγράφου
word-count = Λέξεις word-count = Πλήθος λέξεων
character-count = Χαρακτήρες character-count = Χαρακτήρες
character-count-no-spaces = Χαρακτήρες (χωρίς κενά) character-count-no-spaces = Χαρακτήρες (χωρίς κενά)
line-count = Γραμμές line-count = Γραμμές
@ -20,13 +20,13 @@ settings = Ρυθμίσεις
appearance = Εμφάνιση appearance = Εμφάνιση
theme = Θέμα theme = Θέμα
default-font = Γραμματοσειρά default-font = Προεπιλεγμένη γραμματοσειρά
default-font-size = Μέγεθος γραμματοσειράς default-font-size = Προεπιλεγμένο μέγεθος γραμματοσειράς
### Keyboard shortcuts ### Keyboard shortcuts
keyboard-shortcuts = Συντομεύσεις πλήκτρων keyboard-shortcuts = Συντομεύσεις πληκτρολογίου
enable-vim-bindings = Ενεργοποίηση πλήκτρων vim enable-vim-bindings = Ενεργοποίηση συντομεύσεων Vim
# Menu # Menu
@ -37,7 +37,7 @@ file = Αρχείο
new-file = Νέο αρχείο new-file = Νέο αρχείο
new-window = Νέο παράθυρο new-window = Νέο παράθυρο
open-file = Άνοιγμα αρχείου... open-file = Άνοιγμα αρχείου...
todo = TODO todo = Λίστα εργασιών
save = Αποθήκευση save = Αποθήκευση
save-as = Αποθήκευση ως... save-as = Αποθήκευση ως...
revert-all-changes = Αναίρεση όλων των αλλαγών revert-all-changes = Αναίρεση όλων των αλλαγών
@ -45,7 +45,7 @@ menu-document-statistics = Στατιστικά εγγράφου...
document-type = Τύπος εγγράφου... document-type = Τύπος εγγράφου...
encoding = Κωδικοποίηση... encoding = Κωδικοποίηση...
print = Εκτύπωση print = Εκτύπωση
quit = Έξοδος quit = Τερματισμός
## Edit ## Edit
@ -62,23 +62,60 @@ spell-check = Έλεγχος ορθογραφίας...
## View ## View
view = Προβολή view = Προβολή
indentation = Εσοχές indentation = Εσοχές κειμένου
### Indentation ### Indentation
automatic-indentation = Αυτόματη εισαγωγή εσοχών automatic-indentation = Αυτόματη εισαγωγή εσοχών
tab-width = Πλάτος Tabs: { $tab_width } tab-width = Πλάτος στηλοθέτη: { $tab_width }
convert-indentation-to-spaces = Μετατροπή εσοχών σε spaces convert-indentation-to-spaces = Μετατροπή εσοχών σε κενά
convert-indentation-to-tabs = Μετατροπή εσοχών σε tabs convert-indentation-to-tabs = Μετατροπή εσοχών σε στηλοθέτες
word-wrap = Περιτύλιξη λέξεων word-wrap = Αναδίπλωση λέξεων
show-line-numbers = Εμφάνιση αριθμού γραμμών show-line-numbers = Εμφάνιση αριθμού γραμμών
highlight-current-line = Υπογράμμιση τρέχουσας γραμμής highlight-current-line = Επισήμανση τρέχουσας γραμμής
syntax-highlighting = Υπογράμμιση συντακτικού... syntax-highlighting = Επισήμανση συντακτικού...
menu-settings = Ρυθμίσεις... menu-settings = Ρυθμίσεις...
menu-keyboard-shortcuts = Συντομεύσεις πλήκτρων... menu-keyboard-shortcuts = Συντομεύσεις πληκτρολογίου...
menu-about = Σχετικά με τον επεξεργαστή κειμένου COSMIC... menu-about = Σχετικά με την Επεξεργασία κειμένου COSMIC...
cancel = Ακύρωση cancel = Ακύρωση
repository = Αποθετήριο repository = Αποθετήριο
support = Υποστήριξη support = Υποστήριξη
dark = Σκοτεινό dark = Σκουρόχρωμο
light = Φωτεινό light = Ανοιχτόχρωμο
close-file = Κλείσιμο αρχείου
cosmic-text-editor = Επεξεργασία κειμένου COSMIC
find-placeholder = Εύρεση...
replace-placeholder = Αντικατάσταση...
match-desktop = Συμφωνία με την επιφάνεια εργασίας
discard = Απόρριψη αλλαγών
select-all = Επιλογή όλων
comment = Πρόγραμμα επεξεργασίας κειμένου για το περιβάλλον επιφάνειας εργασίας COSMIC
git-management = Διαχείριση Git
save-all = Αποθήκευση όλων
find-previous = Εύρεση προηγούμενου
find-next = Εύρεση επόμενου
replace-all = Αντικατάσταση όλων
close-project = Κλείσιμο έργου
menu-git-management = Διαχείριση Git...
find-in-project = Εύρεση στο έργο...
default-size = Προεπιλεγμένο μέγεθος
zoom-out = Σμίκρυνση
zoom-in = Μεγέθυνση
project-search = Αναζήτηση έργων
prompt-save-changes-title = Αποθήκευση των αλλαγών πριν από το κλείσιμο;
open-recent-file = Άνοιγμα πρόσφατου αρχείου
menu-open-project = Άνοιγμα έργου...
open-recent-project = Άνοιγμα πρόσφατου έργου
git-management-loading = Φόρτωση διαχείρισης Git...
prompt-unsaved-changes = Υπάρχουν μη αποθηκευμένες αλλαγές. Εάν συνεχίσετε χωρίς να κάνετε αποθήκευση, αυτές οι αλλαγές θα χαθούν.
case-sensitive = Διάκριση πεζών-κεφαλαίων
stage = Προετοιμασία
staged-changes = Προετοιμασμένες αλλαγές
unstage = Ακύρωση προετοιμασίας
unstaged-changes = Απροετοίμαστες αλλαγές
syntax-dark = Σκουρόχρωμο συντακτικό
syntax-light = Ανοιχτόχρωμο συντακτικό
default-zoom-step = Βήματα ζουμ
git-management-description = Η διαχείριση Git είναι ένα εργαλείο για προγραμματιστές που χρησιμοποιείται για λειτουργίες ελέγχου εκδόσεων.
use-regex = Χρήση κανονικών εκφράσεων
wrap-around = Αναδίπλωση

View file

@ -0,0 +1,91 @@
save = Save
quit = Quit
cancel = Cancel
settings = Settings
appearance = Appearance
theme = Theme
match-desktop = Match desktop
dark = Dark
file = File
close-file = Close file
syntax-light = Syntax light
cosmic-text-editor = COSMIC Text Editor
comment = Text editor for the COSMIC desktop
new-document = New document
open-project = Open project
todo = TODO
repository = Repository
support = Support
document-statistics = Document statistics
word-count = Word count
character-count = Characters
character-count-no-spaces = Characters (without spaces)
line-count = Lines
git-management = Git management
git-management-description = Git management is a developer tool used for version control operations.
keyboard-shortcuts = Keyboard shortcuts
replace = Replace
git-management-loading = Loading Git management...
stage = Stage
staged-changes = Staged changes
unstage = Unstage
unstaged-changes = Unstaged changes
project-search = Project search
prompt-save-changes-title = Save changes before closing?
prompt-unsaved-changes = You have unsaved changes. If you continue without saving, these changes will be lost.
discard = Discard changes
save-all = Save all
syntax-dark = Syntax dark
default-font = Default font
default-font-size = Default font size
default-zoom-step = Zoom steps
enable-vim-bindings = Enable Vim bindings
find-placeholder = Find...
find-previous = Find previous
find-next = Find next
replace-placeholder = Replace...
replace-all = Replace all
case-sensitive = Case sensitive
use-regex = Use regex
wrap-around = Wrap around
new-file = New file
new-window = New window
open-file = Open file...
open-recent-file = Open recent file
menu-open-project = Open project...
open-recent-project = Open recent project
close-project = Close project
save-as = Save as...
revert-all-changes = Revert all changes
menu-document-statistics = Document statistics...
document-type = Document type...
encoding = Encoding...
menu-git-management = Git management...
print = Print
light = Light
edit = Edit
undo = Undo
redo = Redo
cut = Cut
copy = Copy
paste = Paste
select-all = Select all
find = Find
find-in-project = Find in project...
spell-check = Spell check...
view = View
zoom-in = Zoom in
default-size = Default size
zoom-out = Zoom out
indentation = Indentation
automatic-indentation = Automatic Indentation
tab-width = Tab width: { $tab_width }
convert-indentation-to-spaces = Convert indentation to spaces
convert-indentation-to-tabs = Convert indentation to tabs
menu-keyboard-shortcuts = Keyboard shortcuts...
word-wrap = Word wrap
show-line-numbers = Show line numbers
highlight-current-line = Highlight current line
syntax-highlighting = Syntax highlighting...
menu-settings = Settings...
menu-about = About COSMIC Text Editor...

View file

@ -31,7 +31,7 @@ settings = Asetukset
appearance = Ulkoasu appearance = Ulkoasu
theme = Teema theme = Teema
match-desktop = Sovita työpöytään match-desktop = Sama kuin työpöytä
dark = Tumma dark = Tumma
light = Vaalea light = Vaalea
syntax-dark = Tumma syntaksi syntax-dark = Tumma syntaksi

0
i18n/fil/cosmic_edit.ftl Normal file
View file

91
i18n/gl/cosmic_edit.ftl Normal file
View file

@ -0,0 +1,91 @@
save = Gardar
cancel = Cancelar
cosmic-text-editor = Editor de Texto de COSMIC
comment = Editor de texto para o escritorio COSMIC
new-document = Novo documento
open-project = Abrir proxecto
todo = TODO
repository = Repositorio
support = Soporte
document-statistics = Estadisticas do documento
word-count = Reconto de palabras
character-count = Carácteres
character-count-no-spaces = Carácter (sen espazos)
line-count = Liñas
git-management = Xestion de Git
git-management-description = A xestión de Git é unha ferramenta de desenvolvemento utilizada para operacións de control de versións.
git-management-loading = Cargando a xestión de Git...
stage = Etapa
staged-changes = Cambios preparados
unstage = Sen preparar
unstaged-changes = Cambios sen preparar
project-search = Buscar proxecto
prompt-save-changes-title = Gardar os cambios antes de pechar?
prompt-unsaved-changes = Tes cambios sen gardar. Se continúas sen gardalos, estes cambios perderanse.
discard = Descartar cambios
save-all = Gardar todo
settings = Axustes
appearance = Apariencia
theme = Tema
match-desktop = Axustar ao escritorio
dark = Escuro
light = Claro
syntax-dark = Sintaxe escura
syntax-light = Sintaxe clara
default-font = Fonte por defecto
default-font-size = Tamaño de fonte por defecto
default-zoom-step = Pasos do zoom
keyboard-shortcuts = Atallos de teclado
enable-vim-bindings = Activar as asociacións de teclas de Vim
find-placeholder = Atopar…
find-previous = Atopar antes
find-next = Atopar seguinte
replace-placeholder = Remplazar…
replace = Remplazar
replace-all = Remplazar todo
case-sensitive = Distinguir maiúsculas e minúsculas
use-regex = Usar expresións regulares
wrap-around = Buscar de comezo a fin
file = Ficheiro
new-file = Novo ficheiro
new-window = Nova xanela
open-file = Abrir ficheiro…
open-recent-file = Abrir ficheiro recente
close-file = Pechar ficheiro
menu-open-project = Abrir proxecto…
open-recent-project = Abrir proxecto recente
close-project = Pechar proxecto
save-as = Gardar como…
revert-all-changes = Desvotar todos os cambios
menu-document-statistics = Estatísticas do documento...
document-type = Tipo de documento…
encoding = Codificación...
menu-git-management = Xestión de Git...
print = Imprimir
quit = Pechar
edit = Editar
undo = Desfacer
redo = Refacer
cut = Cortar
copy = Copiar
paste = Pegar
select-all = Seleccionar todo
find = Atopar
find-in-project = Atopar en proxecto…
spell-check = Corrección ortográfica...
view = Ver
zoom-in = Aumentar Zoom
default-size = Tamaño por defecto
zoom-out = Afastar Zoom
indentation = Sangría
automatic-indentation = Sangría automatica
tab-width = Largura da tabulación:{ $tab_width }
convert-indentation-to-spaces = Converter a sangria en espazos
convert-indentation-to-tabs = Converter a sangría en tabulacións
word-wrap = Axuste de liña
show-line-numbers = Amosar o numero de liñas
highlight-current-line = Subrayar a liña actual
syntax-highlighting = Realce da sintaxe...
menu-settings = Axustes...
menu-keyboard-shortcuts = Atallos de teclado…
menu-about = Sobre Editor de Texto COSMIC…

View file

@ -1,7 +1,7 @@
cosmic-text-editor = कॉस्मिक टेक्स्ट एडिटर cosmic-text-editor = कॉस्मिक टेक्स्ट एडिटर
new-document = नया दस्तावेज़ new-document = नया दस्तावेज़
open-project = प्रोजेक्ट खोलें open-project = प्रोजेक्ट खोलें
todo = करने के लिए todo = कार्य-सूची
# Context Pages # Context Pages
@ -13,41 +13,41 @@ todo = करने के लिए
document-statistics = दस्तावेज़ आँकड़े document-statistics = दस्तावेज़ आँकड़े
word-count = शब्दों की संख्या word-count = शब्दों की संख्या
character-count = अक्षरों की संख्या character-count = अक्षर
character-count-no-spaces = अक्षरों की संख्या (स्पेस के बिना) character-count-no-spaces = अक्षर (बिना स्थान के)
line-count = पंक्तियाँ line-count = पंक्तियाँ
## Git management ## Git management
git-management = Git प्रबंधन git-management = गिट प्रबंधन
git-management-description = Git प्रबंधन एक डेवलपर टूल है जो संस्करण नियंत्रण कार्यों के लिए उपयोग किया जाता है। git-management-description = गिट प्रबंधन एक डेवलपर उपकरण है जिसका उपयोग संस्करण नियंत्रण संचालन के लिए किया जाता है।
git-management-loading = Git प्रबंधन लोड हो रहा है... git-management-loading = गिट प्रबंधन लोड हो रहा है..।
stage = स्टेज stage = स्टेज करें
staged-changes = स्टेज पर बदली गई चीज़ें staged-changes = स्टेज किए गए बदलाव
unstage = स्टेज से हटाएँ unstage = अनस्टेज करें
unstaged-changes = बिना स्टेज की गई चीज़ें unstaged-changes = अनस्टेज किए गए बदलाव
## Project search ## Project search
project-search = प्रोजेक्ट खोज project-search = परियोजना खोज
## Prompt save changes ## Prompt save changes
prompt-save-changes-title = बिना सहेजे हुए बदलाव prompt-save-changes-title = बंद करने से पहले बदलाव सहेजें?
prompt-unsaved-changes = आपके पास बिना सहेजे हुए बदलाव हैं। सहेजना है? prompt-unsaved-changes = आपके पास अनसहेजे बदलाव हैं। यदि आप बिना सहेजे जारी रखते हैं, तो ये बदलाव नष्ट हो जाएँगे।
cancel = रद्द करो cancel = रद्द करें
discard = बदलाव को खारिज करें discard = बदलावों को खारिज करें
save-all = सब कुछ सहेजें save-all = सभी सहेजें
## Settings ## Settings
settings = सेटिंग settings = सेटिंग्स
### Appearance ### Appearance
appearance = दिखावट appearance = रुप-रंग
theme = थीम theme = प्रसंग
match-desktop = डेस्कटॉप से मेल करें match-desktop = डेस्कटॉप से मेल खाएँ
dark = डार्क dark = डार्क
light = लाइट light = लाइट
syntax-dark = सिंटैक्स डार्क syntax-dark = सिंटैक्स डार्क
@ -60,14 +60,14 @@ default-font-size = डिफ़ॉल्ट फ़ॉन्ट आकार
keyboard-shortcuts = कीबोर्ड शॉर्टकट्स keyboard-shortcuts = कीबोर्ड शॉर्टकट्स
enable-vim-bindings = Vim बाइंडिंग्स सक्षम करें enable-vim-bindings = Vim बाइंडिंग्स सक्षम करें
# Find # Find
find-placeholder = खोजें... find-placeholder = खोजें..।
find-previous = पिछला खोजें find-previous = पिछला खोजें
find-next = अगला खोजें find-next = अगला खोजें
replace-placeholder = बदलें... replace-placeholder = बदलें..।
replace = बदलें replace = बदलें
replace-all = सब कुछ बदलें replace-all = सब कुछ बदलें
case-sensitive = केस-सेंसिटिव case-sensitive = अक्षर संवेदनशील
use-regex = Regex का उपयोग करें use-regex = रिगैक्स का उपयोग करें
# Menu # Menu
@ -77,34 +77,34 @@ use-regex = Regex का उपयोग करें
file = फ़ाइल file = फ़ाइल
new-file = नई फ़ाइल new-file = नई फ़ाइल
new-window = नई विंडो new-window = नई विंडो
open-file = फ़ाइल खोलें... open-file = फ़ाइल खोलें..।
open-recent-file = हाल की फ़ाइल खोलें open-recent-file = हाल की फ़ाइल खोलें
close-file = फ़ाइल बंद करें close-file = फ़ाइल बंद करें
menu-open-project = प्रोजेक्ट खोलें... menu-open-project = परियोजना खोलें..।
open-recent-project = हाल का प्रोजेक्ट खोलें open-recent-project = हालिया परियोजना खोलें
close-project = प्रोजेक्ट बंद करें close-project = परियोजना बंद करें
save = सहेजें save = सहेजें
save-as = इस रूप में सहेजें... save-as = इस रूप में सहेजें..।
revert-all-changes = सभी बदलावों को पलटें revert-all-changes = सभी बदलावों को पलटें
menu-document-statistics = दस्तावेज़ आँकड़े... menu-document-statistics = दस्तावेज़ आँकड़े..।
document-type = दस्तावेज़ प्रकार... document-type = दस्तावेज़ प्रकार..।
encoding = एन्कोडिंग... encoding = एनकोडिंग..।
menu-git-management = Git प्रबंधन... menu-git-management = गिट प्रबंधन..।
print = प्रिंट करें print = छापें
quit = बंद करें quit = बाहर जाएँ
## Edit ## Edit
edit = संपादित करें edit = संपादन
undo = पूर्ववत करें undo = पूर्ववत करें
redo = फिर से करें redo = फिर से करें
cut = काटें cut = काटें
copy = कॉपी करें copy = कॉपी करें
paste = पेस्ट करें paste = चिपकाएँ
select-all = सब कुछ चुनें select-all = सभी चुनें
find = खोजें find = खोजें
find-in-project = प्रोजेक्ट में खोजें... find-in-project = परियोजना में खोजें..।
spell-check = वर्तनी की जांच... spell-check = वर्तनी जाँच..।
## View ## View
@ -116,13 +116,19 @@ indentation = इंडेंटेशन
automatic-indentation = स्वचालित इंडेंटेशन automatic-indentation = स्वचालित इंडेंटेशन
tab-width = टैब चौड़ाई: { $tab_width } tab-width = टैब चौड़ाई: { $tab_width }
convert-indentation-to-spaces = इंडेंटेशन को स्पेस में बदलें convert-indentation-to-spaces = इंडेंटेशन को स्पेस में बदलें
convert-indentation-to-tabs = इंडेंटेशन को टैब्स में बदलें convert-indentation-to-tabs = इंडेंटेशन को टैब में बदलें
word-wrap = वर्ड रैप word-wrap = शब्द लपेटन
show-line-numbers = पंक्ति संख्या दिखाएँ show-line-numbers = पंक्ति संख्या दिखाएँ
highlight-current-line = वर्तमान पंक्ति को हाइलाइट करें highlight-current-line = वर्तमान पंक्ति को हाइलाइट करें
syntax-highlighting = सिंटैक्स हाइलाइटिंग... syntax-highlighting = सिंटैक्स हाइलाइटिंग..।
menu-settings = सेटिंग्स... menu-settings = सेटिंग्स..।
menu-keyboard-shortcuts = कीबोर्ड शॉर्टकट्स... menu-keyboard-shortcuts = कीबोर्ड शॉर्टकट्स..।
menu-about = कॉस्मिक टेक्स्ट एडिटर के बारे में... menu-about = कॉस्मिक टेक्स्ट एडिटर के बारे में..।
repository = रिपॉजिटरी repository = रिपॉजिटरी
support = सहायता support = समर्थन
comment = कॉस्मिक डेस्कटॉप के लिए टेक्स्ट एडिटर
default-zoom-step = ज़ूम चरण
wrap-around = लपेटें
zoom-in = बड़ा करें
default-size = मूल आकार
zoom-out = छोटा करें

View file

@ -25,8 +25,8 @@ git-management-description = A Git-kezelő egy verziókezeléssel kapcsolatos fe
git-management-loading = Git-kezelő betöltése… git-management-loading = Git-kezelő betöltése…
stage = Előkészítés stage = Előkészítés
staged-changes = Előkészített változtatások staged-changes = Előkészített változtatások
unstage = Változtatások visszavonása előkészítésből unstage = Előkészítés visszavonása
unstaged-changes = Előkészítésből visszavont változtatások unstaged-changes = Nem előkészített változtatások
## Project search ## Project search
@ -35,7 +35,7 @@ project-search = Projektkereső
## Prompt save changes ## Prompt save changes
prompt-save-changes-title = Mented a változtatásokat bezárás előtt? prompt-save-changes-title = Mented a változtatásokat bezárás előtt?
prompt-unsaved-changes = Vannak nem mentett változtatások. Ha nem mentesz, ezek el fognak veszni! prompt-unsaved-changes = Vannak nem mentett változtatások. Ha nem mentesz, ezek el fognak veszni.
cancel = Mégse cancel = Mégse
discard = Változtatások elvetése discard = Változtatások elvetése
save-all = Összes mentése save-all = Összes mentése
@ -60,7 +60,7 @@ default-zoom-step = Nagyítási mérték
### Keyboard shortcuts ### Keyboard shortcuts
keyboard-shortcuts = Gyorsbillentyűk keyboard-shortcuts = Gyorsbillentyűk
enable-vim-bindings = Vim billentyűkombinációk engedélyezése enable-vim-bindings = Vim-billentyűkombinációk engedélyezése
# Find # Find
find-placeholder = Keresés… find-placeholder = Keresés…
find-previous = Előző találat find-previous = Előző találat
@ -68,7 +68,7 @@ find-next = Következő találat
replace-placeholder = Csere… replace-placeholder = Csere…
replace = Csere replace = Csere
replace-all = Összes lecserélése replace-all = Összes lecserélése
case-sensitive = Kis- és nagybetű érzékenység case-sensitive = Kis- és nagybetű-érzékenység
use-regex = Regex használata use-regex = Regex használata
wrap-around = Körbefutás wrap-around = Körbefutás
@ -100,7 +100,7 @@ quit = Kilépés
edit = Szerkesztés edit = Szerkesztés
undo = Visszavonás undo = Visszavonás
redo = Visszaállítás redo = Újra
cut = Kivágás cut = Kivágás
copy = Másolás copy = Másolás
paste = Beillesztés paste = Beillesztés

View file

@ -18,7 +18,7 @@ appearance = Tampilan
git-management = Pengelolaan Git git-management = Pengelolaan Git
theme = Tema theme = Tema
git-management-description = Pengelolaan Git adalah alat pengembang yang digunakan untuk operasi pengendalian versi. git-management-description = Pengelolaan Git adalah alat pengembang yang digunakan untuk operasi pengendalian versi.
match-desktop = Cocokkan desktop match-desktop = Cocok desktop
menu-settings = Pengaturan... menu-settings = Pengaturan...
git-management-loading = Memuat pengelolaan Git... git-management-loading = Memuat pengelolaan Git...
staged-changes = Perubahan yang bertahap staged-changes = Perubahan yang bertahap

View file

@ -1,8 +1,8 @@
cosmic-text-editor = COSMIC Text Editor cosmic-text-editor = Editor di testo COSMIC
comment = Editor di testo di COSMIC comment = Editor di testo per il desktop COSMIC
new-document = Nuovo documento new-document = Nuovo documento
open-project = Apri progetto open-project = Apri progetto
todo = TODO todo = A fare
# Context Pages # Context Pages
@ -15,15 +15,15 @@ support = Supporto
## Document statistics ## Document statistics
document-statistics = Statistiche documento document-statistics = Statistiche documento
word-count = Conteggio parole word-count = Conteggio delle parole
character-count = Caratteri character-count = Caratteri
character-count-no-spaces = Caratteri (senza spazi) character-count-no-spaces = Caratteri (senza spazi)
line-count = Righe line-count = Linee
## Git management ## Git management
git-management = Gestione Git git-management = Gestione Git
git-management-description = Gestione Git è uno strumento per sviluppatori, usato per le operazioni di controllo versione. git-management-description = Gestione Git è uno strumento per sviluppatori, usato per le operazioni di controllo di versione.
git-management-loading = Caricamento Gestione Git... git-management-loading = Caricamento Gestione Git...
stage = Prepara modifiche stage = Prepara modifiche
staged-changes = Modifiche preparate staged-changes = Modifiche preparate
@ -35,8 +35,8 @@ project-search = Ricerca nel progetto
## Prompt save changes ## Prompt save changes
prompt-save-changes-title = Modifiche non salvate prompt-save-changes-title = Salvare le modifiche prima di chiudere?
prompt-unsaved-changes = Hai delle modifiche non salvate. Vuoi salvarle? prompt-unsaved-changes = Sono presenti modifiche non salvate. Se continui senza salvare, queste modifiche andranno perse.
cancel = Annulla cancel = Annulla
discard = Ignora modifiche discard = Ignora modifiche
save-all = Salva tutto save-all = Salva tutto
@ -49,7 +49,7 @@ settings = Impostazioni
appearance = Aspetto appearance = Aspetto
theme = Tema theme = Tema
match-desktop = Sistema match-desktop = Abbina al desktop
dark = Scuro dark = Scuro
light = Chiaro light = Chiaro
syntax-dark = Sintassi scura syntax-dark = Sintassi scura
@ -89,8 +89,8 @@ close-project = Chiudi progetto
save = Salva save = Salva
save-as = Salva come... save-as = Salva come...
revert-all-changes = Annulla tutte le modifiche revert-all-changes = Annulla tutte le modifiche
menu-document-statistics = Statistiche documento... menu-document-statistics = Statistiche di documento...
document-type = Tipo documento... document-type = Tipo di documento...
encoding = Codifica... encoding = Codifica...
menu-git-management = Gestione Git... menu-git-management = Gestione Git...
print = Stampa print = Stampa

View file

@ -1,9 +1,9 @@
cancel = Sefsex cancel = Semmet
undo = Ssemmet undo = Ssemmet
save = Sekles save = Sekles
quit = Tuffɣa quit = Ffeɣ
replace = Semselsi replace = Semselsi
support = Tallalt support = Tallelt
settings = Iɣewwaṛen settings = Iɣewwaṛen
appearance = Timeẓri appearance = Timeẓri
theme = Asentel theme = Asentel
@ -16,7 +16,7 @@ default-size = Tiddi tamezwert
zoom-out = Asemẓi zoom-out = Asemẓi
view = Wali view = Wali
menu-settings = Iɣewwaṛen… menu-settings = Iɣewwaṛen…
match-desktop = Amṣada d tnarit match-desktop = Semṣada akked tnarit
file = Afaylu file = Afaylu
new-window = Asfaylu amaynut new-window = Asfaylu amaynut
edit = Ẓreg edit = Ẓreg

View file

@ -5,11 +5,11 @@ replace = Алмастыру
repository = Репозиторий repository = Репозиторий
support = Қолдау support = Қолдау
settings = Баптаулар settings = Баптаулар
appearance = Сыртқы түрі appearance = Сыртқы көрініс
theme = Тақырып theme = Тема
match-desktop = Жұмыс үстеліне сәйкес келу match-desktop = Жұмыс үстеліне сәйкес болу
dark = Қараңғы dark = Қою
light = Жарық light = Ашық
file = Файл file = Файл
new-window = Жаңа терезе new-window = Жаңа терезе
quit = Шығу quit = Шығу

View file

@ -0,0 +1,91 @@
save = Tomar bike
cancel = Têk bibe
undo = Vegerîne
cosmic-text-editor = Edîtorê nivîsê ya COSMIC
stage = Ast
settings = Sazkarî
appearance = Xuyang
theme = Rûkar
dark = Tarî
light = Ronî
support = Piştgirî
quit = Biqedîne
find-placeholder = Bibîne...
copy = Jê bigire
paste = Pê ve bike
match-desktop = Bi sermaseyê re li hev bîne
select-all = Hemûyan hilbijêre
zoom-in = Nêzîk bike
default-size = Mezinahiya berdest
zoom-out = Dûr bike
file = Pel
default-zoom-step = Gavên nêzîkbûnê
keyboard-shortcuts = Kurteriyên kilîtdankê
menu-keyboard-shortcuts = Kurteriyên kilîtdankê...
find-previous = Yê paş bibîne
find-next = Yê pêş bibîne
new-window = Çarçoveya nû
edit = Biguhêrîne
view = Dîtin
menu-settings = Sazkarî...
close-file = Pelê bigire
cut = Jê bike
new-document = Pelbenda nû
open-project = Projeyê veke
line-count = Rêz
repository = Embar
print = Çap bike
replace = Biguhêrîne
find = Bibîne
comment = Edîtorê nivîsê ji bo sermaseya COSMIC
todo = Erk
document-statistics = Amarên pelbendê
word-count = Jimara peyvan
character-count = Tîp
character-count-no-spaces = Tîp (bê valahî)
git-management = Rêveberiya Gitê
git-management-description = Rêveberiya Gitê amûreke pêşvebiran e ku ji bo pêvajoyên kontrolkirina guhertoyan tê bikaranîn.
git-management-loading = Rêveberiya Gitê tê barkirin...
staged-changes = Guhertinên amedekirî
unstage = Ji amedekariyê derxîne
unstaged-changes = Guhertinên ne amedekirî
project-search = Lêgerîna projeyê
prompt-save-changes-title = Berî girtinê guhertinan tomar bike?
prompt-unsaved-changes = Guhertinên te yên netomarkirî hene. Ku tu bê tomarkirinê bidomînî, ev guhertin wê winda bibin.
discard = Guhertinan paşguh bike
save-all = Hemûyan tomar bike
syntax-dark = Syntaxa tarî
syntax-light = Rêzamana ronî
default-font = Cûrenivîsa berdest
default-font-size = Mezinahiya cûrenivîsê ya berdest
enable-vim-bindings = Girêdanên Vim çalak bike
replace-placeholder = Biguhêrîne...
replace-all = Hemûyan biguhêrîne
case-sensitive = Hestiyar e li hember tîpên mezin/biçûk
use-regex = Regexê bi kar bîne
wrap-around = Pêçana dorhêlê
new-file = Pela nû
open-file = Pelê veke...
open-recent-file = Pelê dawî veke
menu-open-project = Projeyê veke...
open-recent-project = Projeya dawî veke
close-project = Projeyê bigire
save-as = Tomar bike wekî...
revert-all-changes = Hemû guhertinan vegerîne
menu-document-statistics = Amarên pelbendê...
document-type = Cûreyê pelbendê...
encoding = Tê kodkirin...
menu-git-management = Rêveberiya Gitê...
redo = Dûbare bike
find-in-project = Di projeyê de bibîne...
spell-check = Kontrola rastnivîsê...
indentation = Valahiya destpêkê
automatic-indentation = Valahiya destpêkê ya xweber
tab-width = Ferehiya rûgerê: { $tab_width }
convert-indentation-to-spaces = Indentationê vegerîne valahiyan
convert-indentation-to-tabs = Valahiya destpêkê biguhêrîne bo rûgeran
word-wrap = Pêçana peyvan
show-line-numbers = Jimarên rêzan nîşan bide
highlight-current-line = Rêza heyî ronî bike
syntax-highlighting = Ronîkirina syntaxê...
menu-about = Di derbarê edîtorê nivîsê ya COSMIC de...

0
i18n/lo/cosmic_edit.ftl Normal file
View file

View file

@ -14,7 +14,7 @@ line-count = Eilučių skaičius
## Settings ## Settings
settings = Nustatymai settings = Nuostatai
## Appearance ## Appearance
@ -25,7 +25,7 @@ default-font-size = Numatytas šrifto dydis
### Keyboard shortcuts ### Keyboard shortcuts
keyboard-shortcuts = Klaviatūros greitieji klavišai keyboard-shortcuts = Spartieji klavišai
enable-vim-bindings = Naudoti Vim sąsajas enable-vim-bindings = Naudoti Vim sąsajas
# Menu # Menu
@ -36,28 +36,28 @@ enable-vim-bindings = Naudoti Vim sąsajas
file = Failas file = Failas
new-file = Naujas failas new-file = Naujas failas
new-window = Naujas langas new-window = Naujas langas
open-file = Atidaryti failą... open-file = Atverti failą...
todo = TODO todo = TODO
save = Išsaugoti save = Išsaugoti
save-as = Išsaugoti kaip... save-as = Išsaugoti kaip...
revert-all-changes = Atstatyti visus pakeitimus revert-all-changes = Atšaukti visus keitimus
menu-document-statistics = Apie dokumentą... menu-document-statistics = Apie dokumentą...
document-type = Dokumento tipas... document-type = Dokumento tipas...
encoding = Kodavimas... encoding = Koduotė...
print = Spausdinti print = Spausdinti
quit = Išeiti quit = Išjungti
## Edit ## Edit
edit = Redaguoti edit = Redaguoti
undo = Anuliuoti undo = Anuliuoti
redo = Atkurti redo = Grąžinti
cut = Iškirpti cut = Iškirpti
copy = Kopijuoti copy = Kopijuoti
paste = Įklijuoti paste = Įdėti
find = Surasti find = Rasti
replace = Pakeisti replace = Keisti
spell-check = Rašybos tikrinimas... spell-check = Tikrinti rašybą...
## View ## View
@ -70,50 +70,51 @@ automatic-indentation = Automatinė įtrauka
tab-width = Tabuliavimo žingsnio plotis: { $tab_width } tab-width = Tabuliavimo žingsnio plotis: { $tab_width }
convert-indentation-to-spaces = Pakeisti įtrauką tarpais convert-indentation-to-spaces = Pakeisti įtrauką tarpais
convert-indentation-to-tabs = Pakeisti įtrauką tabuliavimo žingsniu convert-indentation-to-tabs = Pakeisti įtrauką tabuliavimo žingsniu
word-wrap = Žodžių perkėlimas word-wrap = Žodžių kėlimas
show-line-numbers = Rodyti eilučių numerius show-line-numbers = Rodyti eilučių numerius
highlight-current-line = Paryškinti dabartinę eilutę highlight-current-line = Paryškinti dabartinę eilutę
syntax-highlighting = Sintaksės tikrinimas... syntax-highlighting = Sintaksės tikrinimas...
menu-settings = Nustatymai... menu-settings = Nuostatai...
menu-keyboard-shortcuts = Klaviatūros greitieji klavišai... menu-keyboard-shortcuts = Spartieji klavišai...
menu-about = Apie COSMIC Text Editor... menu-about = Apie COSMIC Rašyklę...
cancel = Atšaukti cancel = Atšaukti
repository = Saugykla repository = Saugykla
support = Palaikymas support = Palaikymas
cosmic-text-editor = COSMIC Text Editor cosmic-text-editor = COSMIC Rašyklė
git-management = Git valdymas git-management = Git valdymas
git-management-description = Git valdymas - kūrėjų įrankis, naudojamas versijų kontrolės sistemos operacijoms įvykdyti. git-management-description = Git valdymas - kūrėjų įrankis, naudojamas versijų kontrolės sistemos operacijoms įvykdyti.
git-management-loading = Kraunamas Git valdymas... git-management-loading = Kraunamas Git valdymas...
save-all = Išsaugoti viską save-all = Išsaugoti viską
syntax-dark = Tamsi sintaksė syntax-dark = Tamsi sintaksė
default-zoom-step = Priartinimo žingsniai default-zoom-step = Artinimo žingsniai
open-recent-file = Atidaryti pastararąjį failą open-recent-file = Atverti pastarąjį failą
close-file = Uždaryti failą close-file = Uždaryti failą
menu-open-project = Atidaryti projektą... menu-open-project = Atidaryti projektą...
open-recent-project = Atidaryti pastarąjį projektą open-recent-project = Atidaryti pastarąjį projektą
close-project = Uždaryti projektą close-project = Uždaryti projektą
select-all = Pažymėti viską select-all = Žymėti viską
find-in-project = Ieškoti projekte... find-in-project = Ieškoti projekte...
zoom-in = Priartinti zoom-in = Artinti
default-size = Numatytas dydis default-size = Numatytas dydis
zoom-out = Nutolinti zoom-out = Tolinti
menu-git-management = Git valdymas... menu-git-management = Git valdymas...
staged-changes = Patvirtinti pokyčiai staged-changes = Patvirtinti keitimai
unstaged-changes = Nepatvirtinti pokyčiai unstaged-changes = Nepatvirtinti keitimai
prompt-save-changes-title = Išsaugoti pakeitimus prieš uždarant? prompt-save-changes-title = Išsaugoti pakeitimus prieš uždarant?
prompt-unsaved-changes = Yra neišsaugotų pakeitimų. Jeigu tęsite neišsaugojus, jūsų pakeitimai bus prarasti. prompt-unsaved-changes = Yra neišsaugotų keitimų. Jei tęsite neišsaugoję, šie keitimai dings.
discard = Pašalinti pakeitimus discard = Pašalinti keitimus
match-desktop = Pagal darbalaukio temą match-desktop = Pagal darbalaukio temą
find-placeholder = Surasti... find-placeholder = Rasti...
find-previous = Atgalinis ieškojimas find-previous = Ieškoti ankstesnio
find-next = Ieškoti sekančio find-next = Ieškoti tolesnio
replace-placeholder = Pakeisti... replace-placeholder = Keisti...
replace-all = Pakeisti visus replace-all = Pakeisti visus
case-sensitive = Skirti raidžių dydžius case-sensitive = Skirti raidžių dydžius
use-regex = Naudoti regex use-regex = Naudoti regex
wrap-around = Kelti į sekančią eilutę wrap-around = Laikinai skaidyti eilutes
stage = Patvirtinti pakeitimai stage = Patvirtinti pakeitimai
project-search = Paieška projekte project-search = Paieška projekte
dark = Tamsus dark = Tamsus
light = Šviesus light = Šviesus
comment = COSMIC desktop teksto redaktorius comment = COSMIC aplinkos rašyklė
unstage = Atšaukti patvirtinimą

View file

@ -1 +1,13 @@
settings = Paramètres settings = Configuracion
appearance = Aparéncia
theme = Tèma
match-desktop = Assortir al burèu
dark = Escur
light = Clar
file = Fichièr
close-file = Tampar lo fichièr
cancel = Anullar
repository = Depaus
menu-settings = Configuracion...
quit = Quitar
replace = Remplaçar

View file

@ -3,11 +3,11 @@ support = ਸਹਿਯੋਗ
settings = ਸੈਟਿੰਗਾਂ settings = ਸੈਟਿੰਗਾਂ
appearance = ਦਿੱਖ appearance = ਦਿੱਖ
theme = ਥੀਮ theme = ਥੀਮ
match-desktop = ਡੈਸਕਟਾਪ ਨਾਲ ਮਿਲਦਾ match-desktop = ਡੈਸਕਟਾਪ ਨਾਲ ਮਿਲਾਓ
dark = ਗੂੜ੍ਹਾ dark = ਗੂੜ੍ਹਾ
light = ਹਲਕਾ light = ਫਿੱਕਾ
default-zoom-step = ਜ਼ੂਮ ਸਟੈਪ default-zoom-step = ਜ਼ੂਮ ਸਟੈਪ
quit = ਬਾਹਰ quit = ਸਮਾਪਤ
edit = ਸੋਧੋ edit = ਸੋਧੋ
copy = ਕਾਪੀ ਕਰੋ copy = ਕਾਪੀ ਕਰੋ
paste = ਚੇਪੋ paste = ਚੇਪੋ

View file

@ -1,5 +1,5 @@
cosmic-text-editor = Edytor Tekstu COSMIC cosmic-text-editor = Edytor Tekstu COSMIC
comment = Edytor tekstu pulpitu COSMIC comment = Edytor tekstu dla środowiska COSMIC
new-document = Nowy dokument new-document = Nowy dokument
open-project = Otwórz projekt open-project = Otwórz projekt
todo = TODO todo = TODO
@ -64,7 +64,7 @@ default-zoom-step = Stopniowanie powiększania
keyboard-shortcuts = Skróty klawiszowe keyboard-shortcuts = Skróty klawiszowe
enable-vim-bindings = Włącz tryb Vim enable-vim-bindings = Włącz tryb Vim
# Find # Find
find-placeholder = Szukaj… find-placeholder = Wyszukaj…
find-previous = Znajdź poprzedni find-previous = Znajdź poprzedni
find-next = Znajdź następny find-next = Znajdź następny
replace-placeholder = Zastąp… replace-placeholder = Zastąp…
@ -95,7 +95,7 @@ document-type = Typ dokumentu…
encoding = Kodowanie… encoding = Kodowanie…
menu-git-management = Zarządzanie git… menu-git-management = Zarządzanie git…
print = Drukuj print = Drukuj
quit = Zamknij quit = Zakończ
## Edit ## Edit
@ -106,8 +106,8 @@ cut = Wytnij
copy = Kopiuj copy = Kopiuj
paste = Wklej paste = Wklej
select-all = Zaznacz wszystko select-all = Zaznacz wszystko
find = Szukaj find = Wyszukaj
find-in-project = Szukaj w projekcie… find-in-project = Wyszukaj w projekcie…
spell-check = Sprawdź ortografię… spell-check = Sprawdź ortografię…
## View ## View

View file

@ -94,7 +94,7 @@ document-type = Tipo de documento...
encoding = Codificação... encoding = Codificação...
menu-git-management = Gerenciamento do Git... menu-git-management = Gerenciamento do Git...
print = Imprimir print = Imprimir
quit = Sair quit = Encerrar
## Edit ## Edit

View file

@ -94,7 +94,7 @@ document-type = Тип документа...
encoding = Кодировка... encoding = Кодировка...
menu-git-management = Управление Git... menu-git-management = Управление Git...
print = Печать print = Печать
quit = Выйти quit = Завершить
## Edit ## Edit

2
i18n/sat/cosmic_edit.ftl Normal file
View file

@ -0,0 +1,2 @@
cancel = ᱵᱟᱹᱛᱤᱞ
save = ᱥᱟᱧᱪᱟᱣ

View file

@ -0,0 +1,91 @@
quit = Изађи
cancel = Откажи
settings = Подешавања
appearance = Изглед
dark = Тамна
light = Светла
replace = Замени
save = Сачувај
undo = Опозови
repository = Ризница
support = Подршка
theme = Тема
match-desktop = Прати радну површину
file = Датотека
new-window = Нови прозор
edit = Уреди
cut = Исеци
copy = Умножи
paste = Залепи
select-all = Означи све
zoom-in = Увећајте приказ
default-size = Подразумевана величина
zoom-out = Умањите приказ
view = Преглед
menu-settings = Подешавања...
cosmic-text-editor = Космик уређивач текста
comment = Уређивач текста за Космик радну површину
new-document = Нови документ
open-project = Отвори пројекат
todo = УРАДИТИ
document-statistics = Статистика документа
word-count = Број речи
character-count = Знакови
character-count-no-spaces = Знакови (без размака)
line-count = Редови
git-management = Управљање Гитом
git-management-description = Управљање Гитом је алат за програмере који се користи за радње управљања издањима.
git-management-loading = Учитавање управљања Гитом...
stage = Припреми
staged-changes = Припремљене измене
unstage = Поништи припрему
unstaged-changes = Неприпремљене измене
project-search = Претрага пројекта
prompt-save-changes-title = Сачувај измене пре затварања?
prompt-unsaved-changes = Имате несачуване измене. Ако наставите без сачувања, ове измене ће бити изгубљене.
discard = Одбаци измене
save-all = Сачувај све
syntax-dark = Тамна синтакса
syntax-light = Светла синтакса
default-font = Подразумевани фонт
default-font-size = Подразумевана величина фонта
default-zoom-step = Кораци увећања
keyboard-shortcuts = Пречице тастатуре
enable-vim-bindings = Омогући Вим везивања
find-placeholder = Пронађи...
find-previous = Нађи претходно
find-next = Нађи следеће
replace-placeholder = Замени…
replace-all = Замени све
case-sensitive = Разликује величину слова
use-regex = Употреби регуларни израз
wrap-around = Преламај около
new-file = Нова датотека
open-file = Отвори датотеку...
open-recent-file = Отвори недавну датотеку
close-file = Затвори датотеку
menu-open-project = Отвори пројекат...
open-recent-project = Отвори недавни пројекат
close-project = Затвори пројекат
save-as = Сачувај као...
revert-all-changes = Врати све измене
menu-document-statistics = Статистика документа...
document-type = Врста документа...
encoding = Кодирање...
menu-git-management = Управљање Гитом...
print = Штампај
redo = Понови
find = Пронађи
find-in-project = Пронађи у пројекту...
spell-check = Провера правописа...
indentation = Увлачење
automatic-indentation = Самостално увлачење
tab-width = Ширина табулатора: { $tab_width }
convert-indentation-to-spaces = Претворите увлачење у размаке
convert-indentation-to-tabs = Претворите увлачење у табулаторе
word-wrap = Прелом речи
show-line-numbers = Приказује бројеве редова
highlight-current-line = Истиче текући ред
syntax-highlighting = Истицање синтаксе...
menu-keyboard-shortcuts = Пречице на тастатури...
menu-about = О Космик уређивачу текста...

View file

@ -119,7 +119,7 @@ word-wrap = Radbrytning
show-line-numbers = Visa radnummer show-line-numbers = Visa radnummer
highlight-current-line = Markera aktuell rad highlight-current-line = Markera aktuell rad
syntax-highlighting = Syntaxmarkering... syntax-highlighting = Syntaxmarkering...
menu-settings = Inställningar… menu-settings = Inställningar...
menu-keyboard-shortcuts = Tangentbordsgenvägar... menu-keyboard-shortcuts = Tangentbordsgenvägar...
menu-about = Om COSMIC Textredigerare… menu-about = Om COSMIC Textredigerare…
cosmic-text-editor = COSMIC Textredigerare cosmic-text-editor = COSMIC Textredigerare

View file

@ -0,0 +1,6 @@
cancel = ยกเลิก
settings = การตั้งค่า
dark = มืด
light = สว่าง
replace = แทนที่
appearance = ลักษณะ

View file

@ -90,7 +90,7 @@ document-type = Тип документа...
encoding = Кодування... encoding = Кодування...
menu-git-management = Керування Git... menu-git-management = Керування Git...
print = Друкувати print = Друкувати
quit = Вийти quit = Завершити
## Edit ## Edit

View file

@ -1,5 +1,5 @@
cosmic-text-editor = COSMIC 文字編輯器 cosmic-text-editor = COSMIC 文字編輯器
new-document = 新建文件 new-document = 新文件
open-project = 開啟專案 open-project = 開啟專案
todo = 待辦事項 todo = 待辦事項
@ -71,8 +71,8 @@ use-regex = 使用正規表示式
## File ## File
file = 檔案 file = 檔案
new-file = 新建檔案 new-file = 新增檔案
new-window = 新建視窗 new-window = 新增視窗
open-file = 開啟檔案... open-file = 開啟檔案...
open-recent-file = 開啟最近使用的檔案 open-recent-file = 開啟最近使用的檔案
close-file = 關閉檔案 close-file = 關閉檔案
@ -87,7 +87,7 @@ document-type = 文件類型...
encoding = 編碼... encoding = 編碼...
menu-git-management = Git 管理... menu-git-management = Git 管理...
print = 列印 print = 列印
quit = 退出 quit = 結束
## Edit ## Edit
@ -124,7 +124,7 @@ stage = 暫存
unstage = 取消暫存 unstage = 取消暫存
cancel = 取消 cancel = 取消
save-all = 全部儲存 save-all = 全部儲存
repository = 軟體庫源 repository = 軟體庫
support = 支援 support = 支援
default-zoom-step = 縮放步進 default-zoom-step = 縮放步進
zoom-in = 放大 zoom-in = 放大

View file

@ -5,7 +5,7 @@ Exec=cosmic-edit %F
Terminal=false Terminal=false
Type=Application Type=Application
StartupNotify=true StartupNotify=true
MimeType=text/plain; MimeType=text/plain;application/x-zerosize;
Icon=com.system76.CosmicEdit Icon=com.system76.CosmicEdit
Categories=COSMIC;Utility;TextEditor; Categories=COSMIC;Utility;TextEditor;
Keywords=Text;Editor; Keywords=Text;Editor;

View file

@ -26,6 +26,9 @@ pub fn key_binds() -> HashMap<KeyBind, Action> {
bind!([Ctrl], Key::Character("f".into()), Find); bind!([Ctrl], Key::Character("f".into()), Find);
bind!([Ctrl], Key::Character("h".into()), FindAndReplace); bind!([Ctrl], Key::Character("h".into()), FindAndReplace);
bind!([Ctrl], Key::Character("v".into()), Paste); bind!([Ctrl], Key::Character("v".into()), Paste);
bind!([Shift], Key::Named(Named::Insert), Paste);
bind!([Ctrl], Key::Named(Named::Insert), Copy);
bind!([Shift], Key::Named(Named::Delete), Cut);
bind!([Ctrl], Key::Character("t".into()), NewFile); bind!([Ctrl], Key::Character("t".into()), NewFile);
bind!([Ctrl], Key::Character("n".into()), NewWindow); bind!([Ctrl], Key::Character("n".into()), NewWindow);
bind!([Ctrl], Key::Character("o".into()), OpenFileDialog); bind!([Ctrl], Key::Character("o".into()), OpenFileDialog);

View file

@ -11,7 +11,7 @@ use cosmic::{
cosmic_theme, executor, cosmic_theme, executor,
font::Font, font::Font,
iced::{ iced::{
self, Alignment, Background, Color, Length, Limits, Point, Subscription, self, Alignment, Background, Color, Length, Limits, Subscription,
advanced::graphics::text::font_system, advanced::graphics::text::font_system,
clipboard, event, clipboard, event,
futures::{self, SinkExt}, futures::{self, SinkExt},
@ -194,6 +194,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)] #[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
pub enum Action { pub enum Action {
Todo, Todo,
NoOp,
About, About,
CloseFile, CloseFile,
CloseProject(usize), CloseProject(usize),
@ -244,6 +245,7 @@ impl Action {
fn message(&self, entity_opt: Option<Entity>) -> Message { fn message(&self, entity_opt: Option<Entity>) -> Message {
match self { match self {
Self::Todo => Message::Todo, Self::Todo => Message::Todo,
Self::NoOp => Message::NoOp,
Self::About => Message::ToggleContextPage(ContextPage::About), Self::About => Message::ToggleContextPage(ContextPage::About),
Self::CloseFile => Message::CloseFile, Self::CloseFile => Message::CloseFile,
Self::CloseProject(project_i) => Message::CloseProject(*project_i), Self::CloseProject(project_i) => Message::CloseProject(*project_i),
@ -366,11 +368,12 @@ pub enum Message {
GitProjectStatus(Vec<(String, PathBuf, Vec<GitStatus>)>), GitProjectStatus(Vec<(String, PathBuf, Vec<GitStatus>)>),
GitStage(PathBuf, PathBuf), GitStage(PathBuf, PathBuf),
GitUnstage(PathBuf, PathBuf), GitUnstage(PathBuf, PathBuf),
Key(Modifiers, keyboard::Key), Key(Modifiers, keyboard::key::Physical, keyboard::Key),
LaunchUrl(String), LaunchUrl(String),
Modifiers(Modifiers), Modifiers(Modifiers),
NewFile, NewFile,
NewWindow, NewWindow,
NoOp,
NotifyEvent(notify::Event), NotifyEvent(notify::Event),
NotifyWatcher(WatcherWrapper), NotifyWatcher(WatcherWrapper),
OpenFile(PathBuf), OpenFile(PathBuf),
@ -400,7 +403,7 @@ pub enum Message {
SaveAsResult(segmented_button::Entity, DialogResult), SaveAsResult(segmented_button::Entity, DialogResult),
Scroll(f32), Scroll(f32),
SelectAll, SelectAll,
Surface(surface::Action), Surface(surface::Action<Message>),
SystemThemeModeChange(cosmic_theme::ThemeMode), SystemThemeModeChange(cosmic_theme::ThemeMode),
SyntaxTheme(usize, bool), SyntaxTheme(usize, bool),
TabActivate(segmented_button::Entity), TabActivate(segmented_button::Entity),
@ -409,7 +412,7 @@ pub enum Message {
TabClose(segmented_button::Entity), TabClose(segmented_button::Entity),
TabCloseForce(segmented_button::Entity), TabCloseForce(segmented_button::Entity),
TabContextAction(segmented_button::Entity, Action), TabContextAction(segmented_button::Entity, Action),
TabContextMenu(segmented_button::Entity, Option<Point>), TabContextMenu(segmented_button::Entity, bool),
TabNext, TabNext,
TabPrev, TabPrev,
TabSetCursor(segmented_button::Entity, Cursor), TabSetCursor(segmented_button::Entity, Cursor),
@ -691,13 +694,7 @@ impl App {
return Some(NewTab::Exists(entity)); return Some(NewTab::Exists(entity));
} }
// Add to recent files, ensuring only one entry self.add_to_recents(&canonical);
self.config_state.recent_files.retain(|x| x != &canonical);
self.config_state
.recent_files
.push_front(canonical.to_path_buf());
self.config_state.recent_files.truncate(10);
self.save_config_state();
let mut tab = EditorTab::new(&self.config); let mut tab = EditorTab::new(&self.config);
tab.open(canonical); tab.open(canonical);
@ -707,6 +704,15 @@ impl App {
} }
} }
fn add_to_recents(&mut self, canonical: &PathBuf) {
self.config_state.recent_files.retain(|x| x != canonical);
self.config_state
.recent_files
.push_front(canonical.to_path_buf());
self.config_state.recent_files.truncate(10);
self.save_config_state();
}
fn update_config(&mut self) -> Task<Message> { fn update_config(&mut self) -> Task<Message> {
//TODO: provide iterator over data //TODO: provide iterator over data
let entities: Vec<_> = self.tab_model.iter().collect(); let entities: Vec<_> = self.tab_model.iter().collect();
@ -1455,6 +1461,7 @@ impl Application for App {
.author("System76") .author("System76")
.comments(fl!("comment")) .comments(fl!("comment"))
.license("GPL-3.0-only") .license("GPL-3.0-only")
.license_url("https://spdx.org/licenses/GPL-3.0-only")
.developers([("Jeremy Soller", "jeremy@system76.com")]) .developers([("Jeremy Soller", "jeremy@system76.com")])
.links([ .links([
(fl!("repository"), "https://github.com/pop-os/cosmic-edit"), (fl!("repository"), "https://github.com/pop-os/cosmic-edit"),
@ -2124,9 +2131,9 @@ impl Application for App {
|x| x, |x| x,
); );
} }
Message::Key(modifiers, key) => { Message::Key(modifiers, physical, key) => {
for (key_bind, action) in self.key_binds.iter() { for (key_bind, action) in self.key_binds.iter() {
if key_bind.matches(modifiers, &key) { if key_bind.matches(modifiers, &key, Some(&physical)) {
return self.update(action.message(None)); return self.update(action.message(None));
} }
} }
@ -2158,6 +2165,9 @@ impl Application for App {
} }
} }
} }
Message::NoOp => {
// Do nothing
}
Message::NotifyEvent(event) => { Message::NotifyEvent(event) => {
// Reload tabs that changed // Reload tabs that changed
let mut tab_reload = Vec::new(); let mut tab_reload = Vec::new();
@ -2586,11 +2596,18 @@ impl Application for App {
let entity = entity_opt.unwrap_or_else(|| self.tab_model.active()); let entity = entity_opt.unwrap_or_else(|| self.tab_model.active());
if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) { if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) {
if tab.path_opt.is_none() { match tab.path_opt.clone() {
return self.update(Message::SaveAsDialog(Some(entity))); Some(path) => {
title_opt = Some(tab.title());
tab.save();
if let Ok(canonical) = fs::canonicalize(&path) {
self.add_to_recents(&canonical);
}
}
None => {
return self.update(Message::SaveAsDialog(Some(entity)));
}
} }
title_opt = Some(tab.title());
tab.save();
} }
if let Some(title) = title_opt { if let Some(title) = title_opt {
self.tab_model.text_set(self.tab_model.active(), title); self.tab_model.text_set(self.tab_model.active(), title);
@ -2601,10 +2618,17 @@ impl Application for App {
let entities: Vec<_> = self.tab_model.iter().collect(); let entities: Vec<_> = self.tab_model.iter().collect();
for entity in entities { for entity in entities {
if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) { if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) {
if tab.path_opt.is_none() { match tab.path_opt.clone() {
log::warn!("{} has no path when doing save all", tab.title()); Some(path) => {
tab.save();
if let Ok(canonical) = fs::canonicalize(&path) {
self.add_to_recents(&canonical);
}
}
None => {
log::warn!("{} has no path when doing save all", tab.title());
}
} }
tab.save();
} }
} }
return self.update_dialogs(); return self.update_dialogs();
@ -2648,6 +2672,11 @@ impl Application for App {
tab.path_opt = Some(paths.remove(0)); tab.path_opt = Some(paths.remove(0));
title_opt = Some(tab.title()); title_opt = Some(tab.title());
tab.save(); tab.save();
if let Some(path) = tab.path_opt.clone() {
if let Ok(canonical) = fs::canonicalize(&path) {
self.add_to_recents(&canonical);
}
}
} }
if let Some(title) = title_opt { if let Some(title) = title_opt {
self.tab_model.text_set(entity, title); self.tab_model.text_set(entity, title);
@ -2684,9 +2713,7 @@ impl Application for App {
} }
} }
Message::Surface(a) => { Message::Surface(a) => {
return cosmic::task::message(cosmic::Action::Cosmic( return cosmic::task::message(cosmic::Action::Surface(a));
cosmic::app::Action::Surface(a),
));
} }
Message::SystemThemeModeChange(_theme_mode) => { Message::SystemThemeModeChange(_theme_mode) => {
return self.update_config(); return self.update_config();
@ -2765,7 +2792,9 @@ impl Application for App {
} }
Message::TabCloseForce(entity) => { Message::TabCloseForce(entity) => {
// Activate closest item // Activate closest item
if let Some(position) = self.tab_model.position(entity) { if self.tab_model.active() == entity
&& let Some(position) = self.tab_model.position(entity)
{
if position > 0 { if position > 0 {
self.tab_model.activate_position(position - 1); self.tab_model.activate_position(position - 1);
} else { } else {
@ -2779,7 +2808,7 @@ impl Application for App {
// If that was the last tab, exit the application // If that was the last tab, exit the application
if self.tab_model.iter().next().is_none() { if self.tab_model.iter().next().is_none() {
return self.update(Message::QuitForce) return self.update(Message::QuitForce);
} }
// Close PromptSaveClose dialog if open for this entity // Close PromptSaveClose dialog if open for this entity
@ -2792,15 +2821,15 @@ impl Application for App {
Message::TabContextAction(entity, action) => { Message::TabContextAction(entity, action) => {
if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) { if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) {
// Close context menu // Close context menu
tab.context_menu = None; tab.context_menu_open = false;
// Run action's message // Run action's message
return self.update(action.message(None)); return self.update(action.message(None));
} }
} }
Message::TabContextMenu(entity, position_opt) => { Message::TabContextMenu(entity, open) => {
if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) { if let Some(Tab::Editor(tab)) = self.tab_model.data_mut::<Tab>(entity) {
// Update context menu // Update context menu
tab.context_menu = position_opt; tab.context_menu_open = open;
} }
} }
Message::TabNext => { Message::TabNext => {
@ -3005,12 +3034,19 @@ impl Application for App {
} }
fn header_start(&self) -> Vec<Element<'_, Message>> { fn header_start(&self) -> Vec<Element<'_, Message>> {
let has_selection = match self.active_tab() {
Some(Tab::Editor(tab)) => tab.editor.lock().unwrap().selection() != Selection::None,
Some(Tab::GitDiff(_)) => false,
None => false,
};
vec![menu_bar( vec![menu_bar(
&self.core, &self.core,
&self.config, &self.config,
&self.config_state, &self.config_state,
&self.key_binds, &self.key_binds,
&self.projects, &self.projects,
has_selection,
)] )]
} }
@ -3055,23 +3091,25 @@ impl Application for App {
.on_focus(Message::FindFocused(false)) .on_focus(Message::FindFocused(false))
.on_auto_scroll(Message::AutoScroll) .on_auto_scroll(Message::AutoScroll)
.on_changed(Message::TabChanged(tab_id)) .on_changed(Message::TabChanged(tab_id))
.has_context_menu(tab.context_menu.is_some()) .has_context_menu(tab.context_menu_open)
.on_context_menu(move |position_opt| { .on_context_menu(move |open| Message::TabContextMenu(tab_id, open));
Message::TabContextMenu(tab_id, position_opt)
});
if self.config.highlight_current_line { if self.config.highlight_current_line {
text_box = text_box.highlight_current_line(); text_box = text_box.highlight_current_line();
} }
if self.config.line_numbers { if self.config.line_numbers {
text_box = text_box.line_numbers(); text_box = text_box.line_numbers();
} }
let mut popover = widget::popover(text_box); let has_selection = tab.editor.lock().unwrap().selection() != Selection::None;
if let Some(point) = tab.context_menu { let mut context_menu = widget::context_menu(
popover = popover text_box,
.popup(menu::context_menu(&self.key_binds, tab_id)) Some(menu::context_menu(&self.key_binds, tab_id, has_selection)),
.position(widget::popover::Position::Point(point)); )
.on_close(Message::TabContextMenu(tab_id, false))
.on_surface_action(Message::Surface);
if let Some(window_id) = self.core().main_window_id() {
context_menu = context_menu.window_id(window_id);
} }
tab_column = tab_column.push(popover); tab_column = tab_column.push(context_menu);
if self.config.vim_bindings { if self.config.vim_bindings {
let status = { let status = {
let editor = tab.editor.lock().unwrap(); let editor = tab.editor.lock().unwrap();
@ -3307,12 +3345,15 @@ impl Application for App {
let mut subscriptions = vec![ let mut subscriptions = vec![
event::listen_with(|event, status, window_id| match event { event::listen_with(|event, status, window_id| match event {
event::Event::Keyboard(keyboard::Event::KeyPressed { modifiers, key, .. }) => { event::Event::Keyboard(keyboard::Event::KeyPressed {
match status { modifiers,
event::Status::Ignored => Some(Message::Key(modifiers, key)), physical_key,
event::Status::Captured => None, key,
} ..
} }) => match status {
event::Status::Ignored => Some(Message::Key(modifiers, physical_key, key)),
event::Status::Captured => None,
},
event::Event::Keyboard(keyboard::Event::ModifiersChanged(modifiers)) => { event::Event::Keyboard(keyboard::Event::ModifiersChanged(modifiers)) => {
Some(Message::Modifiers(modifiers)) Some(Message::Modifiers(modifiers))
} }

View file

@ -1,18 +1,15 @@
// SPDX-License-Identifier: GPL-3.0-only // SPDX-License-Identifier: GPL-3.0-only
use cosmic::widget::menu::Item as MenuItem; use cosmic::widget::menu::Item as MenuItem;
use cosmic::widget::menu::action::MenuAction;
use cosmic::widget::menu::key_bind::KeyBind; use cosmic::widget::menu::key_bind::KeyBind;
use cosmic::{ use cosmic::{
Element, Element,
app::Core, app::Core,
iced::{
Background, Border, Length, advanced::widget::text::Style as TextStyle, widget::column,
},
theme,
widget::{ widget::{
self, divider, self,
menu::{ItemHeight, ItemWidth, menu_button}, menu::{ItemHeight, ItemWidth},
responsive_menu_bar, segmented_button, space, responsive_menu_bar, segmented_button,
}, },
}; };
use std::{collections::HashMap, path::PathBuf, sync::LazyLock}; use std::{collections::HashMap, path::PathBuf, sync::LazyLock};
@ -116,64 +113,49 @@ fn format_recent_menu_path(path: &PathBuf, home_dir_opt: Option<&PathBuf>) -> St
truncate_middle(&display, RECENT_MENU_LABEL_MAX_CHARS) truncate_middle(&display, RECENT_MENU_LABEL_MAX_CHARS)
} }
pub fn context_menu<'a>( /// A context menu action dispatched to the tab the menu was opened on.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct TabAction(pub segmented_button::Entity, pub Action);
impl MenuAction for TabAction {
type Message = Message;
fn message(&self) -> Message {
Message::TabContextAction(self.0, self.1)
}
}
pub fn context_menu(
key_binds: &HashMap<KeyBind, Action>, key_binds: &HashMap<KeyBind, Action>,
entity: segmented_button::Entity, entity: segmented_button::Entity,
) -> Element<'a, Message> { has_selection: bool,
fn key_style(theme: &cosmic::Theme) -> TextStyle { ) -> Vec<widget::menu::Tree<Message>> {
let mut color = theme.cosmic().background.component.on; let item =
color.alpha *= 0.75; |label: String, action: Action| MenuItem::Button(label, None, TabAction(entity, action));
TextStyle { let optional = |label: String, action: Action, enabled: bool| {
color: Some(color.into()), if enabled {
MenuItem::Button(label, None, TabAction(entity, action))
} else {
MenuItem::ButtonDisabled(label, None, TabAction(entity, action))
} }
}
let menu_item = |menu_label, menu_action| {
let mut key = String::new();
for (key_bind, key_action) in key_binds.iter() {
if key_action == &menu_action {
key = key_bind.to_string();
break;
}
}
menu_button(vec![
widget::text(menu_label).into(),
space::horizontal().into(),
widget::text(key)
.class(theme::Text::Custom(key_style))
.into(),
])
.on_press(Message::TabContextAction(entity, menu_action))
}; };
widget::container(column!( let key_binds: HashMap<KeyBind, TabAction> = key_binds
menu_item(fl!("undo"), Action::Undo), .iter()
menu_item(fl!("redo"), Action::Redo), .map(|(key_bind, action)| (key_bind.clone(), TabAction(entity, *action)))
divider::horizontal::light(), .collect();
menu_item(fl!("cut"), Action::Cut), widget::menu::items(
menu_item(fl!("copy"), Action::Copy), &key_binds,
menu_item(fl!("paste"), Action::Paste), vec![
menu_item(fl!("select-all"), Action::SelectAll), item(fl!("undo"), Action::Undo),
)) item(fl!("redo"), Action::Redo),
.padding(1) MenuItem::Divider,
//TODO: move style to libcosmic optional(fl!("cut"), Action::Cut, has_selection),
.style(|theme| { optional(fl!("copy"), Action::Copy, has_selection),
let cosmic = theme.cosmic(); item(fl!("paste"), Action::Paste),
let component = &cosmic.background.component; item(fl!("select-all"), Action::SelectAll),
widget::container::Style { ],
icon_color: Some(component.on.into()), )
text_color: Some(component.on.into()),
background: Some(Background::Color(component.base.into())),
border: Border {
radius: cosmic.radius_s().map(|x| x + 1.0).into(),
width: 1.0,
color: component.divider.into(),
},
..Default::default()
}
})
.width(Length::Fixed(240.0))
.into()
} }
pub fn menu_bar<'a>( pub fn menu_bar<'a>(
@ -182,6 +164,7 @@ pub fn menu_bar<'a>(
config_state: &ConfigState, config_state: &ConfigState,
key_binds: &HashMap<KeyBind, Action>, key_binds: &HashMap<KeyBind, Action>,
projects: &Vec<(String, PathBuf)>, projects: &Vec<(String, PathBuf)>,
has_selection: bool,
) -> Element<'a, Message> { ) -> Element<'a, Message> {
//TODO: port to libcosmic //TODO: port to libcosmic
let menu_tab_width = |tab_width: u16| { let menu_tab_width = |tab_width: u16| {
@ -274,8 +257,16 @@ pub fn menu_bar<'a>(
MenuItem::Button(fl!("undo"), None, Action::Undo), MenuItem::Button(fl!("undo"), None, Action::Undo),
MenuItem::Button(fl!("redo"), None, Action::Redo), MenuItem::Button(fl!("redo"), None, Action::Redo),
MenuItem::Divider, MenuItem::Divider,
MenuItem::Button(fl!("cut"), None, Action::Cut), if has_selection {
MenuItem::Button(fl!("copy"), None, Action::Copy), MenuItem::Button(fl!("cut"), None, Action::Cut)
} else {
MenuItem::ButtonDisabled(fl!("cut"), None, Action::NoOp)
},
if has_selection {
MenuItem::Button(fl!("copy"), None, Action::Copy)
} else {
MenuItem::ButtonDisabled(fl!("copy"), None, Action::NoOp)
},
MenuItem::Button(fl!("paste"), None, Action::Paste), MenuItem::Button(fl!("paste"), None, Action::Paste),
MenuItem::Button(fl!("select-all"), None, Action::SelectAll), MenuItem::Button(fl!("select-all"), None, Action::SelectAll),
MenuItem::Divider, MenuItem::Divider,

View file

@ -1,9 +1,6 @@
// SPDX-License-Identifier: GPL-3.0-only // SPDX-License-Identifier: GPL-3.0-only
use cosmic::{ use cosmic::{iced::advanced::graphics::text::font_system, widget::icon};
iced::{Point, advanced::graphics::text::font_system},
widget::icon,
};
use cosmic_files::mime_icon::{FALLBACK_MIME_ICON, mime_for_path, mime_icon}; use cosmic_files::mime_icon::{FALLBACK_MIME_ICON, mime_for_path, mime_icon};
use cosmic_text::{Attrs, Buffer, Cursor, Edit, Selection, Shaping, SyntaxEditor, ViEditor, Wrap}; use cosmic_text::{Attrs, Buffer, Cursor, Edit, Selection, Shaping, SyntaxEditor, ViEditor, Wrap};
use regex::Regex; use regex::Regex;
@ -51,7 +48,7 @@ pub struct EditorTab {
pub path_opt: Option<PathBuf>, pub path_opt: Option<PathBuf>,
attrs: Attrs<'static>, attrs: Attrs<'static>,
pub editor: Mutex<ViEditor<'static, 'static>>, pub editor: Mutex<ViEditor<'static, 'static>>,
pub context_menu: Option<Point>, pub context_menu_open: bool,
pub zoom_adj: i8, pub zoom_adj: i8,
} }
@ -75,7 +72,7 @@ impl EditorTab {
path_opt: None, path_opt: None,
attrs, attrs,
editor: Mutex::new(ViEditor::new(editor)), editor: Mutex::new(ViEditor::new(editor)),
context_menu: None, context_menu_open: false,
zoom_adj, zoom_adj,
}; };

View file

@ -7,6 +7,7 @@ use cosmic::{
Border, Radians, Shell, Transformation, Border, Radians, Shell, Transformation,
clipboard::Clipboard, clipboard::Clipboard,
image, image,
input_method::{Event as InputMethodEvent, InputMethod, Preedit, Purpose},
keyboard::{Key, key::Named}, keyboard::{Key, key::Named},
layout::{self, Layout}, layout::{self, Layout},
renderer::{self, Quad, Renderer as _}, renderer::{self, Quad, Renderer as _},
@ -16,6 +17,7 @@ use cosmic::{
operation::{self, Operation}, operation::{self, Operation},
tree, tree,
}, },
window::Event as WindowEvent,
}, },
iced::{ iced::{
Color, Element, Length, Padding, Point, Rectangle, Size, Vector, Color, Element, Length, Padding, Point, Rectangle, Size, Vector,
@ -49,7 +51,7 @@ pub struct TextBox<'a, Message> {
on_focus: Option<Message>, on_focus: Option<Message>,
click_timing: Duration, click_timing: Duration,
has_context_menu: bool, has_context_menu: bool,
on_context_menu: Option<Box<dyn Fn(Option<Point>) -> Message + 'a>>, on_context_menu: Option<Box<dyn Fn(bool) -> Message + 'a>>,
highlight_current_line: bool, highlight_current_line: bool,
line_numbers: bool, line_numbers: bool,
} }
@ -105,10 +107,7 @@ where
self self
} }
pub fn on_context_menu( pub fn on_context_menu(mut self, on_context_menu: impl Fn(bool) -> Message + 'a) -> Self {
mut self,
on_context_menu: impl Fn(Option<Point>) -> Message + 'a,
) -> Self {
self.on_context_menu = Some(Box::new(on_context_menu)); self.on_context_menu = Some(Box::new(on_context_menu));
self self
} }
@ -127,6 +126,35 @@ where
self.on_focus = Some(on_focus); self.on_focus = Some(on_focus);
self self
} }
fn input_method<'b>(
&self,
state: &'b State,
scale_factor: f32,
layout: Layout<'_>,
) -> InputMethod<&'b str> {
if !state.is_focused {
return InputMethod::Disabled;
};
let editor_pos = layout.position() + [self.padding.left, self.padding.top].into();
let (caret_x, caret_y) = state.caret_position;
InputMethod::Enabled {
cursor: Rectangle::new(
Point::new(
editor_pos.x
+ (caret_x as f32 + state.editor_offset_x.get() as f32) / scale_factor,
editor_pos.y + (caret_y as f32) / scale_factor,
),
Size::new(
1.0,
(self.metrics.scale(scale_factor).line_height) / scale_factor,
),
),
purpose: Purpose::Normal,
preedit: state.preedit.as_ref().map(Preedit::as_ref),
}
}
} }
pub fn text_box<'a, Message>( pub fn text_box<'a, Message>(
@ -794,7 +822,7 @@ where
let scrollbar_color = if pressed { let scrollbar_color = if pressed {
// pressed_state_color, 0.5 // pressed_state_color, 0.5
cosmic_theme cosmic_theme
.background .background(theme.transparent)
.component .component
.pressed .pressed
.without_alpha() .without_alpha()
@ -803,7 +831,7 @@ where
} else if hover { } else if hover {
// hover_state_color, 0.2 // hover_state_color, 0.2
cosmic_theme cosmic_theme
.background .background(theme.transparent)
.component .component
.hover .hover
.without_alpha() .without_alpha()
@ -890,7 +918,7 @@ where
let scrollbar_color = if pressed { let scrollbar_color = if pressed {
// pressed_state_color, 0.5 // pressed_state_color, 0.5
cosmic_theme cosmic_theme
.background .background(theme.transparent)
.component .component
.pressed .pressed
.without_alpha() .without_alpha()
@ -899,7 +927,7 @@ where
} else if hover { } else if hover {
// hover_state_color, 0.2 // hover_state_color, 0.2
cosmic_theme cosmic_theme
.background .background(theme.transparent)
.component .component
.hover .hover
.without_alpha() .without_alpha()
@ -1058,11 +1086,13 @@ where
Named::Backspace => { Named::Backspace => {
delete_modifiers(&mut editor, Motion::LeftWord, *modifiers); delete_modifiers(&mut editor, Motion::LeftWord, *modifiers);
editor.action(Action::Backspace); editor.action(Action::Backspace);
editor.set_redraw(true);
shell.capture_event(); shell.capture_event();
} }
Named::Delete => { Named::Delete => {
delete_modifiers(&mut editor, Motion::RightWord, *modifiers); delete_modifiers(&mut editor, Motion::RightWord, *modifiers);
editor.action(Action::Delete); editor.action(Action::Delete);
editor.set_redraw(true);
shell.capture_event(); shell.capture_event();
} }
Named::Tab => { Named::Tab => {
@ -1101,6 +1131,33 @@ where
} }
state.modifiers = *modifiers; state.modifiers = *modifiers;
} }
Event::InputMethod(event) => match event {
InputMethodEvent::Opened | InputMethodEvent::Closed => {
let metrics = self.metrics.scale(scale_factor);
state.preedit = matches!(event, InputMethodEvent::Opened).then(|| {
let mut preedit = Preedit::new();
preedit.text_size = Some(metrics.font_size.into());
preedit
});
}
InputMethodEvent::Preedit(content, selection) => {
if state.is_focused {
state.preedit = Some(Preedit {
content: content.to_owned(),
selection: selection.clone(),
text_size: Some(self.metrics.font_size.into()),
});
}
}
InputMethodEvent::Commit(text) => {
if state.is_focused {
editor.start_change();
editor.insert_string(&text, None);
editor.finish_change();
shell.capture_event();
}
}
},
Event::Mouse(MouseEvent::ButtonPressed(button)) => { Event::Mouse(MouseEvent::ButtonPressed(button)) => {
if let Some(p) = cursor_position.position_in(layout.bounds()) { if let Some(p) = cursor_position.position_in(layout.bounds()) {
state.is_focused = true; state.is_focused = true;
@ -1207,14 +1264,9 @@ where
// Update context menu state // Update context menu state
if let Some(on_context_menu) = &self.on_context_menu { if let Some(on_context_menu) = &self.on_context_menu {
shell.publish((on_context_menu)(if self.has_context_menu { shell.publish((on_context_menu)(
None !self.has_context_menu && matches!(button, Button::Right),
} else { ));
match button {
Button::Right => Some(p),
_ => None,
}
}));
} }
shell.capture_event(); shell.capture_event();
@ -1336,6 +1388,12 @@ where
shell.capture_event(); shell.capture_event();
} }
} }
Event::Window(WindowEvent::RedrawRequested(_now)) => {
if state.is_focused {
state.caret_position = editor.cursor_position().unwrap_or(state.caret_position);
shell.request_input_method(&self.input_method(state, scale_factor, layout));
}
}
_ => (), _ => (),
} }
@ -1348,6 +1406,10 @@ where
shell.publish(on_changed.clone()); shell.publish(on_changed.clone());
} }
} }
if editor.redraw() {
shell.request_redraw();
}
} }
} }
@ -1385,6 +1447,8 @@ pub struct State {
scrollbar_h_rect: Cell<Option<Rectangle<f32>>>, scrollbar_h_rect: Cell<Option<Rectangle<f32>>>,
handle_opt: Mutex<Option<image::Handle>>, handle_opt: Mutex<Option<image::Handle>>,
shift_anchor: Mutex<Option<Cursor>>, shift_anchor: Mutex<Option<Cursor>>,
caret_position: (i32, i32),
preedit: Option<Preedit>,
} }
impl State { impl State {
@ -1402,6 +1466,8 @@ impl State {
scrollbar_h_rect: Cell::new(None), scrollbar_h_rect: Cell::new(None),
handle_opt: Mutex::new(None), handle_opt: Mutex::new(None),
shift_anchor: Mutex::new(None), shift_anchor: Mutex::new(None),
caret_position: (0, 0),
preedit: None,
} }
} }
} }