emacs-devel
[Top][All Lists]
Advanced

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

RE: [Bug] Issues with format.el: coding system, byte/char confusi on


From: Wedler, Christoph
Subject: RE: [Bug] Issues with format.el: coding system, byte/char confusi on
Date: Tue, 8 Apr 2003 20:01:22 +0200

 >      1. Shouldn't `format-annotate-function' also save the buffer-local
 >      variable `buffer-file-coding-system' (as it does with
 >      `selective-display' and `enable-multibyte-characters' since v1.38)?

 > That seems plausible, but one ought to test it.

Currently, I do it in the format-encode function of my package X-Symbol
since July 2002 (it wouldn't work without), but I think this should be
done in general.

 >      2. To compute the coding system of the current buffer, Emacs adds
 >      function `after-insert-file-set-buffer-file-coding-system' to
 >      `after-insert-file-functions'.  Is this correct?

 > Yes.

 >       - decode functions using format.el,
 >       - decode functions in `after-insert-file-functions' before
 >         `after-insert-file-set-buffer-file-coding-system',
 >       - Emacs determines the coding system with
 >         `after-insert-file-set-buffer-file-coding-system',
 >       - decode functions in `after-insert-file-functions' after
 >         `after-insert-file-set-buffer-file-coding-system'

 > That would be true, if there is anything in
 > after-insert-file-functions other than
 > after-insert-file-set-buffer-file-coding-system.  Normally I believe
 > there isn't anything else.

What does this mean?  Is `after-insert-file-functions' obsolete without
being declared as such?

 >      I would assume that the coding system must be determined before any
 >      of the decode functions have been executed...

 > Not necessarily.  That would depend on what those other functions are.
 > Normally there aren't any others.  I suppose if you add other functions
 > to this hook that you should put them in the proper order.

As I said, the coding system is determined not only after some functions
in this hook, but also after the format-decode functions.

I also don't think that the order is correct (if
after-insert-file-set-buffer-file-coding-system doesn't do much, it
might not matter): since the `buffer-file-coding-system' is used to save
the RESULT of the format encode functions, it must be determined BEFORE
the format-decode functions have been executed.

 > Is there any real example where this question arises, or is it
 > purely hypothetical.

I'm not sure since I don't know what
`after-insert-file-set-buffer-file-coding-system' does exactly (is it
more than eol-type handling?).

 >      3. The docstring of `after-insert-file-functions' includes "It should
 >      return the new byte count", whereas `format-decode' returns the
 >      new char count.

 > It looks like they are really both measured in characters.
 > I will fix some doc strings.

In this case, you might also want to check (`position-bytes', but this might
be OK):

(defun after-insert-file-set-buffer-file-coding-system (inserted)
   ...
              (let ((pos-byte (position-bytes (+ (point) inserted))))
                (set-buffer-multibyte nil)
                (setq inserted (- pos-byte (position-bytes (point))))))
          (set-buffer-modified-p modified-p))))
  inserted)

- Christoph




reply via email to

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