emacs-devel
[Top][All Lists]
Advanced

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

Re: Codepages and shell function on w32


From: Eli Zaretskii
Subject: Re: Codepages and shell function on w32
Date: Mon, 01 Jan 2007 00:49:42 -0500

> Date: Mon, 01 Jan 2007 04:05:23 +0100
> From: "Lennart Borgman (gmail)" <address@hidden>
> CC:  address@hidden
> 
> Eli Zaretskii wrote:
> >> Date: Sun, 31 Dec 2006 14:22:09 +0100
> >> From: "Lennart Borgman (gmail)" <address@hidden>
> >>
> >>               (cp-out (read (format "cp%s" 
> >> (w32-get-console-output-codepage))))
> >>               (cp-in  (read (format "cp%s" (w32-get-console-codepage)))))
> >>           (cond
> >>            ((w32-shell-dos-semantics)
> >>             (set-process-coding-system proc cp-out cp-in))
> >>     
> >
> > This is wrong: w32-fns.el sets this as follows:
> >
> >   (setq default-process-coding-system
> >     (if default-enable-multibyte-characters
> >         '(undecided-dos . undecided-unix)
> >       '(raw-text-dos . raw-text-unix)))
> >
> > The output encoding uses *-unix for a good reason.
> 
> Can you please explain a bit more? How should it look?

I meant the EOL conversion that you've left unspecified (i.e. open to
Emacs guesswork on input and subtle black magic on output).  You need
to use coding-system-change-eol-conversion to force the car of the
cons cell use -dos, and the cdr to use -unix.  (I hope this answers
your question because, frankly, I'm not quite sure what you were
asking.)

> In the case 
> cmdproxy case (the case above) it works for me with this code using 
> Swedish characters in file names for example.

``Works for me'' is not a replacement for good engineering, because
your testing can never find all problems.  We use these specific EOL
conversions for input and output because of the reason explained in
this comment in w32-fns.el:

  ;; Most programs on Windows will accept Unix line endings on input
  ;; (and some programs ported from Unix require it) but most will
  ;; produce DOS line endings on output.

> > Does Cygwin at all support anything beyond the C locale?  If not,
> > that's the reason why windows-1252 doesn't work for you.
> 
> I have no idea.

It's very easy to verify, if you have Cygwin programs installed, no?

> What do I write to test with the C locale?

I'd suggest the other way around: try to get a Cygwin program to work
correctly in a non-C locale.  For example, `sort' should use the
correct sorting order with non-ASCII (Swedish) characters, `ls' should
display file names with correct Swedish characters, etc.




reply via email to

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