commit - 218876a9c1d446e99f769452e8d7de0a88ca359f
commit + 84954bcd2e666a66a8ab006b3311573b65575a17
blob - 2ee9d2b5ee2c3bfcbc86cc955df2f4c4e32814a9
blob + a809a9a71d0d14c3a9b74133377f9bfe93159819
--- internal/model/model.go
+++ internal/model/model.go
return strings.Join(lines, "\n")
}
+// resolveThemeRef makes a relative `theme:` path in the frontmatter
+// resolve against the presentation file's directory (as bibliography and
+// images already do), not the process's working directory. Builtin
+// keywords, URLs and absolute paths pass through untouched.
+func (m *Model) resolveThemeRef(ref string) string {
+ switch ref {
+ case "", "ascii", "light", "dark", "notty":
+ return ref
+ }
+ if strings.HasPrefix(ref, "http") || filepath.IsAbs(ref) {
+ return ref
+ }
+ return filepath.Join(m.imageBaseDir(), ref)
+}
+
func fileWatchCmd() tea.Cmd {
return tea.Every(time.Second, func(t time.Time) tea.Msg {
return fileWatchMsg{}
m.Date = metaData.Date
m.Paging = metaData.Paging
if m.Theme == nil {
- m.Theme = styles.SelectTheme(metaData.Theme)
+ m.Theme = styles.SelectTheme(m.resolveThemeRef(metaData.Theme))
// Computed here, once, before the tea.Program takes over the
// terminal: HasDarkBackground does its own OSC 11 query, which
// would race with Bubble Tea's input reader if called later from