view info/dir @ 5566:4654c01af32b

Improve the implementation, documentation of #'labels, #'flet. lisp/ChangeLog addition: 2011-09-07 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el: * bytecomp.el (for-effect): Move this earlier in the file, it's referenced in byte-compile-initial-macro-environment. * bytecomp.el (byte-compile-initial-macro-environment): In the byte-compile-macro-environment definition for #'labels, put off the compiling the lambda bodies until the point where the rest of the form is being compiled, allowing the lambda bodies to access appropriate values for byte-compile-bound-variables, and reducing excessive warning about free variables. Add a byte-compile-macro-environment definition for #'flet. This modifies byte-compile-function-environment appropriately, and warns about bindings of functions that have macro definitions in the current environment, about functions that have byte codes, and about functions that have byte-compile methods (which may not do what the user wants at runtime). * bytecomp.el (byte-compile-funcall): If FUNCTION is constant, call #'byte-compile-callargs-warn if that's appropriate, giving warnings about problems with calling functions bound with #'labels. * cl-macs.el: * cl-macs.el (flet): Mention the main difference from Common Lisp, that the bindings are dynamic, not lexical. Counsel the use of #'labels, not #'flet, for this and other reasons. Explain the limited single use case for #'flet. Cross-reference to bytecomp.el in a comment. * cl-macs.el (labels): Go into detail on which functions may be called from where. Explain how to access the function definition of a label within FORM. Add a comment cross-referencing to bytecomp.el. man/ChangeLog addition: 2011-09-07 Aidan Kehoe <kehoea@parhasard.net> * cl.texi (Function Bindings): Move #'labels first, describe it in more detail, explaining that it is to be preferred over #'flet, and explaining why. Explain that dynamic bindings with #'flet will also not work when functions are accessed through their bytecodes.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 07 Sep 2011 16:26:45 +0100
parents c2580215c222
children
line wrap: on
line source

-*- Text -*-

This is the file .../info/dir, which contains the topmost node of the Info
hierarchy.  The first time you invoke Info you start off looking at that node,
which is (dir)Top.

Rather than adding new nodes to this directory (and this file) it is a better
idea to put them in a site-local directory, and then configure info to search
in that directory as well.  That way, you won't have to re-edit this file when
a new release of the editor comes out.

For example, you could add this code to .../lisp/site-start.el, which is
loaded before ~/.emacs each time the editor starts up:

  ;; find local info nodes
  (setq Info-directory-list
        (append Info-directory-list '("/private/info/")))

Then, when you enter info, a dir file like this one will be automatically
created and saved (provided you have write access to the directory).  The
contents of that file "/private/info/dir" will be appended to the contents of
this file.


File: dir	Node: Top	This is the top of the INFO tree

  This is Info, the online documentation browsing system.
  This page (the Directory node) gives a menu of major topics.

  button2 on a highlighted word follows that cross-reference.
  button3 anywhere brings up a menu of commands.
  ? lists additional keyboard commands.
  h invokes the Info tutorial.

* Menu:

XEmacs 21.5
===========
* XEmacs: (xemacs).          XEmacs Editor.
* Lispref: (lispref).        XEmacs Lisp Reference Manual.
* Intro: (new-users-guide).  Introduction to the XEmacs Editor.
* FAQ: (xemacs-faq).         XEmacs FAQ.
* Info: (info).              Documentation browsing system.
* Internals: (internals).    XEmacs Internals Manual.


Other Documentation:

* Common Lisp: (cl).                   XEmacs Common Lisp emulation package.
* Customizations: (custom).            Customization Library.
* Emodules: (emodules).                XEmacs dynamically loadable module support.
* External Widget: (external-widget).  External Client Widget.
* Standards: (standards).              GNU coding standards.
* Term mode: (term).                   XEmacs Terminal Emulator Mode.
* Termcap: (termcap).                  Termcap library of the GNU system.
* Texinfo: (texinfo).                  The GNU documentation format.
* Widgets: (widget).                   The Emacs Widget Library.