all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Luc Teirlinck <teirllm@dms.auburn.edu>
Subject: Re: org-mode and mode hooks.
Date: Fri, 27 May 2005 20:58:48 -0500 (CDT)	[thread overview]
Message-ID: <200505280312.j4S3CY508530@raven.dms.auburn.edu> (raw)
In-Reply-To: <87psveq60w.fsf-monnier+emacs@gnu.org> (message from Stefan Monnier on Thu, 26 May 2005 13:04:36 -0400)

My original patch for font-lock.el had problems.  It did not work well
for modes that only use font-lock for font-lock-face and it did not
work for modes with a non-standard font-lock-function.  I now propose
to leave font-lock.el unchanged and to apply the patch below to
font-core.el instead.

I also propose a slightly changed second paragraph to the
`define-global-minor-mode' docstring.  The revised patch to cwarn.el
is completely equivalent to my original.  It just adapts the changes
to the revised `define-global-minor-mode' docstring.

Revised second paragraph of `define-global-minor-mode' docstring:

If the minor mode's set-up depends on the major mode, then enabling
the minor mode should store the value of the variable `major-mode' in
the variable MODE-stored-mode.  This is used to catch bugs where MODE
is set up for the wrong mode.  `define-global-minor-mode' provides
a defvar for MODE-stored-hook, with initial value nil, and makes it
automatically buffer-local.  If MODE's set-up is independent of
the major mode, the value of the variable should stay nil.

New patches to font-core.el and cwarn.el:

===File ~/font-core-diff====================================
*** font-core.el	22 May 2005 16:46:07 -0500	1.28
--- font-core.el	27 May 2005 20:01:05 -0500	
***************
*** 88,93 ****
--- 88,95 ----
  It will be passed one argument, which is the current value of
  `font-lock-mode'.")
  
+ ;; The mode for which font-lock was initialized, or nil if none.
+ (defvar font-lock-mode-stored-mode)
  (define-minor-mode font-lock-mode
    "Toggle Font Lock mode.
  With arg, turn Font Lock mode off if and only if arg is a non-positive
***************
*** 156,162 ****
    ;; Arrange to unfontify this buffer if we change major mode later.
    (if font-lock-mode
        (add-hook 'change-major-mode-hook 'font-lock-change-mode nil t)
!     (remove-hook 'change-major-mode-hook 'font-lock-change-mode t)))
  
  ;; Get rid of fontification for the old major mode.
  ;; We do this when changing major modes.
--- 158,165 ----
    ;; Arrange to unfontify this buffer if we change major mode later.
    (if font-lock-mode
        (add-hook 'change-major-mode-hook 'font-lock-change-mode nil t)
!     (remove-hook 'change-major-mode-hook 'font-lock-change-mode t))
!   (when font-lock-mode (setq font-lock-mode-stored-mode major-mode)))
  
  ;; Get rid of fontification for the old major mode.
  ;; We do this when changing major modes.
