From: "Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu>
Cc: monnier+gnu/emacs@rum.cs.yale.edu
Subject: Re: Cyrillic vs UTF-8
Date: Mon, 19 May 2003 09:49:05 -0400 [thread overview]
Message-ID: <200305191349.h4JDn5Ua019134@rum.cs.yale.edu> (raw)
In-Reply-To: 200305191328.h4JDSuWf019090@rum.cs.yale.edu
> > > Maybe it is. In my situation, I'd like utf-8 to be at the top
> > > of the preferences w.r.t decoding because it virtually never
> > > guesses wrong.
> > > OTOH, I'm still using a mostly-latin-1 environment, so I'd
> > > still rather avoid utf-8 when I can. I.e. latin-1 should be at
> > > the top of my preferences w.r.t encoding.
> >
> > In that case, I think the source of the problem is that the
> > command prefer-coding-system doesn't satisfy this request of
> > yours:
> > Prefer utf-8 only in automatic detection on reading a
> > file, not for the other situations.
> >
> > (defun prefer-coding-system (coding-system)
> > "Add CODING-SYSTEM at the front of the priority list for automatic detection.
> > This also sets the following coding systems:
> > o coding system of a newly created buffer
> > o default coding system for subprocess I/O
> > This also sets the following values:
> > o default value used as `file-name-coding-system' for converting file names.
> > o default value for the command `set-terminal-coding-system' (not on MSDOS)
> > o default value for the command `set-keyboard-coding-system'
> >
> > How about changing it to skip "This also ..." parts if
> > called with a prefix argument?
> >
> > Then, on writing, if buffer-file-coding-system is not
> > locally bound, default-buffer-file-coding-system is tried
> > automatically.
> >
> > And, for the case that buffer-file-coding-system is locally
> > bound differently from default-buffer-file-coding-system,
> > but it can'd encode the current buffer, we can change
> > select-safe-coding-system to try
> > default-buffer-file-coding-system before trying the most
> > preferred coding system.
> >
> > That way, I think we can satisfy your request completely.
>
> That seems like a cheap way to get what I want indeed.
Actually I don't currently use prefer-coding-system (specifically
because I didn't want to set all those other coding-systems),
instead I use
(when (boundp 'coding-category-utf-8)
(set-coding-priority '(coding-category-utf-8)))
so I guess the only change that I care about is the part that uses
default-buffer-file-coding-system in preference to the most preferred
coding system (although it does sound paradoxical ;-)
The patch below would work for me; any comment/objection ?
Stefan
Index: mule-cmds.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/international/mule-cmds.el,v
retrieving revision 1.231
diff -u -u -b -r1.231 mule-cmds.el
--- mule-cmds.el 16 May 2003 04:15:20 -0000 1.231
+++ mule-cmds.el 19 May 2003 13:45:16 -0000
@@ -1,5 +1,5 @@
;;; mule-cmds.el --- commands for mulitilingual environment
-;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
+;; Copyright (C) 1995, 2003 Electrotechnical Laboratory, JAPAN.
;; Licensed to the Free Software Foundation.
;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
@@ -631,7 +631,8 @@
between FROM and TO are shown in a popup window. Among them, the most
proper one is suggested as the default.
-The list of `buffer-file-coding-system' of the current buffer and the
+The list of `buffer-file-coding-system' of the current buffer,
+the `default-buffer-file-coding-system', and the
most preferred coding system (if it corresponds to a MIME charset) is
treated as the default coding system list. Among them, the first one
that safely encodes the text is normally selected silently and
@@ -648,8 +649,8 @@
list of coding systems to be prepended to the default coding system
list. However, if DEFAULT-CODING-SYSTEM is a list and the first
element is t, the cdr part is used as the defualt coding system list,
-i.e. `buffer-file-coding-system' and the most prepended coding system
-is not used.
+i.e. `buffer-file-coding-system', `default-buffer-file-coding-system',
+and the most preferred coding system are not used.
Optional 4th arg ACCEPT-DEFAULT-P, if non-nil, is a function to
determine the acceptability of the silently selected coding system.
@@ -679,6 +680,9 @@
(mapcar (function (lambda (x) (cons x (coding-system-base x))))
default-coding-system))
+ ;; From now on, the list of defaults is reversed.
+ (setq default-coding-system (nreverse default-coding-system))
+
(unless no-other-defaults
;; If buffer-file-coding-system is not nil nor undecided, append it
;; to the defaults.
@@ -686,24 +690,30 @@
(let ((base (coding-system-base buffer-file-coding-system)))
(or (eq base 'undecided)
(rassq base default-coding-system)
- (setq default-coding-system
- (append default-coding-system
- (list (cons buffer-file-coding-system base)))))))
+ (push (cons buffer-file-coding-system base)
+ default-coding-system))))
+
+ ;; If default-buffer-file-coding-system is not nil nor undecided,
+ ;; append it to the defaults.
+ (if default-buffer-file-coding-system
+ (let ((base (coding-system-base default-buffer-file-coding-system)))
+ (or (eq base 'undecided)
+ (rassq base default-coding-system)
+ (push (cons default-buffer-file-coding-system base)
+ default-coding-system))))
;; If the most preferred coding system has the property mime-charset,
;; append it to the defaults.
(let ((tail coding-category-list)
preferred base)
- (while (and tail
- (not (setq preferred (symbol-value (car tail)))))
+ (while (and tail (not (setq preferred (symbol-value (car tail)))))
(setq tail (cdr tail)))
(and (coding-system-p preferred)
(setq base (coding-system-base preferred))
(coding-system-get preferred 'mime-charset)
(not (rassq base default-coding-system))
- (setq default-coding-system
- (append default-coding-system
- (list (cons preferred base))))))))
+ (push (cons preferred base)
+ default-coding-system)))))
(if select-safe-coding-system-accept-default-p
(setq accept-default-p select-safe-coding-system-accept-default-p))
@@ -724,7 +734,7 @@
(push (car elt) safe))
(push (car elt) unsafe)))
(if safe
- (setq coding-system (car (last safe)))))
+ (setq coding-system (car safe))))
;; If all the defaults failed, ask a user.
(when (not coding-system)
next prev parent reply other threads:[~2003-05-19 13:49 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-25 16:12 Cyrillic vs UTF-8 Simon Josefsson
2003-04-25 16:40 ` Eli Zaretskii
2003-04-25 17:09 ` Simon Josefsson
2003-04-25 22:39 ` Eli Zaretskii
2003-04-26 8:11 ` Kenichi Handa
2003-04-26 12:25 ` Simon Josefsson
2003-04-28 9:18 ` Kenichi Handa
2003-04-28 11:11 ` Simon Josefsson
2003-04-26 16:21 ` Benjamin Riefenstahl
2003-04-26 16:27 ` Benjamin Riefenstahl
2003-04-28 4:38 ` Richard Stallman
2003-05-01 8:27 ` Kenichi Handa
2003-05-02 7:06 ` Richard Stallman
2003-05-02 21:51 ` Eli Zaretskii
2003-05-03 13:37 ` Juanma Barranquero
2003-05-03 19:04 ` Eli Zaretskii
2003-05-04 13:03 ` Richard Stallman
2003-05-04 11:04 ` Dave Love
2003-05-04 12:01 ` Simon Josefsson
2003-05-04 17:13 ` Dave Love
2003-05-04 18:03 ` Simon Josefsson
2003-05-05 8:47 ` Kenichi Handa
2003-04-26 13:44 ` Richard Stallman
2003-04-26 14:10 ` Simon Josefsson
2003-04-28 21:49 ` Stefan Monnier
2003-04-28 22:29 ` Simon Josefsson
2003-04-29 13:49 ` Stefan Monnier
2003-04-29 14:27 ` Simon Josefsson
2003-04-30 4:42 ` Stephen J. Turnbull
2003-04-30 5:43 ` Richard Stallman
2003-05-19 0:40 ` Kenichi Handa
2003-05-19 0:52 ` Stefan Monnier
2003-05-19 2:31 ` Kenichi Handa
2003-05-19 13:28 ` Stefan Monnier
2003-05-19 13:49 ` Stefan Monnier [this message]
2003-04-25 16:54 ` Simon Josefsson
2003-04-26 3:55 ` Implementing charset-aware X font names [was: Cyrillic vs UTF-8] Stephen J. Turnbull
2003-04-28 11:09 ` Kenichi Handa
2003-04-28 12:27 ` Implementing charset-aware X font names Stephen J. Turnbull
2003-05-01 11:13 ` Kenichi Handa
2003-05-01 14:14 ` Alex Schroeder
2003-05-01 23:16 ` Kenichi Handa
2003-04-26 7:59 ` Cyrillic vs UTF-8 Kenichi Handa
2003-04-26 12:14 ` Simon Josefsson
2003-05-01 7:20 ` Kenichi Handa
2003-05-01 14:06 ` Alex Schroeder
2003-05-01 18:03 ` Customizing fontsets (was: Cyrillic vs UTF-8) Oliver Scholz
2003-05-02 5:17 ` Customizing fontsets Alex Schroeder
2003-05-02 6:32 ` Kenichi Handa
2003-05-02 13:25 ` Stefan Monnier
2003-05-03 0:40 ` Oliver Scholz
2003-05-03 1:50 ` Kenichi Handa
2003-05-03 12:08 ` Oliver Scholz
2003-05-07 1:22 ` Kenichi Handa
2003-05-03 0:33 ` Oliver Scholz
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200305191349.h4JDn5Ua019134@rum.cs.yale.edu \
--to=monnier+gnu/emacs@rum.cs.yale.edu \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.