blob: 1202ca557653460349dbbc969654058d631e36aa (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# kitty-graphics.el -- developer task runner
#
# Requires: just, emacs, typst (for typst tests), imagemagick (for sixel).
# Run `just` to list recipes.
set shell := ["bash", "-cu"]
EMACS := env_var_or_default("EMACS", "emacs")
TERM_ := env_var_or_default("KGFX_TERM", "xterm-256color")
SRC := "kitty-graphics.el"
# Default: list recipes
default:
@just --list --unsorted
# --- Build / lint -----------------------------------------------------------
# Byte-compile (primary lint check)
compile:
rm -f {{SRC}}c
{{EMACS}} -Q -batch -f batch-byte-compile {{SRC}}
# Byte-compile, treat warnings as errors
lint:
rm -f {{SRC}}c
{{EMACS}} -Q -batch --eval '(setq byte-compile-error-on-warn t)' \
-f batch-byte-compile {{SRC}}
# Load-test: file evaluates without error
load:
{{EMACS}} -Q -batch -l {{SRC}} -f kill-emacs
# Remove generated artifacts
clean:
rm -f {{SRC}}c
rm -rf /tmp/kitty-gfx-typst /tmp/kitty-gfx-sixel-*.six /tmp/kitty-gfx.log
# --- Interactive tests (open terminal Emacs) --------------------------------
# Test typst inline equations (M-x kitty-gfx-typst-preview after open)
test-typst:
@echo ">> M-x kitty-gfx-typst-preview to render"
@echo ">> M-x kitty-gfx-typst-clear-preview to clear"
TERM={{TERM_}} {{EMACS}} -nw -Q -l {{SRC}} \
--eval "(kitty-graphics-mode 1)" \
--eval "(setq kitty-gfx-debug t)" \
tests/test-typst.typ
# Test org-mode inline images -- C-c C-x C-v after open
test-org:
TERM={{TERM_}} {{EMACS}} -nw -Q -l {{SRC}} \
--eval "(kitty-graphics-mode 1)" \
tests/test-kitty-gfx.org
# Test text sizing protocol (OSC 66) on org headings
test-headings:
TERM={{TERM_}} {{EMACS}} -nw -Q -l {{SRC}} \
--eval "(setq kitty-gfx-heading-sizes-auto t)" \
--eval "(kitty-graphics-mode 1)" \
tests/test-kitty-gfx.org
# Test image-mode rendering
test-image:
TERM={{TERM_}} {{EMACS}} -nw -Q -l {{SRC}} \
--eval "(kitty-graphics-mode 1)" \
tests/test-image.png
# Test doc-view / PDF rendering
test-pdf:
TERM={{TERM_}} {{EMACS}} -nw -Q -l {{SRC}} \
--eval "(kitty-graphics-mode 1)" \
tests/test-document.pdf
# Test markdown-overlays integration
test-markdown:
TERM={{TERM_}} {{EMACS}} -nw -Q -l {{SRC}} \
--eval "(kitty-graphics-mode 1)" \
tests/test-markdown.md
# Test LaTeX fragment preview in org-mode (C-c C-x C-l on a fragment)
test-latex:
TERM={{TERM_}} {{EMACS}} -nw -Q -l {{SRC}} \
--eval "(kitty-graphics-mode 1)" \
tests/test-kitty-gfx.org
# --- Headless typst checks --------------------------------------------------
# Compile a typst fragment headlessly, print the PNG path
typst-render fragment="$x^2 + y^2 = z^2$":
{{EMACS}} -Q -batch -L . -l {{SRC}} --eval '(progn \
(setq kitty-gfx-debug t) \
(let ((png (kitty-gfx--typst-render "{{fragment}}"))) \
(princ (format "png=%s exists=%s\n" png (and png (file-exists-p png))))))'
# Render fragment and open PNG with xdg-open
typst-show fragment="$integral_(-oo)^(+oo) e^(-x^2) dif x = sqrt(pi)$":
@png=$({{EMACS}} -Q -batch -L . -l {{SRC}} --eval '(princ (kitty-gfx--typst-render "{{fragment}}"))' 2>/dev/null); \
echo "png=$png"; \
[ -n "$png" ] && xdg-open "$png"
# Tail the kitty-gfx debug log (set kitty-gfx-debug to t to populate)
log:
tail -f /tmp/kitty-gfx.log
|