[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why js2-mode in Emacs 23.2?

From: Richard Riley
Subject: Re: Why js2-mode in Emacs 23.2?
Date: Mon, 10 Aug 2009 12:22:21 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Leo <address@hidden> writes:

> On 2009-08-10 09:54 +0100, CHENG Gao wrote:
>>> I seem to recall RMS said that sometime ago. It is also documented  in
>>> the elisp manual:
>>> ,----[ (info "(elisp)Hooks for Loading") ]
>>> |    In general, well-designed Lisp programs should not use this feature.
>>> | The clean and modular ways to interact with a Lisp library are (1)
>>> | examine and set the library's variables (those which are meant for
>>> | outside use), and (2) call the library's functions.  If you wish to do
>>> | (1), you can do it immediately--there is no need to wait for when the
>>> | library is loaded.  To do (2), you must load the library (preferably
>>> | with `require').
>>> | 
>>> |    But it is OK to use `eval-after-load' in your personal
>>> | customizations if you don't feel they must meet the design standards
>>> | for programs meant for wider use.
>>> `----
>>> Best,
>> It's in ELISP info manual, under "Emacs Lisp Coding Conventions".
> Yes. for convenience:
> ,----[ (info "(elisp)Coding Conventions") ]
> | * Avoid using `eval-after-load' in libraries and packages (*note
> |   Hooks for Loading::).  This feature is meant for personal
> |   customizations; using it in a Lisp program is unclean, because it
> |   modifies the behavior of another Lisp file in a way that's not
> |   visible in that file.  This is an obstacle for debugging, much
> |   like advising a function in the other package.
> `----

It strikes me as no more unclean than loading a package and then calling
any of its "public" interfaces. Since for sure the package maintainer
does not know what the end user has called or modified after it is
loaded regardless.

I fail to see the weakness in (pseudo code)

"After the package has loaded perform the following possibly time
consuming tasks"

compared to

"load the package and perform the following possibly time consuming

other than the first one is likely much more efficient in terms of it being
autoloaded when needed. 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]