diff --git a/.devcontainer/devcontainer-lock.json b/.devcontainer/devcontainer-lock.json new file mode 100644 index 000000000..dfe2dfb8a --- /dev/null +++ b/.devcontainer/devcontainer-lock.json @@ -0,0 +1,14 @@ +{ + "features": { + "ghcr.io/devcontainers/features/node:2.0": { + "version": "2.0.0", + "resolved": "ghcr.io/devcontainers/features/node@sha256:fedd4c11f7adfb64283b578dddc7da906728daa25fa293351c9d913231acf12f", + "integrity": "sha256:fedd4c11f7adfb64283b578dddc7da906728daa25fa293351c9d913231acf12f" + }, + "ghcr.io/nordcominc/devcontainer-features/android-sdk:1": { + "version": "1.2.0", + "resolved": "ghcr.io/nordcominc/devcontainer-features/android-sdk@sha256:c3e0c7e1b12fce18a257e163ade8515e534e58a7edad10dfb6d1fb1a250a307e", + "integrity": "sha256:c3e0c7e1b12fce18a257e163ade8515e534e58a7edad10dfb6d1fb1a250a307e" + } + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 861840531..5892773b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,20 @@ -node_modules -/build.json -/www/build -/plugins -/platforms -/keystore.jks -/platforms/android/debug-signing.properties -/platforms/android/release-signing.properties -**/*/.DS_Store -.DS_Store -pnpm-lock.yaml -.zed -.idea -ace-builds -fdroid.bool -tsconfig.tsbuildinfo \ No newline at end of file +/node_modules +/build.json +/www/build +/plugins +/platforms +/keystore.jks +/platforms/android/debug-signing.properties +/platforms/android/release-signing.properties +**/*/.DS_Store +.DS_Store +pnpm-lock.yaml +.zed +.idea +ace-builds +fdroid.bool +CLAUDE.md +graphify-out/ +.graphify_python +.gradle/ +local.properties diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties new file mode 100644 index 000000000..235c26157 --- /dev/null +++ b/gradle/gradle-daemon-jvm.properties @@ -0,0 +1,12 @@ +#This file is generated by updateDaemonJvm +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7083b89563e7ce20943037b8cd2b8cc2/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/060bbb778a1f55ea705fdebd2ccfeab9/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/491f83666ae7f4d6ebb28fee72ebb035/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/0d1a1acdc708062093673f65aa9aba4b/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d09679dc60fe5aa05ef7d03efdefac20/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ed4e3bf2f5e7c5d9aabc4cbd8acd555e/redirect +toolchainVersion=21 diff --git a/src/cm/lineBreakMarker.ts b/src/cm/lineBreakMarker.ts new file mode 100644 index 000000000..9a40cb06a --- /dev/null +++ b/src/cm/lineBreakMarker.ts @@ -0,0 +1,62 @@ +import { Decoration, DecorationSet, ViewPlugin, WidgetType, EditorView, ViewUpdate } from "@codemirror/view"; + +class NewlineWidget extends WidgetType { + toDOM(): HTMLElement { + let span = document.createElement("span"); + span.textContent = "¬"; + span.className = "cm-newline-marker"; + return span; + } + eq(other: WidgetType): boolean { + return other instanceof NewlineWidget; + } +} + +export const lineBreakMarkerPlugin = ViewPlugin.fromClass( + class { + decorations: DecorationSet; + + constructor(view: EditorView) { + this.decorations = this.getDecorations(view); + } + + update(update: ViewUpdate) { + if (update.docChanged || update.viewportChanged) { + this.decorations = this.getDecorations(update.view); + } + } + + getDecorations(view: EditorView): DecorationSet { + let widgets: import("@codemirror/state").Range[] = []; + for (let { from, to } of view.visibleRanges) { + for (let pos = from; pos <= to; ) { + let line = view.state.doc.lineAt(pos); + if (line.number < view.state.doc.lines) { + let deco = Decoration.widget({ + widget: new NewlineWidget(), + side: 1, + }); + widgets.push(deco.range(line.to)); + } + pos = line.to + 1; + } + } + return Decoration.set(widgets); + } + }, + { + decorations: (v) => v.decorations, + }, +); + +export const lineBreakMarkerTheme = EditorView.theme({ + ".cm-newline-marker": { + color: "var(--cm-space-marker-color, rgba(127, 127, 127, 0.6))", + pointerEvents: "none", + userSelect: "none", + }, +}); + +export const lineBreakMarker = [lineBreakMarkerPlugin, lineBreakMarkerTheme]; + +export default lineBreakMarker; diff --git a/src/lang/ar-ye.json b/src/lang/ar-ye.json index 7a99fe42e..6554fc383 100644 --- a/src/lang/ar-ye.json +++ b/src/lang/ar-ye.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "لن تتم مزامنة عملية الشراء هذه مع حساب Acode الخاص بك. استخدم نفس حساب Google في متجر Play لاستعادة عملية الشراء.", "confirm-login": "لم تقم بتسجيل الدخول إلى Acode، هل تريد تسجيل الدخول الآن؟", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/be-by.json b/src/lang/be-by.json index 7aaebe83e..246b3f204 100644 --- a/src/lang/be-by.json +++ b/src/lang/be-by.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Гэтая пакупка не будзе сінхранізавана з вашым уліковым запісам Acode. Выкарыстоўвайце той жа ўліковы запіс Google у Play Store для аднаўлення пакупкі.", "confirm-login": "Вы не ўвайшлі ў Acode, увайсці зараз?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/bn-bd.json b/src/lang/bn-bd.json index f4595cbc2..16865ecdc 100644 --- a/src/lang/bn-bd.json +++ b/src/lang/bn-bd.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "এই ক্রয়টি আপনার Acode অ্যাকাউন্টের সাথে সিঙ্ক হবে না। আপনার ক্রয় পুনরুদ্ধার করতে প্লে স্টোরে একই Google অ্যাকাউন্ট ব্যবহার করুন।", "confirm-login": "আপনি Acode-এ সাইন ইন করেননি, এখন সাইন ইন করবেন?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/cs-cz.json b/src/lang/cs-cz.json index d6aa76c67..d34c50fbb 100644 --- a/src/lang/cs-cz.json +++ b/src/lang/cs-cz.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Tento nákup nebude synchronizován s vaším účtem Acode. Pro obnovení nákupu použijte stejný účet Google v Obchodě Play.", "confirm-login": "Nejste přihlášeni do Acode, přihlásit se nyní?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/de-de.json b/src/lang/de-de.json index 0e90864c6..fdf55a80e 100644 --- a/src/lang/de-de.json +++ b/src/lang/de-de.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Dieser Kauf wird nicht mit Ihrem Acode-Konto synchronisiert. Verwenden Sie dasselbe Google-Konto im Play Store, um Ihren Kauf wiederherzustellen.", "confirm-login": "Sie sind nicht bei Acode angemeldet, jetzt anmelden?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/en-us.json b/src/lang/en-us.json index 2783d220f..8853e104b 100644 --- a/src/lang/en-us.json +++ b/src/lang/en-us.json @@ -83,6 +83,7 @@ "show hidden files": "Show hidden files", "show share button": "Show share button", "show spaces": "Show spaces", + "show line break marker": "Show line break marker", "soft tab": "Soft tab", "sort by name": "Sort by name", "success": "Success", @@ -737,5 +738,6 @@ "login-to-view": "Please login to view this...", "iap-plugin-purchase-warning": "Purchased plugin are not synced to your Acode account. Use same Google account in play store to restore your purchase.", "iap-pro-purchase-warning": "This purchase will not be synced to your Acode account. Use same Google account in play store to restore your purchase.", - "confirm-login": "You are not singed in to Acode, sign in now?" + "confirm-login": "You are not singed in to Acode, sign in now?", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled" } diff --git a/src/lang/es-sv.json b/src/lang/es-sv.json index bb8990d0a..0a72f591b 100644 --- a/src/lang/es-sv.json +++ b/src/lang/es-sv.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Esta compra no se sincronizará con tu cuenta de Acode. Usa la misma cuenta de Google en Play Store para restaurar tu compra.", "confirm-login": "No has iniciado sesión en Acode, ¿iniciar sesión ahora?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/fr-fr.json b/src/lang/fr-fr.json index 45189d15c..89b648ac2 100644 --- a/src/lang/fr-fr.json +++ b/src/lang/fr-fr.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Cet achat ne sera pas synchronisé avec votre compte Acode. Utilisez le même compte Google dans le Play Store pour restaurer votre achat.", "confirm-login": "Vous n'êtes pas connecté à Acode, vous connecter maintenant ?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/he-il.json b/src/lang/he-il.json index d6cde7cfc..657dcf957 100644 --- a/src/lang/he-il.json +++ b/src/lang/he-il.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "רכישה זו לא תסונכרן עם חשבון Acode שלך. השתמש באותו חשבון Google בחנות Play כדי לשחזר את הרכישה שלך.", "confirm-login": "אינך מחובר ל-Acode, להתחבר עכשיו?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/hi-in.json b/src/lang/hi-in.json index 88e88a2a1..0e0a59ca8 100644 --- a/src/lang/hi-in.json +++ b/src/lang/hi-in.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "यह खरीदारी आपके Acode खाते से सिंक नहीं होगी। अपनी खरीदारी पुनर्स्थापित करने के लिए Play Store में उसी Google खाते का उपयोग करें।", "confirm-login": "आप Acode में साइन इन नहीं हैं, अभी साइन इन करें?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/hu-hu.json b/src/lang/hu-hu.json index 842e31e36..b5fed381f 100644 --- a/src/lang/hu-hu.json +++ b/src/lang/hu-hu.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Ez a vásárlás nem lesz szinkronizálva az Acode-fiókjával. Használja ugyanazt a Google-fiókot a Play Áruházban a vásárlás visszaállításához.", "confirm-login": "Nincs bejelentkezve az Acode-ba, bejelentkezik most?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/id-id.json b/src/lang/id-id.json index 9531dd650..6cf3908e4 100644 --- a/src/lang/id-id.json +++ b/src/lang/id-id.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Pembelian ini tidak akan disinkronkan ke akun Acode Anda. Gunakan akun Google yang sama di Play Store untuk memulihkan pembelian Anda.", "confirm-login": "Anda belum masuk ke Acode, masuk sekarang?", "local word completion": "Penyelesaian kata lokal", - "settings-info-editor-local-word-completion": "Sarankan kata dari berkas saat ini." + "settings-info-editor-local-word-completion": "Sarankan kata dari berkas saat ini.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/index.d.ts b/src/lang/index.d.ts index b5751b597..2e863f805 100644 --- a/src/lang/index.d.ts +++ b/src/lang/index.d.ts @@ -86,6 +86,7 @@ declare type LangStrings = { "show hidden files": string; "show share button": string; "show spaces": string; + "show line break marker": string; "soft tab": string; "sort by name": string; "success": string; @@ -741,6 +742,7 @@ declare type LangStrings = { "iap-plugin-purchase-warning": string; "iap-pro-purchase-warning": string; "confirm-login": string; + "settings-info-editor-show-line-break-marker": string; }; declare var strings: LangStrings; diff --git a/src/lang/ir-fa.json b/src/lang/ir-fa.json index 6139b0434..231498c8e 100644 --- a/src/lang/ir-fa.json +++ b/src/lang/ir-fa.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "این خرید با حساب Acode شما همگام‌سازی نخواهد شد. برای بازیابی خرید خود از همان حساب Google در فروشگاه Play استفاده کنید.", "confirm-login": "شما وارد Acode نشده‌اید، اکنون وارد شوید؟", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/it-it.json b/src/lang/it-it.json index 343304cdd..5881646ee 100644 --- a/src/lang/it-it.json +++ b/src/lang/it-it.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Questo acquisto non verrà sincronizzato con il tuo account Acode. Usa lo stesso account Google nel Play Store per ripristinare l'acquisto.", "confirm-login": "Non hai effettuato l'accesso ad Acode, accedere ora?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/ja-jp.json b/src/lang/ja-jp.json index f47bab24a..17aaa5a50 100644 --- a/src/lang/ja-jp.json +++ b/src/lang/ja-jp.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "この購入はAcodeアカウントと同期されません。購入を復元するには、Playストアで同じGoogleアカウントを使用してください。", "confirm-login": "Acodeにサインインしていません。今すぐサインインしますか?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/ko-kr.json b/src/lang/ko-kr.json index 198338bee..7681c3865 100644 --- a/src/lang/ko-kr.json +++ b/src/lang/ko-kr.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "이 구매는 Acode 계정과 동기화되지 않습니다. 구매를 복원하려면 Play 스토어에서 동일한 Google 계정을 사용하세요.", "confirm-login": "Acode에 로그인되어 있지 않습니다. 지금 로그인하시겠습니까?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/ml-in.json b/src/lang/ml-in.json index f396d7658..31f796d83 100644 --- a/src/lang/ml-in.json +++ b/src/lang/ml-in.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "ഈ വാങ്ങൽ നിങ്ങളുടെ Acode അക്കൗണ്ടുമായി സമന്വയിപ്പിക്കില്ല. നിങ്ങളുടെ വാങ്ങൽ പുനഃസ്ഥാപിക്കാൻ Play Store-ൽ അതേ Google അക്കൗണ്ട് ഉപയോഗിക്കുക.", "confirm-login": "നിങ്ങൾ Acode-ൽ സൈൻ ഇൻ ചെയ്തിട്ടില്ല, ഇപ്പോൾ സൈൻ ഇൻ ചെയ്യണോ?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/mm-unicode.json b/src/lang/mm-unicode.json index 9e1a967dd..de6d9c9e6 100644 --- a/src/lang/mm-unicode.json +++ b/src/lang/mm-unicode.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "ဤဝယ်ယူမှုသည် သင့် Acode အကောင့်နှင့် ထပ်တူပြုမည်မဟုတ်ပါ။ သင့်ဝယ်ယူမှုကို ပြန်လည်ရယူရန် Play Store တွင် တူညီသော Google အကောင့်ကို အသုံးပြုပါ။", "confirm-login": "သင်သည် Acode သို့ အကောင့်ဝင်ထားခြင်းမရှိပါ၊ ယခု အကောင့်ဝင်မလား။", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/mm-zawgyi.json b/src/lang/mm-zawgyi.json index a55b136e7..5c0f68288 100644 --- a/src/lang/mm-zawgyi.json +++ b/src/lang/mm-zawgyi.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "ဤဝယ္ယူမႈသည္ သင့္ Acode အေကာင့္ႏွင့္ ထပ္တူျပဳမည္မဟုတ္ပါ။ သင့္ဝယ္ယူမႈကို ျပန္လည္ရယူရန္ Play Store တြင္ တူညီေသာ Google အေကာင့္ကို အသုံးျပဳပါ။", "confirm-login": "သင္သည္ Acode သို႔ အေကာင့္ဝင္ထားျခင္းမရွိပါ၊ ယခု အေကာင့္ဝင္မလား။", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/pl-pl.json b/src/lang/pl-pl.json index f554f8a23..705aa5cd4 100644 --- a/src/lang/pl-pl.json +++ b/src/lang/pl-pl.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Ten zakup nie zostanie zsynchronizowany z Twoim kontem Acode. Użyj tego samego konta Google w Sklepie Play, aby przywrócić zakup.", "confirm-login": "Nie jesteś zalogowany do Acode, zalogować się teraz?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/pt-br.json b/src/lang/pt-br.json index ee200f193..3085e9ca7 100644 --- a/src/lang/pt-br.json +++ b/src/lang/pt-br.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Esta compra não será sincronizada com sua conta Acode. Use a mesma conta do Google na Play Store para restaurar sua compra.", "confirm-login": "Você não está conectado ao Acode, conectar agora?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/pu-in.json b/src/lang/pu-in.json index efc4859b0..76a935a1b 100644 --- a/src/lang/pu-in.json +++ b/src/lang/pu-in.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "ਇਹ ਖਰੀਦ ਤੁਹਾਡੇ Acode ਖਾਤੇ ਨਾਲ ਸਿੰਕ ਨਹੀਂ ਹੋਵੇਗੀ। ਆਪਣੀ ਖਰੀਦ ਨੂੰ ਬਹਾਲ ਕਰਨ ਲਈ Play Store ਵਿੱਚ ਉਹੀ Google ਖਾਤਾ ਵਰਤੋ।", "confirm-login": "ਤੁਸੀਂ Acode ਵਿੱਚ ਸਾਈਨ ਇਨ ਨਹੀਂ ਹੋ, ਹੁਣੇ ਸਾਈਨ ਇਨ ਕਰੋ?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/ru-ru.json b/src/lang/ru-ru.json index 14ed4cb49..fcda671f2 100644 --- a/src/lang/ru-ru.json +++ b/src/lang/ru-ru.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Эта покупка не будет синхронизирована с вашей учетной записью Acode. Используйте ту же учетную запись Google в Play Store для восстановления покупки.", "confirm-login": "Вы не вошли в Acode, войти сейчас?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/tl-ph.json b/src/lang/tl-ph.json index 0586cb86b..e4fb70910 100644 --- a/src/lang/tl-ph.json +++ b/src/lang/tl-ph.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Ang pagbiling ito ay hindi masi-sync sa iyong Acode account. Gamitin ang parehong Google account sa Play Store upang maibalik ang iyong pagbili.", "confirm-login": "Hindi ka naka-sign in sa Acode, mag-sign in ngayon?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/tr-tr.json b/src/lang/tr-tr.json index 7646d949b..166427f5b 100644 --- a/src/lang/tr-tr.json +++ b/src/lang/tr-tr.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Bu satın alım Acode hesabınızla senkronize edilmeyecektir. Satın alımınızı geri yüklemek için Play Store'da aynı Google hesabını kullanın.", "confirm-login": "Acode'a giriş yapmadınız, şimdi giriş yapmak ister misiniz?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/uk-ua.json b/src/lang/uk-ua.json index b4439666c..10de90b59 100644 --- a/src/lang/uk-ua.json +++ b/src/lang/uk-ua.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Ця покупка не буде синхронізована з вашим обліковим записом Acode. Використовуйте той самий обліковий запис Google у Play Store для відновлення покупки.", "confirm-login": "Ви не ввійшли в Acode, увійти зараз?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/uz-uz.json b/src/lang/uz-uz.json index a54665479..c0324eb68 100644 --- a/src/lang/uz-uz.json +++ b/src/lang/uz-uz.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Ushbu xarid Acode hisobingiz bilan sinxronlanmaydi. Xaridingizni tiklash uchun Play Store'da xuddi shu Google hisobidan foydalaning.", "confirm-login": "Siz Acode'ga kirmagansiz, hozir kirasizmi?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/vi-vn.json b/src/lang/vi-vn.json index 5c19aa5e1..e6de2fbcc 100644 --- a/src/lang/vi-vn.json +++ b/src/lang/vi-vn.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "Giao dịch mua này sẽ không được đồng bộ hóa với tài khoản Acode của bạn. Sử dụng cùng một tài khoản Google trên Play Store để khôi phục giao dịch mua của bạn.", "confirm-login": "Bạn chưa đăng nhập vào Acode, đăng nhập ngay bây giờ?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index ff9fac375..6c8200e38 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "此购买不会同步到您的 Acode 账户。请在 Play 商店中使用相同的 Google 账户来恢复您的购买。", "confirm-login": "您尚未登录 Acode,立即登录?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/zh-hant.json b/src/lang/zh-hant.json index b84fe4f9e..98c5fb755 100644 --- a/src/lang/zh-hant.json +++ b/src/lang/zh-hant.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "此購買不會同步到您的 Acode 帳戶。請在 Play 商店中使用相同的 Google 帳戶來恢復您的購買。", "confirm-login": "您尚未登入 Acode,立即登入?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json index 911a3b54b..515348c24 100644 --- a/src/lang/zh-tw.json +++ b/src/lang/zh-tw.json @@ -737,5 +737,7 @@ "iap-pro-purchase-warning": "此購買不會同步到您的 Acode 帳戶。請在 Play 商店中使用相同的 Google 帳戶來恢復您的購買。", "confirm-login": "您尚未登入 Acode,立即登入?", "local word completion": "Local word completion", - "settings-info-editor-local-word-completion": "Suggest words from the current file." + "settings-info-editor-local-word-completion": "Suggest words from the current file.", + "settings-info-editor-show-line-break-marker": "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + "show line break marker": "Show line break marker" } diff --git a/src/lib/editorManager.js b/src/lib/editorManager.js index 444afe505..0b8bb6f2c 100644 --- a/src/lib/editorManager.js +++ b/src/lib/editorManager.js @@ -62,6 +62,7 @@ import { setScrollPosition, } from "cm/editorUtils"; import indentGuides from "cm/indentGuides"; +import { lineBreakMarker } from "cm/lineBreakMarker"; import rainbowBrackets, { getRainbowBracketColors } from "cm/rainbowBrackets"; import { getThemeConfig, getThemeExtensions } from "cm/themes"; import list from "components/collapsableList"; @@ -256,6 +257,8 @@ async function EditorManager($header, $body) { const rainbowCompartment = new Compartment(); // Compartment for indent guides const indentGuidesCompartment = new Compartment(); + // Compartment for line break marker + const lineBreakMarkerCompartment = new Compartment(); // Compartment for read-only toggling const readOnlyCompartment = new Compartment(); // Compartment for language mode (allows async loading/reconfigure) @@ -450,6 +453,15 @@ async function EditorManager($header, $body) { : []; }, }, + { + keys: ["showLineBreakMarker", "textWrap"], + compartments: [lineBreakMarkerCompartment], + build() { + const showMarker = !!appSettings?.value?.showLineBreakMarker; + const textWrap = !!appSettings?.value?.textWrap; + return showMarker && textWrap ? lineBreakMarker : []; + }, + }, { keys: ["fadeFoldWidgets"], compartments: [foldThemeCompartment], @@ -1557,6 +1569,10 @@ async function EditorManager($header, $body) { applyOptions(["showSpaces"]); }); + appSettings.on("update:showLineBreakMarker", function () { + applyOptions(["showLineBreakMarker"]); + }); + // Font size update for CodeMirror appSettings.on("update:fontSize", function () { updateEditorStyleFromSettings(); diff --git a/src/lib/settings.js b/src/lib/settings.js index be6684348..00090082e 100644 --- a/src/lib/settings.js +++ b/src/lib/settings.js @@ -154,6 +154,7 @@ class Settings { printMargin: 80, scrollbarSize: 20, showSpaces: false, + showLineBreakMarker: false, confirmOnExit: true, lineHeight: 2, leftMargin: 50, diff --git a/src/settings/editorSettings.js b/src/settings/editorSettings.js index 753be8428..1d6b6c8d6 100644 --- a/src/settings/editorSettings.js +++ b/src/settings/editorSettings.js @@ -175,6 +175,15 @@ export default function editorSettings() { info: strings["settings-info-editor-show-spaces"], category: categories.guidesIndicators, }, + { + key: "showLineBreakMarker", + text: strings["show line break marker"] || "Show line break marker", + checkbox: values.showLineBreakMarker ?? false, + info: + strings["settings-info-editor-show-line-break-marker"] || + "Displays a visual marker (¬) for true line breaks when text wrapping is enabled", + category: categories.guidesIndicators, + }, { key: "indentGuides", text: strings["indent guides"] || "Indent guides",