GNU bug report logs -
#66317
Project mode-line
Previous Next
Reported by: Juri Linkov <juri <at> linkov.net>
Date: Tue, 3 Oct 2023 06:33:01 UTC
Severity: wishlist
Fixed in version 30.0.50
Done: Juri Linkov <juri <at> linkov.net>
Bug is archived. No further changes may be made.
Full log
Message #154 received at 66317 <at> debbugs.gnu.org (full text, mbox):
On 23/10/2023 20:23, Juri Linkov wrote:
>> I'm not sure what to recommend, but some print-debugging could
>> help. E.g. just add a (backtrace) call inside project-mode-line-format.
>>
>> But that's a lot of output to sort through, so there's definitely room for
>> improvement in this recipe.
> Ok, here is 100% reproducible minimal test case:
>
> 0. emacs-30 -Q
> 1. eval:
>
> (progn
> (require 'project)
> (setq project-mode-line t)
> (setq set-message-functions '(set-multi-message)))
>
> 2. in a temporary directory: M-! git init RET
> 3. C-x C-f .dir-locals.el RET
> 4. insert: ((fundamental-mode . ((mode . flyspell))))
> 5. C-x C-s
>
> At this point even buffer-file-coding-system of .dir-locals.el
> is changed to 't' (raw-text-unix). The same happens when saving
> any file in that project.
>
> The problem doesn't occur when flyspell-mode is enabled from
> file-local variables, only from dir-locals.
I can repro. But it's as weird a bug as they come.
I guess it's a combination of using flyspell-mode and editing
.dir-locals.el? Or have you seen other buffers' b-f-c-s changed this way
too?
If not, it might have something to do with flyspell-mode's use of
sit-for?.. But I'm only saying that because it's the only feature of
this mode that I'm regularly reminded of.
I tried using a variable watcher:
(add-variable-watcher
'buffer-file-coding-system
(lambda (_sym value op where)
(message "%s %s %s" value op where)
(if (eq 'raw-text-unix value) (backtrace))
))
but it just prints
prefer-utf-8-unix set *temp*-925453 [2 times]
raw-text-unix set .dir-locals.el
backtrace()
(if (eq 'raw-text-unix value) (backtrace))
(closure (t) (_sym value op where) (message "%s %s %s" value op
where) (if (eq 'raw-text-unix value)
(backtrace)))(buffer-file-coding-system raw-text-unix set #<buffer
.dir-locals.el>)
basic-save-buffer(t)
save-buffer(1)
funcall-interactively(save-buffer 1)
call-interactively(save-buffer nil nil)
command-execute(save-buffer)
OTOH, the bug is very reliable to reproduce: add the aforementioned line
to dir-locals and save -> the coding system changes to raw-text. Delete
the line and save -> and it's prefer-utf-8 again.
This bug report was last modified 1 year and 200 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.