Richard Stanton <stan...@haas.berkeley.edu> wrote: > > > 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" >
Does it really drop the slash in front of "dropbox"? When I do that on my system, the : is quoted, but the slash is left alone: (setq s "C:/dropbox/org/personal.pdf") "C:/dropbox/org/personal.pdf" (shell-quote-argument s) "C\\:/dropbox/org/personal.pdf" system-type gnu/linux If it does indeed drop the slash, can you try just putting it back and leaving the backslashes alone? Nick > 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. >