]> code.delx.au - gnu-emacs-elpa/blob - etc/screenshot.el
98a34043d4d28506562bd88c10e3e308dba5c79a
[gnu-emacs-elpa] / etc / screenshot.el
1 (defvar my/fringe-width 6)
2
3 (defconst my/script-dir
4 (file-name-directory (or load-file-name
5 buffer-file-name)))
6
7 (defun my/cleanup ()
8 (dolist (buffer (buffer-list))
9 (kill-buffer buffer)))
10
11 (defun my/prepare-UI ()
12 "Prepare UI for taking a screenshot."
13 (ido-mode)
14 (tool-bar-mode -1)
15 (menu-bar-mode -1)
16 (scroll-bar-mode -1)
17 (column-number-mode)
18 (fringe-mode (cons my/fringe-width my/fringe-width))
19 (blink-cursor-mode -1)
20 (setq-default cursor-type 'bar
21 split-width-threshold 80
22 truncate-partial-width-windows t
23 frame-title-format (format "Compact docstrings @ Emacs %s" emacs-version)
24 x-gtk-use-system-tooltips nil)
25 (load-theme 'tango t)
26 ;; (set-face-attribute 'tooltip nil :height 60)
27 (set-face-attribute 'match nil :background "yellow1")
28 (set-face-attribute 'default nil :family "Ubuntu Mono" :height 110)
29 (set-face-attribute 'mode-line nil :foreground "gray60" :background "black")
30 (set-face-attribute 'mode-line-inactive nil :foreground "gray60" :background "#404045")
31 (set-face-attribute 'mode-line-buffer-id nil :foreground "#eab700")
32 (set-fontset-font t 'unicode "Ubuntu Mono")
33 (set-frame-size nil 100 13)
34 (redisplay t))
35
36 (defun my/load-package ()
37 "Load package."
38 (package-initialize)
39 (load-library "compact-docstrings"))
40
41 (defun my/load-example ()
42 "Prepare files and layout windows."
43 (find-file "etc/before.py")
44 (setq buffer-name "Regular docstrings")
45 (find-file-other-window "after.py")
46 (setq buffer-name "Compact docstrings")
47 (compact-docstrings-mode))
48
49 (defun my/prepare-screenshot-1 ()
50 "Prepare for taking a screenshot."
51 (my/prepare-UI)
52 (my/load-package)
53 (my/load-example)
54 (message nil))
55
56 (defun my/save-screenshot ()
57 "Save screenshot of current frame."
58 (let ((fname (expand-file-name "compact-docstrings.png" my/script-dir)))
59 (process-lines "import" "-window" (frame-parameter nil 'outer-window-id)
60 fname)
61 (process-lines "mogrify" "-strip" "-matte"
62 "-bordercolor" (face-attribute 'fringe :background)
63 "-border" (format "0x%d" my/fringe-width) fname)
64 (process-lines "optipng" "-o3" fname))
65 (kill-emacs))
66
67 (defun my/take-screenshot ()
68 (my/prepare-screenshot-1)
69 (redisplay t)
70 (run-with-idle-timer 1 nil #'my/save-screenshot))
71
72 (print default-directory)
73 (run-with-idle-timer 0 nil #'my/take-screenshot)