unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Ken Brown <kbrown@cornell.edu>
To: Eli Zaretskii <eliz@gnu.org>
Cc: cyd@stupidchicken.com, emacs-devel@gnu.org
Subject: Re: Cygwin patches
Date: Sat, 21 Nov 2009 16:21:54 -0500	[thread overview]
Message-ID: <4B0859F2.8080202@cornell.edu> (raw)
In-Reply-To: <836394oxr9.fsf@gnu.org>

On 11/21/2009 7:42 AM, Eli Zaretskii wrote:
>>> I think that the right fix would be in browse-url-file-url, so that it
>>> does return a correctly converted URL.  Using cygstart directly in
>>> browse-url-of-file deviates too much from what other platforms do --
>>> they all invoke the browser in browse-url.  Such a deviation could
>>> mean maintenance headaches in the future.  For example, browse-url
>>> takes care of setting the environment for the process being invoked,
>>> while your patch short-circuits that for Cygwin.
>> OK, that makes sense.  I'll figure out how to patch browse-url-file-url 
>> instead.

I have very little experience with emacs-lisp, so I'll need some help 
getting this right.  Here's my first attempt:

--- browse-url.el.orig	2009-11-21 12:33:40.000000000 -0500
+++ browse-url.el	2009-11-21 15:51:40.000000000 -0500
@@ -699,6 +699,10 @@
  (defun browse-url-file-url (file)
    "Return the URL corresponding to FILE.
  Use variable `browse-url-filename-alist' to map filenames to URLs."
+  (if (eq system-type 'cygwin)
+      (let ((winfile (shell-command-to-string (concat
+			  "cygpath -m " (shell-quote-argument file)))))
+	(setq file (concat "file://" (substring winfile 0 -1)))))
    (let ((coding (and (default-value 'enable-multibyte-characters)
  		     (or file-name-coding-system
  			 default-file-name-coding-system))))

Explanation: The cygpath command converts a unix-style file name (like 
/home/kbrown/index.html) to a Windows-style file name (like 
C:/cygwin/home/kbrown/index.html).  I have to add "file://" in front for 
reasons I don't understand.  (If I don't do this, "file:" gets added by 
the later code, with no slashes.)  And I delete the last character to 
get rid of a final newline.

When I try to test this in emacs 23.1, I get an error

   if: Wrong number of arguments: called-interactively-p, 1

The following additional patch, restoring something from the emacs 23.1 
version of browse-url, fixes it:

@@ -770,7 +774,7 @@
  Prompts for a URL, defaulting to the URL at or before point.  Variable
  `browse-url-browser-function' says which browser to use."
    (interactive (browse-url-interactive-arg "URL: "))
-  (unless (called-interactively-p 'interactive)
+  (unless (interactive-p)
      (setq args (or args (list browse-url-new-window-flag))))
    (let ((process-environment (copy-sequence process-environment)))
      ;; When connected to various displays, be careful to use the 
display of

I don't know what's going on.  Can you help?

Thanks.

Ken




  reply	other threads:[~2009-11-21 21:21 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-20 20:00 Cygwin patches Ken Brown
2009-11-20 21:50 ` Chong Yidong
2009-11-20 21:59   ` Lennart Borgman
2009-11-20 22:26   ` Ken Brown
2009-11-20 23:54     ` Lennart Borgman
2009-11-21  8:12     ` Eli Zaretskii
2009-11-21 12:12       ` Ken Brown
2009-11-21 12:16         ` Lennart Borgman
2009-11-21 12:42         ` Eli Zaretskii
2009-11-21 21:21           ` Ken Brown [this message]
2009-11-21 21:48             ` Eli Zaretskii
2009-11-22  5:25             ` Davis Herring
2009-11-22 12:59               ` Ken Brown
2009-11-22 23:03                 ` Chong Yidong
2009-11-22 23:23                   ` Ken Brown
2009-11-22 23:30                     ` Lennart Borgman
2009-11-23  1:37                       ` Ken Brown
2009-11-23  1:42                         ` Lennart Borgman
2009-11-23  1:50                         ` Chong Yidong
2009-11-23  2:09                           ` Ken Brown
2009-11-23 19:50                             ` Ken Brown
2009-11-23 20:59                               ` Chong Yidong
  -- strict thread matches above, loose matches on Subject: below --
2009-11-20 23:40 Angelo Graziosi
2009-11-21  4:50 ` Chong Yidong

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:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=4B0859F2.8080202@cornell.edu \
    --to=kbrown@cornell.edu \
    --cc=cyd@stupidchicken.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* 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

	https://git.savannah.gnu.org/cgit/emacs.git

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).