emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Leo Alekseyev <dnquark@gmail.com>
To: Matthew Fidler <matthew.fidler@gmail.com>, emacs-orgmode@gnu.org
Subject: Re: Handling file links under Windows
Date: Sun, 16 Jan 2011 05:41:06 -0500	[thread overview]
Message-ID: <AANLkTi=wwz7z8kr0TcRcLv1vfJwh3096m+YZDx_x2=BP@mail.gmail.com> (raw)
In-Reply-To: <-463692335126976696@unknownmsgid>

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
		      (convert-standard-filename file)))
		   t t cmd)))

Here's what works:
(setq cmd (replace-match
		    (w32-short-file-name (save-match-data
					    (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?..


On Sat, Jan 15, 2011 at 10:27 PM, Matthew Fidler
<matthew.fidler@gmail.com> 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 <dnquark@gmail.com> 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.
>> Emacs-orgmode@gnu.org
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

  parent reply	other threads:[~2011-01-16 10:41 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-16  3:01 Handling file links under Windows Leo Alekseyev
2011-01-16  3:26 ` Nick Dokos
     [not found] ` <-463692335126976696@unknownmsgid>
2011-01-16 10:41   ` Leo Alekseyev [this message]
2011-01-23 14:51     ` David Maus
2011-01-16 11:07 ` Achim Gratz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='AANLkTi=wwz7z8kr0TcRcLv1vfJwh3096m+YZDx_x2=BP@mail.gmail.com' \
    --to=dnquark@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=matthew.fidler@gmail.com \


* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).