diff options
| author | John Wiegley | 2016-01-11 22:51:27 -0800 |
|---|---|---|
| committer | John Wiegley | 2016-01-11 22:51:27 -0800 |
| commit | c7bef6a4f033fa6b22906de0be6da54958d5b3c3 (patch) | |
| tree | 3a0f34b340ad01de290f068530c27f35aba83724 /doc | |
| parent | f5d90b5fcf0251466055c7dbed6069c1850d802d (diff) | |
| parent | 1f6898d0510cd15455f665c0f38451755a374243 (diff) | |
| download | emacs-c7bef6a4f033fa6b22906de0be6da54958d5b3c3.tar.gz emacs-c7bef6a4f033fa6b22906de0be6da54958d5b3c3.zip | |
Merge from origin/emacs-25
1f6898d test/automated/vc-hg.el: Support out-of-tree build
3adb56e Minor change in tramp-tests.el
2b535ba ; * etc/NEWS: Update the js.el entry.
76b518c * etc/HELLO: Add Armenian and Mongolian greetings.
b51f1ef Java Mode: Fontify identifiers in the presence of annotations.
36b9539 Avoid an infloop when we run out of memory
2006752 Avoid unnecessary failures of auto-saving after fatal error
eef6784 Simplify HAVE_MODULES use in mark_maybe_pointer
552694a Revert attempt to use 'noexcept' in typedef
6ad0d39 Update documentation of 'indirect-function'
c6a5314 ; * etc/NEWS: Move entry of 'inhibit-point-motion-hooks'.
303141a Update documentation for obsoleting 'syntax-begin-function'
4e6f61c ; * etc/NEWS: Mark documented and not-to-be-documented entries.
e667bbb Document new features if Eshell
9c4e4e0 ; * etc/NEWS: Update EUDC entries.
1089dc9 Handle too long commands in Tramp
684eb58 * .gitattributes: *.cur and *.pif are binary files too.
d2c7fda * src/alloc.c (mark_maybe_pointer): HAVE_MODULES may be undefined
bd3f53d * sh-script.el (sh-smie-sh-rules): Improve indentation inside $(...)
09b2b8a * src/alloc.c (mark_maybe_pointer): Also check wide-int's emacs_value
cca0f93 ; Account for spaces before the filename
c71e1e8 Use short date for 'hg annotate', and output the author
f50027b Spelling fix
c7dff67 ; * etc/NEWS: Fix the Xref entries that got separated.
cc140bc Document user-level functions in project.el
f8208b6 Document the user-level features of the Xref package
b131fb8 * loading.texi: Add `define-type' entry for load-history
db3c2a8 Improve doc strings and prompts in xref.el
f6117ef Allow the use of `font-lock-extend-region-multiline' in CC Mode.
90fd798 Fix coding system for Tramp on OS X.
e985a0e ; * etc/NEWS: Mark the 'check-expensive' entry not to be documented.
9dfcbf0 Update 'load-history' docs
207e191 Fix (error ...) error
457738f Correctly analyze brace arguments in templated C++ function declarations.
d57724a * lisp/cedet/mode-local.el (describe-function-orig-buffer): Declare.
2a9532d * lisp/ffap.el (ffap-latex-mode): Avoid free variable.
1a6b084 * lisp/play/dunnet.el (dun-fix-screen): Avoid `end-of-buffer`.
8be046f Respect fontification region calculated by major mode. Fixes bug #22316.
4b37cba Improve documentation of Delete Selection mode
a034dd3 Fix two project-find-file issues
30abf29 Clarify doc string of 'dired-current-directory'
e990bb2 Use the face of preceding text for displaying the ellipsis
5810ac3 Suppress Chinese file name test for OSX in tramp-tests.el
eeb710a ; * lisp/startup.el: Sentences end with two spaces.
428b3de * admin/admin.el (set-version): Also handle the NEWS file.
648de81 ; Add NEWS entry for project.el
671862f apropos-library: Skip obvious duplicates; don't error on generics
51668a5 ; Grammar fix
ed41d11 Add project-find-file and project-or-external-find-file
056da45 ; Improve commentary in 'setup_for_ellipsis'
269d008 ; Improve docstring for `inhibit-startup-echo-area-message'
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/emacs/building.texi | 4 | ||||
| -rw-r--r-- | doc/emacs/dired.texi | 8 | ||||
| -rw-r--r-- | doc/emacs/emacs.texi | 22 | ||||
| -rw-r--r-- | doc/emacs/frames.texi | 6 | ||||
| -rw-r--r-- | doc/emacs/glossary.texi | 2 | ||||
| -rw-r--r-- | doc/emacs/maintaining.texi | 647 | ||||
| -rw-r--r-- | doc/emacs/mark.texi | 4 | ||||
| -rw-r--r-- | doc/emacs/programs.texi | 6 | ||||
| -rw-r--r-- | doc/emacs/search.texi | 8 | ||||
| -rw-r--r-- | doc/emacs/windows.texi | 5 | ||||
| -rw-r--r-- | doc/lispref/eval.texi | 11 | ||||
| -rw-r--r-- | doc/lispref/loading.texi | 5 | ||||
| -rw-r--r-- | doc/lispref/markers.texi | 18 | ||||
| -rw-r--r-- | doc/lispref/syntax.texi | 11 | ||||
| -rw-r--r-- | doc/misc/eshell.texi | 15 |
15 files changed, 493 insertions, 279 deletions
diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 3a12795d2b0..3fa89d9062d 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi | |||
| @@ -360,8 +360,8 @@ that specifies how to run @command{grep}. Use the same arguments you | |||
| 360 | would give @command{grep} when running it normally: a @command{grep}-style | 360 | would give @command{grep} when running it normally: a @command{grep}-style |
| 361 | regexp (usually in single-quotes to quote the shell's special | 361 | regexp (usually in single-quotes to quote the shell's special |
| 362 | characters) followed by file names, which may use wildcards. If you | 362 | characters) followed by file names, which may use wildcards. If you |
| 363 | specify a prefix argument for @kbd{M-x grep}, it finds the tag | 363 | specify a prefix argument for @kbd{M-x grep}, it finds the identifier |
| 364 | (@pxref{Tags}) in the buffer around point, and puts that into the | 364 | (@pxref{Xref}) in the buffer around point, and puts that into the |
| 365 | default @command{grep} command. | 365 | default @command{grep} command. |
| 366 | 366 | ||
| 367 | Your command need not simply run @command{grep}; you can use any shell | 367 | Your command need not simply run @command{grep}; you can use any shell |
diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index 119a10ccc08..92c1fd5a041 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi | |||
| @@ -785,8 +785,8 @@ Search all the specified files for the regular expression @var{regexp} | |||
| 785 | (@code{dired-do-search}). | 785 | (@code{dired-do-search}). |
| 786 | 786 | ||
| 787 | This command is a variant of @code{tags-search}. The search stops at | 787 | This command is a variant of @code{tags-search}. The search stops at |
| 788 | the first match it finds; use @kbd{M-,} to resume the search and find | 788 | the first match it finds; use @kbd{M-x tags-loop-continue} to resume |
| 789 | the next match. @xref{Tags Search}. | 789 | the search and find the next match. @xref{Identifier Search}. |
| 790 | 790 | ||
| 791 | @kindex Q @r{(Dired)} | 791 | @kindex Q @r{(Dired)} |
| 792 | @findex dired-do-query-replace-regexp | 792 | @findex dired-do-query-replace-regexp |
| @@ -797,8 +797,8 @@ replacing matches for @var{regexp} with the string | |||
| 797 | @var{to} (@code{dired-do-query-replace-regexp}). | 797 | @var{to} (@code{dired-do-query-replace-regexp}). |
| 798 | 798 | ||
| 799 | This command is a variant of @code{tags-query-replace}. If you exit the | 799 | This command is a variant of @code{tags-query-replace}. If you exit the |
| 800 | query replace loop, you can use @kbd{M-,} to resume the scan and replace | 800 | query replace loop, you can use @kbd{M-x tags-loop-continue} to resume |
| 801 | more matches. @xref{Tags Search}. | 801 | the scan and replace more matches. @xref{Identifier Search}. |
| 802 | @end table | 802 | @end table |
| 803 | 803 | ||
| 804 | @node Shell Commands in Dired | 804 | @node Shell Commands in Dired |
diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 53b689fbfbe..5ef938566de 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi | |||
| @@ -788,8 +788,8 @@ Maintaining Large Programs | |||
| 788 | 788 | ||
| 789 | * Version Control:: Using version control systems. | 789 | * Version Control:: Using version control systems. |
| 790 | * Change Log:: Maintaining a change history for your program. | 790 | * Change Log:: Maintaining a change history for your program. |
| 791 | * Tags:: Go directly to any function in your program in one | 791 | * Xref:: Find definitions and references of any function, |
| 792 | command. Tags remembers which file it is in. | 792 | method, struct, macro, @dots{} in your program. |
| 793 | * EDE:: An integrated development environment for Emacs. | 793 | * EDE:: An integrated development environment for Emacs. |
| 794 | @ifnottex | 794 | @ifnottex |
| 795 | * Emerge:: A convenient way of merging two versions of a program. | 795 | * Emerge:: A convenient way of merging two versions of a program. |
| @@ -861,15 +861,25 @@ Change Logs | |||
| 861 | * Change Log Commands:: Commands for editing change log files. | 861 | * Change Log Commands:: Commands for editing change log files. |
| 862 | * Format of ChangeLog:: What the change log file looks like. | 862 | * Format of ChangeLog:: What the change log file looks like. |
| 863 | 863 | ||
| 864 | Xref | ||
| 865 | |||
| 866 | * Find Identifiers:: Commands to find where an identifier is defined | ||
| 867 | or referenced, to list identifiers, etc. | ||
| 868 | * Tags Tables:: Tags table records which file defines a symbol. | ||
| 869 | * Select Tags Table:: How to visit a specific tags table. | ||
| 870 | |||
| 871 | Find Identifiers | ||
| 872 | |||
| 873 | * Looking Up Identifiers:: Commands to find the definition of a specific tag. | ||
| 874 | * Xref Commands:: Commands in the @file{*xref*} buffer. | ||
| 875 | * Identifier Search:: Searching and replacing identifiers. | ||
| 876 | * List Identifiers:: Listing identifiers and completing on them. | ||
| 877 | |||
| 864 | Tags Tables | 878 | Tags Tables |
| 865 | 879 | ||
| 866 | * Tag Syntax:: Tag syntax for various types of code and text files. | 880 | * Tag Syntax:: Tag syntax for various types of code and text files. |
| 867 | * Create Tags Table:: Creating a tags table with @command{etags}. | 881 | * Create Tags Table:: Creating a tags table with @command{etags}. |
| 868 | * Etags Regexps:: Create arbitrary tags using regular expressions. | 882 | * Etags Regexps:: Create arbitrary tags using regular expressions. |
| 869 | * Select Tags Table:: How to visit a tags table. | ||
| 870 | * Find Tag:: Commands to find the definition of a specific tag. | ||
| 871 | * Tags Search:: Using a tags table for searching and replacing. | ||
| 872 | * List Tags:: Using tags for completion, and listing them. | ||
| 873 | 883 | ||
| 874 | @ifnottex | 884 | @ifnottex |
| 875 | Merging Files with Emerge | 885 | Merging Files with Emerge |
diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index a0489975c7d..5fbe0fc5774 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi | |||
| @@ -416,9 +416,9 @@ Start composing a mail message in another frame. This runs | |||
| 416 | @code{compose-mail-other-frame}. It is the other-frame variant of | 416 | @code{compose-mail-other-frame}. It is the other-frame variant of |
| 417 | @kbd{C-x m}. @xref{Sending Mail}. | 417 | @kbd{C-x m}. @xref{Sending Mail}. |
| 418 | @item C-x 5 . | 418 | @item C-x 5 . |
| 419 | Find a tag in the current tag table in another frame. This runs | 419 | Find the definition of an identifier in another frame. This runs |
| 420 | @code{find-tag-other-frame}, the multiple-frame variant of @kbd{M-.}. | 420 | @code{xref-find-definitions-other-frame}, the multiple-frame variant |
| 421 | @xref{Tags}. | 421 | of @kbd{M-.}. @xref{Xref}. |
| 422 | @item C-x 5 r @var{filename} @key{RET} | 422 | @item C-x 5 r @var{filename} @key{RET} |
| 423 | @kindex C-x 5 r | 423 | @kindex C-x 5 r |
| 424 | @findex find-file-read-only-other-frame | 424 | @findex find-file-read-only-other-frame |
diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index 4b9832f904b..bce97dacee2 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi | |||
| @@ -1329,7 +1329,7 @@ indentation or completion. | |||
| 1329 | @anchor{Glossary---Tags Table} | 1329 | @anchor{Glossary---Tags Table} |
| 1330 | @item Tags Table | 1330 | @item Tags Table |
| 1331 | A tags table is a file that serves as an index to the function | 1331 | A tags table is a file that serves as an index to the function |
| 1332 | definitions in one or more other files. @xref{Tags}. | 1332 | definitions in one or more other files. @xref{Tags Tables}. |
| 1333 | 1333 | ||
| 1334 | @item Termscript File | 1334 | @item Termscript File |
| 1335 | A termscript file contains a record of all characters sent by Emacs to | 1335 | A termscript file contains a record of all characters sent by Emacs to |
diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 7b72e6650c8..8842b8ea2f5 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi | |||
| @@ -5,17 +5,42 @@ | |||
| 5 | @node Maintaining | 5 | @node Maintaining |
| 6 | @chapter Maintaining Large Programs | 6 | @chapter Maintaining Large Programs |
| 7 | 7 | ||
| 8 | This chapter describes Emacs features for maintaining large | 8 | This chapter describes Emacs features for maintaining medium- to |
| 9 | programs. If you are maintaining a large Lisp program, then in | 9 | large-size programs and packages. These features include: |
| 10 | addition to the features described here, you may find | 10 | |
| 11 | the Emacs Lisp Regression Testing (ERT) library useful | 11 | @itemize @minus |
| 12 | (@pxref{Top,,ERT,ert, Emacs Lisp Regression Testing}). | 12 | @item |
| 13 | Unified interface to Support for Version Control Systems | ||
| 14 | (@acronym{VCS}) that record the history of changes to source files. | ||
| 15 | |||
| 16 | @item | ||
| 17 | A specialized mode for maintaining @file{ChangeLog} files that provide | ||
| 18 | a chronological log of program changes. | ||
| 19 | |||
| 20 | @item | ||
| 21 | @acronym{Xref}, a set of commands for displaying definitions of | ||
| 22 | symbols (a.k.a.@: ``identifiers'') and their references. | ||
| 23 | |||
| 24 | @item | ||
| 25 | @acronym{EDE}, the Emacs's own IDE. | ||
| 26 | |||
| 27 | @ifnottex | ||
| 28 | @item | ||
| 29 | A mode for merging changes to program sources made on separate | ||
| 30 | branches of development. | ||
| 31 | @end ifnottex | ||
| 32 | @end itemize | ||
| 33 | |||
| 34 | If you are maintaining a large Lisp program, then in addition to the | ||
| 35 | features described here, you may find the Emacs Lisp Regression | ||
| 36 | Testing (@acronym{ERT}) library useful (@pxref{Top,,ERT,ert, Emacs | ||
| 37 | Lisp Regression Testing}). | ||
| 13 | 38 | ||
| 14 | @menu | 39 | @menu |
| 15 | * Version Control:: Using version control systems. | 40 | * Version Control:: Using version control systems. |
| 16 | * Change Log:: Maintaining a change history for your program. | 41 | * Change Log:: Maintaining a change history for your program. |
| 17 | * Tags:: Go directly to any function in your program in one | 42 | * Xref:: Find definitions and references of any function, |
| 18 | command. Tags remembers which file it is in. | 43 | method, struct, macro, @dots{} in your program. |
| 19 | * EDE:: An integrated development environment for Emacs. | 44 | * EDE:: An integrated development environment for Emacs. |
| 20 | @ifnottex | 45 | @ifnottex |
| 21 | * Emerge:: A convenient way of merging two versions of a program. | 46 | * Emerge:: A convenient way of merging two versions of a program. |
| @@ -1660,16 +1685,370 @@ permitted provided the copyright notice and this notice are preserved. | |||
| 1660 | @noindent | 1685 | @noindent |
| 1661 | Of course, you should substitute the proper years and copyright holder. | 1686 | Of course, you should substitute the proper years and copyright holder. |
| 1662 | 1687 | ||
| 1663 | @node Tags | 1688 | @node Xref |
| 1664 | @section Tags Tables | 1689 | @section Find Identifier Definitions and References |
| 1665 | @cindex tags and tag tables | 1690 | @cindex xref |
| 1691 | |||
| 1692 | An @dfn{identifier} is a syntactic elements of the program: a | ||
| 1693 | function, a subroutine, a method, a class, a data type, a macro, etc. | ||
| 1694 | In a programming language, each identifier is a symbol in the | ||
| 1695 | language's syntax. Many program development tools provide | ||
| 1696 | capabilities to extract references to identifiers from source files, | ||
| 1697 | record them on specialized data bases, and then use those data bases | ||
| 1698 | to quickly find where each identifier was defined and referenced. | ||
| 1699 | |||
| 1700 | Emacs provides a unified user interface to these tools, called | ||
| 1701 | @samp{xref}. The tools supported by @samp{xref} include: | ||
| 1702 | |||
| 1703 | @enumerate a | ||
| 1704 | @item | ||
| 1705 | Some major modes provide built-in means for looking up the language | ||
| 1706 | symbols. For example, Emacs Lisp symbols can be identified by | ||
| 1707 | searching the package load history, maintained by the Emacs Lisp | ||
| 1708 | interpreter, and by consulting the built-in documentation strings; the | ||
| 1709 | Emacs Lisp mode uses these facilities to find definitions of symbols. | ||
| 1710 | |||
| 1711 | @item | ||
| 1712 | Etags, the command for tagging identifier definitions which is part of | ||
| 1713 | the Emacs distribution. @xref{Create Tags Table}. | ||
| 1714 | |||
| 1715 | @item | ||
| 1716 | @acronym{GNU} GLOBAL, the source code tagging system, which provides | ||
| 1717 | the @command{gtags} command and associated utilities. @xref{Command | ||
| 1718 | Line, gtags, , global, GNU GLOBAL source code tag system}. | ||
| 1719 | |||
| 1720 | @item | ||
| 1721 | Cscope (@uref{http://cscope.sourceforge.net/}, a tool for browsing | ||
| 1722 | source code. | ||
| 1723 | |||
| 1724 | @item | ||
| 1725 | @acronym{GNU} IDUtils, a package for generating databases of | ||
| 1726 | identifier references and querying those databases. @xref{Top,,, | ||
| 1727 | idutils, ID database utilities}. | ||
| 1728 | |||
| 1729 | @item | ||
| 1730 | Grep, the venerable program that searches files for lines matching | ||
| 1731 | patterns. @xref{Invoking,,, grep, GNU Grep Manual}. | ||
| 1732 | @end enumerate | ||
| 1733 | |||
| 1734 | @noindent | ||
| 1735 | Additional tools could be supported as they become available, or as | ||
| 1736 | user extensions. Each such tool is used as a @dfn{backend} by | ||
| 1737 | commands described in this section. Each command detects which | ||
| 1738 | backends are available for the current major mode, and uses the most | ||
| 1739 | capable of the available backends, with Grep generally serving as the | ||
| 1740 | fall-back backend. | ||
| 1741 | |||
| 1742 | @cindex tag | ||
| 1743 | The commands described here are useful for finding references in major | ||
| 1744 | modes other than those defined to support programming languages. For | ||
| 1745 | example, chapters, sections, appendices, etc. of a text or a @TeX{} | ||
| 1746 | document can be treated as identifiers as well. In this chapter, we | ||
| 1747 | collectively refer to a reference that specifies the name of the file | ||
| 1748 | where the corresponding subunit is defined, and the position of the | ||
| 1749 | subunit's definition in that file, as a @dfn{tag}. We refer to the | ||
| 1750 | backends used by @code{xref} as @dfn{tagging backends}. | ||
| 1751 | |||
| 1752 | @menu | ||
| 1753 | * Find Identifiers:: Commands to find where an identifier is defined | ||
| 1754 | or referenced, to list identifiers, etc. | ||
| 1755 | * Tags Tables:: Tags table records which file defines a symbol. | ||
| 1756 | * Select Tags Table:: How to visit a specific tags table. | ||
| 1757 | @end menu | ||
| 1758 | |||
| 1759 | @node Find Identifiers | ||
| 1760 | @subsection Find Identifiers | ||
| 1761 | |||
| 1762 | This subsection describes the commands that use the tagging backends | ||
| 1763 | in order to find definitions of identifiers, references to | ||
| 1764 | identifiers, and perform various queries about identifiers. With most | ||
| 1765 | backends, these definitions and references were recorded as tags in | ||
| 1766 | the database created and maintained by the backend. | ||
| 1767 | |||
| 1768 | @menu | ||
| 1769 | * Looking Up Identifiers:: Commands to find the definition of a specific tag. | ||
| 1770 | * Xref Commands:: Commands in the @file{*xref*} buffer. | ||
| 1771 | * Identifier Search:: Searching and replacing identifiers. | ||
| 1772 | * List Identifiers:: Listing identifiers and completing on them. | ||
| 1773 | @end menu | ||
| 1774 | |||
| 1775 | @node Looking Up Identifiers | ||
| 1776 | @subsubsection Looking Up Identifiers | ||
| 1777 | @cindex find definition of symbols | ||
| 1778 | @cindex identifier, finding definition of | ||
| 1779 | @cindex find references to symbols | ||
| 1780 | |||
| 1781 | The most important thing that @code{xref} enables you to do is to find | ||
| 1782 | the definition of a specific identifier. | ||
| 1783 | |||
| 1784 | @table @kbd | ||
| 1785 | @item M-.@: | ||
| 1786 | Find definitions of an identifier (@code{xref-find-definitions}). | ||
| 1787 | @item C-M-. @var{pattern} @key{RET} | ||
| 1788 | Find all identifiers whose name matches @var{pattern} | ||
| 1789 | (@code{xref-find-apropos}). | ||
| 1790 | @item C-x 4 .@: @key{RET} | ||
| 1791 | Find definitions of identifier, but display it in another window | ||
| 1792 | (@code{xref-find-definitions-other-window}). | ||
| 1793 | @item C-x 5 .@: @key{RET} | ||
| 1794 | Find definition of identifier, and display it in a new frame | ||
| 1795 | (@code{xref-find-definitions-other-frame}). | ||
| 1796 | @item M-, | ||
| 1797 | Pop back to where you previously invoked @kbd{M-.} and friends | ||
| 1798 | (@code{xref-pop-marker-stack}). | ||
| 1799 | @end table | ||
| 1800 | |||
| 1801 | @kindex M-. | ||
| 1802 | @findex xref-find-definitions | ||
| 1803 | @kbd{M-.}@: (@code{xref-find-definitions}) shows the definitions of | ||
| 1804 | the identifier at point. With a prefix argument, or if there's no | ||
| 1805 | valid identifier at point, it prompts for the identifier. If the | ||
| 1806 | identifier has only one definition, the command jumps to it. If the | ||
| 1807 | identifier has more than one possible definition (e.g., in an | ||
| 1808 | object-oriented language, or if there's a function and a variable by | ||
| 1809 | the same name), the command shows the candidate definitions in a | ||
| 1810 | @file{*xref*} buffer, together with the files in which these | ||
| 1811 | definitions are found. Selecting one of these candidates by typing | ||
| 1812 | @kbd{@key{RET}} or clicking @kbd{Mouse-2} will pop a buffer showing | ||
| 1813 | the corresponding definition. | ||
| 1814 | |||
| 1815 | When entering the identifier argument to @kbd{M-.}, the usual | ||
| 1816 | minibuffer completion commands can be used (@pxref{Completion}), with | ||
| 1817 | the known identifier names as completion candidates. | ||
| 1666 | 1818 | ||
| 1667 | A @dfn{tag} is a reference to a subunit in a program or in a | 1819 | @kindex C-x 4 . |
| 1668 | document. In source code, tags reference syntactic elements of the | 1820 | @findex xref-find-definitions-other-window |
| 1669 | program: functions, subroutines, data types, macros, etc. In a | 1821 | @kindex C-x 5 . |
| 1670 | document, tags reference chapters, sections, appendices, etc. Each | 1822 | @findex xref-find-definitions-other-frame |
| 1671 | tag specifies the name of the file where the corresponding subunit is | 1823 | Like most commands that can switch buffers, |
| 1672 | defined, and the position of the subunit's definition in that file. | 1824 | @code{xref-find-definitions} has a variant that displays the new |
| 1825 | buffer in another window, and one that makes a new frame for it. The | ||
| 1826 | former is @w{@kbd{C-x 4 .}} | ||
| 1827 | (@code{xref-find-definitions-other-window}), and the latter is | ||
| 1828 | @w{@kbd{C-x 5 .}} (@code{xref-find-definitions-other-frame}). | ||
| 1829 | |||
| 1830 | @findex xref-find-apropos | ||
| 1831 | @kindex C-M-. | ||
| 1832 | The command @kbd{C-M-.} (@code{xref-find-apropos}) finds the | ||
| 1833 | definitions of one or more identifiers that match a specified regular | ||
| 1834 | expression. It is just like @kbd{M-.} except that it does regexp | ||
| 1835 | matching of identifiers instead of symbol name matching. | ||
| 1836 | |||
| 1837 | When any of the above commands finds more than one definition, it | ||
| 1838 | presents the @file{*xref*} buffer showing the definition candidates. | ||
| 1839 | In that buffer, you have several specialized commands, described in | ||
| 1840 | @ref{Xref Commands}. | ||
| 1841 | |||
| 1842 | @kindex M-, | ||
| 1843 | @findex xref-pop-marker-stack | ||
| 1844 | @vindex xref-marker-ring-length | ||
| 1845 | To go back to places @emph{from where} you found the definition, | ||
| 1846 | use @kbd{M-,} (@code{xref-pop-marker-stack}). It jumps back to the | ||
| 1847 | point of the last invocation of @kbd{M-.}. Thus you can find and | ||
| 1848 | examine the definition of something with @kbd{M-.} and then return to | ||
| 1849 | where you were with @kbd{M-,}. @kbd{M-,} allows you to retrace your | ||
| 1850 | steps to a depth determined by the variable | ||
| 1851 | @code{xref-marker-ring-length}, which defaults to 16. | ||
| 1852 | |||
| 1853 | @node Xref Commands | ||
| 1854 | @subsubsection Commands Available in the @file{*xref*} Buffer | ||
| 1855 | @cindex commands in @file{*xref*} buffers | ||
| 1856 | @cindex XREF mode | ||
| 1857 | |||
| 1858 | The following commands are provided in the @file{*xref*} buffer by | ||
| 1859 | the special XREF mode: | ||
| 1860 | |||
| 1861 | @table @kbd | ||
| 1862 | @item @key{RET} | ||
| 1863 | @itemx Mouse-2 | ||
| 1864 | Display the reference on the current line and bury the @file{*xref*} | ||
| 1865 | buffer. | ||
| 1866 | @item n | ||
| 1867 | @itemx . | ||
| 1868 | @findex xref-next-line | ||
| 1869 | Move to the next reference and display it in the other window | ||
| 1870 | (@code{xref-next-line}). | ||
| 1871 | @item p | ||
| 1872 | @itemx , | ||
| 1873 | @findex xref-prev-line | ||
| 1874 | Move to the previous reference and display it in the other window | ||
| 1875 | (@code{xref-prev-line}). | ||
| 1876 | @item C-o | ||
| 1877 | @findex xref-show-location-at-point | ||
| 1878 | Display the reference on the current line in the other window | ||
| 1879 | (@code{xref-show-location-at-point}). | ||
| 1880 | @findex xref-query-replace | ||
| 1881 | @item r @var{pattern} @key{RET} @var{replacement} @key{RET} | ||
| 1882 | Perform interactive query-replace on references that match | ||
| 1883 | @var{pattern} (@code{xref-query-replace}), replacing the match with | ||
| 1884 | @var{replacement}. @xref{Identifier Search}. | ||
| 1885 | @findex xref-quit | ||
| 1886 | @item q | ||
| 1887 | Quit the window showing the @file{*xref*} buffer (@code{xref-quit}). | ||
| 1888 | @end table | ||
| 1889 | |||
| 1890 | In addition, the usual navigation commands, such as the arrow keys, | ||
| 1891 | @kbd{C-n}, and @kbd{C-p} are available for moving around the buffer | ||
| 1892 | without displaying the references. | ||
| 1893 | |||
| 1894 | @node Identifier Search | ||
| 1895 | @subsubsection Searching and Replacing with Identifiers | ||
| 1896 | @cindex search and replace in multiple files | ||
| 1897 | @cindex multiple-file search and replace | ||
| 1898 | |||
| 1899 | The commands in this section visit and search all the files listed | ||
| 1900 | in the @code{xref} backend's database, one by one. For these | ||
| 1901 | commands, the database serves only to specify a sequence of files to | ||
| 1902 | search. These commands scan all the databases starting with the first | ||
| 1903 | one (if any) that describes the current file, proceed from there to | ||
| 1904 | the end of the list, and then scan from the beginning of the list | ||
| 1905 | until they have covered all the databases in the list. | ||
| 1906 | |||
| 1907 | @table @kbd | ||
| 1908 | @item M-? | ||
| 1909 | Find all the references for the identifier at point. | ||
| 1910 | @item M-x xref-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} | ||
| 1911 | Interactively replace @var{regexp} with @var{replacement} in the names | ||
| 1912 | of all the identifiers shown in the @file{*xref*} buffer. | ||
| 1913 | @item M-x tags-search @key{RET} @var{regexp} @key{RET} | ||
| 1914 | Search for @var{regexp} through the files in the selected tags | ||
| 1915 | table. | ||
| 1916 | @item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} | ||
| 1917 | Perform a @code{query-replace-regexp} on each file in the selected tags table. | ||
| 1918 | @item M-x tags-loop-continue | ||
| 1919 | Restart one of the last 2 commands above, from the current location of point. | ||
| 1920 | @end table | ||
| 1921 | |||
| 1922 | @kindex M-? | ||
| 1923 | @findex xref-find-references | ||
| 1924 | @kbd{M-?} finds all the references for the identifier at point. If | ||
| 1925 | there's no valid identifier at point, or when invoked with a prefix | ||
| 1926 | argument, the command prompts for the identifier, with completion. It | ||
| 1927 | then presents a @file{*xref*} buffer with all the references to the | ||
| 1928 | identifier, showing the file name and the line where the identifier is | ||
| 1929 | referenced. The XREF mode commands are available in this buffer, see | ||
| 1930 | @ref{Xref Commands}. | ||
| 1931 | |||
| 1932 | @findex xref-query-replace | ||
| 1933 | @kbd{M-x xref-query-replace} reads a regexp to match identifier | ||
| 1934 | names and a string to replace with, just like ordinary @kbd{M-x | ||
| 1935 | query-replace-regexp}. It then performs the specified replacement in | ||
| 1936 | the names of the matching identifiers in all the places in all the | ||
| 1937 | files where these identifiers are referenced. This is useful when you | ||
| 1938 | rename your identifiers as part of refactoring. This command should | ||
| 1939 | be invoked in the @file{*xref*} buffer generated by @code{M-?}. | ||
| 1940 | |||
| 1941 | @findex tags-search | ||
| 1942 | @kbd{M-x tags-search} reads a regexp using the minibuffer, then | ||
| 1943 | searches for matches in all the files in the selected tags table, one | ||
| 1944 | file at a time. It displays the name of the file being searched so | ||
| 1945 | you can follow its progress. As soon as it finds an occurrence, | ||
| 1946 | @code{tags-search} returns. This command works only with the etags | ||
| 1947 | backend, and requires tags tables to be available (@pxref{Tags | ||
| 1948 | Tables}). | ||
| 1949 | |||
| 1950 | @findex tags-loop-continue | ||
| 1951 | Having found one match, you probably want to find all the rest. | ||
| 1952 | Type @kbd{M-x tags-loop-continue}) to resume the @code{tags-search}, | ||
| 1953 | finding one more match. This searches the rest of the current buffer, | ||
| 1954 | followed by the remaining files of the tags table. | ||
| 1955 | |||
| 1956 | @findex tags-query-replace | ||
| 1957 | @kbd{M-x tags-query-replace} performs a single | ||
| 1958 | @code{query-replace-regexp} through all the files in the tags table. It | ||
| 1959 | reads a regexp to search for and a string to replace with, just like | ||
| 1960 | ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x | ||
| 1961 | tags-search}, but repeatedly, processing matches according to your | ||
| 1962 | input. @xref{Query Replace}, for more information on query replace. | ||
| 1963 | This command works only with the etags backend. | ||
| 1964 | |||
| 1965 | @vindex tags-case-fold-search | ||
| 1966 | @cindex case-sensitivity and tags search | ||
| 1967 | You can control the case-sensitivity of tags search commands by | ||
| 1968 | customizing the value of the variable @code{tags-case-fold-search}. The | ||
| 1969 | default is to use the same setting as the value of | ||
| 1970 | @code{case-fold-search} (@pxref{Lax Search}). | ||
| 1971 | |||
| 1972 | It is possible to get through all the files in the tags table with a | ||
| 1973 | single invocation of @kbd{M-x tags-query-replace}. But often it is | ||
| 1974 | useful to exit temporarily, which you can do with any input event that | ||
| 1975 | has no special query replace meaning. You can resume the query | ||
| 1976 | replace subsequently by typing @kbd{M-x tags-loop-continue}; this | ||
| 1977 | command resumes the last tags search or replace command that you did. | ||
| 1978 | For instance, to skip the rest of the current file, you can type | ||
| 1979 | @kbd{M-> M-x tags-loop-continue}. | ||
| 1980 | |||
| 1981 | The commands in this section carry out much broader searches than | ||
| 1982 | the @code{xref-find-definitions} family. The | ||
| 1983 | @code{xref-find-definitions} commands search only for definitions of | ||
| 1984 | identifiers that match your string or regexp. The commands | ||
| 1985 | @code{tags-search} and @code{tags-query-replace} find every occurrence | ||
| 1986 | of the regexp, as ordinary search commands and replace commands do in | ||
| 1987 | the current buffer. | ||
| 1988 | |||
| 1989 | As an alternative to @code{tags-search}, you can run @command{grep} | ||
| 1990 | as a subprocess and have Emacs show you the matching lines one by one. | ||
| 1991 | @xref{Grep Searching}. | ||
| 1992 | |||
| 1993 | @node List Identifiers | ||
| 1994 | @subsubsection Identifier Inquiries | ||
| 1995 | |||
| 1996 | @table @kbd | ||
| 1997 | @item C-M-i | ||
| 1998 | @itemx M-@key{TAB} | ||
| 1999 | Perform completion on the text around point, using the @code{xref} | ||
| 2000 | backend if one is available (@code{completion-at-point}). | ||
| 2001 | @item M-x list-tags @key{RET} @var{file} @key{RET} | ||
| 2002 | Display a list of the tags defined in the program file @var{file}. | ||
| 2003 | @item M-x xref-find-apropos @key{RET} @var{regexp} @key{RET} | ||
| 2004 | Display a list of all known identifiers matching @var{regexp}. | ||
| 2005 | @end table | ||
| 2006 | |||
| 2007 | @cindex completion (symbol names) | ||
| 2008 | In most programming language modes, you can type @kbd{C-M-i} or | ||
| 2009 | @kbd{M-@key{TAB}} (@code{completion-at-point}) to complete the symbol | ||
| 2010 | at point. If there is an @code{xref} backend available, this command | ||
| 2011 | can use it to generate completion candidates more intelligently. | ||
| 2012 | @xref{Symbol Completion}. | ||
| 2013 | |||
| 2014 | @findex list-tags | ||
| 2015 | @kbd{M-x list-tags} reads the name of one of the files covered by | ||
| 2016 | the selected tags table, and displays a list of tags defined in that | ||
| 2017 | file. Do not include a directory as part of the file name unless the | ||
| 2018 | file name recorded in the tags table includes a directory. This | ||
| 2019 | command works only with the etags backend, and requires a tags table | ||
| 2020 | for the project to be available. @xref{Tags Tables}. | ||
| 2021 | |||
| 2022 | @c Sadly, the new-and-improved Xref feature doesn't provide anything | ||
| 2023 | @c close to the described below features of the now-obsoleted | ||
| 2024 | @c tags-apropos. I'm leaving this here to encourage enhancements to | ||
| 2025 | @c xref.el. | ||
| 2026 | @ignore | ||
| 2027 | @findex tags-apropos | ||
| 2028 | @vindex tags-apropos-verbose | ||
| 2029 | @vindex tags-tag-face | ||
| 2030 | @vindex tags-apropos-additional-actions | ||
| 2031 | @kbd{M-x tags-apropos} is like @code{apropos} for tags | ||
| 2032 | (@pxref{Apropos}). It displays a list of tags in the selected tags | ||
| 2033 | table whose entries match @var{regexp}. If the variable | ||
| 2034 | @code{tags-apropos-verbose} is non-@code{nil}, it displays the names | ||
| 2035 | of the tags files together with the tag names. You can customize the | ||
| 2036 | appearance of the output by setting the variable @code{tags-tag-face} | ||
| 2037 | to a face. You can display additional output by customizing the | ||
| 2038 | variable @code{tags-apropos-additional-actions}; see its documentation | ||
| 2039 | for details. | ||
| 2040 | @end ignore | ||
| 2041 | |||
| 2042 | @findex next-file | ||
| 2043 | @kbd{M-x next-file} visits files covered by the selected tags table. | ||
| 2044 | The first time it is called, it visits the first file covered by the | ||
| 2045 | table. Each subsequent call visits the next covered file, unless a | ||
| 2046 | prefix argument is supplied, in which case it returns to the first | ||
| 2047 | file. This command works only with the etags backend. | ||
| 2048 | |||
| 2049 | @node Tags Tables | ||
| 2050 | @subsection Tags Tables | ||
| 2051 | @cindex tags and tag tables | ||
| 1673 | 2052 | ||
| 1674 | A @dfn{tags table} records the tags extracted by scanning the source | 2053 | A @dfn{tags table} records the tags extracted by scanning the source |
| 1675 | code of a certain program or a certain document. Tags extracted from | 2054 | code of a certain program or a certain document. Tags extracted from |
| @@ -1685,12 +2064,14 @@ source files. | |||
| 1685 | on a document or the source code file. The @samp{etags} program | 2064 | on a document or the source code file. The @samp{etags} program |
| 1686 | writes the tags to a @dfn{tags table file}, or @dfn{tags file} in | 2065 | writes the tags to a @dfn{tags table file}, or @dfn{tags file} in |
| 1687 | short. The conventional name for a tags file is @file{TAGS}@. | 2066 | short. The conventional name for a tags file is @file{TAGS}@. |
| 1688 | @xref{Create Tags Table}. | 2067 | @xref{Create Tags Table}. (It is also possible to create a tags table |
| 2068 | by using one of the commands from other packages that can produce such | ||
| 2069 | tables in the same format.) | ||
| 1689 | 2070 | ||
| 1690 | Emacs provides many commands for searching and replacing using the | 2071 | Emacs uses the tags tables via the @code{etags} package as one of |
| 1691 | information recorded in tags tables. For instance, the @kbd{M-.} | 2072 | the supported backends for @code{xref}. Because tags tables are |
| 1692 | (@code{find-tag}) jumps to the location of a specified function | 2073 | produced by the @command{etags} command that is part of an Emacs |
| 1693 | definition in its source file. @xref{Find Tag}. | 2074 | distribution, we describe tags tables in more detail here. |
| 1694 | 2075 | ||
| 1695 | @cindex C++ class browser, tags | 2076 | @cindex C++ class browser, tags |
| 1696 | @cindex tags, C++ | 2077 | @cindex tags, C++ |
| @@ -1706,14 +2087,10 @@ use tags, separate from the @command{etags} facility. | |||
| 1706 | * Tag Syntax:: Tag syntax for various types of code and text files. | 2087 | * Tag Syntax:: Tag syntax for various types of code and text files. |
| 1707 | * Create Tags Table:: Creating a tags table with @command{etags}. | 2088 | * Create Tags Table:: Creating a tags table with @command{etags}. |
| 1708 | * Etags Regexps:: Create arbitrary tags using regular expressions. | 2089 | * Etags Regexps:: Create arbitrary tags using regular expressions. |
| 1709 | * Select Tags Table:: How to visit a tags table. | ||
| 1710 | * Find Tag:: Commands to find the definition of a specific tag. | ||
| 1711 | * Tags Search:: Using a tags table for searching and replacing. | ||
| 1712 | * List Tags:: Using tags for completion, and listing them. | ||
| 1713 | @end menu | 2090 | @end menu |
| 1714 | 2091 | ||
| 1715 | @node Tag Syntax | 2092 | @node Tag Syntax |
| 1716 | @subsection Source File Tag Syntax | 2093 | @subsubsection Source File Tag Syntax |
| 1717 | 2094 | ||
| 1718 | Here is how tag syntax is defined for the most popular languages: | 2095 | Here is how tag syntax is defined for the most popular languages: |
| 1719 | 2096 | ||
| @@ -1883,13 +2260,17 @@ line. | |||
| 1883 | @item | 2260 | @item |
| 1884 | In Python code, @code{def} or @code{class} at the beginning of a line | 2261 | In Python code, @code{def} or @code{class} at the beginning of a line |
| 1885 | generate a tag. | 2262 | generate a tag. |
| 2263 | |||
| 2264 | @item | ||
| 2265 | In Ruby code, @code{def} or @code{class} or @code{module} at the | ||
| 2266 | beginning of a line generate a tag. | ||
| 1886 | @end itemize | 2267 | @end itemize |
| 1887 | 2268 | ||
| 1888 | You can also generate tags based on regexp matching (@pxref{Etags | 2269 | You can also generate tags based on regexp matching (@pxref{Etags |
| 1889 | Regexps}) to handle other formats and languages. | 2270 | Regexps}) to handle other formats and languages. |
| 1890 | 2271 | ||
| 1891 | @node Create Tags Table | 2272 | @node Create Tags Table |
| 1892 | @subsection Creating Tags Tables | 2273 | @subsubsection Creating Tags Tables |
| 1893 | @cindex @command{etags} program | 2274 | @cindex @command{etags} program |
| 1894 | 2275 | ||
| 1895 | The @command{etags} program is used to create a tags table file. It knows | 2276 | The @command{etags} program is used to create a tags table file. It knows |
| @@ -1946,7 +2327,7 @@ source files, and the tags file will still refer correctly to the source | |||
| 1946 | files. If the tags file is @file{-} or is in the @file{/dev} directory, | 2327 | files. If the tags file is @file{-} or is in the @file{/dev} directory, |
| 1947 | however, the file names are | 2328 | however, the file names are |
| 1948 | made relative to the current working directory. This is useful, for | 2329 | made relative to the current working directory. This is useful, for |
| 1949 | example, when writing the tags to @file{/dev/stdout}. | 2330 | example, when writing the tags to the standard output. |
| 1950 | 2331 | ||
| 1951 | When using a relative file name, it should not be a symbolic link | 2332 | When using a relative file name, it should not be a symbolic link |
| 1952 | pointing to a tags file in a different directory, because this would | 2333 | pointing to a tags file in a different directory, because this would |
| @@ -1992,7 +2373,7 @@ options, it outputs detailed information about how tags are generated for | |||
| 1992 | @var{lang}. | 2373 | @var{lang}. |
| 1993 | 2374 | ||
| 1994 | @node Etags Regexps | 2375 | @node Etags Regexps |
| 1995 | @subsection Etags Regexps | 2376 | @subsubsection Etags Regexps |
| 1996 | 2377 | ||
| 1997 | The @samp{--regex} option to @command{etags} allows tags to be | 2378 | The @samp{--regex} option to @command{etags} allows tags to be |
| 1998 | recognized by regular expression matching. You can intermix this | 2379 | recognized by regular expression matching. You can intermix this |
| @@ -2151,7 +2532,7 @@ etags --language=none \ | |||
| 2151 | @subsection Selecting a Tags Table | 2532 | @subsection Selecting a Tags Table |
| 2152 | 2533 | ||
| 2153 | @findex visit-tags-table | 2534 | @findex visit-tags-table |
| 2154 | Emacs has at any time one @dfn{selected} tags table. All the | 2535 | Emacs has at any time at most one @dfn{selected} tags table. All the |
| 2155 | commands for working with tags tables use the selected one. To select | 2536 | commands for working with tags tables use the selected one. To select |
| 2156 | a tags table, type @kbd{M-x visit-tags-table}, which reads the tags | 2537 | a tags table, type @kbd{M-x visit-tags-table}, which reads the tags |
| 2157 | table file name as an argument, with @file{TAGS} in the default | 2538 | table file name as an argument, with @file{TAGS} in the default |
| @@ -2192,212 +2573,6 @@ table mentions that file, as explained above. | |||
| 2192 | 2573 | ||
| 2193 | Do not set both @code{tags-file-name} and @code{tags-table-list}. | 2574 | Do not set both @code{tags-file-name} and @code{tags-table-list}. |
| 2194 | 2575 | ||
| 2195 | @node Find Tag | ||
| 2196 | @subsection Finding a Tag | ||
| 2197 | |||
| 2198 | The most important thing that a tags table enables you to do is to find | ||
| 2199 | the definition of a specific tag. | ||
| 2200 | |||
| 2201 | @table @kbd | ||
| 2202 | @item M-.@: @var{tag} @key{RET} | ||
| 2203 | Find first definition of @var{tag} (@code{find-tag}). | ||
| 2204 | @item C-u M-. | ||
| 2205 | Find next alternate definition of last tag specified. | ||
| 2206 | @item C-u - M-. | ||
| 2207 | Go back to previous tag found. | ||
| 2208 | @item C-M-. @var{pattern} @key{RET} | ||
| 2209 | Find a tag whose name matches @var{pattern} (@code{find-tag-regexp}). | ||
| 2210 | @item C-u C-M-. | ||
| 2211 | Find the next tag whose name matches the last pattern used. | ||
| 2212 | @item C-x 4 .@: @var{tag} @key{RET} | ||
| 2213 | Find first definition of @var{tag}, but display it in another window | ||
| 2214 | (@code{find-tag-other-window}). | ||
| 2215 | @item C-x 5 .@: @var{tag} @key{RET} | ||
| 2216 | Find first definition of @var{tag}, and create a new frame to select the | ||
| 2217 | buffer (@code{find-tag-other-frame}). | ||
| 2218 | @item M-* | ||
| 2219 | Pop back to where you previously invoked @kbd{M-.} and friends. | ||
| 2220 | @end table | ||
| 2221 | |||
| 2222 | @kindex M-. | ||
| 2223 | @findex find-tag | ||
| 2224 | @kbd{M-.}@: (@code{find-tag}) prompts for a tag name and jumps to | ||
| 2225 | its source definition. It works by searching through the tags table | ||
| 2226 | for that tag's file and approximate character position, visiting that | ||
| 2227 | file, and searching for the tag definition at ever-increasing | ||
| 2228 | distances away from the recorded approximate position. | ||
| 2229 | |||
| 2230 | When entering the tag argument to @kbd{M-.}, the usual minibuffer | ||
| 2231 | completion commands can be used (@pxref{Completion}), with the tag | ||
| 2232 | names in the selected tags table as completion candidates. If you | ||
| 2233 | specify an empty argument, the balanced expression in the buffer | ||
| 2234 | before or around point is the default argument. @xref{Expressions}. | ||
| 2235 | |||
| 2236 | You don't need to give @kbd{M-.} the full name of the tag; a part | ||
| 2237 | will do. @kbd{M-.} finds tags which contain that argument as a | ||
| 2238 | substring. However, it prefers an exact match to a substring match. | ||
| 2239 | To find other tags that match the same substring, give @code{find-tag} | ||
| 2240 | a numeric argument, as in @kbd{C-u M-.} or @kbd{M-0 M-.}; this does | ||
| 2241 | not read a tag name, but continues searching the tags table's text for | ||
| 2242 | another tag containing the same substring last used. | ||
| 2243 | |||
| 2244 | @kindex C-x 4 . | ||
| 2245 | @findex find-tag-other-window | ||
| 2246 | @kindex C-x 5 . | ||
| 2247 | @findex find-tag-other-frame | ||
| 2248 | Like most commands that can switch buffers, @code{find-tag} has a | ||
| 2249 | variant that displays the new buffer in another window, and one that | ||
| 2250 | makes a new frame for it. The former is @w{@kbd{C-x 4 .}} | ||
| 2251 | (@code{find-tag-other-window}), and the latter is @w{@kbd{C-x 5 .}} | ||
| 2252 | (@code{find-tag-other-frame}). | ||
| 2253 | |||
| 2254 | To move back to previous tag definitions, use @kbd{C-u - M-.}; more | ||
| 2255 | generally, @kbd{M-.} with a negative numeric argument. Similarly, | ||
| 2256 | @w{@kbd{C-x 4 .}} with a negative argument finds the previous tag | ||
| 2257 | location in another window. | ||
| 2258 | |||
| 2259 | @kindex M-* | ||
| 2260 | @findex pop-tag-mark | ||
| 2261 | @vindex find-tag-marker-ring-length | ||
| 2262 | As well as going back to places you've found tags recently, you can | ||
| 2263 | go back to places @emph{from where} you found them, using @kbd{M-*} | ||
| 2264 | (@code{pop-tag-mark}). Thus you can find and examine the definition | ||
| 2265 | of something with @kbd{M-.} and then return to where you were with | ||
| 2266 | @kbd{M-*}. | ||
| 2267 | |||
| 2268 | Both @kbd{C-u - M-.} and @kbd{M-*} allow you to retrace your steps to | ||
| 2269 | a depth determined by the variable @code{find-tag-marker-ring-length}. | ||
| 2270 | |||
| 2271 | @findex find-tag-regexp | ||
| 2272 | @kindex C-M-. | ||
| 2273 | The command @kbd{C-M-.} (@code{find-tag-regexp}) visits the tags that | ||
| 2274 | match a specified regular expression. It is just like @kbd{M-.} except | ||
| 2275 | that it does regexp matching instead of substring matching. | ||
| 2276 | |||
| 2277 | @node Tags Search | ||
| 2278 | @subsection Searching and Replacing with Tags Tables | ||
| 2279 | @cindex search and replace in multiple files | ||
| 2280 | @cindex multiple-file search and replace | ||
| 2281 | |||
| 2282 | The commands in this section visit and search all the files listed | ||
| 2283 | in the selected tags table, one by one. For these commands, the tags | ||
| 2284 | table serves only to specify a sequence of files to search. These | ||
| 2285 | commands scan the list of tags tables starting with the first tags | ||
| 2286 | table (if any) that describes the current file, proceed from there to | ||
| 2287 | the end of the list, and then scan from the beginning of the list | ||
| 2288 | until they have covered all the tables in the list. | ||
| 2289 | |||
| 2290 | @table @kbd | ||
| 2291 | @item M-x tags-search @key{RET} @var{regexp} @key{RET} | ||
| 2292 | Search for @var{regexp} through the files in the selected tags | ||
| 2293 | table. | ||
| 2294 | @item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} | ||
| 2295 | Perform a @code{query-replace-regexp} on each file in the selected tags table. | ||
| 2296 | @item M-, | ||
| 2297 | Restart one of the commands above, from the current location of point | ||
| 2298 | (@code{tags-loop-continue}). | ||
| 2299 | @end table | ||
| 2300 | |||
| 2301 | @findex tags-search | ||
| 2302 | @kbd{M-x tags-search} reads a regexp using the minibuffer, then | ||
| 2303 | searches for matches in all the files in the selected tags table, one | ||
| 2304 | file at a time. It displays the name of the file being searched so you | ||
| 2305 | can follow its progress. As soon as it finds an occurrence, | ||
| 2306 | @code{tags-search} returns. | ||
| 2307 | |||
| 2308 | @kindex M-, | ||
| 2309 | @findex tags-loop-continue | ||
| 2310 | Having found one match, you probably want to find all the rest. | ||
| 2311 | Type @kbd{M-,} (@code{tags-loop-continue}) to resume the | ||
| 2312 | @code{tags-search}, finding one more match. This searches the rest of | ||
| 2313 | the current buffer, followed by the remaining files of the tags table. | ||
| 2314 | |||
| 2315 | @findex tags-query-replace | ||
| 2316 | @kbd{M-x tags-query-replace} performs a single | ||
| 2317 | @code{query-replace-regexp} through all the files in the tags table. It | ||
| 2318 | reads a regexp to search for and a string to replace with, just like | ||
| 2319 | ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x | ||
| 2320 | tags-search}, but repeatedly, processing matches according to your | ||
| 2321 | input. @xref{Query Replace}, for more information on query replace. | ||
| 2322 | |||
| 2323 | @vindex tags-case-fold-search | ||
| 2324 | @cindex case-sensitivity and tags search | ||
| 2325 | You can control the case-sensitivity of tags search commands by | ||
| 2326 | customizing the value of the variable @code{tags-case-fold-search}. The | ||
| 2327 | default is to use the same setting as the value of | ||
| 2328 | @code{case-fold-search} (@pxref{Lax Search}). | ||
| 2329 | |||
| 2330 | It is possible to get through all the files in the tags table with a | ||
| 2331 | single invocation of @kbd{M-x tags-query-replace}. But often it is | ||
| 2332 | useful to exit temporarily, which you can do with any input event that | ||
| 2333 | has no special query replace meaning. You can resume the query | ||
| 2334 | replace subsequently by typing @kbd{M-,}; this command resumes the | ||
| 2335 | last tags search or replace command that you did. For instance, to | ||
| 2336 | skip the rest of the current file, you can type @kbd{M-> M-,}. | ||
| 2337 | |||
| 2338 | The commands in this section carry out much broader searches than the | ||
| 2339 | @code{find-tag} family. The @code{find-tag} commands search only for | ||
| 2340 | definitions of tags that match your substring or regexp. The commands | ||
| 2341 | @code{tags-search} and @code{tags-query-replace} find every occurrence | ||
| 2342 | of the regexp, as ordinary search commands and replace commands do in | ||
| 2343 | the current buffer. | ||
| 2344 | |||
| 2345 | These commands create buffers only temporarily for the files that they | ||
| 2346 | have to search (those which are not already visited in Emacs buffers). | ||
| 2347 | Buffers in which no match is found are quickly killed; the others | ||
| 2348 | continue to exist. | ||
| 2349 | |||
| 2350 | As an alternative to @code{tags-search}, you can run @command{grep} | ||
| 2351 | as a subprocess and have Emacs show you the matching lines one by one. | ||
| 2352 | @xref{Grep Searching}. | ||
| 2353 | |||
| 2354 | @node List Tags | ||
| 2355 | @subsection Tags Table Inquiries | ||
| 2356 | |||
| 2357 | @table @kbd | ||
| 2358 | @item C-M-i | ||
| 2359 | @itemx M-@key{TAB} | ||
| 2360 | Perform completion on the text around point, using the selected tags | ||
| 2361 | table if one is loaded (@code{completion-at-point}). | ||
| 2362 | @item M-x list-tags @key{RET} @var{file} @key{RET} | ||
| 2363 | Display a list of the tags defined in the program file @var{file}. | ||
| 2364 | @item M-x tags-apropos @key{RET} @var{regexp} @key{RET} | ||
| 2365 | Display a list of all tags matching @var{regexp}. | ||
| 2366 | @end table | ||
| 2367 | |||
| 2368 | @cindex completion (symbol names) | ||
| 2369 | In most programming language modes, you can type @kbd{C-M-i} or | ||
| 2370 | @kbd{M-@key{TAB}} (@code{completion-at-point}) to complete the symbol | ||
| 2371 | at point. If there is a selected tags table, this command can use it | ||
| 2372 | to generate completion candidates. @xref{Symbol Completion}. | ||
| 2373 | |||
| 2374 | @findex list-tags | ||
| 2375 | @kbd{M-x list-tags} reads the name of one of the files covered by | ||
| 2376 | the selected tags table, and displays a list of tags defined in that | ||
| 2377 | file. Do not include a directory as part of the file name unless the | ||
| 2378 | file name recorded in the tags table includes a directory. | ||
| 2379 | |||
| 2380 | @findex tags-apropos | ||
| 2381 | @vindex tags-apropos-verbose | ||
| 2382 | @vindex tags-tag-face | ||
| 2383 | @vindex tags-apropos-additional-actions | ||
| 2384 | @kbd{M-x tags-apropos} is like @code{apropos} for tags | ||
| 2385 | (@pxref{Apropos}). It displays a list of tags in the selected tags | ||
| 2386 | table whose entries match @var{regexp}. If the variable | ||
| 2387 | @code{tags-apropos-verbose} is non-@code{nil}, it displays the names | ||
| 2388 | of the tags files together with the tag names. You can customize the | ||
| 2389 | appearance of the output by setting the variable @code{tags-tag-face} | ||
| 2390 | to a face. You can display additional output by customizing the | ||
| 2391 | variable @code{tags-apropos-additional-actions}; see its documentation | ||
| 2392 | for details. | ||
| 2393 | |||
| 2394 | @findex next-file | ||
| 2395 | @kbd{M-x next-file} visits files covered by the selected tags table. | ||
| 2396 | The first time it is called, it visits the first file covered by the | ||
| 2397 | table. Each subsequent call visits the next covered file, unless a | ||
| 2398 | prefix argument is supplied, in which case it returns to the first | ||
| 2399 | file. | ||
| 2400 | |||
| 2401 | @node EDE | 2576 | @node EDE |
| 2402 | @section Emacs Development Environment | 2577 | @section Emacs Development Environment |
| 2403 | @cindex EDE (Emacs Development Environment) | 2578 | @cindex EDE (Emacs Development Environment) |
diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 28b4e3ddaea..98980d5fb3f 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi | |||
| @@ -288,7 +288,9 @@ instead signal an error if the mark is inactive. | |||
| 288 | active---for example, typing @kbd{a} inserts the character @samp{a}, | 288 | active---for example, typing @kbd{a} inserts the character @samp{a}, |
| 289 | then deactivates the mark. If you enable Delete Selection mode, a | 289 | then deactivates the mark. If you enable Delete Selection mode, a |
| 290 | minor mode, then inserting text while the mark is active causes the | 290 | minor mode, then inserting text while the mark is active causes the |
| 291 | text in the region to be deleted first. To toggle Delete Selection | 291 | text in the region to be deleted first. Also, commands that normally |
| 292 | delete just one character, such as @kbd{C-d} or @kbd{@key{DEL}}, will | ||
| 293 | delete the entire region instead. To toggle Delete Selection | ||
| 292 | mode on or off, type @kbd{M-x delete-selection-mode}. | 294 | mode on or off, type @kbd{M-x delete-selection-mode}. |
| 293 | 295 | ||
| 294 | @node Mark Ring | 296 | @node Mark Ring |
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 97c74a9ce81..e4bd85c0ddd 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi | |||
| @@ -271,7 +271,7 @@ bindings for that purpose. | |||
| 271 | The Imenu facility offers a way to find the major definitions in | 271 | The Imenu facility offers a way to find the major definitions in |
| 272 | a file by name. It is also useful in text formatter major modes, | 272 | a file by name. It is also useful in text formatter major modes, |
| 273 | where it treats each chapter, section, etc., as a definition. | 273 | where it treats each chapter, section, etc., as a definition. |
| 274 | (@xref{Tags}, for a more powerful feature that handles multiple files | 274 | (@xref{Xref}, for a more powerful feature that handles multiple files |
| 275 | together.) | 275 | together.) |
| 276 | 276 | ||
| 277 | @findex imenu | 277 | @findex imenu |
| @@ -1358,7 +1358,7 @@ the @kbd{M-@key{TAB}} key is usually reserved by the window manager | |||
| 1358 | for switching graphical windows, so you should type @kbd{C-M-i} or | 1358 | for switching graphical windows, so you should type @kbd{C-M-i} or |
| 1359 | @kbd{@key{ESC} @key{TAB}} instead. | 1359 | @kbd{@key{ESC} @key{TAB}} instead. |
| 1360 | 1360 | ||
| 1361 | @cindex tags-based completion | 1361 | @cindex xref-based completion |
| 1362 | @findex completion-at-point | 1362 | @findex completion-at-point |
| 1363 | @cindex Lisp symbol completion | 1363 | @cindex Lisp symbol completion |
| 1364 | @cindex completion (Lisp symbols) | 1364 | @cindex completion (Lisp symbols) |
| @@ -1368,7 +1368,7 @@ which generates its completion list in a flexible way. If Semantic | |||
| 1368 | mode is enabled, it tries to use the Semantic parser data for | 1368 | mode is enabled, it tries to use the Semantic parser data for |
| 1369 | completion (@pxref{Semantic}). If Semantic mode is not enabled or | 1369 | completion (@pxref{Semantic}). If Semantic mode is not enabled or |
| 1370 | fails at performing completion, it tries to complete using the | 1370 | fails at performing completion, it tries to complete using the |
| 1371 | selected tags table (@pxref{Tags}). If in Emacs Lisp mode, it | 1371 | available @code{xref} backend (@pxref{Xref}). If in Emacs Lisp mode, it |
| 1372 | performs completion using the function, variable, or property names | 1372 | performs completion using the function, variable, or property names |
| 1373 | defined in the current Emacs session. | 1373 | defined in the current Emacs session. |
| 1374 | 1374 | ||
diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index cc516ec2d45..bef74e3b2c5 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi | |||
| @@ -12,10 +12,10 @@ a string. Emacs also has commands to replace occurrences of a string | |||
| 12 | with a different string. There are also commands that do the same | 12 | with a different string. There are also commands that do the same |
| 13 | thing, but search for patterns instead of fixed strings. | 13 | thing, but search for patterns instead of fixed strings. |
| 14 | 14 | ||
| 15 | You can also search multiple files under the control of a tags table | 15 | You can also search multiple files under the control of an |
| 16 | (@pxref{Tags Search}) or through the Dired @kbd{A} command | 16 | @code{xref} backend (@pxref{Identifier Search}) or through the Dired |
| 17 | (@pxref{Operating on Files}), or ask the @code{grep} program to do it | 17 | @kbd{A} command (@pxref{Operating on Files}), or ask the @code{grep} |
| 18 | (@pxref{Grep Searching}). | 18 | program to do it (@pxref{Grep Searching}). |
| 19 | 19 | ||
| 20 | @menu | 20 | @menu |
| 21 | * Incremental Search:: Search happens as you type the string. | 21 | * Incremental Search:: Search happens as you type the string. |
diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index cd7d08dede6..f99234b5c1b 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi | |||
| @@ -231,8 +231,9 @@ Mail}), but in another window (@code{compose-mail-other-window}). | |||
| 231 | 231 | ||
| 232 | @findex find-tag-other-window | 232 | @findex find-tag-other-window |
| 233 | @item C-x 4 . | 233 | @item C-x 4 . |
| 234 | Find a tag in the current tags table, similar to @kbd{M-.} | 234 | Find the definition of an identifier, similar to @kbd{M-.} |
| 235 | (@pxref{Tags}), but in another window (@code{find-tag-other-window}). | 235 | (@pxref{Xref}), but in another window |
| 236 | (@code{xref-find-definitions-other-window}). | ||
| 236 | @item C-x 4 r @var{filename} @key{RET} | 237 | @item C-x 4 r @var{filename} @key{RET} |
| 237 | Visit file @var{filename} read-only, and select its buffer in another | 238 | Visit file @var{filename} read-only, and select its buffer in another |
| 238 | window (@code{find-file-read-only-other-window}). @xref{Visiting}. | 239 | window (@code{find-file-read-only-other-window}). @xref{Visiting}. |
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi index 28bf6005769..d2a8ff56b6b 100644 --- a/doc/lispref/eval.texi +++ b/doc/lispref/eval.texi | |||
| @@ -328,13 +328,12 @@ This function returns the meaning of @var{function} as a function. If | |||
| 328 | definition and starts over with that value. If @var{function} is not a | 328 | definition and starts over with that value. If @var{function} is not a |
| 329 | symbol, then it returns @var{function} itself. | 329 | symbol, then it returns @var{function} itself. |
| 330 | 330 | ||
| 331 | This function signals a @code{void-function} error if the final symbol | 331 | This function returns @code{nil} if the final symbol is unbound. It |
| 332 | is unbound and optional argument @var{noerror} is @code{nil} or | 332 | signals a @code{cyclic-function-indirection} error if there is a loop |
| 333 | omitted. Otherwise, if @var{noerror} is non-@code{nil}, it returns | 333 | in the chain of symbols. |
| 334 | @code{nil} if the final symbol is unbound. | ||
| 335 | 334 | ||
| 336 | It signals a @code{cyclic-function-indirection} error if there is a | 335 | The optional argument @var{noerror} is obsolete, kept for backward |
| 337 | loop in the chain of symbols. | 336 | compatibility, and has no effect. |
| 338 | 337 | ||
| 339 | Here is how you could define @code{indirect-function} in Lisp: | 338 | Here is how you could define @code{indirect-function} in Lisp: |
| 340 | 339 | ||
diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index 0a01162063b..cb5c7012c16 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi | |||
| @@ -965,6 +965,11 @@ The face @var{face} was defined. | |||
| 965 | The feature @var{feature} was required. | 965 | The feature @var{feature} was required. |
| 966 | @item (provide . @var{feature}) | 966 | @item (provide . @var{feature}) |
| 967 | The feature @var{feature} was provided. | 967 | The feature @var{feature} was provided. |
| 968 | @item (cl-defmethod @var{method} @var{specializers}) | ||
| 969 | The named @var{method} was defined by using @code{cl-defmethod}, with | ||
| 970 | @var{specializers} as its specializers. | ||
| 971 | @item (define-type . @var{type}) | ||
| 972 | The type @var{type} was defined. | ||
| 968 | @end table | 973 | @end table |
| 969 | 974 | ||
| 970 | The value of @code{load-history} may have one element whose @sc{car} is | 975 | The value of @code{load-history} may have one element whose @sc{car} is |
diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi index d44085527a9..bf185431384 100644 --- a/doc/lispref/markers.texi +++ b/doc/lispref/markers.texi | |||
| @@ -659,6 +659,24 @@ more marks than this are pushed onto the @code{mark-ring}, | |||
| 659 | @c There is also global-mark-ring-max, but this chapter explicitly | 659 | @c There is also global-mark-ring-max, but this chapter explicitly |
| 660 | @c does not talk about the global mark. | 660 | @c does not talk about the global mark. |
| 661 | 661 | ||
| 662 | @cindex @code{delete-selection}, symbol property | ||
| 663 | @findex delete-selection-helper | ||
| 664 | @findex delete-selection-pre-hook | ||
| 665 | When Delete Selection mode (@pxref{Using Region, Delete Selection, , | ||
| 666 | emacs, The GNU Emacs Manual}) is enabled, commands that operate on the | ||
| 667 | active region (a.k.a.@: ``selection'') behave slightly differently. | ||
| 668 | This works by adding the function @code{delete-selection-pre-hook} to | ||
| 669 | the @code{pre-command-hook} (@pxref{Command Overview}). That function | ||
| 670 | calls @code{delete-selection-helper} to delete the selection as | ||
| 671 | appropriate for the command. If you want to adapt a command to Delete | ||
| 672 | Selection mode, put the @code{delete-selection} property on the | ||
| 673 | function's symbol (@pxref{Symbol Plists}); commands that don't have | ||
| 674 | this property on their symbol won't delete the selection. This | ||
| 675 | property can have one of several values to tailor the behavior to what | ||
| 676 | the command is supposed to do; see the doc strings of | ||
| 677 | @code{delete-selection-pre-hook} and @code{delete-selection-helper} | ||
| 678 | for the details. | ||
| 679 | |||
| 662 | @node The Region | 680 | @node The Region |
| 663 | @section The Region | 681 | @section The Region |
| 664 | @c The index entry must be just "region" to make it the first hit | 682 | @c The index entry must be just "region" to make it the first hit |
diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi index af24b996c0a..19782d0fbde 100644 --- a/doc/lispref/syntax.texi +++ b/doc/lispref/syntax.texi | |||
| @@ -787,17 +787,6 @@ used on hooks such as @code{before-change-functions} (@pxref{Change | |||
| 787 | Hooks}). | 787 | Hooks}). |
| 788 | @end defun | 788 | @end defun |
| 789 | 789 | ||
| 790 | Major modes can make @code{syntax-ppss} run faster by specifying | ||
| 791 | where it needs to start parsing. | ||
| 792 | |||
| 793 | @defvar syntax-begin-function | ||
| 794 | If this is non-@code{nil}, it should be a function that moves to an | ||
| 795 | earlier buffer position where the parser state is equivalent to | ||
| 796 | @code{nil}---in other words, a position outside of any comment, | ||
| 797 | string, or parenthesis. @code{syntax-ppss} uses it to further | ||
| 798 | optimize its computations, when the cache gives no help. | ||
| 799 | @end defvar | ||
| 800 | |||
| 801 | @node Parser State | 790 | @node Parser State |
| 802 | @subsection Parser State | 791 | @subsection Parser State |
| 803 | @cindex parser state | 792 | @cindex parser state |
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index 9b14dcf8fd9..f90c7d3e8fb 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi | |||
| @@ -84,7 +84,9 @@ such as @command{bash}, @command{zsh}, @command{rc}, or | |||
| 84 | * Concept Index:: | 84 | * Concept Index:: |
| 85 | * Function and Variable Index:: | 85 | * Function and Variable Index:: |
| 86 | * Command Index:: | 86 | * Command Index:: |
| 87 | @ignore | ||
| 87 | * Key Index:: | 88 | * Key Index:: |
| 89 | @end ignore | ||
| 88 | @end menu | 90 | @end menu |
| 89 | 91 | ||
| 90 | @node Introduction | 92 | @node Introduction |
| @@ -670,6 +672,12 @@ page long. If that occurs to you, search for configuration options | |||
| 670 | for calling @samp{less} without the @samp{-F} option. For Git, you | 672 | for calling @samp{less} without the @samp{-F} option. For Git, you |
| 671 | can do that using @samp{git config --global core.pager 'less -+F'}. | 673 | can do that using @samp{git config --global core.pager 'less -+F'}. |
| 672 | 674 | ||
| 675 | @vindex eshell-destroy-buffer-when-process-dies | ||
| 676 | If you want the buffers created by visual programs killed when the | ||
| 677 | program exits, customize the variable | ||
| 678 | @code{eshell-destroy-buffer-when-process-dies} to a non-@code{nil} | ||
| 679 | value; the default is @code{nil}. | ||
| 680 | |||
| 673 | @section Redirection | 681 | @section Redirection |
| 674 | Redirection is mostly the same in Eshell as it is in other command | 682 | Redirection is mostly the same in Eshell as it is in other command |
| 675 | shells. The output redirection operators @code{>} and @code{>>} as | 683 | shells. The output redirection operators @code{>} and @code{>>} as |
| @@ -682,6 +690,8 @@ The buffer redirection operator, @code{>>>}, expects a buffer object | |||
| 682 | on the right-hand side, into which it inserts the output of the | 690 | on the right-hand side, into which it inserts the output of the |
| 683 | left-hand side. e.g., @samp{echo hello >>> #<buffer *scratch*>} | 691 | left-hand side. e.g., @samp{echo hello >>> #<buffer *scratch*>} |
| 684 | inserts the string @code{"hello"} into the @file{*scratch*} buffer. | 692 | inserts the string @code{"hello"} into the @file{*scratch*} buffer. |
| 693 | The convenience shorthand variant @samp{#<@var{buffer-name}>}, as in | ||
| 694 | @samp{#<*scratch*>}, is also accepted. | ||
| 685 | 695 | ||
| 686 | @code{eshell-virtual-targets} is a list of mappings of virtual device | 696 | @code{eshell-virtual-targets} is a list of mappings of virtual device |
| 687 | names to functions. Eshell comes with two virtual devices: | 697 | names to functions. Eshell comes with two virtual devices: |
| @@ -1241,8 +1251,13 @@ Since it keeps the cursor up where the command was invoked. | |||
| 1241 | 1251 | ||
| 1242 | @printindex cm | 1252 | @printindex cm |
| 1243 | 1253 | ||
| 1254 | @c There are no @kindex entries in this manual; avoid generating an | ||
| 1255 | @c empty menu. | ||
| 1256 | @ignore | ||
| 1244 | @node Key Index | 1257 | @node Key Index |
| 1245 | @unnumbered Key Index | 1258 | @unnumbered Key Index |
| 1246 | 1259 | ||
| 1247 | @printindex ky | 1260 | @printindex ky |
| 1261 | @end ignore | ||
| 1262 | |||
| 1248 | @bye | 1263 | @bye |