GNU bug report logs - #75993
Special mode-class for diff-mode

Previous Next

Package: emacs;

Reported by: Juri Linkov <juri <at> linkov.net>

Date: Sat, 1 Feb 2025 17:37:01 UTC

Severity: normal

Tags: patch

Fixed in version 31.0.50

Done: Juri Linkov <juri <at> linkov.net>

Bug is archived. No further changes may be made.

Full log


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

From: Juri Linkov <juri <at> linkov.net>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 75993 <at> debbugs.gnu.org
Subject: Re: bug#75993: Special mode-class for diff-mode
Date: Mon, 03 Feb 2025 19:59:03 +0200
>>> Hmm... this doesn't smell right:
>>>
>>> - I hate distinguishing between "mode-class = special" and "derives from
>>>   `special-mode`".
>>> - Whether we want to do that depends on `diff-mode-read-only` which is
>>>   buffer-local.
>>
>> AFAICS, the special mode-class is handled only in `read-only-mode`:
>>
>>    ((and buffer-read-only view-read-only
>>          (not view-mode)
>>          (not (eq (get major-mode 'mode-class) 'special)))
>>     (view-mode-enter))
>>
>> This is exactly what is needed in diff-mode when it switches to read-only
>> it should not enable view-mode.
>
> Maybe, but:
>
> - Nothing in its name or in its doc says so, AFAICT.  IOW, it's just an accident.
> - As a symbol property, it's not buffer-local.

This description seems to fit the purpose of diff-mode:

   • If this mode is appropriate only for specially-prepared text
     produced by the mode itself (rather than by the user typing at the
     keyboard or by an external file), then the major mode command
     symbol should have a property named ‘mode-class’ with value
     ‘special’, put on as follows:

          (put 'funny-mode 'mode-class 'special)

     This tells Emacs that new buffers created while the current buffer
     is in Funny mode should not be put in Funny mode, even though the
     default value of ‘major-mode’ is ‘nil’.  By default, the value of
     ‘nil’ for ‘major-mode’ means to use the current buffer's major mode
     when creating new buffers (*note Auto Major Mode::), but with such
     ‘special’ modes, Fundamental mode is used instead.  Modes such as
     Dired, Rmail, and Buffer List use this feature.

     The function ‘view-buffer’ does not enable View mode in buffers
     whose mode-class is special, because such modes usually provide
     their own View-like bindings.




This bug report was last modified 103 days ago.

Previous Next


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