From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: Bug found (but don't know to fix) Date: Wed, 21 May 2008 12:26:06 +0200 Message-ID: References: <4831F82F.90902@gmail.com> Mime-Version: 1.0 (Apple Message framework v919.2) Content-Type: multipart/mixed; boundary="===============0343788996==" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Jylpb-0001lp-CE for emacs-orgmode@gnu.org; Wed, 21 May 2008 06:46:03 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JylpV-0001ii-MQ for emacs-orgmode@gnu.org; Wed, 21 May 2008 06:46:02 -0400 Received: from [199.232.76.173] (port=37711 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JylpV-0001iX-EK for emacs-orgmode@gnu.org; Wed, 21 May 2008 06:45:57 -0400 Received: from korteweg.uva.nl ([146.50.98.70]:10939) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JylWK-0007Sv-Sx for emacs-orgmode@gnu.org; Wed, 21 May 2008 06:26:09 -0400 In-Reply-To: <4831F82F.90902@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Wanrong Lin Cc: emacs-orgmode@gnu.org --===============0343788996== Content-Type: multipart/alternative; boundary=Apple-Mail-8--1017350928 --Apple-Mail-8--1017350928 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Hi Wanrong, how about the following patch: - Carsten diff --git a/lisp/org.el b/lisp/org.el index 9094204..ee1b923 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -7385,7 +7385,9 @@ If the file does not exist, an error is thrown." (setq cmd (replace-match "%s" t t cmd))) (while (string-match "%s" cmd) (setq cmd (replace-match - (save-match-data (shell-quote-argument file)) + (save-match-data + (shell-quote-argument + (convert-standard-filename file))) t t cmd))) (save-window-excursion (start-process-shell-command cmd nil cmd) On May 19, 2008, at 11:59 PM, Wanrong Lin wrote: > Hi Carsten: > > I have observed that in Windows "org-open-at-point" (bound to RET > key in my config) does not work on something like this: > > file:\\hostname\path > > Today I dug a little bit into it, and found the problem is here (in > red): > > (defun org-open-file (path &optional in-emacs line search) > "Open the file at PATH. > First, this expands any special file name abbreviations. Then the > configuration variable `org-file-apps' is checked if it contains an > entry for this file type, and if yes, the corresponding command is > launched. > If no application is found, Emacs simply visits the file. > With optional argument IN-EMACS, Emacs will visit the file. > Optional LINE specifies a line to go to, optional SEARCH a string to > search for. If LINE or SEARCH is given, the file will always be > opened in Emacs. > If the file does not exist, an error is thrown." > (setq in-emacs (or in-emacs line search)) > (let* ((file (if (equal path "") > buffer-file-name > (substitute-in-file-name (expand-file-name path)))) > > (expand-file-name path) replaces all backslashes with forward > slashes, and later in the same function > > > (if search (org-link-search search)))) > ((consp cmd) > (eval cmd)) > > Here "cmd" variable is "(w32-shell-execute "open" file)", and w32- > shell-execute will complain about the file not existing. > > When in-emacs is t, everything works fine, as Emacs understand both > forward and backward slashes. > > Also, it works fine on regular file path like this: > file:c:\path\file.txt > > That is because somehow my Windows system is setup (by our IT guys) > to understand both forward and backward slashes, but that only works > on regular file paths, not the Windows shared directory paths. > > I wonder whether this can get fixed. Thank you very much. > > Wanrong > > _______________________________________________ > Emacs-orgmode mailing list > Remember: use `Reply All' to send replies to the list. > Emacs-orgmode@gnu.org > http://lists.gnu.org/mailman/listinfo/emacs-orgmode --Apple-Mail-8--1017350928 Content-Type: text/html; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hi = Wanrong,

how about the following = patch:

- = Carsten

diff --git a/lisp/org.el = b/lisp/org.el
index 9094204..ee1b923 100644
--- = a/lisp/org.el
+++ b/lisp/org.el
@@ -7385,7 +7385,9 = @@ If the file does not exist, an error is = thrown."
  (setq cmd (replace-match "%s" t t = cmd)))
       (while (string-match "%s" = cmd)
  (setq cmd = (replace-match
-   (save-match-data = (shell-quote-argument file))
+   = (save-match-data
+     = (shell-quote-argument
+     =  (convert-standard-filename file)))
  =   t t cmd)))
       = (save-window-excursion
  (start-process-shell-command cmd = nil = cmd)






On May 19, 2008, at 11:59 PM, = Wanrong Lin wrote:
Hi Carsten:

I have = observed that in Windows "org-open-at-point" (bound to RET key in my = config) does not work on something like this:

file:\\hostname\path

Today I = dug a little bit into it, and found the problem is here (in red):
=
(defun org-open-file (path &optional in-emacs line = search)
  "Open the file at PATH.
First, this expands any = special file name abbreviations.  Then the
configuration = variable `org-file-apps' is checked if it contains an
entry for this = file type, and if yes, the corresponding command is launched.
If no = application is found, Emacs simply visits the file.
With optional = argument IN-EMACS, Emacs will visit the file.
Optional LINE = specifies a line to go to, optional SEARCH a string to
search = for.  If LINE or SEARCH is given, the file will always be
= opened in Emacs.
If the file does not exist, an error is = thrown."
  (setq in-emacs (or in-emacs line search))
  = (let* ((file (if (equal path "")
    =        buffer-file-name
    =      (substitute-in-file-name (expand-file-name path))))

= (expand-file-name path) replaces = all backslashes with forward slashes, and later in the same function
=

    (if search (org-link-search = search))))
     ((consp cmd)
=       (eval = cmd))


Here "cmd" variable is = "(w32-shell-execute "open" file)", and w32-shell-execute will complain = about the file not existing.

When in-emacs is t, = everything works fine, as Emacs understand both forward and backward = slashes.

Also, it works fine on regular file path like = this:
 file:c:\path\file.txt

That = is because somehow my Windows system is setup (by our IT guys) to = understand both forward and backward slashes, but that only works on = regular file paths, not the Windows shared directory paths.

I = wonder whether this can get fixed. Thank you very much.

= Wanrong

= _______________________________________________
Emacs-orgmode mailing = list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.= gnu.org/mailman/listinfo/emacs-orgmode

= --Apple-Mail-8--1017350928-- --===============0343788996== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --===============0343788996==--