[Top][All Lists]
[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
- RE: [Bug] Issues with format.el: coding system, byte/char confusi on,
Wedler, Christoph <=