diff options
Diffstat (limited to 'doc/emacs')
55 files changed, 539 insertions, 327 deletions
diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1 index 469fdc39cea..ecb0cb7700e 100644 --- a/doc/emacs/ChangeLog.1 +++ b/doc/emacs/ChangeLog.1 @@ -10919,7 +10919,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2015 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2016 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index 7630780be6c..aeb80a8a04e 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994, 1996-2015 Free Software Foundation, Inc. +# Copyright (C) 1994, 1996-2016 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi index 695ffa8d1cd..e0441a1984d 100644 --- a/doc/emacs/abbrevs.texi +++ b/doc/emacs/abbrevs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Abbrevs diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index 4d53456d0f0..6a0a289e1da 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1994-1997, 1999-2015 Free Software Foundation, Inc. +@c Copyright (C) 1994-1997, 1999-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @node Acknowledgments diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi index d702ff78b7c..26e3d2e337f 100644 --- a/doc/emacs/anti.texi +++ b/doc/emacs/anti.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2005-2015 Free Software Foundation, Inc. +@c Copyright (C) 2005-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Antinews diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi index 69431c65983..7b0b6d2f63a 100644 --- a/doc/emacs/arevert-xtra.texi +++ b/doc/emacs/arevert-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index e5d34c62a57..68581d03a85 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Basic diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index ae64fefbb70..1efd1d98d7b 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Buffers diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index fbef9feb5a6..3fa89d9062d 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Building @@ -360,8 +360,8 @@ that specifies how to run @command{grep}. Use the same arguments you would give @command{grep} when running it normally: a @command{grep}-style regexp (usually in single-quotes to quote the shell's special characters) followed by file names, which may use wildcards. If you -specify a prefix argument for @kbd{M-x grep}, it finds the tag -(@pxref{Tags}) in the buffer around point, and puts that into the +specify a prefix argument for @kbd{M-x grep}, it finds the identifier +(@pxref{Xref}) in the buffer around point, and puts that into the default @command{grep} command. Your command need not simply run @command{grep}; you can use any shell diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi index 3b5b3c58a65..2dff8c9b869 100644 --- a/doc/emacs/cal-xtra.texi +++ b/doc/emacs/cal-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -*- coding: utf-8 -*- -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi index bc13d4ba296..0fc18fcbbcf 100644 --- a/doc/emacs/calendar.texi +++ b/doc/emacs/calendar.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -*- coding: utf-8 -*- -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Calendar/Diary diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index fcaf87f1709..a1b0b098f22 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Emacs Invocation diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi index 98e12531253..cf5ce1459c0 100644 --- a/doc/emacs/commands.texi +++ b/doc/emacs/commands.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index fc405e3a147..670848c65a1 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Customization diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi index 2b9ddae2654..e91aa8ce168 100644 --- a/doc/emacs/dired-xtra.texi +++ b/doc/emacs/dired-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index 04cef3848db..92c1fd5a041 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Dired @@ -785,8 +785,8 @@ Search all the specified files for the regular expression @var{regexp} (@code{dired-do-search}). This command is a variant of @code{tags-search}. The search stops at -the first match it finds; use @kbd{M-,} to resume the search and find -the next match. @xref{Tags Search}. +the first match it finds; use @kbd{M-x tags-loop-continue} to resume +the search and find the next match. @xref{Identifier Search}. @kindex Q @r{(Dired)} @findex dired-do-query-replace-regexp @@ -797,8 +797,8 @@ replacing matches for @var{regexp} with the string @var{to} (@code{dired-do-query-replace-regexp}). This command is a variant of @code{tags-query-replace}. If you exit the -query replace loop, you can use @kbd{M-,} to resume the scan and replace -more matches. @xref{Tags Search}. +query replace loop, you can use @kbd{M-x tags-loop-continue} to resume +the scan and replace more matches. @xref{Identifier Search}. @end table @node Shell Commands in Dired diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index a722ec4841b..1b75a15427c 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @@ -1164,12 +1164,15 @@ indicate-empty-lines t)}. @cindex mode, Whitespace @findex whitespace-mode @vindex whitespace-style +@findex whitespace-toggle-options Whitespace mode is a buffer-local minor mode that lets you visualize many kinds of whitespace in the buffer, by either drawing the whitespace characters with a special face or displaying them as special glyphs. To toggle this mode, type @kbd{M-x whitespace-mode}. The kinds of whitespace visualized are determined -by the list variable @code{whitespace-style}. Here is a partial list +by the list variable @code{whitespace-style}. Individual elements in +that list can be toggled on or off in the current buffer by typing +@w{@kbd{M-x whitespace-toggle-options}}. Here is a partial list of possible elements (see the variable's documentation for the full list): @@ -1200,6 +1203,13 @@ Highlight newlines. @item empty Highlight empty lines. +@item big-indent +@vindex whitespace-big-indent-regexp +Highlight too-deep indentation. By default any sequence of at least 4 +consecutive TAB characters or 32 consecutive SPC characters is +highlighted. To change that, customize the regular expression +@code{whitespace-big-indent-regexp}. + @item space-mark Draw space and non-breaking characters with a special glyph. @@ -1210,6 +1220,12 @@ Draw tab characters with a special glyph. Draw newline characters with a special glyph. @end table +@findex global-whitespace-toggle-options +@findex global-whitespace-mode +Global Whitespace mode is a global minor mode that lets you visualize +whitespace in all buffers. To toggle individual features, use +@kbd{M-x global-whitespace-toggle-options}. + @node Selective Display @section Selective Display @cindex selective display diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi index 3490c08d275..786ba6584ba 100644 --- a/doc/emacs/emacs-xtra.texi +++ b/doc/emacs/emacs-xtra.texi @@ -12,7 +12,7 @@ @copying This manual describes specialized features of Emacs. -Copyright @copyright{} 2004--2015 Free Software Foundation, Inc. +Copyright @copyright{} 2004--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 0030467cdce..5ef938566de 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -27,7 +27,7 @@ This is the @cite{GNU Emacs Manual}, @end ifnottex updated for Emacs version @value{EMACSVER}. -Copyright @copyright{} 1985--1987, 1993--2015 Free Software Foundation, Inc. +Copyright @copyright{} 1985--1987, 1993--2016 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -788,8 +788,8 @@ Maintaining Large Programs * Version Control:: Using version control systems. * Change Log:: Maintaining a change history for your program. -* Tags:: Go directly to any function in your program in one - command. Tags remembers which file it is in. +* Xref:: Find definitions and references of any function, + method, struct, macro, @dots{} in your program. * EDE:: An integrated development environment for Emacs. @ifnottex * Emerge:: A convenient way of merging two versions of a program. @@ -861,15 +861,25 @@ Change Logs * Change Log Commands:: Commands for editing change log files. * Format of ChangeLog:: What the change log file looks like. +Xref + +* Find Identifiers:: Commands to find where an identifier is defined + or referenced, to list identifiers, etc. +* Tags Tables:: Tags table records which file defines a symbol. +* Select Tags Table:: How to visit a specific tags table. + +Find Identifiers + +* Looking Up Identifiers:: Commands to find the definition of a specific tag. +* Xref Commands:: Commands in the @file{*xref*} buffer. +* Identifier Search:: Searching and replacing identifiers. +* List Identifiers:: Listing identifiers and completing on them. + Tags Tables * Tag Syntax:: Tag syntax for various types of code and text files. * Create Tags Table:: Creating a tags table with @command{etags}. * Etags Regexps:: Create arbitrary tags using regular expressions. -* Select Tags Table:: How to visit a tags table. -* Find Tag:: Commands to find the definition of a specific tag. -* Tags Search:: Using a tags table for searching and replacing. -* List Tags:: Using tags for completion, and listing them. @ifnottex Merging Files with Emerge diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi index 836b27c5002..d56fbaee73c 100644 --- a/doc/emacs/emerge-xtra.texi +++ b/doc/emacs/emerge-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/entering.texi b/doc/emacs/entering.texi index 8b8a9189626..3e936e73944 100644 --- a/doc/emacs/entering.texi +++ b/doc/emacs/entering.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index 4f7596e058c..bfa55d38701 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Files diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi index 993f0dce1cc..b398a7dbfb8 100644 --- a/doc/emacs/fixit.texi +++ b/doc/emacs/fixit.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Fixit diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi index 870bfcd2169..5763c9f379e 100644 --- a/doc/emacs/fortran-xtra.texi +++ b/doc/emacs/fortran-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index acfdfe25cb2..5fbe0fc5774 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Frames @@ -416,9 +416,9 @@ Start composing a mail message in another frame. This runs @code{compose-mail-other-frame}. It is the other-frame variant of @kbd{C-x m}. @xref{Sending Mail}. @item C-x 5 . -Find a tag in the current tag table in another frame. This runs -@code{find-tag-other-frame}, the multiple-frame variant of @kbd{M-.}. -@xref{Tags}. +Find the definition of an identifier in another frame. This runs +@code{xref-find-definitions-other-frame}, the multiple-frame variant +of @kbd{M-.}. @xref{Xref}. @item C-x 5 r @var{filename} @key{RET} @kindex C-x 5 r @findex find-file-read-only-other-frame diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index cc81101d67a..bce97dacee2 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Glossary @@ -1329,7 +1329,7 @@ indentation or completion. @anchor{Glossary---Tags Table} @item Tags Table A tags table is a file that serves as an index to the function -definitions in one or more other files. @xref{Tags}. +definitions in one or more other files. @xref{Tags Tables}. @item Termscript File A termscript file contains a record of all characters sent by Emacs to diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi index 3c23b9c6048..282d24d5bbb 100644 --- a/doc/emacs/gnu.texi +++ b/doc/emacs/gnu.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1985-1987, 1993, 1995, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993, 1995, 2001-2016 Free Software @c Foundation, Inc. @c @c Permission is granted to anyone to make or distribute verbatim copies diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi index 25e783f6ed7..ed813ff0bf6 100644 --- a/doc/emacs/help.texi +++ b/doc/emacs/help.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Help diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi index 76dfa55211d..f9f231d762c 100644 --- a/doc/emacs/indent.texi +++ b/doc/emacs/indent.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Indentation diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 9761ac7d11c..dd3671c95f1 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi index 2cbcc8b3d54..a6344c049c1 100644 --- a/doc/emacs/kmacro.texi +++ b/doc/emacs/kmacro.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Keyboard Macros diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi index 795d6fe373b..9e5f50b5e91 100644 --- a/doc/emacs/m-x.texi +++ b/doc/emacs/m-x.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node M-x diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index c04682586ce..71d2e99950c 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2000-2015 Free Software Foundation, Inc. +@c Copyright (C) 2000-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mac OS / GNUstep @appendix Emacs and Mac OS / GNUstep diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 801d147845b..8842b8ea2f5 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1,21 +1,46 @@ @c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Maintaining @chapter Maintaining Large Programs - This chapter describes Emacs features for maintaining large -programs. If you are maintaining a large Lisp program, then in -addition to the features described here, you may find -the Emacs Lisp Regression Testing (ERT) library useful -(@pxref{Top,,ERT,ert, Emacs Lisp Regression Testing}). + This chapter describes Emacs features for maintaining medium- to +large-size programs and packages. These features include: + +@itemize @minus +@item +Unified interface to Support for Version Control Systems +(@acronym{VCS}) that record the history of changes to source files. + +@item +A specialized mode for maintaining @file{ChangeLog} files that provide +a chronological log of program changes. + +@item +@acronym{Xref}, a set of commands for displaying definitions of +symbols (a.k.a.@: ``identifiers'') and their references. + +@item +@acronym{EDE}, the Emacs's own IDE. + +@ifnottex +@item +A mode for merging changes to program sources made on separate +branches of development. +@end ifnottex +@end itemize + +If you are maintaining a large Lisp program, then in addition to the +features described here, you may find the Emacs Lisp Regression +Testing (@acronym{ERT}) library useful (@pxref{Top,,ERT,ert, Emacs +Lisp Regression Testing}). @menu * Version Control:: Using version control systems. * Change Log:: Maintaining a change history for your program. -* Tags:: Go directly to any function in your program in one - command. Tags remembers which file it is in. +* Xref:: Find definitions and references of any function, + method, struct, macro, @dots{} in your program. * EDE:: An integrated development environment for Emacs. @ifnottex * 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. @noindent Of course, you should substitute the proper years and copyright holder. -@node Tags -@section Tags Tables -@cindex tags and tag tables +@node Xref +@section Find Identifier Definitions and References +@cindex xref + + An @dfn{identifier} is a syntactic elements of the program: a +function, a subroutine, a method, a class, a data type, a macro, etc. +In a programming language, each identifier is a symbol in the +language's syntax. Many program development tools provide +capabilities to extract references to identifiers from source files, +record them on specialized data bases, and then use those data bases +to quickly find where each identifier was defined and referenced. + +Emacs provides a unified user interface to these tools, called +@samp{xref}. The tools supported by @samp{xref} include: + +@enumerate a +@item +Some major modes provide built-in means for looking up the language +symbols. For example, Emacs Lisp symbols can be identified by +searching the package load history, maintained by the Emacs Lisp +interpreter, and by consulting the built-in documentation strings; the +Emacs Lisp mode uses these facilities to find definitions of symbols. + +@item +Etags, the command for tagging identifier definitions which is part of +the Emacs distribution. @xref{Create Tags Table}. + +@item +@acronym{GNU} GLOBAL, the source code tagging system, which provides +the @command{gtags} command and associated utilities. @xref{Command +Line, gtags, , global, GNU GLOBAL source code tag system}. + +@item +Cscope (@uref{http://cscope.sourceforge.net/}, a tool for browsing +source code. + +@item +@acronym{GNU} IDUtils, a package for generating databases of +identifier references and querying those databases. @xref{Top,,, +idutils, ID database utilities}. + +@item +Grep, the venerable program that searches files for lines matching +patterns. @xref{Invoking,,, grep, GNU Grep Manual}. +@end enumerate + +@noindent +Additional tools could be supported as they become available, or as +user extensions. Each such tool is used as a @dfn{backend} by +commands described in this section. Each command detects which +backends are available for the current major mode, and uses the most +capable of the available backends, with Grep generally serving as the +fall-back backend. + +@cindex tag +The commands described here are useful for finding references in major +modes other than those defined to support programming languages. For +example, chapters, sections, appendices, etc. of a text or a @TeX{} +document can be treated as identifiers as well. In this chapter, we +collectively refer to a reference that specifies the name of the file +where the corresponding subunit is defined, and the position of the +subunit's definition in that file, as a @dfn{tag}. We refer to the +backends used by @code{xref} as @dfn{tagging backends}. + +@menu +* Find Identifiers:: Commands to find where an identifier is defined + or referenced, to list identifiers, etc. +* Tags Tables:: Tags table records which file defines a symbol. +* Select Tags Table:: How to visit a specific tags table. +@end menu + +@node Find Identifiers +@subsection Find Identifiers + + This subsection describes the commands that use the tagging backends +in order to find definitions of identifiers, references to +identifiers, and perform various queries about identifiers. With most +backends, these definitions and references were recorded as tags in +the database created and maintained by the backend. + +@menu +* Looking Up Identifiers:: Commands to find the definition of a specific tag. +* Xref Commands:: Commands in the @file{*xref*} buffer. +* Identifier Search:: Searching and replacing identifiers. +* List Identifiers:: Listing identifiers and completing on them. +@end menu + +@node Looking Up Identifiers +@subsubsection Looking Up Identifiers +@cindex find definition of symbols +@cindex identifier, finding definition of +@cindex find references to symbols + + The most important thing that @code{xref} enables you to do is to find +the definition of a specific identifier. + +@table @kbd +@item M-.@: +Find definitions of an identifier (@code{xref-find-definitions}). +@item C-M-. @var{pattern} @key{RET} +Find all identifiers whose name matches @var{pattern} +(@code{xref-find-apropos}). +@item C-x 4 .@: @key{RET} +Find definitions of identifier, but display it in another window +(@code{xref-find-definitions-other-window}). +@item C-x 5 .@: @key{RET} +Find definition of identifier, and display it in a new frame +(@code{xref-find-definitions-other-frame}). +@item M-, +Pop back to where you previously invoked @kbd{M-.} and friends +(@code{xref-pop-marker-stack}). +@end table + +@kindex M-. +@findex xref-find-definitions + @kbd{M-.}@: (@code{xref-find-definitions}) shows the definitions of +the identifier at point. With a prefix argument, or if there's no +valid identifier at point, it prompts for the identifier. If the +identifier has only one definition, the command jumps to it. If the +identifier has more than one possible definition (e.g., in an +object-oriented language, or if there's a function and a variable by +the same name), the command shows the candidate definitions in a +@file{*xref*} buffer, together with the files in which these +definitions are found. Selecting one of these candidates by typing +@kbd{@key{RET}} or clicking @kbd{Mouse-2} will pop a buffer showing +the corresponding definition. + + When entering the identifier argument to @kbd{M-.}, the usual +minibuffer completion commands can be used (@pxref{Completion}), with +the known identifier names as completion candidates. - A @dfn{tag} is a reference to a subunit in a program or in a -document. In source code, tags reference syntactic elements of the -program: functions, subroutines, data types, macros, etc. In a -document, tags reference chapters, sections, appendices, etc. Each -tag specifies the name of the file where the corresponding subunit is -defined, and the position of the subunit's definition in that file. +@kindex C-x 4 . +@findex xref-find-definitions-other-window +@kindex C-x 5 . +@findex xref-find-definitions-other-frame + Like most commands that can switch buffers, +@code{xref-find-definitions} has a variant that displays the new +buffer in another window, and one that makes a new frame for it. The +former is @w{@kbd{C-x 4 .}} +(@code{xref-find-definitions-other-window}), and the latter is +@w{@kbd{C-x 5 .}} (@code{xref-find-definitions-other-frame}). + +@findex xref-find-apropos +@kindex C-M-. + The command @kbd{C-M-.} (@code{xref-find-apropos}) finds the +definitions of one or more identifiers that match a specified regular +expression. It is just like @kbd{M-.} except that it does regexp +matching of identifiers instead of symbol name matching. + + When any of the above commands finds more than one definition, it +presents the @file{*xref*} buffer showing the definition candidates. +In that buffer, you have several specialized commands, described in +@ref{Xref Commands}. + +@kindex M-, +@findex xref-pop-marker-stack +@vindex xref-marker-ring-length + To go back to places @emph{from where} you found the definition, +use @kbd{M-,} (@code{xref-pop-marker-stack}). It jumps back to the +point of the last invocation of @kbd{M-.}. Thus you can find and +examine the definition of something with @kbd{M-.} and then return to +where you were with @kbd{M-,}. @kbd{M-,} allows you to retrace your +steps to a depth determined by the variable +@code{xref-marker-ring-length}, which defaults to 16. + +@node Xref Commands +@subsubsection Commands Available in the @file{*xref*} Buffer +@cindex commands in @file{*xref*} buffers +@cindex XREF mode + + The following commands are provided in the @file{*xref*} buffer by +the special XREF mode: + +@table @kbd +@item @key{RET} +@itemx Mouse-2 +Display the reference on the current line and bury the @file{*xref*} +buffer. +@item n +@itemx . +@findex xref-next-line +Move to the next reference and display it in the other window +(@code{xref-next-line}). +@item p +@itemx , +@findex xref-prev-line +Move to the previous reference and display it in the other window +(@code{xref-prev-line}). +@item C-o +@findex xref-show-location-at-point +Display the reference on the current line in the other window +(@code{xref-show-location-at-point}). +@findex xref-query-replace +@item r @var{pattern} @key{RET} @var{replacement} @key{RET} +Perform interactive query-replace on references that match +@var{pattern} (@code{xref-query-replace}), replacing the match with +@var{replacement}. @xref{Identifier Search}. +@findex xref-quit +@item q +Quit the window showing the @file{*xref*} buffer (@code{xref-quit}). +@end table + +In addition, the usual navigation commands, such as the arrow keys, +@kbd{C-n}, and @kbd{C-p} are available for moving around the buffer +without displaying the references. + +@node Identifier Search +@subsubsection Searching and Replacing with Identifiers +@cindex search and replace in multiple files +@cindex multiple-file search and replace + + The commands in this section visit and search all the files listed +in the @code{xref} backend's database, one by one. For these +commands, the database serves only to specify a sequence of files to +search. These commands scan all the databases starting with the first +one (if any) that describes the current file, proceed from there to +the end of the list, and then scan from the beginning of the list +until they have covered all the databases in the list. + +@table @kbd +@item M-? +Find all the references for the identifier at point. +@item M-x xref-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} +Interactively replace @var{regexp} with @var{replacement} in the names +of all the identifiers shown in the @file{*xref*} buffer. +@item M-x tags-search @key{RET} @var{regexp} @key{RET} +Search for @var{regexp} through the files in the selected tags +table. +@item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} +Perform a @code{query-replace-regexp} on each file in the selected tags table. +@item M-x tags-loop-continue +Restart one of the last 2 commands above, from the current location of point. +@end table + +@kindex M-? +@findex xref-find-references + @kbd{M-?} finds all the references for the identifier at point. If +there's no valid identifier at point, or when invoked with a prefix +argument, the command prompts for the identifier, with completion. It +then presents a @file{*xref*} buffer with all the references to the +identifier, showing the file name and the line where the identifier is +referenced. The XREF mode commands are available in this buffer, see +@ref{Xref Commands}. + +@findex xref-query-replace + @kbd{M-x xref-query-replace} reads a regexp to match identifier +names and a string to replace with, just like ordinary @kbd{M-x +query-replace-regexp}. It then performs the specified replacement in +the names of the matching identifiers in all the places in all the +files where these identifiers are referenced. This is useful when you +rename your identifiers as part of refactoring. This command should +be invoked in the @file{*xref*} buffer generated by @code{M-?}. + +@findex tags-search + @kbd{M-x tags-search} reads a regexp using the minibuffer, then +searches for matches in all the files in the selected tags table, one +file at a time. It displays the name of the file being searched so +you can follow its progress. As soon as it finds an occurrence, +@code{tags-search} returns. This command works only with the etags +backend, and requires tags tables to be available (@pxref{Tags +Tables}). + +@findex tags-loop-continue + Having found one match, you probably want to find all the rest. +Type @kbd{M-x tags-loop-continue}) to resume the @code{tags-search}, +finding one more match. This searches the rest of the current buffer, +followed by the remaining files of the tags table. + +@findex tags-query-replace + @kbd{M-x tags-query-replace} performs a single +@code{query-replace-regexp} through all the files in the tags table. It +reads a regexp to search for and a string to replace with, just like +ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x +tags-search}, but repeatedly, processing matches according to your +input. @xref{Query Replace}, for more information on query replace. +This command works only with the etags backend. + +@vindex tags-case-fold-search +@cindex case-sensitivity and tags search + You can control the case-sensitivity of tags search commands by +customizing the value of the variable @code{tags-case-fold-search}. The +default is to use the same setting as the value of +@code{case-fold-search} (@pxref{Lax Search}). + + It is possible to get through all the files in the tags table with a +single invocation of @kbd{M-x tags-query-replace}. But often it is +useful to exit temporarily, which you can do with any input event that +has no special query replace meaning. You can resume the query +replace subsequently by typing @kbd{M-x tags-loop-continue}; this +command resumes the last tags search or replace command that you did. +For instance, to skip the rest of the current file, you can type +@kbd{M-> M-x tags-loop-continue}. + + The commands in this section carry out much broader searches than +the @code{xref-find-definitions} family. The +@code{xref-find-definitions} commands search only for definitions of +identifiers that match your string or regexp. The commands +@code{tags-search} and @code{tags-query-replace} find every occurrence +of the regexp, as ordinary search commands and replace commands do in +the current buffer. + + As an alternative to @code{tags-search}, you can run @command{grep} +as a subprocess and have Emacs show you the matching lines one by one. +@xref{Grep Searching}. + +@node List Identifiers +@subsubsection Identifier Inquiries + +@table @kbd +@item C-M-i +@itemx M-@key{TAB} +Perform completion on the text around point, using the @code{xref} +backend if one is available (@code{completion-at-point}). +@item M-x list-tags @key{RET} @var{file} @key{RET} +Display a list of the tags defined in the program file @var{file}. +@item M-x xref-find-apropos @key{RET} @var{regexp} @key{RET} +Display a list of all known identifiers matching @var{regexp}. +@end table + +@cindex completion (symbol names) + In most programming language modes, you can type @kbd{C-M-i} or +@kbd{M-@key{TAB}} (@code{completion-at-point}) to complete the symbol +at point. If there is an @code{xref} backend available, this command +can use it to generate completion candidates more intelligently. +@xref{Symbol Completion}. + +@findex list-tags + @kbd{M-x list-tags} reads the name of one of the files covered by +the selected tags table, and displays a list of tags defined in that +file. Do not include a directory as part of the file name unless the +file name recorded in the tags table includes a directory. This +command works only with the etags backend, and requires a tags table +for the project to be available. @xref{Tags Tables}. + +@c Sadly, the new-and-improved Xref feature doesn't provide anything +@c close to the described below features of the now-obsoleted +@c tags-apropos. I'm leaving this here to encourage enhancements to +@c xref.el. +@ignore +@findex tags-apropos +@vindex tags-apropos-verbose +@vindex tags-tag-face +@vindex tags-apropos-additional-actions + @kbd{M-x tags-apropos} is like @code{apropos} for tags +(@pxref{Apropos}). It displays a list of tags in the selected tags +table whose entries match @var{regexp}. If the variable +@code{tags-apropos-verbose} is non-@code{nil}, it displays the names +of the tags files together with the tag names. You can customize the +appearance of the output by setting the variable @code{tags-tag-face} +to a face. You can display additional output by customizing the +variable @code{tags-apropos-additional-actions}; see its documentation +for details. +@end ignore + +@findex next-file + @kbd{M-x next-file} visits files covered by the selected tags table. +The first time it is called, it visits the first file covered by the +table. Each subsequent call visits the next covered file, unless a +prefix argument is supplied, in which case it returns to the first +file. This command works only with the etags backend. + +@node Tags Tables +@subsection Tags Tables +@cindex tags and tag tables A @dfn{tags table} records the tags extracted by scanning the source code of a certain program or a certain document. Tags extracted from @@ -1685,12 +2064,14 @@ source files. on a document or the source code file. The @samp{etags} program writes the tags to a @dfn{tags table file}, or @dfn{tags file} in short. The conventional name for a tags file is @file{TAGS}@. -@xref{Create Tags Table}. +@xref{Create Tags Table}. (It is also possible to create a tags table +by using one of the commands from other packages that can produce such +tables in the same format.) - Emacs provides many commands for searching and replacing using the -information recorded in tags tables. For instance, the @kbd{M-.} -(@code{find-tag}) jumps to the location of a specified function -definition in its source file. @xref{Find Tag}. + Emacs uses the tags tables via the @code{etags} package as one of +the supported backends for @code{xref}. Because tags tables are +produced by the @command{etags} command that is part of an Emacs +distribution, we describe tags tables in more detail here. @cindex C++ class browser, tags @cindex tags, C++ @@ -1706,14 +2087,10 @@ use tags, separate from the @command{etags} facility. * Tag Syntax:: Tag syntax for various types of code and text files. * Create Tags Table:: Creating a tags table with @command{etags}. * Etags Regexps:: Create arbitrary tags using regular expressions. -* Select Tags Table:: How to visit a tags table. -* Find Tag:: Commands to find the definition of a specific tag. -* Tags Search:: Using a tags table for searching and replacing. -* List Tags:: Using tags for completion, and listing them. @end menu @node Tag Syntax -@subsection Source File Tag Syntax +@subsubsection Source File Tag Syntax Here is how tag syntax is defined for the most popular languages: @@ -1883,13 +2260,17 @@ line. @item In Python code, @code{def} or @code{class} at the beginning of a line generate a tag. + +@item +In Ruby code, @code{def} or @code{class} or @code{module} at the +beginning of a line generate a tag. @end itemize You can also generate tags based on regexp matching (@pxref{Etags Regexps}) to handle other formats and languages. @node Create Tags Table -@subsection Creating Tags Tables +@subsubsection Creating Tags Tables @cindex @command{etags} program 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 files. If the tags file is @file{-} or is in the @file{/dev} directory, however, the file names are made relative to the current working directory. This is useful, for -example, when writing the tags to @file{/dev/stdout}. +example, when writing the tags to the standard output. When using a relative file name, it should not be a symbolic link 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 @var{lang}. @node Etags Regexps -@subsection Etags Regexps +@subsubsection Etags Regexps The @samp{--regex} option to @command{etags} allows tags to be recognized by regular expression matching. You can intermix this @@ -2151,7 +2532,7 @@ etags --language=none \ @subsection Selecting a Tags Table @findex visit-tags-table - Emacs has at any time one @dfn{selected} tags table. All the + Emacs has at any time at most one @dfn{selected} tags table. All the commands for working with tags tables use the selected one. To select a tags table, type @kbd{M-x visit-tags-table}, which reads the tags table file name as an argument, with @file{TAGS} in the default @@ -2192,212 +2573,6 @@ table mentions that file, as explained above. Do not set both @code{tags-file-name} and @code{tags-table-list}. -@node Find Tag -@subsection Finding a Tag - - The most important thing that a tags table enables you to do is to find -the definition of a specific tag. - -@table @kbd -@item M-.@: @var{tag} @key{RET} -Find first definition of @var{tag} (@code{find-tag}). -@item C-u M-. -Find next alternate definition of last tag specified. -@item C-u - M-. -Go back to previous tag found. -@item C-M-. @var{pattern} @key{RET} -Find a tag whose name matches @var{pattern} (@code{find-tag-regexp}). -@item C-u C-M-. -Find the next tag whose name matches the last pattern used. -@item C-x 4 .@: @var{tag} @key{RET} -Find first definition of @var{tag}, but display it in another window -(@code{find-tag-other-window}). -@item C-x 5 .@: @var{tag} @key{RET} -Find first definition of @var{tag}, and create a new frame to select the -buffer (@code{find-tag-other-frame}). -@item M-* -Pop back to where you previously invoked @kbd{M-.} and friends. -@end table - -@kindex M-. -@findex find-tag - @kbd{M-.}@: (@code{find-tag}) prompts for a tag name and jumps to -its source definition. It works by searching through the tags table -for that tag's file and approximate character position, visiting that -file, and searching for the tag definition at ever-increasing -distances away from the recorded approximate position. - - When entering the tag argument to @kbd{M-.}, the usual minibuffer -completion commands can be used (@pxref{Completion}), with the tag -names in the selected tags table as completion candidates. If you -specify an empty argument, the balanced expression in the buffer -before or around point is the default argument. @xref{Expressions}. - - You don't need to give @kbd{M-.} the full name of the tag; a part -will do. @kbd{M-.} finds tags which contain that argument as a -substring. However, it prefers an exact match to a substring match. -To find other tags that match the same substring, give @code{find-tag} -a numeric argument, as in @kbd{C-u M-.} or @kbd{M-0 M-.}; this does -not read a tag name, but continues searching the tags table's text for -another tag containing the same substring last used. - -@kindex C-x 4 . -@findex find-tag-other-window -@kindex C-x 5 . -@findex find-tag-other-frame - Like most commands that can switch buffers, @code{find-tag} has a -variant that displays the new buffer in another window, and one that -makes a new frame for it. The former is @w{@kbd{C-x 4 .}} -(@code{find-tag-other-window}), and the latter is @w{@kbd{C-x 5 .}} -(@code{find-tag-other-frame}). - - To move back to previous tag definitions, use @kbd{C-u - M-.}; more -generally, @kbd{M-.} with a negative numeric argument. Similarly, -@w{@kbd{C-x 4 .}} with a negative argument finds the previous tag -location in another window. - -@kindex M-* -@findex pop-tag-mark -@vindex find-tag-marker-ring-length - As well as going back to places you've found tags recently, you can -go back to places @emph{from where} you found them, using @kbd{M-*} -(@code{pop-tag-mark}). Thus you can find and examine the definition -of something with @kbd{M-.} and then return to where you were with -@kbd{M-*}. - - Both @kbd{C-u - M-.} and @kbd{M-*} allow you to retrace your steps to -a depth determined by the variable @code{find-tag-marker-ring-length}. - -@findex find-tag-regexp -@kindex C-M-. - The command @kbd{C-M-.} (@code{find-tag-regexp}) visits the tags that -match a specified regular expression. It is just like @kbd{M-.} except -that it does regexp matching instead of substring matching. - -@node Tags Search -@subsection Searching and Replacing with Tags Tables -@cindex search and replace in multiple files -@cindex multiple-file search and replace - - The commands in this section visit and search all the files listed -in the selected tags table, one by one. For these commands, the tags -table serves only to specify a sequence of files to search. These -commands scan the list of tags tables starting with the first tags -table (if any) that describes the current file, proceed from there to -the end of the list, and then scan from the beginning of the list -until they have covered all the tables in the list. - -@table @kbd -@item M-x tags-search @key{RET} @var{regexp} @key{RET} -Search for @var{regexp} through the files in the selected tags -table. -@item M-x tags-query-replace @key{RET} @var{regexp} @key{RET} @var{replacement} @key{RET} -Perform a @code{query-replace-regexp} on each file in the selected tags table. -@item M-, -Restart one of the commands above, from the current location of point -(@code{tags-loop-continue}). -@end table - -@findex tags-search - @kbd{M-x tags-search} reads a regexp using the minibuffer, then -searches for matches in all the files in the selected tags table, one -file at a time. It displays the name of the file being searched so you -can follow its progress. As soon as it finds an occurrence, -@code{tags-search} returns. - -@kindex M-, -@findex tags-loop-continue - Having found one match, you probably want to find all the rest. -Type @kbd{M-,} (@code{tags-loop-continue}) to resume the -@code{tags-search}, finding one more match. This searches the rest of -the current buffer, followed by the remaining files of the tags table. - -@findex tags-query-replace - @kbd{M-x tags-query-replace} performs a single -@code{query-replace-regexp} through all the files in the tags table. It -reads a regexp to search for and a string to replace with, just like -ordinary @kbd{M-x query-replace-regexp}. It searches much like @kbd{M-x -tags-search}, but repeatedly, processing matches according to your -input. @xref{Query Replace}, for more information on query replace. - -@vindex tags-case-fold-search -@cindex case-sensitivity and tags search - You can control the case-sensitivity of tags search commands by -customizing the value of the variable @code{tags-case-fold-search}. The -default is to use the same setting as the value of -@code{case-fold-search} (@pxref{Lax Search}). - - It is possible to get through all the files in the tags table with a -single invocation of @kbd{M-x tags-query-replace}. But often it is -useful to exit temporarily, which you can do with any input event that -has no special query replace meaning. You can resume the query -replace subsequently by typing @kbd{M-,}; this command resumes the -last tags search or replace command that you did. For instance, to -skip the rest of the current file, you can type @kbd{M-> M-,}. - - The commands in this section carry out much broader searches than the -@code{find-tag} family. The @code{find-tag} commands search only for -definitions of tags that match your substring or regexp. The commands -@code{tags-search} and @code{tags-query-replace} find every occurrence -of the regexp, as ordinary search commands and replace commands do in -the current buffer. - - These commands create buffers only temporarily for the files that they -have to search (those which are not already visited in Emacs buffers). -Buffers in which no match is found are quickly killed; the others -continue to exist. - - As an alternative to @code{tags-search}, you can run @command{grep} -as a subprocess and have Emacs show you the matching lines one by one. -@xref{Grep Searching}. - -@node List Tags -@subsection Tags Table Inquiries - -@table @kbd -@item C-M-i -@itemx M-@key{TAB} -Perform completion on the text around point, using the selected tags -table if one is loaded (@code{completion-at-point}). -@item M-x list-tags @key{RET} @var{file} @key{RET} -Display a list of the tags defined in the program file @var{file}. -@item M-x tags-apropos @key{RET} @var{regexp} @key{RET} -Display a list of all tags matching @var{regexp}. -@end table - -@cindex completion (symbol names) - In most programming language modes, you can type @kbd{C-M-i} or -@kbd{M-@key{TAB}} (@code{completion-at-point}) to complete the symbol -at point. If there is a selected tags table, this command can use it -to generate completion candidates. @xref{Symbol Completion}. - -@findex list-tags - @kbd{M-x list-tags} reads the name of one of the files covered by -the selected tags table, and displays a list of tags defined in that -file. Do not include a directory as part of the file name unless the -file name recorded in the tags table includes a directory. - -@findex tags-apropos -@vindex tags-apropos-verbose -@vindex tags-tag-face -@vindex tags-apropos-additional-actions - @kbd{M-x tags-apropos} is like @code{apropos} for tags -(@pxref{Apropos}). It displays a list of tags in the selected tags -table whose entries match @var{regexp}. If the variable -@code{tags-apropos-verbose} is non-@code{nil}, it displays the names -of the tags files together with the tag names. You can customize the -appearance of the output by setting the variable @code{tags-tag-face} -to a face. You can display additional output by customizing the -variable @code{tags-apropos-additional-actions}; see its documentation -for details. - -@findex next-file - @kbd{M-x next-file} visits files covered by the selected tags table. -The first time it is called, it visits the first file covered by the -table. Each subsequent call visits the next covered file, unless a -prefix argument is supplied, in which case it returns to the first -file. - @node EDE @section Emacs Development Environment @cindex EDE (Emacs Development Environment) diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 09c766be504..98980d5fb3f 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mark @@ -288,7 +288,9 @@ instead signal an error if the mark is inactive. active---for example, typing @kbd{a} inserts the character @samp{a}, then deactivates the mark. If you enable Delete Selection mode, a minor mode, then inserting text while the mark is active causes the -text in the region to be deleted first. To toggle Delete Selection +text in the region to be deleted first. Also, commands that normally +delete just one character, such as @kbd{C-d} or @kbd{@key{DEL}}, will +delete the entire region instead. To toggle Delete Selection mode on or off, type @kbd{M-x delete-selection-mode}. @node Mark Ring diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index 869e06424ad..6ab716d909a 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Minibuffer diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 41dce521c0a..2d8137e832f 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi index 4abbb59e89d..c1564e9299b 100644 --- a/doc/emacs/modes.texi +++ b/doc/emacs/modes.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Modes diff --git a/doc/emacs/msdos-xtra.texi b/doc/emacs/msdos-xtra.texi index c8e266915f0..45edd6cb7f9 100644 --- a/doc/emacs/msdos-xtra.texi +++ b/doc/emacs/msdos-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index f1cdb26a0eb..ea8a24d1cf7 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Microsoft Windows diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index 88bbccd5b11..bcde81b182e 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1997, 1999-2015 Free Software Foundation, Inc. +@c Copyright (C) 1997, 1999-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node International @chapter International Character Set Support diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index 5f80b0afe3f..3c099838059 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Packages diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi index 8a087acd306..b7d3cb34508 100644 --- a/doc/emacs/picture-xtra.texi +++ b/doc/emacs/picture-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 8423b70203c..e4bd85c0ddd 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 1999-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Programs @@ -271,7 +271,7 @@ bindings for that purpose. The Imenu facility offers a way to find the major definitions in a file by name. It is also useful in text formatter major modes, where it treats each chapter, section, etc., as a definition. -(@xref{Tags}, for a more powerful feature that handles multiple files +(@xref{Xref}, for a more powerful feature that handles multiple files together.) @findex imenu @@ -1358,7 +1358,7 @@ the @kbd{M-@key{TAB}} key is usually reserved by the window manager for switching graphical windows, so you should type @kbd{C-M-i} or @kbd{@key{ESC} @key{TAB}} instead. -@cindex tags-based completion +@cindex xref-based completion @findex completion-at-point @cindex Lisp symbol completion @cindex completion (Lisp symbols) @@ -1368,7 +1368,7 @@ which generates its completion list in a flexible way. If Semantic mode is enabled, it tries to use the Semantic parser data for completion (@pxref{Semantic}). If Semantic mode is not enabled or fails at performing completion, it tries to complete using the -selected tags table (@pxref{Tags}). If in Emacs Lisp mode, it +available @code{xref} backend (@pxref{Xref}). If in Emacs Lisp mode, it performs completion using the function, variable, or property names defined in the current Emacs session. @@ -1530,14 +1530,16 @@ with the Foldout package (@pxref{Foldout}). Prettify Symbols mode is a buffer-local minor mode that replaces certain strings with more attractive versions for display purposes. For example, in Emacs Lisp mode, it replaces the string @samp{lambda} -with the Greek lambda character @samp{λ}. You may wish to use this in -non-programming modes as well. You can customize the mode by adding -more entries to @code{prettify-symbols-alist}. More elaborate -customization is available via customizing -@code{prettify-symbols-compose-predicate} if its default value -@code{prettify-symbols-default-compose-p} is not appropriate. There -is also a global version, @code{global-prettify-symbols-mode}, which -enables the mode in all buffers that support it. +with the Greek lambda character @samp{λ}. In a @TeX{} buffer, it will +replace @samp{\alpha} @dots{} @samp{\omega} and other math macros with +their Unicode characters. You may wish to use this in non-programming +modes as well. You can customize the mode by adding more entries to +@code{prettify-symbols-alist}. More elaborate customization is +available via customizing @code{prettify-symbols-compose-predicate} if +its default value @code{prettify-symbols-default-compose-p} is not +appropriate. There is also a global version, +@code{global-prettify-symbols-mode}, which enables the mode in all +buffers that support it. The symbol at point can be shown in its original form. This is controlled by the variable @code{prettify-symbols-unprettify-at-point}: diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index 13c03f78a52..a62d2b6730f 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Registers diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index b37f42cc56f..ef9894d6f26 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Rmail diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi index 37e0e7e067b..580df5fe8ff 100644 --- a/doc/emacs/screen.texi +++ b/doc/emacs/screen.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Screen diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 1cc7753f113..bef74e3b2c5 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Search @@ -12,10 +12,10 @@ a string. Emacs also has commands to replace occurrences of a string with a different string. There are also commands that do the same thing, but search for patterns instead of fixed strings. - You can also search multiple files under the control of a tags table -(@pxref{Tags Search}) or through the Dired @kbd{A} command -(@pxref{Operating on Files}), or ask the @code{grep} program to do it -(@pxref{Grep Searching}). + You can also search multiple files under the control of an +@code{xref} backend (@pxref{Identifier Search}) or through the Dired +@kbd{A} command (@pxref{Operating on Files}), or ask the @code{grep} +program to do it (@pxref{Grep Searching}). @menu * Incremental Search:: Search happens as you type the string. diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi index c5ca73b40a8..30b8491e27e 100644 --- a/doc/emacs/sending.texi +++ b/doc/emacs/sending.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Sending Mail diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index bab660e1e10..41abb42fb5d 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Text @@ -1717,6 +1717,7 @@ such as @code{"/tmp"}. @vindex latex-run-command @vindex tex-dvi-view-command @vindex tex-dvi-print-command +@vindex tex-print-file-extension The buffer's @TeX{} variant determines what shell command @kbd{C-c C-b} actually runs. In Plain @TeX{} mode, it is specified by the variable @code{tex-run-command}, which defaults to @code{"tex"}. In @@ -1725,7 +1726,12 @@ defaults to @code{"latex"}. The shell command that @kbd{C-c C-v} runs to view the @file{.dvi} output is determined by the variable @code{tex-dvi-view-command}, regardless of the @TeX{} variant. The shell command that @kbd{C-c C-p} runs to print the output is -determined by the variable @code{tex-dvi-print-command}. +determined by the variable @code{tex-dvi-print-command}. The variable +@code{tex-print-file-extension} can be set to the required file +extension for viewing and printing @TeX{}-compiled files. For +example, you can set it to @file{.pdf}, and update +@code{tex-dvi-view-command} and @code{tex-dvi-print-command} +accordingly. Normally, Emacs automatically appends the output file name to the shell command strings described in the preceding paragraph. For diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index 4286cfeb737..32680633769 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi index d224043b110..abd29fd6579 100644 --- a/doc/emacs/vc-xtra.texi +++ b/doc/emacs/vc-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included in emacs-xtra.texi when producing the printed diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi index 3eb9b035823..9cbe4b544f7 100644 --- a/doc/emacs/vc1-xtra.texi +++ b/doc/emacs/vc1-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004-2015 Free Software Foundation, Inc. +@c Copyright (C) 2004-2016 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in vc-xtra.texi (when producing the diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index d844f3e4988..f99234b5c1b 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2015 Free Software +@c Copyright (C) 1985-1987, 1993-1995, 1997, 2000-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Windows @@ -231,8 +231,9 @@ Mail}), but in another window (@code{compose-mail-other-window}). @findex find-tag-other-window @item C-x 4 . -Find a tag in the current tags table, similar to @kbd{M-.} -(@pxref{Tags}), but in another window (@code{find-tag-other-window}). +Find the definition of an identifier, similar to @kbd{M-.} +(@pxref{Xref}), but in another window +(@code{xref-find-definitions-other-window}). @item C-x 4 r @var{filename} @key{RET} Visit file @var{filename} read-only, and select its buffer in another window (@code{find-file-read-only-other-window}). @xref{Visiting}. diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index afd27669967..61fdb0a4fd2 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1987, 1993-1995, 1997, 2001-2015 Free Software +@c Copyright (C) 1987, 1993-1995, 1997, 2001-2016 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node X Resources |