Gnus development mailing list
 help / color / mirror / Atom feed
* loading spam.el and gnus-registry.el with set variables only
@ 2003-10-07 18:44 Ted Zlatanov
  2003-10-09 14:42 ` Ted Zlatanov
  0 siblings, 1 reply; 7+ messages in thread
From: Ted Zlatanov @ 2003-10-07 18:44 UTC (permalink / raw)


Speaking for those two packages, it has been the #1 problem that
people have to set a variable (gnus-registry-install or
spam-install-hooks) and then do a require of the .el file.  How could
I make it so setting any of the two variables above will load its
appropriate package when Gnus is loaded?  I can just put code into
gnus.el, but I thought maybe there was a "right" way of loading
packages like that.

Thanks
Ted



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

* Re: loading spam.el and gnus-registry.el with set variables only
  2003-10-07 18:44 loading spam.el and gnus-registry.el with set variables only Ted Zlatanov
@ 2003-10-09 14:42 ` Ted Zlatanov
  2003-10-09 16:24   ` Reiner Steib
  0 siblings, 1 reply; 7+ messages in thread
From: Ted Zlatanov @ 2003-10-09 14:42 UTC (permalink / raw)


On Tue, 07 Oct 2003, tzz@lifelogs.com wrote:

> Speaking for those two packages, it has been the #1 problem that
> people have to set a variable (gnus-registry-install or
> spam-install-hooks) and then do a require of the .el file.  How
> could I make it so setting any of the two variables above will load
> its appropriate package when Gnus is loaded?  I can just put code
> into gnus.el, but I thought maybe there was a "right" way of loading
> packages like that.

Anyone?  If this is not yet standardized in Gnus, I'll go ahead and
put some code in gnus.el that will look in a table of symbols and if
the symbol is set, will load the corresponding library.  I just want
to make sure I'm not missing something obvious.

Ted



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

* Re: loading spam.el and gnus-registry.el with set variables only
  2003-10-09 14:42 ` Ted Zlatanov
@ 2003-10-09 16:24   ` Reiner Steib
  2003-10-09 18:00     ` Ted Zlatanov
  0 siblings, 1 reply; 7+ messages in thread
From: Reiner Steib @ 2003-10-09 16:24 UTC (permalink / raw)


On Thu, Oct 09 2003, Ted Zlatanov wrote:

> On Tue, 07 Oct 2003, tzz@lifelogs.com wrote:
>
>> Speaking for those two packages, it has been the #1 problem that
>> people have to set a variable (gnus-registry-install or
>> spam-install-hooks) and then do a require of the .el file.  How
>> could I make it so setting any of the two variables above will load
>> its appropriate package when Gnus is loaded?

[Disclaimer: I'm not familiar with gnus-registry.el and spam*.el
internals.]

The importance of the order seems quite fragile to me, isn't it?
_Normally_ (counter-examples follow below) I'd expect that changing a
variable has some effect, no matter if a corresponding package is
loaded before or after setting the variable.

I'd use functions, say `gnus-registry-initialize' and
`spam-initialize' (or -install?) and autoload those functions:

;;;###autoload
(defun gnus-registry-initialize ...)

;;;###autoload
(defun spam-initialize ...)

Probably, you should also add autoload cookies to the relevant
variables.  E.g. in my current setup, gnus-registry isn't loaded, so I
cannot customize `gnus-registry-install'.

> Anyone?  If this is not yet standardized in Gnus, I'll go ahead and
> put some code in gnus.el that will look in a table of symbols and if
> the symbol is set, will load the corresponding library.  I just want
> to make sure I'm not missing something obvious.

I doubt that we have a Gnus-specific standard/convention.  Maybe
there's something in the Emacs or Elisp manual?

Maybe, instead of ...-initialize, using a minor mode is better?
Grepping the Emacs lisp sources for "no effect" gives some examples:

