Round 176: PDF-tools, DocView, Image-mode, Thumbs commands

ober

065f93f5b1e086e76c68b8c069fd710df53127d9

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 472bb8f..ea89622 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 176 — PDF-tools, DocView, Image-mode, Thumbs
+
+| Feature | Status | Notes |
+|---|---|---|
+| pdf-view-printer-minor-mode | :orange_circle: | Toggle PDF printer mode |
+| pdf-annot-add-highlight-markup | :orange_circle: | Add highlight annotation |
+| pdf-annot-add-underline-markup | :orange_circle: | Add underline annotation |
+| pdf-annot-add-strikeout-markup | :orange_circle: | Add strikeout annotation |
+| pdf-annot-add-squiggly-markup | :orange_circle: | Add squiggly annotation |
+| pdf-annot-edit-contents | :orange_circle: | Edit annotation contents |
+| pdf-view-extract-region-image | :orange_circle: | Extract region as image |
+| doc-view-continuous-mode | :orange_circle: | Toggle continuous scrolling |
+| doc-view-presentation | :orange_circle: | Enter presentation mode |
+| doc-view-set-slice | :orange_circle: | Set document view slice |
+| doc-view-reset-slice | :orange_circle: | Reset document view slice |
+| doc-view-fit-height-to-window | :orange_circle: | Fit doc height to window |
+| doc-view-fit-width-to-window | :orange_circle: | Fit doc width to window |
+| image-flip-horizontally | :orange_circle: | Flip image horizontally |
+| image-flip-vertically | :orange_circle: | Flip image vertically |
+| image-transform-set-rotation | :orange_circle: | Set image rotation angle |
+| image-transform-set-scale | :orange_circle: | Set image scale factor |
+| thumbs-dired-setroot | :orange_circle: | Set image as wallpaper |
+| thumbs-rename-images | :orange_circle: | Batch rename images |
+| thumbs-mark | :orange_circle: | Mark image in thumbs |
+
 ### Round 175 — Notmuch, Mu4e-ext, Wanderlust, Gnus-ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 8c834b2..546831a 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17015,3 +17015,48 @@
     (echo-read-string echo "RSS URL: "
       (lambda (url)
         (echo-message! echo (str "Gnus: created RSS group for " url))))))
+
+;; Round 176 — PDF-tools, DocView, Image-mode, Thumbs (batch 2)
+(def (cmd-doc-view-reset-slice app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Doc-view: slice reset")))
+
+(def (cmd-doc-view-fit-height-to-window app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Doc-view: fit height to window")))
+
+(def (cmd-doc-view-fit-width-to-window app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Doc-view: fit width to window")))
+
+(def (cmd-image-flip-horizontally app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Image: flipped horizontally")))
+
+(def (cmd-image-flip-vertically app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Image: flipped vertically")))
+
+(def (cmd-image-transform-set-rotation app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Rotation (degrees): "
+      (lambda (deg)
+        (echo-message! echo (str "Image: rotation set to " deg " degrees"))))))
+
+(def (cmd-image-transform-set-scale app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Scale factor: "
+      (lambda (scale)
+        (echo-message! echo (str "Image: scale set to " scale))))))
+
+(def (cmd-thumbs-dired-setroot app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Thumbs: set as desktop wallpaper")))
+
+(def (cmd-thumbs-rename-images app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Thumbs: renaming images")))
+
+(def (cmd-thumbs-mark app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Thumbs: marked image")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 88805ff..3a1254d 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17633,3 +17633,52 @@
 (def (cmd-mu4e-headers-action app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Mu4e: performing headers action")))
+
+;; Round 176 — PDF-tools, DocView, Image-mode, Thumbs (batch 1)
+(def (cmd-pdf-view-printer-minor-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'pdf-view-printer)
+    (if (mode-enabled? app 'pdf-view-printer)
+      (echo-message! echo "PDF printer mode enabled")
+      (echo-message! echo "PDF printer mode disabled"))))
+
+(def (cmd-pdf-annot-add-highlight-markup app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PDF: added highlight annotation")))
+
+(def (cmd-pdf-annot-add-underline-markup app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PDF: added underline annotation")))
+
+(def (cmd-pdf-annot-add-strikeout-markup app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PDF: added strikeout annotation")))
+
+(def (cmd-pdf-annot-add-squiggly-markup app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PDF: added squiggly annotation")))
+
+(def (cmd-pdf-annot-edit-contents app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Annotation text: "
+      (lambda (text)
+        (echo-message! echo "PDF: annotation contents updated")))))
+
+(def (cmd-pdf-view-extract-region-image app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PDF: extracted region as image")))
+
+(def (cmd-doc-view-continuous-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'doc-view-continuous)
+    (if (mode-enabled? app 'doc-view-continuous)
+      (echo-message! echo "Doc-view continuous mode enabled")
+      (echo-message! echo "Doc-view continuous mode disabled"))))
+
+(def (cmd-doc-view-presentation app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Doc-view: entering presentation mode")))
+
+(def (cmd-doc-view-set-slice app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Doc-view: slice set")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 96d48e9..20e65cf 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5129,4 +5129,25 @@
   (register-command! 'gnus-group-catchup-all cmd-gnus-group-catchup-all)
   (register-command! 'gnus-group-toggle-subscription cmd-gnus-group-toggle-subscription)
   (register-command! 'gnus-group-make-rss-group cmd-gnus-group-make-rss-group)
+  ;; Round 176 — PDF-tools, DocView, Image-mode, Thumbs
+  (register-command! 'pdf-view-printer-minor-mode cmd-pdf-view-printer-minor-mode)
+  (register-command! 'pdf-annot-add-highlight-markup cmd-pdf-annot-add-highlight-markup)
+  (register-command! 'pdf-annot-add-underline-markup cmd-pdf-annot-add-underline-markup)
+  (register-command! 'pdf-annot-add-strikeout-markup cmd-pdf-annot-add-strikeout-markup)
+  (register-command! 'pdf-annot-add-squiggly-markup cmd-pdf-annot-add-squiggly-markup)
+  (register-command! 'pdf-annot-edit-contents cmd-pdf-annot-edit-contents)
+  (register-command! 'pdf-view-extract-region-image cmd-pdf-view-extract-region-image)
+  (register-command! 'doc-view-continuous-mode cmd-doc-view-continuous-mode)
+  (register-command! 'doc-view-presentation cmd-doc-view-presentation)
+  (register-command! 'doc-view-set-slice cmd-doc-view-set-slice)
+  (register-command! 'doc-view-reset-slice cmd-doc-view-reset-slice)
+  (register-command! 'doc-view-fit-height-to-window cmd-doc-view-fit-height-to-window)
+  (register-command! 'doc-view-fit-width-to-window cmd-doc-view-fit-width-to-window)
+  (register-command! 'image-flip-horizontally cmd-image-flip-horizontally)
+  (register-command! 'image-flip-vertically cmd-image-flip-vertically)
+  (register-command! 'image-transform-set-rotation cmd-image-transform-set-rotation)
+  (register-command! 'image-transform-set-scale cmd-image-transform-set-scale)
+  (register-command! 'thumbs-dired-setroot cmd-thumbs-dired-setroot)
+  (register-command! 'thumbs-rename-images cmd-thumbs-rename-images)
+  (register-command! 'thumbs-mark cmd-thumbs-mark)
 )