Czy mogę robić zrzuty ekranu (SVG) z Emacsa?

15

gtk-vector-screenshotProgram może być używany do robienia zrzutów ekranu wektor Gtk-3 zastosowań. Wydaje się, że działa, prosząc aplikację o przerysowanie się na kanwie SVG.

Emacsa na GNU / Linuksie można budować za pomocą Gtk +, ale próba użycia wspomnianej aplikacji w oknie Emacsa daje zrzut ekranu, który zawiera tylko elementy GUI, takie jak pasek menu; bufory nie są renderowane (próbowałem z Kairem i bez). Nie jest to zbyt zaskakujące, biorąc pod uwagę, że renderowanie bufora Emacsa odbywa się na dość niskim poziomie.

Czy jest jednak sposób na wykonanie skalowalnych zrzutów ekranu Emacsa ?

Łaskawy
źródło

Odpowiedzi:

2

Zgodnie z dokumentacją widżety Gtk + w Emacsie to:

  • menu,
  • dialogi,
  • paski narzędzi i
  • paski przewijania

Bufory są renderowane przez sam Emacs. Ani bufor, ani wiersze w buforze nie są widżetami Gtk +. Oznacza to, że nie wiedzą nic na temat funkcji eksportu widżetów Gtk +.

Najlepszą rzeczą, jaką możesz zrobić, to htmlfontify-bufferosadzić wygenerowany kod HTML w pliku SVG zawierającym widżety. Będzie to jednak wymagać dodatkowej pracy, aby połączyć HTML i SVG. Należy jednak pamiętać, że htmlfontify-bufferma to również pewne ograniczenia i nie działa z każdym buforem.

Ceving
źródło
Nie jestem pewien, czy to odpowiada na pytanie. Zrobiłem wzmianki take-vector-screenshotjako przykład, ale również wspomnieć, że to nie było zaskoczeniem, że to nie działa. htmlfontify-bufferma zbyt wiele ograniczeń, aby naprawdę się zakwalifikować (nie będzie renderować nakładek, ciągów wyświetlania, zawijania linii, zastępowania czcionek itp.)
Clément
1
@ Clément Krótka odpowiedź brzmi: nie ma mowy.
ceving
Czy to jest osobista opinia, czy masz dowody na poparcie tego roszczenia? Biorąc pod uwagę liczbę renderujących backendów (Kair, bezpośrednio przez X, Gtk itp.), Które ma Emacs, można sobie wyobrazić, że wystarczy drobna modyfikacja jednego z nich.
Clément
2
@ Clément Gtk + może renderować do SVG, ponieważ Gtk + używa Kairu, który ma backend dla SVG. Emacs nie używa Kairu do renderowania bufora. Istnieje jednak gałąź eksperymentalna dla Kairu. Może w najbliższej przyszłości może to być możliwe.
ceving
1

Jest to możliwe w wersjach kairskich!

(x-export-frames FRAMES TYPE)

Return image data of FRAMES in TYPE format.
FRAMES should be nil (the selected frame), a frame, or a list of
frames (each of which corresponds to one page).  Each frame should be
visible.  Optional arg TYPE should be either `pdf' (default), `png',
`postscript', or `svg'.  Supported types are determined by the
compile-time configuration of cairo.
Łaskawy
źródło