emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Handling file links under Windows


From: Leo Alekseyev
Subject: Re: [Orgmode] Handling file links under Windows
Date: Sun, 16 Jan 2011 05:41:06 -0500

Guided by Matt's suggestion I started digging further.  I see the
problem, but I don't know how to fix it other than by making crude
changes directly to source in org.el.

Both the command path and the file link path need to be properly
formatted for Windows.  In particular, in org-file-apps list, I need
something like ("\\.jnt\\'" . (format "%s %%s" (w32-short-file-name
"C:\\Program Files\\Windows Journal\\Journal.exe"))).  But, this
expression doesn't work verbatim.  If I evaluate (format....) and
paste the result as the cdr of the dotted pair, e.g. ("\\.jnt\\'" .
"c:/PROGRA~1/WI0FCF~1/Journal.exe %s"), the command is invoked.  So,
question 1: How do I eval the (format...) expression automatically?..

A more serious problem is that emacs is failing to correctly convert
slashes to backslashes in the file path.  My emacs is launched by
cygwin, and so apparently it thinks that slashes are OK, but in fact
they are not.  Here are the explicit modifications to org-find-file in
org.el that are needed to get things to work:

Original code (doesn't work under Windows):
(setq cmd (replace-match
                   (save-match-data
                     (shell-quote-argument
                      (convert-standard-filename file)))
                   t t cmd)))

Here's what works:
(setq cmd (replace-match
                    (w32-short-file-name (save-match-data
                                           (convert-standard-filename
                                            (replace-regexp-in-string "/" "\\" 
file t t)))) t t cmd))

Note that instead of (convert-standard-filename file) I need to
explicitly replace slashes with backslashes, and shell-quote-argument
must be replaced with w32-short-file-name.  So, question 2: Is there a
way to make these modifications without patching org?..

--Leo

On Sat, Jan 15, 2011 at 10:27 PM, Matthew Fidler
<address@hidden> wrote:
> Leo,
>
> I am not at my computer, so I can't try this out.  However I believe
> it may be the spaces in your commands. Try:
>
>> (("\\.jnt\\'" . (format "%s %%s" (w32-short-file-name "C:\\Program 
>> Files\\Windows
>> Journal\\Journal.exe"))
>> ("\\.pdf\\'" . (format "%s %%s" (w32-short-file-name "C:\\Program Files 
>> (x86)\\Adobe\\Acrobat
>> 10.0\\Acrobat\\Acrobat.exe")
>> (auto-mode . emacs)
>> ("\\.x?html?\\'" . default))
>
> Matt
>
> On Jan 15, 2011, at 9:03 PM, Leo Alekseyev <address@hidden> wrote:
>
>> Dear All,
>> I would like to have links to PDF files open those files in Acrobat
>> and links to Windows Journal (JNT) files open them in Windows Journal
>> -- very simple; same as it would be as if I double-clicked them
>> anywhere in Windows.
>>
>> Here is what happens now: PDF files open in emacs doc-view mode, and
>> JNT files fail to open with the message "ShellExecute failed:
>> Application not found^M" (sic).
>>
>> If I try to explicitly set the variable org-file-apps, so that its
>> value is (("\\.jnt\\'" . "C:\\Program Files\\Windows
>> Journal\\Journal.exe %s")
>> ("\\.pdf\\'" . "C:\\Program Files (x86)\\Adobe\\Acrobat
>> 10.0\\Acrobat\\Acrobat.exe %s")
>> (auto-mode . emacs)
>> ("\\.x?html?\\'" . default))
>>
>> -- but in this case, opening those links silently fails (even though I
>> can type e.g.  "C:\Program Files\Windows Journal\Journal.exe foo.jnt"
>> from Windows command line and it works fine).
>>
>> Can anyone help with getting this to work right?..  Links are rather
>> fundamental to org-mode and it's annoying not to have them working
>> right.
>>
>> --Leo
>>
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Please use `Reply All' to send replies to the list.
>> address@hidden
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]