,----[ C-h v normal-erase-is-backspace RET ]
| normal-erase-is-backspace's value is t
| [...]
| Setting this variable with setq doesn't take effect.  Programmatically,
| call `normal-erase-is-backspace-mode' (which see) instead.
| 
| You can customize this variable.
| 
| Defined in `simple'.
`----

,----[ C-h v utf-translate-cjk-mode RET (in CVS HEAD) ]
| utf-translate-cjk-mode's value is nil
| 
| Non-nil if Utf-Translate-Cjk mode is enabled.
| See the command `utf-translate-cjk-mode' for a description of this
| minor-mode.
| Setting this variable directly does not take effect;
| use either M-x customize or the function `utf-translate-cjk-mode'.
| 
| You can customize this variable.
| 
| Defined in `international/utf-8'.
`----

See the ":set" and ":initialize" keyword of `defcustom'.

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo--- PGP key available via WWW   http://rsteib.home.pages.de/




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

* Re: loading spam.el and gnus-registry.el with set variables only
  2003-10-09 16:24   ` Reiner Steib
@ 2003-10-09 18:00     ` Ted Zlatanov
  2003-10-09 19:37       ` Reíner Steib
  0 siblings, 1 reply; 7+ messages in thread
From: Ted Zlatanov @ 2003-10-09 18:00 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 457 bytes --]

On Thu, 09 Oct 2003, 4.uce.03.r.s@nurfuerspam.de wrote:

> The importance of the order seems quite fragile to me, isn't it?

Definitely, that's why I'd like to make it simpler and more robust.

> I'd use functions, say `gnus-registry-initialize' and
> `spam-initialize' (or -install?) and autoload those functions:

Excellent, I don't know why I didn't think of something so obvious.
Thanks a lot, Reiner!  Let me know if the attached patch looks OK.

Ted


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: autoloading-registry-and-spam.patch --]
[-- Type: text/x-patch, Size: 1776 bytes --]

? autoloading-registry-and-spam.patch
Index: gnus-registry.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/gnus-registry.el,v
retrieving revision 6.33
diff -u -r6.33 gnus-registry.el
--- gnus-registry.el	8 Sep 2003 18:25:57 -0000	6.33
+++ gnus-registry.el	9 Oct 2003 18:00:31 -0000
@@ -569,6 +569,14 @@
   (setq gnus-registry-hashtb (alist-to-hashtable gnus-registry-alist))
   (setq gnus-registry-dirty t))
 
+;;;###autoload
+(defun gnus-registry-initialize ()
+  (interactive)
+  (setq gnus-registry-install t)
+  (gnus-registry-install-hooks)
+  (gnus-registry-read))
+
+;;;###autoload
 (defun gnus-registry-install-hooks ()
   "Install the registry hooks."
   (interactive)
Index: spam.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/spam.el,v
retrieving revision 6.116
diff -u -r6.116 spam.el
--- spam.el	3 Oct 2003 18:58:33 -0000	6.116
+++ spam.el	9 Oct 2003 18:00:32 -0000
@@ -370,13 +370,6 @@
   "Msx" gnus-summary-mark-as-spam
   "\M-d" gnus-summary-mark-as-spam)
 
-;;; How to highlight a spam summary line.
-
-;; TODO: How do we redo this every time spam-face is customized?
-
-(push '((eq mark gnus-spam-mark) . spam-face)
-      gnus-summary-highlight)
-
 ;; convenience functions
 (defun spam-group-ham-mark-p (group mark &optional spam)
   (when (stringp group)
@@ -1222,6 +1215,15 @@
    nil))
 \f
 ;;;; Hooks
+
+;;;###autoload
+(defun spam-initialize ()
+  (interactive)
+  (setq spam-install-hooks t)
+  (spam-install-hooks-function)
+  ;; TODO: How do we redo this every time spam-face is customized?
+  (push '((eq mark gnus-spam-mark) . spam-face)
+	gnus-summary-highlight))
 
 ;;;###autoload
 (defun spam-install-hooks-function ()

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

* Re: loading spam.el and gnus-registry.el with set variables only
  2003-10-09 18:00     ` Ted Zlatanov
@ 2003-10-09 19:37       ` Reíner Steib
  2003-10-09 19:51         ` Ted Zlatanov
  0 siblings, 1 reply; 7+ messages in thread
From: Reíner Steib @ 2003-10-09 19:37 UTC (permalink / raw)


On Thu, Oct 09 2003, Ted Zlatanov wrote:

> Let me know if the attached patch looks OK.

