> > 2) If not, where is the code that interprets %s? I can try stepping > > through it and see what I can find. > > > > It happens in org.el:org-open-file, specifically this piece of the code (I > think): > > ,---- > | (while (string-match "%s" cmd) > | (setq cmd (replace-match > | (save-match-data > | (shell-quote-argument > | (convert-standard-filename file))) > | t t cmd))) > `----
I did some tracing through, and have found where things go wrong. At the start of the code listed above, cmd = "c:/progra~1/sumatrapdf/sumatrapdf.exe %s" file = "c:/dropbox/org/personal.pdf" (convert-standard-filename file) returns "C:/dropbox/org/personal.pdf" So far so good... However, (shell-quote-argument (convert-standard-filename file)) returns "c\\:dropbox/org/personal.pdf" That's where the problem occurs. After this block of code is completed, cmd takes the value "c:/progra~1/sumatrapdf/sumatrapdf.exe c\\:dropbox/org/personal.pdf" This command causes sumatrapdf to squawk with an error. It's the "\\:" that causes the problem. If, after this block of code executes, I manually switch the "\\:" back to ":/", so cmd goes back to "c:/progra~1/sumatrapdf/sumatrapdf.exe c:/dropbox/org/personal.pdf" and then press "c" to continue, the PDF file pops up just fine. Could we just drop the call to shell-quote-argument? It seems like everything would work fine without this call.