From b23f521088fe51ab76cf43991e097d90bc8c74ab Mon Sep 17 00:00:00 2001 From: MoonL79 <151734889+MoonL79@users.noreply.github.com> Date: Tue, 31 Mar 2026 13:52:53 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[204=5F30]=20=E6=96=87=E6=A1=A3=E4=B8=BB?= =?UTF-8?q?=E9=A2=98=E8=B7=9F=E9=9A=8F=E8=BD=AF=E4=BB=B6=E4=B8=BB=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E4=BF=9D=E5=AD=98=E6=97=B6=E4=B8=8D=E4=BF=9D=E7=95=99?= =?UTF-8?q?dark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TeXmacs/progs/texmacs/texmacs/tm-files.scm | 21 ++++++++++++++----- TeXmacs/progs/texmacs/texmacs/tm-server.scm | 15 +++++++++++++- devel/204_30.md | 8 +++++++ src/Texmacs/Data/new_buffer.cpp | 23 ++++++++++++++++++--- 4 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 devel/204_30.md diff --git a/TeXmacs/progs/texmacs/texmacs/tm-files.scm b/TeXmacs/progs/texmacs/texmacs/tm-files.scm index 44331c9b35..29c7b474cf 100644 --- a/TeXmacs/progs/texmacs/texmacs/tm-files.scm +++ b/TeXmacs/progs/texmacs/texmacs/tm-files.scm @@ -105,6 +105,15 @@ (with t (tree->stree (get-style-tree)) (and (pair? t) (== (car t) 'tuple) (null? (cdr t))))) +(tm-define (sync-buffer-dark-style-with-gui-theme . opt-buf) + (with buf (if (null? opt-buf) (current-buffer) (car opt-buf)) + (with-buffer buf + (if (== (get-preference "gui theme") "liii-night") + (when (not (has-style-package? "dark")) + (add-style-package "dark")) + (when (has-style-package? "dark") + (remove-style-package "dark")))))) + (tm-define (buffer-set-default-style) (init-style "generic") (with lan (get-preference "language") @@ -120,9 +129,7 @@ (init-env "prog-scripts" (get-preference "scripting language"))) (add-style-package "number-europe") (add-style-package "preview-ref") - (when (== (get-preference "gui theme") "liii-night") - (when (not (has-style-package? "dark")) - (add-style-package "dark"))) + (sync-buffer-dark-style-with-gui-theme (current-buffer)) (buffer-pretend-saved (current-buffer))) (tm-define (propose-name-buffer) @@ -583,11 +590,15 @@ (let* ((path (url->system name)) (vname `(verbatim ,(utf8->cork path)))) (cond ((buffer-exists? name) - (load-buffer-open name opts)) + (begin + (load-buffer-open name opts) + (sync-buffer-dark-style-with-gui-theme name))) ((url-exists? name) (if (buffer-load name) (set-message `(concat "Could not load " ,vname) "Load file") - (load-buffer-open name opts))) + (begin + (load-buffer-open name opts) + (sync-buffer-dark-style-with-gui-theme name)))) (else (with msg "The file or buffer does not exist:" (begin diff --git a/TeXmacs/progs/texmacs/texmacs/tm-server.scm b/TeXmacs/progs/texmacs/texmacs/tm-server.scm index 3fab55cd93..128a3b682b 100644 --- a/TeXmacs/progs/texmacs/texmacs/tm-server.scm +++ b/TeXmacs/progs/texmacs/texmacs/tm-server.scm @@ -12,7 +12,8 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (texmacs-module (texmacs texmacs tm-server) - (:use (generic document-edit))) + (:use (generic document-edit) + (utils library cursor))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Preferences @@ -33,7 +34,19 @@ (set-message "Restart in order to let the new look and feel take effect" "configure look and feel")) +(define (sync-open-buffers-dark-style-with-gui-theme) + (for-each + (lambda (buf) + (with-buffer buf + (if (== (get-preference "gui theme") "liii-night") + (when (not (has-style-package? "dark")) + (add-style-package "dark")) + (when (has-style-package? "dark") + (remove-style-package "dark"))))) + (buffer-list))) + (define (notify-gui-theme var val) + (sync-open-buffers-dark-style-with-gui-theme) (set-message "Restart in order to let the new theme take effect" "graphical interface theme")) diff --git a/devel/204_30.md b/devel/204_30.md new file mode 100644 index 0000000000..d13752488b --- /dev/null +++ b/devel/204_30.md @@ -0,0 +1,8 @@ +[204_30] 文档主题跟随软件主题,保存时不保留dark + +## 如何测试 + +1. 打开任意 tmu 文件,在 light 、dark 主题之间切换,查看文档背景是否跟随变化。 +2. 在 dark 下保存文档,使用文本编辑器打开文档,查看 tmu 源码,style 部分不应存在 dark 相关字样。 + +## 2026/03/31 文档主题跟随软件主题变化,保存文档时不保留dark diff --git a/src/Texmacs/Data/new_buffer.cpp b/src/Texmacs/Data/new_buffer.cpp index aeb0b69889..2c9e8051d2 100644 --- a/src/Texmacs/Data/new_buffer.cpp +++ b/src/Texmacs/Data/new_buffer.cpp @@ -567,6 +567,24 @@ bool buffer_export (url name, url dest, string fm) { tm_view vw= concrete_view (get_recent_view (name)); ASSERT (vw != NULL, "view expected"); + new_data export_data; + + vw->ed->get_data (vw->buf->data); + export_data->project= copy (vw->buf->data->project); + export_data->style = copy (vw->buf->data->style); + export_data->init = copy (vw->buf->data->init); + export_data->fin = copy (vw->buf->data->fin); + export_data->ref = copy (vw->buf->data->ref); + export_data->aux = copy (vw->buf->data->aux); + export_data->att = copy (vw->buf->data->att); + + if (export_data->style == "dark") export_data->style= tree (TUPLE); + else if (is_func (export_data->style, TUPLE)) { + tree style (TUPLE); + for (int i= 0; i < N (export_data->style); ++i) + if (export_data->style[i] != "dark") style << export_data->style[i]; + export_data->style= style; + } if (fm == "postscript" || fm == "pdf") { int old_stamp= last_modified (dest); @@ -581,8 +599,7 @@ buffer_export (url name, url dest, string fm) { // if (fm == "latex") // body= vw->ed->exec_latex (body); - vw->ed->get_data (vw->buf->data); - tree doc= attach_data (body, vw->buf->data, !vw->ed->get_save_aux ()); + tree doc= attach_data (body, export_data, !vw->ed->get_save_aux ()); if (fm == "latex") doc= change_doc_attr (doc, "view", as_string (abstract_view (vw))); @@ -680,4 +697,4 @@ move_buffer_via_index (int from, int to) { swap (bufs[i], bufs[i - 1]); } } -} \ No newline at end of file +} From 5a704957d2a6077fcee2fd251c90ce55d85e049e Mon Sep 17 00:00:00 2001 From: MoonL79 <151734889+MoonL79@users.noreply.github.com> Date: Tue, 31 Mar 2026 14:33:46 +0800 Subject: [PATCH 2/5] wip --- devel/204_30.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/devel/204_30.md b/devel/204_30.md index d13752488b..3b4d2659b9 100644 --- a/devel/204_30.md +++ b/devel/204_30.md @@ -3,6 +3,12 @@ ## 如何测试 1. 打开任意 tmu 文件,在 light 、dark 主题之间切换,查看文档背景是否跟随变化。 + + light->dark:文档应从浅色变为深色。 + + dark->light: 文档应从深色变为浅色。 2. 在 dark 下保存文档,使用文本编辑器打开文档,查看 tmu 源码,style 部分不应存在 dark 相关字样。 +3. 在 dark 下导出 pdf,导出的 pdf 应为白色。 ## 2026/03/31 文档主题跟随软件主题变化,保存文档时不保留dark + +### 目前存在的缺陷 +light->dark 后,文档不会立刻变暗,需要把文档关闭重新打开才有效果 From 7d03147ad14d54ff9924c81365968522c9625b0a Mon Sep 17 00:00:00 2001 From: MoonL79 <151734889+MoonL79@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:06:19 +0800 Subject: [PATCH 3/5] wip --- devel/204_30.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/devel/204_30.md b/devel/204_30.md index 3b4d2659b9..4a16f709a9 100644 --- a/devel/204_30.md +++ b/devel/204_30.md @@ -2,13 +2,21 @@ ## 如何测试 -1. 打开任意 tmu 文件,在 light 、dark 主题之间切换,查看文档背景是否跟随变化。 - + light->dark:文档应从浅色变为深色。 - + dark->light: 文档应从深色变为浅色。 -2. 在 dark 下保存文档,使用文本编辑器打开文档,查看 tmu 源码,style 部分不应存在 dark 相关字样。 -3. 在 dark 下导出 pdf,导出的 pdf 应为白色。 +测试项一:界面主题从浅色切换为深色 +1. 在浅色主题下打开任意 tmu 文件A,文档为浅色背景 +2. 切换主题为深色,自动重启 +3. 深色主题打开后,文件A没有自动变成深色背景,必须要重新打开 tmu 文件A,文档才应该变为深色背景 -## 2026/03/31 文档主题跟随软件主题变化,保存文档时不保留dark +测试项二:界面主题从深色切换为浅色 +1. 在深色主题下打开任意 tmu 文件B,文档为深色背景 +2. 切换主题为浅色,自动重启 +3. 浅色主题打开后,tmu 文件B应该自动变为浅色背景 + +测试项三:保存到磁盘的文档不应携带 dark 的 style +1. 进入软件的深色主题 +2. 在深色主题下,打开任意 tmu 文档,文档背景色应为深色 +3. 触发一次保存 +4. 使用 vscode 或其他纯文本编辑器,打开刚刚保存的 tmu 文档,查看 tmu 头部的 style 块,不应该携带 dark 字样 ### 目前存在的缺陷 light->dark 后,文档不会立刻变暗,需要把文档关闭重新打开才有效果 From fe3751597ff2ae4b4c6e343d7bdc890d29665fc3 Mon Sep 17 00:00:00 2001 From: MoonL79 <151734889+MoonL79@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:16:53 +0800 Subject: [PATCH 4/5] wip --- TeXmacs/progs/texmacs/texmacs/tm-server.scm | 15 +-------------- devel/204_30.md | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/TeXmacs/progs/texmacs/texmacs/tm-server.scm b/TeXmacs/progs/texmacs/texmacs/tm-server.scm index 128a3b682b..3fab55cd93 100644 --- a/TeXmacs/progs/texmacs/texmacs/tm-server.scm +++ b/TeXmacs/progs/texmacs/texmacs/tm-server.scm @@ -12,8 +12,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (texmacs-module (texmacs texmacs tm-server) - (:use (generic document-edit) - (utils library cursor))) + (:use (generic document-edit))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Preferences @@ -34,19 +33,7 @@ (set-message "Restart in order to let the new look and feel take effect" "configure look and feel")) -(define (sync-open-buffers-dark-style-with-gui-theme) - (for-each - (lambda (buf) - (with-buffer buf - (if (== (get-preference "gui theme") "liii-night") - (when (not (has-style-package? "dark")) - (add-style-package "dark")) - (when (has-style-package? "dark") - (remove-style-package "dark"))))) - (buffer-list))) - (define (notify-gui-theme var val) - (sync-open-buffers-dark-style-with-gui-theme) (set-message "Restart in order to let the new theme take effect" "graphical interface theme")) diff --git a/devel/204_30.md b/devel/204_30.md index 4a16f709a9..d4dd95b783 100644 --- a/devel/204_30.md +++ b/devel/204_30.md @@ -18,5 +18,16 @@ 3. 触发一次保存 4. 使用 vscode 或其他纯文本编辑器,打开刚刚保存的 tmu 文档,查看 tmu 头部的 style 块,不应该携带 dark 字样 -### 目前存在的缺陷 -light->dark 后,文档不会立刻变暗,需要把文档关闭重新打开才有效果 +## 2026/03/31 文档主题跟随软件主题,保存时不保留dark + +### What +让所有文档的背景色跟随软件主题变化,保持视觉上的一致性。 +在保存文档时过滤掉 style 的影响,所有文档都应以浅色背景被保存。 + +### Why +目前文档主题依赖于文档本身的 style,即便在深色主题下,以浅色创建的文档不会跟随主题显示为深色 + +### How +TeXmacs/progs/texmacs/texmacs/tm-files.scm :108 添加 sync-buffer-dark-style-with-gui-theme 函数,根据当前主题颜色调整文档的背景色 +TeXmacs/progs/texmacs/texmacs/tm-files.scm :588 load-buffer-load 函数,应用 sync-buffer-dark-style-with-gui-theme 函数 + From 57415cbe66529f9083da88d995f8f95f2049aa6c Mon Sep 17 00:00:00 2001 From: MoonL79 <151734889+MoonL79@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:24:43 +0800 Subject: [PATCH 5/5] wip --- devel/204_30.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/devel/204_30.md b/devel/204_30.md index d4dd95b783..847cee79bd 100644 --- a/devel/204_30.md +++ b/devel/204_30.md @@ -12,7 +12,12 @@ 2. 切换主题为浅色,自动重启 3. 浅色主题打开后,tmu 文件B应该自动变为浅色背景 -测试项三:保存到磁盘的文档不应携带 dark 的 style +测试项三:已经打开的文档重复打开,可以跟随主题颜色变化 +1. 在深色背景下打开任意 tmu 文件C,文档为深色背景 +2. 将文档切换为浅色背景,切换入口位于焦点工具栏的 “主题” 按钮 +3. 通过 “最近打开” 功能,再次点击当前文档,即重复打开当前文档,文档应该从浅色变为深色 + +测试项四:保存到磁盘的文档不应携带 dark 的 style 1. 进入软件的深色主题 2. 在深色主题下,打开任意 tmu 文档,文档背景色应为深色 3. 触发一次保存