I don't understand the need and the use of the variable
`spam-install-hooks':

(defcustom spam-use-dig t
  [...])

[... other spam-use-VAR defaulting to nil ...]

(defcustom spam-install-hooks (or
			       spam-use-dig
			       spam-use-blacklist
                               [...]
			       spam-use-stat
			       spam-use-spamoracle)
  "Whether the spam hooks should be installed, default to t if one of
the spam-use-* variables is set." [...])

I.e. `spam-install-hooks' is always t when you load `spam.el'?  If you
use the `spam-initialize' function, why do you need the variable
`spam-install-hooks' at all?

If it's not used anymore, you may issue a warning if it's bound while
loading `spam.el', i.e. if someone wants to use the obsoleted
interface.

> +;;;###autoload
> +(defun spam-initialize ()
> +  (interactive)
> +  (setq spam-install-hooks t)
> +  (spam-install-hooks-function)
> +  ;; TODO: How do we redo this every time spam-face is customized?
> +  (push '((eq mark gnus-spam-mark) . spam-face)
> +	gnus-summary-highlight))

Then, I'd add "(push ...) to `spam-install-hooks-function' and rename
it to `spam-initialize'.

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo--- PGP key available via WWW   http://rsteib.home.pages.de/




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

* Re: loading spam.el and gnus-registry.el with set variables only
  2003-10-09 19:37       ` Reíner Steib
@ 2003-10-09 19:51         ` Ted Zlatanov
  2003-10-10 16:05           ` Ted Zlatanov
  0 siblings, 1 reply; 7+ messages in thread
From: Ted Zlatanov @ 2003-10-09 19:51 UTC (permalink / raw)


On Thu, 09 Oct 2003, 4.uce.03.r.s@nurfuerspam.de wrote:

On Thu, Oct 09 2003, Ted Zlatanov wrote:
> 
>> Let me know if the attached patch looks OK.
> 
> I don't understand the need and the use of the variable
> `spam-install-hooks':

It's legacy, I didn't want to disable it or people may suddenly find
their spam.el setup broken.  Decisions, decisions...

> (defcustom spam-install-hooks (or
> 			       spam-use-dig
> 			       spam-use-blacklist
>                                [...]
> 			       spam-use-stat
> 			       spam-use-spamoracle)
>   "Whether the spam hooks should be installed, default to t if one
>   of
> the spam-use-* variables is set." [...])

> I.e. `spam-install-hooks' is always t when you load `spam.el'?  If
> you use the `spam-initialize' function, why do you need the variable
> `spam-install-hooks' at all?

If no spam-use-* variables are set, spam-install-hooks remains nil.
That way you can load spam.el without installing the hooks (for
customization), and also you can force the installation of the hooks
without using a spam-use-* backend.

> If it's not used anymore, you may issue a warning if it's bound
> while loading `spam.el', i.e. if someone wants to use the obsoleted
> interface.

I may do that, is there any place this is done so I can see the error
message I should be using?

> Then, I'd add "(push ...) to `spam-install-hooks-function' and
> rename it to `spam-initialize'.

OK, thanks!

Ted



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

* Re: loading spam.el and gnus-registry.el with set variables only
  2003-10-09 19:51         ` Ted Zlatanov
@ 2003-10-10 16:05           ` Ted Zlatanov
  0 siblings, 0 replies; 7+ messages in thread
From: Ted Zlatanov @ 2003-10-10 16:05 UTC (permalink / raw)


OK, spam-initialize (replaces spam-install-hooks-function) and
gnus-registry-initialize have been put in CVS, autoloaded as Reiner
suggested.  I tried to keep the existing setups of people who may have
spam-install-hooks or gnus-registry-install set to t and do a manual
require, so those variables should still be respected.  Please let me
know if there are problems.

Ted



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

end of thread, other threads:[~2003-10-10 16:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-10-07 18:44 loading spam.el and gnus-registry.el with set variables only Ted Zlatanov
2003-10-09 14:42 ` Ted Zlatanov
2003-10-09 16:24   ` Reiner Steib
2003-10-09 18:00     ` Ted Zlatanov
2003-10-09 19:37       ` Reíner Steib
2003-10-09 19:51         ` Ted Zlatanov
2003-10-10 16:05           ` Ted Zlatanov

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 NNTP newsgroup(s).