***************
*** 203,209 ****
    (when (or font-lock-defaults
  	    (and (boundp 'font-lock-keywords) font-lock-keywords)
  	    (with-no-warnings
! 	     (cdr (assq major-mode font-lock-defaults-alist))))
      (font-lock-mode-internal mode)))
  
  (defun turn-on-font-lock ()
--- 206,217 ----
    (when (or font-lock-defaults
  	    (and (boundp 'font-lock-keywords) font-lock-keywords)
  	    (with-no-warnings
! 	      (cdr (assq major-mode font-lock-defaults-alist)))
! 	    (and (boundp 'font-lock-set-defaults)
! 		 font-lock-set-defaults
! 		 (not (eq font-lock-mode-stored-mode major-mode))))
!     (unless (eq font-lock-mode-stored-mode major-mode)
!       (setq  font-lock-set-defaults nil))
      (font-lock-mode-internal mode)))
  
  (defun turn-on-font-lock ()
============================================================

===File ~/cwarn-diff========================================
*** cwarn.el	04 Apr 2005 07:03:09 -0500	1.9
--- cwarn.el	27 May 2005 20:03:24 -0500	
***************
*** 184,189 ****
--- 184,190 ----
  ;;}}}
  ;;{{{ The modes
  
+ (defvar cwarn-mode-stored-mode)
  ;;;###autoload
  (define-minor-mode cwarn-mode
    "Minor mode that highlights suspicious C and C++ constructions.
***************
*** 195,201 ****
  With ARG, turn CWarn mode on if and only if arg is positive."
    :group 'cwarn :lighter cwarn-mode-text
    (cwarn-font-lock-keywords cwarn-mode)
!   (if font-lock-mode (font-lock-fontify-buffer)))
  
  ;;;###autoload
  (defun turn-on-cwarn-mode ()
--- 196,203 ----
  With ARG, turn CWarn mode on if and only if arg is positive."
    :group 'cwarn :lighter cwarn-mode-text
    (cwarn-font-lock-keywords cwarn-mode)
!   (if font-lock-mode (font-lock-fontify-buffer))
!   (when cwarn-mode (setq cwarn-mode-stored-mode major-mode)))
  
  ;;;###autoload
  (defun turn-on-cwarn-mode ()
============================================================

  parent reply	other threads:[~2005-05-28  1:58 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-25 13:31 org-mode and mode hooks Lute Kamstra
2005-05-25 14:45 ` Stefan Monnier
2005-05-25 15:20   ` Carsten Dominik
2005-05-25 15:44   ` Lute Kamstra
2005-05-25 16:36     ` Luc Teirlinck
2005-05-25 17:01       ` Lute Kamstra
2005-05-25 17:12         ` Luc Teirlinck
2005-05-25 17:28           ` Lute Kamstra
2005-05-25 17:45             ` Luc Teirlinck
2005-05-25 16:24   ` Luc Teirlinck
2005-05-26  6:00     ` Richard Stallman
2005-05-26 10:31       ` Lute Kamstra
2005-05-26 17:31         ` Lute Kamstra
2005-05-27 14:18           ` Richard Stallman
2005-06-27  8:25             ` Lute Kamstra
2005-06-28  4:16               ` Richard M. Stallman
2005-05-27  3:39         ` Richard Stallman
2005-05-27  8:07           ` Juri Linkov
2005-06-27  8:28             ` Lute Kamstra
2005-05-25 17:30   ` Luc Teirlinck
2005-05-25 21:35   ` Luc Teirlinck
2005-05-25 22:15     ` Stefan Monnier
2005-05-26  3:59       ` Luc Teirlinck
2005-05-26 14:08         ` Stefan Monnier
2005-05-26 15:01           ` Luc Teirlinck
2005-05-26 17:04             ` Stefan Monnier
2005-05-27 17:17               ` Luc Teirlinck
2005-05-27 17:27                 ` Luc Teirlinck
2005-05-28 11:53                 ` Richard Stallman
2005-05-29  1:57                   ` Luc Teirlinck
2005-05-29 12:04                     ` Richard Stallman
2005-05-29 23:54                       ` Luc Teirlinck
2005-05-31  4:18                         ` Richard Stallman
2005-05-31 15:44                           ` Luc Teirlinck
2005-05-31 19:08                             ` Stefan Monnier
2005-06-01  3:50                               ` Luc Teirlinck
2005-06-01 17:22                               ` Richard Stallman
2005-06-01 19:11                                 ` Luc Teirlinck
2005-06-01 21:21                                   ` Stefan Monnier
2005-06-01 22:42                                     ` Luc Teirlinck
2005-06-01 22:55                                       ` Stefan Monnier
2005-06-01 23:26                                         ` Luc Teirlinck
2005-06-01 23:43                                           ` Stefan Monnier
2005-06-01 23:55                                             ` Luc Teirlinck
2005-06-01 23:57                                             ` Luc Teirlinck
2005-06-01 23:58                                             ` David Kastrup
2005-06-02  0:15                                             ` Luc Teirlinck
2005-06-01 23:49                                         ` Luc Teirlinck
2005-06-03  8:01                                           ` Richard Stallman
2005-06-03 14:59                                             ` Luc Teirlinck
2005-06-03 15:05                                             ` Luc Teirlinck
2005-06-04 10:16                                               ` Richard Stallman
2005-06-04 14:54                                                 ` Luc Teirlinck
2005-06-04 16:33                                                   ` Stefan Monnier
2005-06-04 17:48                                                     ` Luc Teirlinck
2005-06-05  0:36                                                       ` David Kastrup
2005-06-05  9:47                                                   ` Richard Stallman
2005-06-07  0:23                                                     ` Luc Teirlinck
2005-06-04 15:17                                                 ` Luc Teirlinck
2005-06-05  9:47                                                   ` Richard Stallman
2005-06-06 23:28                                                     ` Luc Teirlinck
2005-06-07 18:15                                                       ` Stefan Monnier
2005-06-07 19:08                                                         ` Luc Teirlinck
2005-06-07 22:10                                                           ` Stefan Monnier
2005-06-08  1:36                                                             ` Luc Teirlinck
2005-06-08 16:15                                                               ` Stefan Monnier
2005-06-09  1:06                                                                 ` Luc Teirlinck
2005-06-08 12:02                                                       ` Richard Stallman
2005-06-02  6:15                                   ` Carsten Dominik
2005-06-01 19:14                                 ` Luc Teirlinck
2005-06-01 19:19                                 ` Luc Teirlinck
2005-06-01 21:24                                 ` Stefan Monnier
2005-05-31 16:30                           ` Luc Teirlinck
2005-06-01  2:33                           ` Luc Teirlinck
2005-06-01 17:23                             ` Richard Stallman
2005-06-01 17:48                               ` Luc Teirlinck
2005-06-01  2:42                           ` Luc Teirlinck
2005-06-01 17:23                             ` Richard Stallman
2005-06-01 18:05                               ` Luc Teirlinck
2005-06-01  2:47                           ` Luc Teirlinck
2005-06-01 17:23                             ` Richard Stallman
2005-06-02  3:21                               ` Luc Teirlinck
2005-06-03 22:32                                 ` Richard Stallman
2005-06-03 23:08                                   ` Luc Teirlinck
2005-06-04 18:00                                     ` Richard Stallman
2005-06-01  3:01                           ` Luc Teirlinck
2005-05-30  1:43                       ` Luc Teirlinck
2005-05-30  2:50                       ` Luc Teirlinck
2005-05-30 15:31                         ` Luc Teirlinck
2005-05-30 16:52                           ` Luc Teirlinck
2005-05-30 17:24                             ` Luc Teirlinck
2005-05-30  3:35                       ` Luc Teirlinck
2005-05-29  2:20                   ` Luc Teirlinck
2005-05-29 12:04                     ` Richard Stallman
2005-05-30  0:42                       ` Luc Teirlinck
2005-05-30  1:58                       ` Luc Teirlinck
2005-05-28  1:58               ` Luc Teirlinck [this message]
2005-05-27 14:49             ` Michael Mauger
2005-05-27 15:35               ` Luc Teirlinck
2005-05-27 16:40               ` Luc Teirlinck
2005-05-27 17:15               ` Stefan Monnier
2005-05-27 19:13               ` Luc Teirlinck
2005-05-31 18:25                 ` Michael Mauger
2005-05-27 19:43               ` Luc Teirlinck
2005-05-28 11:53                 ` Richard Stallman
2005-05-28 18:48                   ` Luc Teirlinck
2005-06-07  1:19                   ` Luc Teirlinck
2005-06-07  1:49                     ` Miles Bader
2005-06-07  1:55                       ` Luc Teirlinck
2005-06-07  2:01                         ` Miles Bader
2005-06-07 18:23                           ` Stefan Monnier
2005-06-07 18:17                       ` Stefan Monnier
2005-06-08 12:01                       ` Richard Stallman
2005-05-26 14:53         ` Richard Stallman
2005-05-26 15:06           ` Luc Teirlinck
2005-05-26  4:16       ` Luc Teirlinck
2005-05-25 22:22     ` Lute Kamstra
     [not found] ` <17044.33688.784219.190965@sam.science.uva.nl>
2005-05-25 15:37   ` Lute Kamstra
2005-05-25 15:49     ` Carsten Dominik
2005-05-26  5:59 ` Richard Stallman
     [not found] <87sm07o3oz.fsf-monnier+emacs@gnu.org>
2005-05-29  2:00 ` Luc Teirlinck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200505280312.j4S3CY508530@raven.dms.auburn.edu \
    --to=teirllm@dms.auburn.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.