]> git.eshelyaron.com Git - emacs.git/commitdiff
Make djvused emit UTF-8 encoded text
authorVisuwesh <visuweshm@gmail.com>
Thu, 17 Oct 2024 04:10:34 +0000 (09:40 +0530)
committerEshel Yaron <me@eshelyaron.com>
Tue, 22 Oct 2024 18:51:28 +0000 (20:51 +0200)
* lisp/doc-view.el (doc-view--djvu-outline): Pass -u to djvused
to make it emit UTF-8 encoded text rather than using octal
escapes for non-ASCII string.  (bug#73846)

(cherry picked from commit 5f22c090b1ae87b516b132b36a5908a5e18c2d11)

lisp/doc-view.el

index e56f4bc3f8ec64e54bb6ea087b97ee48e35f0b6e..8116fd75747a28a5699dd0b845aeb00baa66594a 100644 (file)
@@ -2023,13 +2023,16 @@ name.
 For the format, see `doc-view--pdf-outline'."
   (unless file-name (setq file-name (buffer-file-name)))
   (with-temp-buffer
-    (call-process doc-view-djvused-program nil (current-buffer) nil
-                  "-e" "print-outline" file-name)
-    (goto-char (point-min))
-    (when (eobp)
-      (setq doc-view--outline 'unavailable)
-      (imenu-unavailable-error "Unable to create imenu index using `djvused'"))
-    (nreverse (doc-view--parse-djvu-outline (read (current-buffer))))))
+    (let ((coding-system-for-read 'utf-8))
+      ;; Pass "-u" to make `djvused' emit UTF-8 encoded text to avoid
+      ;; unescaping octal escapes for non-ASCII text.
+      (call-process doc-view-djvused-program nil (current-buffer) nil
+                    "-u" "-e" "print-outline" file-name)
+      (goto-char (point-min))
+      (when (eobp)
+        (setq doc-view--outline 'unavailable)
+        (imenu-unavailable-error "Unable to create imenu index using `djvused'"))
+      (nreverse (doc-view--parse-djvu-outline (read (current-buffer)))))))
 
 (defun doc-view--parse-djvu-outline (bookmark &optional level)
   "Return a list describing the djvu outline from BOOKMARK.