GNU bug report logs - #73638
31.0.50; doc-view: imenu index cannot be made for LaTeX PDFs

Previous Next

Package: emacs;

Reported by: Visuwesh <visuweshm <at> gmail.com>

Date: Sat, 5 Oct 2024 11:07:02 UTC

Severity: normal

Found in version 31.0.50

Done: Tassilo Horn <tsdh <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #20 received at 73638 <at> debbugs.gnu.org (full text, mbox):

From: Tassilo Horn <tsdh <at> gnu.org>
To: Visuwesh <visuweshm <at> gmail.com>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 73638 <at> debbugs.gnu.org
Subject: Re: bug#73638: 31.0.50; doc-view: imenu index cannot be made for
 LaTeX PDFs
Date: Sun, 06 Oct 2024 10:16:11 +0200
Visuwesh <visuweshm <at> gmail.com> writes:

> When "mutool run" is called without any script argument, it opens a
> REPL.  We would need to `process-send-string' to the REPL but the REPL
> reports syntax error when I try to do so.  This is after trying to
> "minify" the JS script.  Maybe I am doing something wrong.  I've
> attached my test lisp at the end.

I've tried doing the same and also get syntax errors.  Same if I just
copy&paste the script with injected filename in the REPL on a terminal.
Both for the original script as well as for a minified version.  First
I've thought that function definitions won't work at all but that's not
the case, e.g., I can enter this funcion at the REPL and it'll work:

--8<---------------cut here---------------start------------->8---
> function bar(i){if(i==0) print("done"); else {print(i);bar(i-1);}}
> bar(10)
10
9
8
7
6
5
4
3
2
1
done
--8<---------------cut here---------------end--------------->8---

Ok, after experimenting a bit more and minimizing by hand, this version
of the script can be copy&pasted into the REPL and should probably also
work with process-send-string.

--8<---------------cut here---------------start------------->8---
var document = new Document.openDocument("/home/horn/sample.pdf", "application/pdf");
var outline = document.loadOutline();
if(!outline) quit();
function pp(outl, level){print("((level . " + level + ")");print("(title . " + repr(outl.title) + ")");print("(page . " + document.resolveLink(outl.uri) + "))");if(outl.down){for(var i=0; i<outl.down.length; i++){pp(outl.down[i], level+1);}}};
function run(){print("(");for(var i=0; i<outline.length; i++){pp(outline[i], 1);}print(")");};
run();
--8<---------------cut here---------------end--------------->8---

It looks like the REPL wants function definitions on one single but
separate line.  Sadly, that's not documented so I'm not sure how
reliable that formatting works across mutool versions or why the REPL
doesn't accept all valid JS.  The only thing I can find in the man page
is that the = character at the beginning of a line has the special
meaning of "print the result of the following expression".

Bye,
  Tassilo




This bug report was last modified 226 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.