This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Drag a file into emacs-w32 frame


I want to help, but i have never read about the source code of emacs:-[

Maybe i can pick it up some time.

Hope this can be fixed soon.

On 3/9/2013 1:25 AM, Ken Brown wrote:
On 3/4/2013 4:40 PM, Daniel Colascione wrote:
On 3/4/2013 1:39 PM, Corinna Vinschen wrote:
On Mar 4 16:26, Ken Brown wrote:
On 3/4/2013 11:24 AM, Arthur Tu wrote:
Today when i tried to drag a file whose name containing chinese
characters into emacs, it failed to open.

Here is the brief review:

1. a file with a pure english file name to emacs-32 frame:

open successfully.


2. a file with chinese characters in its name to emacs-32 frame:


      error message: "dnd-open-local-file: Can not read
file:/cygdrive/c/Users/Arthur/Desktop/%20%20%20%20.txt".
     in fact, i tried several times with different name. the name was
always decoded as a punch of "20%", even though different chinese
characters were there.


3. the same file with chinese characters in its name to a emacs-nox frame(mintty):

the file name was pasted into the buffer correctly. chinese
characters were shown correctly. the file wasn't open. (This is what's
expected to happen in terminal session.)



So my question was around the situation 2. How did the emacs-w32 handle the dragged file?

The code for handling the file name appears to be in src/w32fns.c. I don't know what the issues are in trying to make it work when the name contains Chinese characters. Daniel?

Cygwin is using UTF-8 as codeset by default. Is it possible that w32fns.c is using *shudder* Windows functions to load the file? If so, it uses the current Windows ANSI codepage, perhaps cp850 or some such.

Bottom line: Use Windows functions for the GUI as much as you like.
But don't use the Windows file API.  Use Cygwin functions for that.  If
you have to use a Windows functions to fetch the filename, use the
UNICODE Windows functions (the one with the trailing W) and convert the
filename to the current Cygwin codeset using cygwin_conv_path
(CCP_WIN_W_TO_POSIX, ...).


God no --- we're not using Win32 filesystem API functions in cygw32 Emacs. I
haven't had a chance to take a look at the problem yet, but it's probably just a
URI-encoding issue. Emacs insists on receiving drag-and-drop events as URIs,
even if they come in as filenames and pop back out the other end as filenames.

I did some tests that suggest that the problem is not the URI encoding. I filed an emacs bug report with details:


http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13907

Let's followup there.

Ken


-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple



--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]