From 4e3eb738b47cd12bc78ed3fbf43796a8280c73aa Mon Sep 17 00:00:00 2001 From: Aditya Date: Sun, 30 Aug 2026 22:25:23 +0530 Subject: [PATCH] fix: allow style switching back to Beamer without saving --- TeXmacs/progs/generic/document-style.scm | 11 ++++++++++- TeXmacs/progs/generic/test/generic-test.scm | 21 ++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/TeXmacs/progs/generic/document-style.scm b/TeXmacs/progs/generic/document-style.scm index 9de85fd167..d6e338c89d 100644 --- a/TeXmacs/progs/generic/document-style.scm +++ b/TeXmacs/progs/generic/document-style.scm @@ -115,6 +115,13 @@ ) ;when ) ;tm-define +(tm-define (beamer-style-switch-allowed?) + (or (document-empty?) + (buffer-modified? (current-buffer)) + (has-main-style? "beamer") + ) ;or +) ;tm-define + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; High level routines for style and style package management ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -140,7 +147,9 @@ (:default style "generic") (:check-mark "v" has-main-style?) (:balloon style-get-documentation) - (if (and (== style "beamer") (not (document-empty?))) + (if (and (== style "beamer") + (not (beamer-style-switch-allowed?)) + ) ;and (show-message "Switching non-empty documents to Beamer style is not supported" "Cannot switch style" ) ;show-message diff --git a/TeXmacs/progs/generic/test/generic-test.scm b/TeXmacs/progs/generic/test/generic-test.scm index 2060a2a5b5..413b11433c 100644 --- a/TeXmacs/progs/generic/test/generic-test.scm +++ b/TeXmacs/progs/generic/test/generic-test.scm @@ -32,8 +32,27 @@ (check (focus-tag-name 'big-table) => "big table") ) ;define +(define (beamer-switch-allowed? empty? dirty? already-beamer?) + (or empty? dirty? already-beamer?) +) ;define + +(define (test-beamer-switch-allowed?) + ;; Empty documents may always switch to Beamer. + (check (beamer-switch-allowed? #t #f #f) => #t) + ;; A dirty buffer is allowed to switch back to Beamer without requiring a save. + (check (beamer-switch-allowed? #f #t #f) => #t) + ;; A document that is already Beamer should not be blocked. + (check (beamer-switch-allowed? #f #f #t) => #t) + ;; A non-empty, clean, non-Beamer document remains blocked. + (check (beamer-switch-allowed? #f #f #f) => #f) +) ;define + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Test entry point ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(tm-define (regtest-generic) (test-focus-tag-name) (check-report)) +(tm-define (regtest-generic) + (test-focus-tag-name) + (test-beamer-switch-allowed?) + (check-report) +) ;tm-define