unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* buffer-read-only is always t at text-mode-hook time
@ 2004-08-10  3:40 Dan Jacobson
       [not found] ` <E1Buzoi-00078M-CW@fencepost.gnu.org>
  0 siblings, 1 reply; 7+ messages in thread
From: Dan Jacobson @ 2004-08-10  3:40 UTC (permalink / raw)


Perhaps this would work:
(add-hook 'text-mode-hook (lambda ()
   (or buffer-read-only (and(turn-on-auto-fill)(flyspell-mode 1)))))
But buffer-read-only is always true when text-mode-hook is evaluated
apparently.

While a fix is being made, any workarounds?

You see I don't want to turn on flyspell-mode for files I have no hope
of editing.

flyspell.el might add an example of how not to turn on flyspell-mode
for files one has no hope of editing.

P.S. the Info, the first hooks example
     (add-hook 'text-mode-hook 'turn-on-auto-fill)
should also show how to not turn it on for files one has no hope of editing.
While there, tell folks how also to set a hook just in case they need
to override. Don't only mention just add-hook.

BTW, I also don't want to turn on flyspell-mode for files that are
real big.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: buffer-read-only is always t at text-mode-hook time
       [not found] <mailman.715.1092171969.2011.bug-gnu-emacs@gnu.org>
@ 2004-08-11 15:33 ` Kevin Rodgers
  0 siblings, 0 replies; 7+ messages in thread
From: Kevin Rodgers @ 2004-08-11 15:33 UTC (permalink / raw)


Dan Jacobson wrote:
 > Perhaps this would work:
 > (add-hook 'text-mode-hook (lambda ()
 >    (or buffer-read-only (and(turn-on-auto-fill)(flyspell-mode 1)))))
 > But buffer-read-only is always true when text-mode-hook is evaluated
 > apparently.

I can't replicate that on GNU Emacs 21.3.1 (i386-pc-solaris2.7, X toolkit).

I started emacs with the -q --no-site-file switches and evaluated this
in the *scratch* buffer:

(add-hook 'text-mode-hook
	  (lambda () (message "buffer-read-only is %s" buffer-read-only)))

Then I invoked text mode several different ways (via M-x, via
default-major-mode, and via auto-mode-alist on both new and existing
files), and each time the echo area said "buffer-read-only is nil".

 > While a fix is being made, any workarounds?
 >
 > You see I don't want to turn on flyspell-mode for files I have no hope
 > of editing.

Your code above ought to work, except that you depend on the result of
turn-on-auto-fill, whose return value is not documented.  Use progn
instead of `and'.

 > flyspell.el might add an example of how not to turn on flyspell-mode
 > for files one has no hope of editing.

But you figured it out easily enough, no?

 > P.S. the Info, the first hooks example
 >      (add-hook 'text-mode-hook 'turn-on-auto-fill)
 > should also show how to not turn it on for files one has no hope of editing.

Why?  auto-fill is only invoked if they make a change (insert a space
at the end of a line), and if that's what the user wants it should
work if they M-x toggle-read-only.

 > While there, tell folks how also to set a hook just in case they need
 > to override. Don't only mention just add-hook.

Bad idea.

 > BTW, I also don't want to turn on flyspell-mode for files that are
 > real big.

C-h f buffer-size

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: buffer-read-only is always t at text-mode-hook time
       [not found] ` <E1Buzoi-00078M-CW@fencepost.gnu.org>
@ 2004-08-13 20:05   ` Dan Jacobson
       [not found]     ` <E1Bw9P8-0000Tg-Br@fencepost.gnu.org>
       [not found]   ` <mailman.1089.1092431153.2011.bug-gnu-emacs@gnu.org>
  1 sibling, 1 reply; 7+ messages in thread
From: Dan Jacobson @ 2004-08-13 20:05 UTC (permalink / raw)


Ok it is not true that "buffer-read-only is always t at text-mode-hook time".

Of course my bogus bug report is not my fault,

 > tell folks how also to set a hook just in case they need to
 > override. Don't only mention just add-hook.

Rogers> Bad idea.

Well, with all the setq examples from the 80's gone, we'll just add and add, and
produce bogus bug reports.

rms> 	 (add-hook 'text-mode-hook 'turn-on-auto-fill)
rms>     should also show how to not turn it on for files one has no hope of editing.

rms> Why bother to check?  If you don't edit, it won't do anything.

Well, at least do so for flyspell.el where it counts.

OK, using (and (not buffer-read-only)(> 88888 (buffer-size))(flyspell-mode 1))
Over and out.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: buffer-read-only is always t at text-mode-hook time
       [not found]   ` <mailman.1089.1092431153.2011.bug-gnu-emacs@gnu.org>
