emacs-devel
[Top][All Lists]
Advanced

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

Re: GDB on Mac is Broken


From: YAMAMOTO Mitsuharu
Subject: Re: GDB on Mac is Broken
Date: Sat, 13 Mar 2010 15:58:11 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Fri, 12 Mar 2010 12:43:31 -0500, Glenn Morris <address@hidden> said:

> This is a duplicate of

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

> but presumably refers to GNU Emacs now.

As expected, reproducibility on the Mac port could contribute to show
whether a bug was NS-specific or not.

The related difference between Emacs 22, on which the completion
works, and Emacs 23 seems to be:

  1. The default value of default-process-coding-system.
  2. A change in comint-exec-1.

For the first one, the value is (mule-utf-8 . mule-utf-8) in Emacs 22,
and (utf-8-unix . utf-8-unix) in Emacs 23 on Mac OS X 10.6.  The
difference in the EOL conversion comes from the following code in
mule-cmd.el:

  (let ((output-coding
         ;; When bootstrapping, coding-systems are not defined yet, so
         ;; we need to catch the error from check-coding-system.
         (condition-case nil
             (coding-system-change-text-conversion
              (car default-process-coding-system) 'undecided)
           (coding-system-error 'undecided)))
        (input-coding
         (condition-case nil
             (coding-system-change-text-conversion
              (cdr default-process-coding-system) 'iso-latin-1)
           (coding-system-error 'iso-latin-1))))
    (setq default-process-coding-system
          (cons output-coding input-coding)))

The value of default-coding-system is nil as of bootstrapping, and the
following snippet evaluates to `undecided' on Emacs 22, but
`undecided-unix' on Emacs 23.

         (condition-case nil
             (coding-system-change-text-conversion
              (car default-process-coding-system) 'undecided)
           (coding-system-error 'undecided))

This difference in turn comes from that of (coding-system-eol-type
nil), which evaluates to nil on Emacs 22 and 0 on Emacs 23.

The second one is the first hunk in
http://lists.gnu.org/archive/html/emacs-devel/2008-03/msg00322.html

2008-03-04 Kenichi Handa  <address@hidden>

        * comint.el (comint-exec-1): Don't change the coding-system for
        decoding to dos-like EOL.

Index: comint.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/comint.el,v
retrieving revision 1.373
diff -c -r1.373 comint.el
*** comint.el   22 Jan 2008 23:53:43 -0000      1.373
--- comint.el   4 Mar 2008 11:41:44 -0000
***************
*** 800,811 ****
      (let ((coding-systems (process-coding-system proc)))
        (setq decoding (car coding-systems)
            encoding (cdr coding-systems)))
-     ;; If start-file-process decided to use some coding system for decoding
-     ;; data sent from the process and the coding system doesn't
-     ;; specify EOL conversion, we had better convert CRLF to LF.
-     (if (vectorp (coding-system-eol-type decoding))
-       (setq decoding (coding-system-change-eol-conversion decoding 'dos)
-             changed t))
      ;; Even if start-file-process left the coding system for encoding data
      ;; sent from the process undecided, we had better use the same one
      ;; as what we use for decoding.  But, we should suppress EOL

I'm not sure which side should be changed, gud or comint with
coding-system functions.  At least, the above differences explain why
completion in *gdb* buffer behaves differently between Emacs 22 and
23.

                                     YAMAMOTO Mitsuharu
                                address@hidden




reply via email to

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