emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to autotype.texi


From: Glenn Morris
Subject: [Emacs-diffs] Changes to autotype.texi
Date: Thu, 06 Sep 2007 04:58:30 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       07/09/06 04:58:29

Index: autotype.texi
===================================================================
RCS file: autotype.texi
diff -N autotype.texi
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ autotype.texi       6 Sep 2007 04:58:29 -0000       1.1
@@ -0,0 +1,676 @@
+\input texinfo
address@hidden This is an annex of the Emacs manual.
address@hidden Copyright (C) 1994, 1995, 2001, 2002, 2003, 2004,
address@hidden   2005, 2006, 2007  Free Software Foundation, Inc.
address@hidden Author: address@hidden, fax (+49 69) 7588-2389
address@hidden ../info/autotype
address@hidden @node Autotypist, Picture, Abbrevs, Top
address@hidden @chapter Features for Automatic Typing
address@hidden Features for Automatic Typing
address@hidden  @cindex text
address@hidden  @cindex selfinserting text
address@hidden  @cindex autotypist
+
address@hidden
+Copyright @copyright{} 1994, 1995, 1999, 2001, 2002, 2003, 2004,
+2005, 2006, 2007  Free Software Foundation, Inc.
+
address@hidden
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being ``The GNU Manifesto'', ``Distribution'' and
+``GNU GENERAL PUBLIC LICENSE'', with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
+
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software.  Copies published by the Free
+Software Foundation raise funds for GNU development.''
+
+This document is part of a collection distributed under the GNU Free
+Documentation License.  If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
address@hidden quotation
address@hidden copying
+
address@hidden Emacs
address@hidden
+* Autotype: (autotype). Convenient features for text that you enter frequently
+                          in Emacs.
address@hidden direntry
+
address@hidden
address@hidden 10
+
address@hidden @titlefont{Autotyping}
address@hidden 2
address@hidden @subtitlefont{Convenient features for text that you enter
+frequently in Emacs}
address@hidden 2
address@hidden Daniel Pfeiffer
address@hidden additions by Dave Love
+
address@hidden
address@hidden 0pt plus 1filll
address@hidden
address@hidden titlepage
+
address@hidden Top
address@hidden Autotyping
+
+  Under certain circumstances you will find yourself typing similar things
+over and over again.  This is especially true of form letters and programming
+language constructs.  Project-specific header comments, flow-control
+constructs or magic numbers are essentially the same every time.  Emacs has
+various features for doing tedious and repetitive typing chores for you
+in addition to the Abbrev features (@pxref{(emacs)Abbrevs}).
+
+  One solution is using skeletons, flexible rules that say what to
+insert, and how to do it.  Various programming language modes offer some
+ready-to-use skeletons, and you can adapt them to suit your needs or
+taste, or define new ones.
+
+  Another feature is automatic insertion of what you want into empty files,
+depending on the file-name or the mode as appropriate.  You can have a file or
+a skeleton inserted, or you can call a function.  Then there is the
+possibility to have Un*x interpreter scripts automatically take on a magic
+number and be executable as soon as they are saved.  Or you can have a
+copyright notice's year updated, if necessary, every time you save a
+file.  Similarly for time stamps in the file.
+
+  URLs can be inserted based on a word at point.  Flexible templates can
+be defined for inserting and navigating between text more generally.  A
+sort of meta-expansion facility can be used to try a set of alternative
+completions and expansions of text at point.
+
address@hidden
+* Using Skeletons::        How to insert a skeleton into your text.
+* Wrapping Skeletons::     Putting existing text within a skeleton.
+* Skeletons as Abbrevs::   An alternative for issuing skeleton commands.
+* Skeleton Language::      Making skeleton commands insert what you want.
+* Inserting Pairs::        Typing one character and getting another
+                             after point.
+* Autoinserting::          Filling up empty files as soon as you visit them.
+* Copyrights::             Inserting and updating copyrights.
+* Executables::                   Turning interpreter scripts into executables.
+* Timestamps::             Updating dates and times in modified files.
+* QuickURL::               Inserting URLs based on text at point.
+* Tempo::                  Flexible template insertion.
+* Hippie Expand::          Expansion of text trying various methods.
+
+* GNU Free Documentation License:: The license for this documentation.
+* Concept Index::
+* Command Index::
+* Variable Index::
address@hidden menu
+
+
+
address@hidden Using Skeletons
address@hidden Using Skeletons
address@hidden skeletons
address@hidden using skeletons
+
+  When you want Emacs to insert a form letter or a typical construct of the
+programming language you are using, skeletons are a means of accomplishing
+this.  Normally skeletons each have a command of their own, that, when called,
+will insert the skeleton.  These commands can be issued in the usual ways
+(@pxref{(emacs)Commands}).  Modes that offer various skeletons will often
+bind these to key-sequences on the @kbd{C-c} prefix, as well as having
+an @cite{Insert} menu and maybe even predefined abbrevs for them
+(@pxref{Skeletons as Abbrevs}).
+
+  The simplest kind of skeleton will simply insert some text indented
+according to the major mode and leave the cursor at a likely place in the
+middle.  Interactive skeletons may prompt you for a string that will be part
+of the inserted text.
+
+  Skeletons may ask for input several times.  They even have a looping
+mechanism in which you will be asked for input as long as you are willing to
+furnish it.  An example would be multiple ``else if'' conditions.  You can
+recognize this situation by a prompt ending in @key{RET}, @kbd{C-g}
+or @kbd{C-h}.  This
+means that entering an empty string will simply assume that you are finished.
+Typing quit on the other hand terminates the loop but also the rest of the
+skeleton, e.g. an ``else'' clause is skipped.  Only a syntactically necessary
+termination still gets inserted.
+
+
+
address@hidden Wrapping Skeletons
address@hidden Wrapping Skeletons Around Existing Text
address@hidden wrapping skeletons
+
+  Often you will find yourself with some code that for whatever reason
+suddenly becomes conditional.  Or you have written a bit of text and want to
+put it in the middle of a form letter.  Skeletons provide a means for
+accomplishing this, and can even, in the case of programming languages,
+reindent the wrapped code for you.
+
+  Skeleton commands take an optional numeric prefix argument
+(@pxref{(emacs)Arguments}).  This is interpreted in two different ways 
depending
+on whether the prefix is positive, i.e. forwards oriented or negative,
+i.e. backwards oriented.
+
+  A positive prefix means to wrap the skeleton around that many
+following words.  This is accomplished by putting the words there where
+the point is normally left after that skeleton is inserted (@pxref{Using
+Skeletons}).  The point (@pxref{(emacs)Point}) is left at the next
+interesting spot in the skeleton instead.
+
+  A negative prefix means to do something similar with that many precedingly
+marked interregions (@pxref{(emacs)Mark}).  In the simplest case, if you type
address@hidden just before issuing the skeleton command, that will wrap the
+skeleton around the current region, just like a positive argument would have
+wrapped it around a number of words.
+
+  Smaller negative arguments will wrap that many interregions into successive
+interesting spots within the skeleton, again leaving the point at the next one.
+We speak about interregions rather than regions here, because we treat them in
+the order they appear in the buffer, which coincides with successive regions
+only if they were marked in order.
+
+  That is, if you marked in alphabetical order the points A B C [] (where []
+represents the point) and call a skeleton command with @kbd{M-- 3}, you will
+wrap the text from A to B into the first interesting spot of the skeleton, the
+text from B to C into the next one, the text from C to the point into the
+third one, and leave the point in the fourth one.  If there are less marks in
+the buffer, or if the skeleton defines less interesting points, the surplus is
+ignored.
+
+  If, on the other hand, you marked in alphabetical order the points [] A C B,
+and call a skeleton command with @kbd{M-- 3}, you will wrap the text from
+point to A, then the text from A to C and finally the text from C to B.  This
+is done because the regions overlap and Emacs would be helplessly lost if it
+tried to follow the order in which you marked these points.
+
+
+
address@hidden Skeletons as Abbrevs
address@hidden Skeletons as Abbrev Expansions
address@hidden skeletons as abbrevs
+
+  Rather than use a key binding for every skeleton command, you can also
+define an abbreviation (@pxref{(emacs)Defining Abbrevs}) that will expand
+(@pxref{(emacs)Expanding Abbrevs}) into the skeleton.
+
+  Say you want @samp{ifst} to be an abbreviation for the C language if
+statement.  You will tell Emacs that @samp{ifst} expands to the empty string
+and then calls the skeleton command.  In Emacs Lisp you can say something like
address@hidden(define-abbrev c-mode-abbrev-table "ifst" "" 'c-if)}.  Or you can 
edit
+the output from @kbd{M-x list-abbrevs} to make it look like this:
+
address@hidden
+(c-mode-abbrev-table)
+"if"          0    ""         c-if
address@hidden example
+
address@hidden
+(Some blank lines of no semantic significance, and other abbrev tables,
+have been omitted.)
+
+
+
address@hidden Skeleton Language
address@hidden Skeleton Language
address@hidden skeleton language
+
address@hidden skeleton-insert
+  Skeletons are an shorthand extension to the Lisp language, where various
+atoms directly perform either actions on the current buffer or rudimentary
+flow control mechanisms.  Skeletons are interpreted by the function
address@hidden
+
+  A skeleton is a list starting with an interactor, which is usually a
+prompt-string, or @code{nil} when not needed, but can also be a Lisp
+expression for complex read functions or for returning some calculated value.
+The rest of the list are any number of elements as described in the following
+table:
+
address@hidden @asis
address@hidden @code{"@var{string}"}, @address@hidden, @address@hidden
address@hidden skeleton-transformation
+Insert string or character.  Literal strings and characters are passed through
address@hidden when that is address@hidden
address@hidden @code{?\n}
address@hidden ??? something seems very wrong here.
+Insert a newline and align under current line.  Use newline character
address@hidden to prevent alignment.
address@hidden @code{_}
+Interesting point.  When wrapping skeletons around successive regions, they are
+put at these places.  Point is left at first @code{_} where nothing is wrapped.
address@hidden @code{>}
+Indent line according to major mode.  When following element is @code{_}, and
+there is a interregion that will be wrapped here, indent that interregion.
address@hidden @code{&}
+Logical and.  Iff preceding element moved point, i.e. usually inserted
+something, do following element.
address@hidden @code{|}
+Logical xor.  Iff preceding element didn't move point, i.e. usually inserted
+nothing, do following element.
address@hidden @address@hidden
+Delete preceding number characters.  Depends on value of
address@hidden
address@hidden @code{()} or @code{nil}
+Ignored.
address@hidden @var{lisp-expression}
+Evaluated, and the return value is again interpreted as a skeleton element.
address@hidden @code{str}
+A special variable that, when evaluated the first time, usually prompts
+for input according to the skeleton's interactor.  It is then set to the
+return value resulting from the interactor.  Each subskeleton has its local
+copy of this variable.
address@hidden @code{v1}, @code{v2}
+Skeleton-local user variables.
address@hidden @code{'@var{expression}}
+Evaluate following Lisp expression for its side-effect, but prevent it from
+being interpreted as a skeleton element.
address@hidden @var{skeleton}
+Subskeletons are inserted recursively, not once, but as often as the user
+enters something at the subskeletons interactor.  Thus there must be a
address@hidden in the subskeleton.  They can also be used non-interactively, 
when
+prompt is a lisp-expression that returns successive list-elements.
address@hidden @code{resume:}
+Ignored.  Execution resumes here if the user quits during skeleton
+interpretation.
address@hidden @code{quit}
+A constant which is address@hidden when the @code{resume:} section was entered
+because the user quit.
address@hidden table
+
address@hidden skeleton-further-elements
+  Some modes also use other skeleton elements they themselves defined.  For
+example in shell script mode's skeletons you will find @code{<} which does a
+rigid indentation backwards, or in CC mode's skeletons you find the
+self-inserting elements @address@hidden and @address@hidden  These are defined 
by the
+buffer-local variable @code{skeleton-further-elements} which is a list of
+variables bound while interpreting a skeleton.
+
address@hidden define-skeleton
+  The macro @code{define-skeleton} defines a command for interpreting a
+skeleton.  The first argument is the command name, the second is a
+documentation string, and the rest is an interactor and any number of skeleton
+elements together forming a skeleton.  This skeleton is assigned to a variable
+of the same name as the command and can thus be overridden from your
address@hidden/.emacs} file (@pxref{(emacs)Init File}).
+
+
+
address@hidden Inserting Pairs
address@hidden Inserting Matching Pairs of Characters
address@hidden inserting pairs
address@hidden pairs
+
+  Various characters usually appear in pairs.  When, for example, you insert
+an open parenthesis, no matter whether you are programming or writing prose,
+you will surely enter a closing one later.  By entering both at the same time
+and leaving the cursor inbetween, Emacs can guarantee you that such
+parentheses are always balanced.  And if you have a non-qwerty keyboard, where
+typing some of the stranger programming language symbols makes you bend your
+fingers backwards, this can be quite relieving too.
+
address@hidden skeleton-pair-insert-maybe
address@hidden skeleton-pair
+  This is done by binding the first key (@pxref{(emacs)Rebinding}) of
+the pair to @code{skeleton-pair-insert-maybe} instead of
address@hidden  The ``maybe'' comes from the fact that
+this at-first surprising behavior is initially turned off.  To enable
+it, you must set @code{skeleton-pair} to some address@hidden value.
+And even then, a positive argument (@pxref{(emacs)Arguments}) will
+make this key behave like a self-inserting key
+(@pxref{(emacs)Inserting Text}).
+
address@hidden skeleton-pair-on-word
+  While this breaks with the stated intention of always balancing pairs, it
+turns out that one often doesn't want pairing to occur, when the following
+character is part of a word.  If you want pairing to occur even then, set
address@hidden to some address@hidden value.
+
address@hidden skeleton-pair-alist
+  Pairing is possible for all visible characters.  By default the
+parenthesis @samp{(}, the square bracket @samp{[}, the brace
address@hidden@{}, the pointed bracket @samp{<} and the backquote @samp{`} all
+pair with the symmetrical character.  All other characters pair
+themselves.  This behavior can be modified by the variable
address@hidden  This is in fact an alist of skeletons
+(@pxref{Skeleton Language}), with the first part of each sublist
+matching the typed character.  This is the position of the interactor,
+but since pairs don't need the @code{str} element, this is ignored.
+
+  Some modes have bound the command @code{skeleton-pair-insert-maybe}
+to relevant keys.  These modes also configure the pairs as
+appropriate.  For example, when typing english prose, you'd expect the
+backquote (@samp{`}) to pair with the quote (@samp{'}), while in Shell
+script mode it must pair to itself.  They can also inhibit pairing in
+certain contexts.  For example an escaped character stands for itself.
+
+
+
address@hidden Autoinserting
address@hidden Autoinserting Text in Empty Files
address@hidden autoinserting
+
address@hidden auto-insert
+  @kbd{M-x auto-insert} will put some predefined text at the beginning of
+the buffer.  The main application for this function, as its name suggests,
+is to have it be called automatically every time an empty, and only an
+empty file is visited.  This is accomplished by putting @code{(add-hook
+'find-file-hook 'auto-insert)} into your @file{~/.emacs} file
+(@pxref{(emacs)Init File}).
+
address@hidden auto-insert-alist
+  What gets inserted, if anything, is determined by the variable
address@hidden  The @sc{car}s of this list are each either
+a mode name, making an element applicable when a buffer is in that
+mode.  Or they can be a string, which is a regexp matched against the
+buffer's file name.  In that way different kinds of files that have
+the same mode in Emacs can be distinguished.  The @sc{car}s may also
+be cons cells consisting of mode name or regexp as above and an
+additional descriptive string.
+
+  When a matching element is found, the @sc{cdr} says what to do.  It may
+be a string, which is a file name, whose contents are to be inserted, if
+that file is found in the directory @code{auto-insert-directory} or under a
+absolute file name.  Or it can be a skeleton (@pxref{Skeleton Language}) to
+be inserted.
+
+  It can also be a function, which allows doing various things.  The function
+can simply insert some text, indeed, it can be skeleton command (@pxref{Using
+Skeletons}).  It can be a lambda function which will for example conditionally
+call another function.  Or it can even reset the mode for the buffer. If you
+want to perform several such actions in order, you use a vector, i.e. several
+of the above elements between square brackets (@address@hidden@dots{}}]}).
+
+  By default C and C++ headers insert a definition of a symbol derived from
+the filename to prevent multiple inclusions.  C and C++ sources insert an
+include of the header.  Makefiles insert the file makefile.inc if it exists.
+
+  TeX and bibTeX mode files insert the file tex-insert.tex if it exists, while
+LaTeX mode files insert a typical @code{\documentclass} frame.  Html
+files insert a skeleton with the usual frame.
+
+  Ada mode files call the Ada header skeleton command.  Emacs lisp
+source files insert the usual header, with a copyright of your
+environment variable @env{$ORGANIZATION} or else the FSF, and prompt
+for valid keywords describing the contents.  Files in a @file{bin}
+directory for which Emacs could determine no specialized mode
+(@pxref{(emacs)Choosing Modes}) are set to Shell script mode.
+
address@hidden define-auto-insert
+  In Lisp (@pxref{(emacs)Init File}) you can use the function
address@hidden to add to or modify
address@hidden  See its documentation with @kbd{C-h f
+define-auto-insert}.
+
address@hidden auto-insert
+  The variable @code{auto-insert} says what to do when @code{auto-insert} is
+called non-interactively, e.g. when a newly found file is empty (see above):
address@hidden @asis
address@hidden @code{nil}
+Do nothing.
address@hidden @code{t}
+Insert something if possible, i.e. there is a matching entry in
address@hidden
address@hidden other
+Insert something if possible, but mark as unmodified.
address@hidden table
+
address@hidden auto-insert-query
+  The variable @code{auto-insert-query} controls whether to ask about
+inserting something.  When this is @code{nil}, inserting is only done with
address@hidden auto-insert}.  When this is @code{function}, you are queried
+whenever @code{auto-insert} is called as a function, such as when Emacs
+visits an empty file and you have set the above-mentioned hook.  Otherwise
+you are alway queried.
+
address@hidden auto-insert-prompt
+  When querying, the variable @code{auto-insert-prompt}'s value is used as a
+prompt for a y-or-n-type question.  If this includes a @samp{%s} construct,
+that is replaced by what caused the insertion rule to be chosen.  This is
+either a descriptive text, the mode-name of the buffer or the regular
+expression that matched the filename.
+
+
+
address@hidden Copyrights
address@hidden Inserting and Updating Copyrights
address@hidden copyrights
+
address@hidden copyright
+  @kbd{M-x copyright} is a skeleton inserting command, that adds a copyright
+notice at the point.  The ``by'' part is taken from your environment variable
address@hidden or if that isn't set you are prompted for it.  If the
+buffer has a comment syntax (@pxref{(emacs)Comments}), this is inserted as a 
comment.
+
address@hidden copyright-update
address@hidden copyright-limit
address@hidden copyright-current-year
+  @kbd{M-x copyright-update} looks for a copyright notice in the first
address@hidden characters of the buffer and updates it when necessary.
+The current year (variable @code{copyright-current-year}) is added to the
+existing ones, in the same format as the preceding year, i.e. 1994, '94 or 94.
+If a dash-separated year list up to last year is found, that is extended to
+current year, else the year is added separated by a comma.  Or it replaces
+them when this is called with a prefix argument.  If a header referring to a
+wrong version of the GNU General Public License (@pxref{(emacs)Copying}) is 
found,
+that is updated too.
+
+  An interesting application for this function is to have it be called
+automatically every time a file is saved.  This is accomplished by
+putting @code{(add-hook 'before-save-hook 'copyright-update)} into
+your @file{~/.emacs} file (@pxref{(emacs)Init File}).  Alternative,
+you can do @kbd{M-x customize-variable @key{RET} before-save-hook
address@hidden  @code{copyright-update} is conveniently listed as an
+option in the customization buffer.
+
address@hidden copyright-query
+  The variable @code{copyright-query} controls whether to update the
+copyright or whether to ask about it.  When this is @code{nil} updating is
+only done with @kbd{M-x copyright-update}.  When this is @code{function}
+you are queried whenever @code{copyright-update} is called as a function,
+such as in the @code{before-save-hook} feature mentioned above.  Otherwise
+you are always queried.
+
+
+
address@hidden Executables
address@hidden Making Interpreter Scripts Executable
address@hidden executables
+
address@hidden executable-prefix
address@hidden executable-chmod
+  Various interpreter modes such as Shell script mode or AWK mode will
+automatically insert or update the buffer's magic number, a special
+comment on the first line that makes the @code{exec} systemcall know
+how to execute the script.  To this end the script is automatically
+made executable upon saving, with @code{executable-chmod} as argument
+to the system @code{chmod} command.  The magic number is prefixed by
+the value of @code{executable-prefix}.
+
address@hidden executable-magicless-file-regexp
+  Any file whose name matches @code{executable-magicless-file-regexp} is not
+furnished with a magic number, nor is it made executable.  This is mainly
+intended for resource files, which are only meant to be read in.
+
address@hidden executable-insert
+  The variable @code{executable-insert} says what to do when
address@hidden is called non-interactively, e.g. when file has no
+or the wrong magic number:
address@hidden @asis
address@hidden @code{nil}
+Do nothing.
address@hidden @code{t}
+Insert or update magic number.
address@hidden other
+Insert or update magic number, but mark as unmodified.
address@hidden table
+
address@hidden executable-set-magic
address@hidden executable-query
+  The variable @code{executable-query} controls whether to ask about
+inserting or updating the magic number.  When this is @code{nil} updating
+is only done with @kbd{M-x executable-set-magic}.  When this is
address@hidden you are queried whenever @code{executable-set-magic} is
+called as a function, such as when Emacs puts a buffer in Shell script
+mode.  Otherwise you are alway queried.
+
address@hidden executable-self-display
+  @kbd{M-x executable-self-display} adds a magic number to the buffer, which
+will turn it into a self displaying text file, when called as a Un*x command.
+The ``interpreter'' used is @code{executable-self-display} with argument
address@hidden
+
address@hidden Timestamps
address@hidden Maintaining Timestamps in Modified Files
address@hidden timestamps
+
address@hidden time-stamp
address@hidden before-save-hook
+The @code{time-stamp} command can be used to update automatically a
+template in a file with a new time stamp every time you save the file.
+Customize the hook @code{before-save-hook} to add the function
address@hidden to arrange this.  It you use Custom to do this,
+then @code{time-stamp} is conveniently listed as an option in the
+customization buffer.
+
address@hidden time-stamp-active
address@hidden time-stamp-format
address@hidden time-stamp-start
+The time stamp is updated only if the customizable variable
address@hidden is on, which it is by default; the command
address@hidden can be used to toggle it.  The format of
+the time stamp is set by the customizable variable
address@hidden
+
address@hidden time-stamp-line-limit
address@hidden time-stamp-end
address@hidden time-stamp-count
address@hidden time-stamp-inserts-lines
+The variables @code{time-stamp-line-limit}, @code{time-stamp-start},
address@hidden, @code{time-stamp-count}, and
address@hidden control finding the template.  Do not
+change these in your init file or you will be incompatible with other
+people's files.  If you must change them, do so only in the local
+variables section of the file itself.
+
+Normally the template must appear in the first 8 lines of a file and
+look like one of the following:
+
address@hidden
+Time-stamp: <>
+Time-stamp: " "
address@hidden example
+
+The time stamp is written between the brackets or quotes:
+
address@hidden
+Time-stamp: <1998-02-18 10:20:51 gildea>
address@hidden example
+
address@hidden QuickURL
address@hidden QuickURL: Inserting URLs Based on Text at Point
+
address@hidden quickurl-url-file
address@hidden quickurl
address@hidden URLs
address@hidden quickurl} can be used to insert a URL into a buffer based on
+the text at point.  The URLs are stored in an external file defined by
+the variable @code{quickurl-url-file} as a list of either cons cells of
+the form @code{(@var{key} . @var{URL})} or
+lists of the form @code{(@var{key} @var{URL} @var{comment})}.  These
+specify that @kbd{M-x quickurl} should insert @var{URL} if the word
address@hidden is at point, for example:
+
address@hidden
+(("FSF"      "http://www.fsf.org/"; "The Free Software Foundation")
+ ("emacs"  . "http://www.emacs.org/";)
+ ("hagbard"  "http://www.hagbard.demon.co.uk"; "Hagbard's World"))
address@hidden example
+
address@hidden quickurl-add-url
address@hidden quickurl-list
address@hidden quickurl-add-url} can be used to add a new @var{key}/@var{URL}
+pair.  @kbd{M-x quickurl-list} provides interactive editing of the URL
+list.
+
address@hidden Tempo
address@hidden Tempo: Flexible Template Insertion
+
address@hidden templates
+The Tempo package provides a simple way to define powerful templates, or
+macros, if you wish.  It is mainly intended for, but not limited to,
+programmers to be used for creating shortcuts for editing
+certain kinds of documents.
+
address@hidden tempo-backward-mark
address@hidden tempo-forward-mark
+A template is defined as a list of items to be inserted in the current
+buffer at point.  Some can be simple strings, while others can control
+formatting or define special points of interest in the inserted text.
address@hidden tempo-backward-mark} and @kbd{M-x tempo-forward-mark} can be
+used to jump between such points.
+
+More flexible templates can be created by including Lisp symbols, which
+will be evaluated as variables, or lists, which will be evaluated
+as Lisp expressions.  Automatic completion of specified tags to expanded
+templates can be provided.
+
address@hidden tempo-define-template
+See the documentation for @code{tempo-define-template} for the different
+items that can be used to define a tempo template with a command for
+inserting it.
+
+See the commentary in @file{tempo.el} for more information on using the
+Tempo package.
+
address@hidden Hippie Expand
address@hidden `Hippie' Expansion
+
address@hidden hippie-expand
address@hidden M-/
address@hidden hippie-expand-try-functions-list
address@hidden hippie-expand} is a single command providing a variety of
+completions and expansions.  Called repeatedly, it tries all possible
+completions in succession.
+
+Which ones to try, and in which order, is determined by the contents of
+the customizable option @code{hippie-expand-try-functions-list}.  Much
+customization of the expansion behavior can be made by changing the
+order of, removing, or inserting new functions in this list.  Given a
+positive numeric argument, @kbd{M-x hippie-expand} jumps directly that
+number of functions forward in this list.  Given some other argument (a
+negative argument or just @kbd{C-u}) it undoes the tried completion.
+
+See the commentary in @file{hippie-exp.el} for more information on the
+possibilities.
+
+Typically you would bind @code{hippie-expand} to @kbd{M-/} with
address@hidden, the standard binding of @kbd{M-/}, providing one
+of the expansion possibilities.
+
address@hidden GNU Free Documentation License
address@hidden GNU Free Documentation License
address@hidden doclicense.texi
+
address@hidden Concept Index
address@hidden Concept Index
address@hidden cp
+
address@hidden Command Index
address@hidden Command Index
address@hidden fn
+
address@hidden Variable Index
address@hidden Variable Index
address@hidden vr
+
address@hidden odd
address@hidden
address@hidden
+
address@hidden
+   arch-tag: 54001b27-5ef8-4a9d-a199-905d650fafba
address@hidden ignore




reply via email to

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