=> 158eee2afd7ce99aeb254a3661f03a2832007cae
[1mdiff --git a/po/en.po b/po/en.po[m [1mindex c4e80bf5..37dfffed 100644[m [1m--- a/po/en.po[m [1m+++ b/po/en.po[m [36m@@ -1816,6 +1816,9 @@[m [mmsgstr "Gemini"[m msgid "prefs.mono.gopher"[m msgstr "Gopher"[m [m [32m+[m[32mmsgid "prefs.gopher.gemstyle"[m [32m+[m[32mmsgstr "Styling on Gopher:"[m [32m+[m msgid "prefs.boldlink"[m msgstr "Bold links:"[m [m [1mdiff --git a/res/about/version.gmi b/res/about/version.gmi[m [1mindex 62f3aa5f..1c4d99fb 100644[m [1m--- a/res/about/version.gmi[m [1m+++ b/res/about/version.gmi[m [36m@@ -9,6 +9,7 @@[m ## 1.15[m New features:[m * Indicate that tab autoreloading is enabled by changing the appearance of the navbar reload button.[m [32m+[m[32m* Gopher: Option to disable Gemini styling on Gopher menu pages. When disabled, whitespace is not normalized and all non-link lines are presented as regular paragraph text.[m [m Changes and enhancements:[m * GTK: Request dark window theme if the app UI color theme is dark.[m [1mdiff --git a/res/lang/cs.bin b/res/lang/cs.bin[m [1mindex 0b4ac955..4e802ba7 100644[m Binary files a/res/lang/cs.bin and b/res/lang/cs.bin differ [1mdiff --git a/res/lang/de.bin b/res/lang/de.bin[m [1mindex 3c6b772e..31715f3e 100644[m Binary files a/res/lang/de.bin and b/res/lang/de.bin differ [1mdiff --git a/res/lang/en.bin b/res/lang/en.bin[m [1mindex 53951b46..2e2f9522 100644[m Binary files a/res/lang/en.bin and b/res/lang/en.bin differ [1mdiff --git a/res/lang/eo.bin b/res/lang/eo.bin[m [1mindex 529cb4e4..59151ad9 100644[m Binary files a/res/lang/eo.bin and b/res/lang/eo.bin differ [1mdiff --git a/res/lang/es.bin b/res/lang/es.bin[m [1mindex 504aa14c..000b46f7 100644[m Binary files a/res/lang/es.bin and b/res/lang/es.bin differ [1mdiff --git a/res/lang/es_MX.bin b/res/lang/es_MX.bin[m [1mindex 4646466a..ed686023 100644[m Binary files a/res/lang/es_MX.bin and b/res/lang/es_MX.bin differ [1mdiff --git a/res/lang/fi.bin b/res/lang/fi.bin[m [1mindex ba2c97d1..5966054d 100644[m Binary files a/res/lang/fi.bin and b/res/lang/fi.bin differ [1mdiff --git a/res/lang/fr.bin b/res/lang/fr.bin[m [1mindex 6b350800..4759de0d 100644[m Binary files a/res/lang/fr.bin and b/res/lang/fr.bin differ [1mdiff --git a/res/lang/gl.bin b/res/lang/gl.bin[m [1mindex 861f36fa..2eda23ee 100644[m Binary files a/res/lang/gl.bin and b/res/lang/gl.bin differ [1mdiff --git a/res/lang/hu.bin b/res/lang/hu.bin[m [1mindex ad8b55f3..81d49de8 100644[m Binary files a/res/lang/hu.bin and b/res/lang/hu.bin differ [1mdiff --git a/res/lang/ia.bin b/res/lang/ia.bin[m [1mindex 3a060ef5..dd963eca 100644[m Binary files a/res/lang/ia.bin and b/res/lang/ia.bin differ [1mdiff --git a/res/lang/ie.bin b/res/lang/ie.bin[m [1mindex 798d8f93..6a79a05b 100644[m Binary files a/res/lang/ie.bin and b/res/lang/ie.bin differ [1mdiff --git a/res/lang/isv.bin b/res/lang/isv.bin[m [1mindex 8c1c24cc..d484ea8f 100644[m Binary files a/res/lang/isv.bin and b/res/lang/isv.bin differ [1mdiff --git a/res/lang/it.bin b/res/lang/it.bin[m [1mindex d144981b..1d907cfa 100644[m Binary files a/res/lang/it.bin and b/res/lang/it.bin differ [1mdiff --git a/res/lang/nl.bin b/res/lang/nl.bin[m [1mindex 812c0cd1..8c3c7d74 100644[m Binary files a/res/lang/nl.bin and b/res/lang/nl.bin differ [1mdiff --git a/res/lang/pl.bin b/res/lang/pl.bin[m [1mindex 8552ee60..e309f76e 100644[m Binary files a/res/lang/pl.bin and b/res/lang/pl.bin differ [1mdiff --git a/res/lang/ru.bin b/res/lang/ru.bin[m [1mindex a98ed7ce..1ac217bd 100644[m Binary files a/res/lang/ru.bin and b/res/lang/ru.bin differ [1mdiff --git a/res/lang/sk.bin b/res/lang/sk.bin[m [1mindex 8ef84fea..5ecef86c 100644[m Binary files a/res/lang/sk.bin and b/res/lang/sk.bin differ [1mdiff --git a/res/lang/sr.bin b/res/lang/sr.bin[m [1mindex 760c0324..4e70b7b4 100644[m Binary files a/res/lang/sr.bin and b/res/lang/sr.bin differ [1mdiff --git a/res/lang/tok.bin b/res/lang/tok.bin[m [1mindex 1987fc98..65cac0c0 100644[m Binary files a/res/lang/tok.bin and b/res/lang/tok.bin differ [1mdiff --git a/res/lang/tr.bin b/res/lang/tr.bin[m [1mindex 53fc0b1b..42704ae2 100644[m Binary files a/res/lang/tr.bin and b/res/lang/tr.bin differ [1mdiff --git a/res/lang/uk.bin b/res/lang/uk.bin[m [1mindex cc21113e..dd0c6a55 100644[m Binary files a/res/lang/uk.bin and b/res/lang/uk.bin differ [1mdiff --git a/res/lang/zh_Hans.bin b/res/lang/zh_Hans.bin[m [1mindex 8f8804b2..84cfdb8b 100644[m Binary files a/res/lang/zh_Hans.bin and b/res/lang/zh_Hans.bin differ [1mdiff --git a/res/lang/zh_Hant.bin b/res/lang/zh_Hant.bin[m [1mindex 4511701b..11baf6a0 100644[m Binary files a/res/lang/zh_Hant.bin and b/res/lang/zh_Hant.bin differ [1mdiff --git a/src/app.c b/src/app.c[m [1mindex 9697a7c5..564cd9b6 100644[m [1m--- a/src/app.c[m [1m+++ b/src/app.c[m [36m@@ -329,6 +329,7 @@[m [mstatic iString *serializePrefs_App_(const iApp *d) {[m { "prefs.dataurl.openimages", &d->prefs.openDataUrlImagesOnLoad },[m { "prefs.font.smooth", &d->prefs.fontSmoothing },[m { "prefs.font.warnmissing", &d->prefs.warnAboutMissingGlyphs },[m [32m+[m[32m { "prefs.gopher.gemstyle", &d->prefs.geminiStyledGopher },[m { "prefs.hoverlink", &d->prefs.hoverLink },[m { "prefs.justify", &d->prefs.justifyParagraph },[m { "prefs.markdown.viewsource", &d->prefs.markdownAsSource },[m [36m@@ -3144,6 +3145,10 @@[m [mstatic iBool handleNonWindowRelatedCommand_App_(iApp *d, const char *cmd) {[m d->prefs.markdownAsSource = arg_Command(cmd) != 0;[m return iTrue;[m }[m [32m+[m[32m else if (equal_Command(cmd, "prefs.gopher.gemstyle.changed")) {[m [32m+[m[32m d->prefs.geminiStyledGopher = arg_Command(cmd) != 0;[m [32m+[m[32m return iTrue;[m [32m+[m[32m }[m else if (equal_Command(cmd, "prefs.mono.gemini.changed") ||[m equal_Command(cmd, "prefs.mono.gopher.changed")) {[m const iBool isSet = (arg_Command(cmd) != 0);[m [36m@@ -4115,6 +4120,7 @@[m [miBool handleCommand_App(const char *cmd) {[m setToggle_Widget(findChild_Widget(dlg, "prefs.evensplit"), d->prefs.evenSplit);[m setToggle_Widget(findChild_Widget(dlg, "prefs.swipe.edge"), d->prefs.edgeSwipe);[m setToggle_Widget(findChild_Widget(dlg, "prefs.swipe.page"), d->prefs.pageSwipe);[m [32m+[m[32m setToggle_Widget(findChild_Widget(dlg, "prefs.gopher.gemstyle"), d->prefs.geminiStyledGopher);[m updatePrefsPinSplitButtons_(dlg, d->prefs.pinSplit);[m updateScrollSpeedButtons_(dlg, mouse_ScrollType, d->prefs.smoothScrollSpeed[mouse_ScrollType]);[m updateScrollSpeedButtons_(dlg, keyboard_ScrollType, d->prefs.smoothScrollSpeed[keyboard_ScrollType]);[m [1mdiff --git a/src/gmdocument.c b/src/gmdocument.c[m [1mindex af559701..d165ac26 100644[m [1m--- a/src/gmdocument.c[m [1m+++ b/src/gmdocument.c[m [36m@@ -191,8 +191,7 @@[m [mstatic iBool isForcedMonospace_GmDocument_(const iGmDocument *d) {[m if (equalCase_Rangecc(scheme, "gemini")) {[m return prefs_App()->monospaceGemini;[m }[m [31m- if (equalCase_Rangecc(scheme, "gopher") ||[m [31m- equalCase_Rangecc(scheme, "finger")) {[m [32m+[m[32m if (equalCase_Rangecc(scheme, "gopher") || equalCase_Rangecc(scheme, "finger")) {[m return prefs_App()->monospaceGopher;[m }[m return iFalse;[m [36m@@ -526,7 +525,8 @@[m [mstatic iBool shouldBeNormalized_GmDocument_(const iGmDocument *d) {[m if (startsWithCase_String(&d->url, "gemini:") && prefs->monospaceGemini) {[m return iFalse;[m }[m [31m- if (startsWithCase_String(&d->url, "gopher:") && prefs->monospaceGopher) {[m [32m+[m[32m if (startsWithCase_String(&d->url, "gopher:") && (prefs->monospaceGopher ||[m [32m+[m[32m !prefs->geminiStyledGopher)) {[m return iFalse;[m }[m return iTrue;[m [36m@@ -744,6 +744,9 @@[m [mstatic void doLayout_GmDocument_(iGmDocument *d) {[m enum iGmLineType prevType = text_GmLineType;[m enum iGmLineType prevNonBlankType = text_GmLineType;[m iBool followsBlank = iFalse;[m [32m+[m[32m if (isGopher && !prefs->geminiStyledGopher) {[m [32m+[m[32m isFirstText = iFalse;[m [32m+[m[32m }[m if (d->format == plainText_SourceFormat) {[m isPreformat = iTrue;[m isFirstText = iFalse;[m [36m@@ -2649,21 +2652,6 @@[m [menum iColorId linkColor_GmDocument(const iGmDocument *d, iGmLinkId linkId, enum[m : isOldSchool_GmLinkScheme(scheme) ? tmGopherLinkTextHover_ColorId[m : tmLinkTextHover_ColorId;[m }[m [31m- /*[m [31m- if (part == domain_GmLinkPart) {[m [31m- if (isUnsupported) {[m [31m- return tmBadLink_ColorId;[m [31m- }[m [31m- return isWWW_GmLinkScheme(scheme) ? tmHypertextLinkDomain_ColorId[m [31m- : isOldSchool_GmLinkScheme(scheme) ? tmGopherLinkDomain_ColorId[m [31m- : tmLinkDomain_ColorId;[m [31m- }[m [31m- if (part == visited_GmLinkPart) {[m [31m- return isWWW_GmLinkScheme(scheme) ? tmHypertextLinkLastVisitDate_ColorId[m [31m- : isOldSchool_GmLinkScheme(scheme) ? tmGopherLinkLastVisitDate_ColorId[m [31m- : tmLinkLastVisitDate_ColorId;[m [31m- }[m [31m- */[m }[m return tmLinkText_ColorId;[m }[m [1mdiff --git a/src/gopher.c b/src/gopher.c[m [1mindex 0e34fe6a..0be885bf 100644[m [1m--- a/src/gopher.c[m [1m+++ b/src/gopher.c[m [36m@@ -21,6 +21,8 @@[m [mANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT[m SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */[m [m #include "gopher.h"[m [32m+[m[32m#include "prefs.h"[m [32m+[m[32m#include "app.h"[m [m #include[m [m [36m@@ -47,6 +49,9 @@[m [mstatic iBool isPreformatted_(iRangecc text) {[m int numSpace = 0;[m int numRepeat = 0;[m char chPrev = 0;[m [32m+[m[32m if (!prefs_App()->geminiStyledGopher) {[m [32m+[m[32m return iFalse; /* just regular text */[m [32m+[m[32m }[m for (const char *ch = text.start; ch != text.end; ch++) {[m if (*ch < 0) {[m iChar uc;[m [1mdiff --git a/src/prefs.c b/src/prefs.c[m [1mindex 5d4858bf..3c725908 100644[m [1m--- a/src/prefs.c[m [1m+++ b/src/prefs.c[m [36m@@ -116,6 +116,7 @@[m [mvoid init_Prefs(iPrefs *d) {[m d->quoteIcon = iTrue;[m d->centerShortDocs = iTrue;[m d->plainTextWrap = iTrue;[m [32m+[m[32m d->geminiStyledGopher = iTrue;[m d->imageStyle = original_ImageStyle;[m d->docThemeDark = colorfulDark_GmDocumentTheme;[m d->docThemeLight = white_GmDocumentTheme;[m [1mdiff --git a/src/prefs.h b/src/prefs.h[m [1mindex 04e9ad4f..17c37408 100644[m [1m--- a/src/prefs.h[m [1m+++ b/src/prefs.h[m [36m@@ -111,6 +111,7 @@[m [menum iPrefsBool {[m centerShortDocs_PrefsBool,[m [m plainTextWrap_PrefsBool,[m [32m+[m[32m geminiStyledGopher_PrefsBool,[m [m /* Meta */[m max_PrefsBool[m [36m@@ -179,6 +180,7 @@[m [mstruct Impl_Prefs {[m iBool centerShortDocs;[m [m iBool plainTextWrap;[m [32m+[m[32m iBool geminiStyledGopher;[m };[m };[m /* UI state (belongs to state.lgr...) */[m [1mdiff --git a/src/ui/util.c b/src/ui/util.c[m [1mindex 7d7aaaaf..56300a66 100644[m [1m--- a/src/ui/util.c[m [1m+++ b/src/ui/util.c[m [36m@@ -2899,8 +2899,9 @@[m [miWidget *makePreferences_Widget(void) {[m { "radio horizontal:1 id:prefs.linewidth", 0, 0, (const void *) lineWidthItems },[m { "padding" },[m { "toggle id:prefs.justify" },[m [31m- { "toggle id:prefs.plaintext.wrap" },[m { "toggle id:prefs.biglede" },[m [32m+[m[32m { "toggle id:prefs.plaintext.wrap" },[m [32m+[m[32m { "toggle id:prefs.gopher.gemstyle" },[m { "padding" },[m { "input id:prefs.linespacing maxlen:5" },[m { "input id:prefs.tabwidth maxlen:3" },[m [36m@@ -3243,8 +3244,9 @@[m [miWidget *makePreferences_Widget(void) {[m #if defined (LAGRANGE_ENABLE_HARFBUZZ)[m addDialogToggle_(headings, values, "${prefs.justify}", "prefs.justify");[m #endif[m [31m- addDialogToggle_(headings, values, "${prefs.plaintext.wrap}", "prefs.plaintext.wrap");[m addDialogToggle_(headings, values, "${prefs.biglede}", "prefs.biglede");[m [32m+[m[32m addDialogToggle_(headings, values, "${prefs.plaintext.wrap}", "prefs.plaintext.wrap");[m [32m+[m[32m addDialogToggle_(headings, values, "${prefs.gopher.gemstyle}", "prefs.gopher.gemstyle");[m addDialogPadding_(headings, values);[m addPrefsInputWithHeading_(headings, values, "prefs.tabwidth", iClob(new_InputWidget(5)));[m addChild_Widget(headings, iClob(makeHeading_Widget("${prefs.quoteicon}")));[m
text/gemini; charset=utf-8
This content has been proxied by September (3851b).