GNU bug report logs - #8122
23.2.94; (prefer-coding-system 'utf-8) changes indentation behavior for emacsclient

Previous Next

Package: emacs;

Reported by: Steve Revilak <steve <at> srevilak.net>

Date: Sat, 26 Feb 2011 14:32:02 UTC

Severity: normal

Found in version 23.2.94

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #20 received at 8122 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Steve Revilak <steve <at> srevilak.net>, Kenichi Handa <handa <at> m17n.org>
Cc: 8122 <at> debbugs.gnu.org
Subject: Re: bug#8122: 23.2.94;
	(prefer-coding-system 'utf-8) changes indentation behavior
	for	emacsclient
Date: Sat, 26 Feb 2011 18:40:32 +0200
> Date: Sat, 26 Feb 2011 09:31:16 -0500
> From: Steve Revilak <steve <at> srevilak.net>
> Cc: 
> 
> (1) Start emacs in daemon mode, as follows:
>      env TMPDIR=$HOME/tmp emacs  -Q --eval "(prefer-coding-system 'utf-8)" --daemon
> 
> (2) Use emacsclient to connect to the server started in step (1),
>      editing a new text file.
>      rm -f a.txt
>      env TMPDIR=$HOME/tmp emacsclient a.txt
> 
> (3) In the buffer for a.txt, type the lines that appear below.  Do not
>      press return after typing "ccc"
> 
> aaa
> bbb
> 
>    ccc
> 
> (4) With point at the end of line "ccc", press RETURN.  If "ccc"
>      appeared in line 5 of the buffer, then the cursor will appear at
>      line 6, column 2.  
> 
> Expected behavior: after pressing RETURN, the cursor should have
> appeared line line 6, column 0.

I found the reason for this: when keyboard-coding-system is utf-8,
typing RET is decoded as C-j.  If you start the Emacs daemon like
this:

 emacs  -Q --eval "(prefer-coding-system 'utf-8-unix)" --daemon
                                          ^^^^^^^^^^
the problem goes away.

This happens because, unlike set-keyboard-coding-system, which adds
"-unix" to its argument, we don't do the same when we set up
default-keyboard-coding-system.

(This problem is quite old; I guess no one used
default-keyboard-coding-system until the change I made in terminal.c
exposed this bug.)

I propose the following change to fix this:

--- lisp/international/mule-cmds.el~0	2011-01-08 12:45:14.000000000 -0500
+++ lisp/international/mule-cmds.el	2011-02-26 11:32:22.483284753 -0500
@@ -368,7 +368,8 @@
 		 (coding-system-get coding-system 'ascii-compatible-p)))
 	(setq default-file-name-coding-system coding-system)))
   (setq default-terminal-coding-system coding-system)
-  (setq default-keyboard-coding-system coding-system)
+  (setq default-keyboard-coding-system
+	(coding-system-change-eol-conversion coding-system 'unix))
   ;; Preserve eol-type from existing default-process-coding-systems.
   ;; On non-unix-like systems in particular, these may have been set
   ;; carefully by the user, or by the startup code, to deal with the




This bug report was last modified 14 years and 148 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.