@ 2004-08-13 22:13     ` Kevin Rodgers
  0 siblings, 0 replies; 7+ messages in thread
From: Kevin Rodgers @ 2004-08-13 22:13 UTC (permalink / raw)


Dan Jacobson wrote:
 > Ok it is not true that "buffer-read-only is always t at text-mode-hook time".
 >
 > Of course my bogus bug report is not my fault,

Why not?

 >  > tell folks how also to set a hook just in case they need to
 >  > override. Don't only mention just add-hook.
 >
 > Rogers> Bad idea.

Could you do me the small favor of spelling my name correctly?

 > Well, with all the setq examples from the 80's gone, we'll just add
 > and add, and produce bogus bug reports.

add-hook's doc string clearly states that the HOOK symbol is a
variable, from which you can infer that you can modify it with
set/setq like any other.  The reason users should not be encouraged to
do so is obvious: a hook is a list-valued variable that should be
modified incrementally to limit the scope of the change to what is
intended and not not affect other aspects of the system of which the
user may not be aware.

How does add-hook/remove-hook contribute to more bogus bug reports
than set/setq?

 > rms> 	 (add-hook 'text-mode-hook 'turn-on-auto-fill)
 > rms> should also show how to not turn it on for files one has no
   hope of editing.
 > rms> Why bother to check?  If you don't edit, it won't do anything.
 >
 > Well, at least do so for flyspell.el where it counts.

I don't agree.  If a user expects flyspell to work regardless of
whether the buffer is read-only or writeable (i.e. checking the
current word after each command), then disabling it automatically is
clearly wrong (and doesn't allow him/her to control Emacs' behavior).
Leaving it as is at least gives users like you the opportunity to turn
it off.

 > OK, using (and (not buffer-read-only)(> 88888 (buffer-size))(flyspell-mode 1))
 > Over and out.

Ah, the magic 86.8046875 KB buffer size.  :-)

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: buffer-read-only is always t at text-mode-hook time
       [not found]     ` <E1Bw9P8-0000Tg-Br@fencepost.gnu.org>
@ 2004-08-15  2:50       ` Dan Jacobson
       [not found]       ` <mailman.1298.1092602041.2011.bug-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 7+ messages in thread
From: Dan Jacobson @ 2004-08-15  2:50 UTC (permalink / raw)


rms> Could you elaborate?  If you turn on flyspell mode for a read-only
rms> buffer, what subsequently happens that you find inconvenient?

Some might want to know of spelling problems they can't fix---but
never mind that---larger problem:

$ cat .emacs
(setq default-major-mode 'text-mode);adding this line makes the below useless!
(add-hook
 'text-mode-hook
 (lambda ()
   (or buffer-read-only (turn-on-auto-fill))
   (and (not buffer-read-only)(> 88888 (buffer-size))(flyspell-mode 1))))
$ emacs -nw --no-site-file /usr/share/emacs/21.3/etc/DOC-21.3.1
And what do you know, despite my best efforts, there I am staring at
"(Text Fly Fill)" in the modeline.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: buffer-read-only is always t at text-mode-hook time
       [not found]       ` <mailman.1298.1092602041.2011.bug-gnu-emacs@gnu.org>
@ 2004-08-16 16:22         ` Kevin Rodgers
  2004-08-18  1:34           ` Richard Stallman
  0 siblings, 1 reply; 7+ messages in thread
From: Kevin Rodgers @ 2004-08-16 16:22 UTC (permalink / raw)


Dan Jacobson wrote:
 > Some might want to know of spelling problems they can't fix---but
 > never mind that---larger problem:
 >
 > $ cat .emacs
 > (setq default-major-mode 'text-mode);adding this line makes the below useless!
 > (add-hook
 >  'text-mode-hook
 >  (lambda ()
 >    (or buffer-read-only (turn-on-auto-fill))
 >    (and (not buffer-read-only)(> 88888 (buffer-size))(flyspell-mode 1))))
 > $ emacs -nw --no-site-file /usr/share/emacs/21.3/etc/DOC-21.3.1
 > And what do you know, despite my best efforts, there I am staring at
 > "(Text Fly Fill)" in the modeline.

That is a problem.  It arises because default-major-mode is called 1
of 2 ways: either by set-buffer-major-mode (before the file's contents
have been inserted) or by normal-mode (but only if called with a nil
FIND-FILE argument, which usually doesn't happen since after-find-file
specifies it as t).

I don't know how that could be fixed without moving the call to
set-buffer-major-mode into or after find-file-no-select-1 (which
inserts the file contents into the buffer).  If that's not feasible,
should the interaction between default-major-mode and the mode's hook
functions be documented?

-- 
Kevin Rodgers

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: buffer-read-only is always t at text-mode-hook time
  2004-08-16 16:22         ` Kevin Rodgers
@ 2004-08-18  1:34           ` Richard Stallman
  0 siblings, 0 replies; 7+ messages in thread
From: Richard Stallman @ 2004-08-18  1:34 UTC (permalink / raw)
  Cc: gnu-emacs-bug

    I don't know how that could be fixed without moving the call to
    set-buffer-major-mode into or after find-file-no-select-1 (which
    inserts the file contents into the buffer).  If that's not feasible,
    should the interaction between default-major-mode and the mode's hook
    functions be documented?

Moving the call into after-find-file would fix this, but that kind of
change could easily introduce various other bugs.  I don't know of any
specific thing that could fail after this change, but there are many
things that need to be checked to verify they won't sometimes fail.
Does anyone want to study and check them?

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2004-08-18  1:34 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <mailman.715.1092171969.2011.bug-gnu-emacs@gnu.org>
2004-08-11 15:33 ` buffer-read-only is always t at text-mode-hook time Kevin Rodgers
2004-08-10  3:40 Dan Jacobson
     [not found] ` <E1Buzoi-00078M-CW@fencepost.gnu.org>
2004-08-13 20:05   ` Dan Jacobson
     [not found]     ` <E1Bw9P8-0000Tg-Br@fencepost.gnu.org>
2004-08-15  2:50       ` Dan Jacobson
     [not found]       ` <mailman.1298.1092602041.2011.bug-gnu-emacs@gnu.org>
2004-08-16 16:22         ` Kevin Rodgers
2004-08-18  1:34           ` Richard Stallman
     [not found]   ` <mailman.1089.1092431153.2011.bug-gnu-emacs@gnu.org>
2004-08-13 22:13     ` Kevin Rodgers

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).