meyer@uoregon.UUCP (meyer) (01/10/86)
This may not be a *real* bug, but I'm confused about the philosphy of "autoload". Specifically, I would like to load my own scheme-mode (lisp-mode, prolog-mode,...), but since scheme-mode (for example) is already defined, (i.e., !EQ (XSYMBOL (function)->function, Qunbound), where "function" is scheme-mode), one cannot define a new scheme-mode. That is, autoload returns nil and does nothing if the symbol (function name, e.g., 'scheme-mode) is already bound. Apparently, this will be true for any function name loaded out of loaddefs.el. Further, we can't use the scheme entries in auto-mode-alist (since we can't autoload a different scheme-mode). To get around this, I had to call my scheme-mode something different, and cons the appropriate stuff onto the front of auto-mode-alist. A terrible hack, at best. Is there a way to get around this (e.g., unbind a symbol; I noticed there isn't much in the way of oblist handling functions), or should autoload always set up the autoload (like Gosling's)? Thanks for the time, David Meyer Department of Computer and Information Science University of Oregon Eugene, OR 97403 usenet: {decvax, allegra}!tektronix!uoregon!meyer csnet: meyer@uoregon.csnet arpanet: meyer%uoregon.csnet@csnet-relay.arpa
mly@prep.ai.mit.edu (01/18/86)
From: mly@prep.ai.mit.edu (Richard Mlynarik) From: uoregon!meyer@mit-eddie (meyer) Newsgroups: net.emacs Date: Fri, 10-Jan-86 11:07:00 EST This may not be a *real* bug, but I'm confused about the philosphy of "autoload". Specifically, I would like to load my own scheme-mode (lisp-mode, prolog-mode,...), but since scheme-mode (for example) is already defined, (i.e., !EQ (XSYMBOL (function)->function, Qunbound), where "function" is scheme-mode), one cannot define a new scheme-mode. That is, autoload returns nil and does nothing if the symbol (function name, e.g., 'scheme-mode) is already bound. Apparently, this will be true for any function name loaded out of loaddefs.el. For starters, the definition of "autoload" in Emacs17 (the current version) icontains the following fragment: /* If function is defined and not as an autoload, don't override */ if (!EQ (XSYMBOL (function)->function, Qunbound) && !(XTYPE (XSYMBOL (function)->function) == Lisp_Cons && EQ (XCONS (XSYMBOL (function)->function)->car, Qautoload))) return Qnil; so what you are trying to do would work if you were running a more up-to-date Emacs. Thanks for the [belated] bug report in any case... [..] Is there a way to get around this (e.g., unbind a symbol; I noticed there isn't much in the way of oblist handling functions), or should autoload always set up the autoload (like Gosling's)? There is a useful subset of the relevant common-lisp functions: makunbound, fmakunbound, boundp, fboundp, intern, intern-soft (ie find-symbol) The behaviour of -always- doing a redefinition when `autoload' is called is flawed in my opinion for a number of reasons, which I could go into if you're interested. I'd prefer to avoid making a religious discussion out of this.