Improve documentation of Diff mode
* doc/emacs/files.texi (Diff Mode): Document the effect of prefix argument on the Diff mode's commands. Document 'diff-jump-to-old-file'.
This commit is contained in:
parent
39e85a0c6c
commit
a3242cc459
1 changed files with 60 additions and 31 deletions
|
@ -1427,23 +1427,30 @@ manually, type @kbd{M-x diff-mode}.
|
||||||
@cindex hunk, diff
|
@cindex hunk, diff
|
||||||
The changes specified in a patch are grouped into @dfn{hunks}, which
|
The changes specified in a patch are grouped into @dfn{hunks}, which
|
||||||
are contiguous chunks of text that contain one or more changed lines.
|
are contiguous chunks of text that contain one or more changed lines.
|
||||||
Hunks can also include unchanged lines to provide context for the
|
Hunks usually also include unchanged lines to provide context for the
|
||||||
changes. Each hunk is preceded by a @dfn{hunk header}, which
|
changes. Each hunk is preceded by a @dfn{hunk header}, which
|
||||||
specifies the old and new line numbers at which the hunk occurs. Diff
|
specifies the old and new line numbers where the hunk's changes occur.
|
||||||
mode highlights each hunk header, to distinguish it from the actual
|
Diff mode highlights each hunk header, to distinguish it from the
|
||||||
contents of the hunk.
|
actual contents of the hunk.
|
||||||
|
|
||||||
|
The first hunk in a patch is preceded by a file header, which shows
|
||||||
|
the names of the new and the old versions of the file, and their time
|
||||||
|
stamps. If a patch shows changes for more than one file, each file
|
||||||
|
has such a header before the first hunk of that file's changes.
|
||||||
|
|
||||||
@vindex diff-update-on-the-fly
|
@vindex diff-update-on-the-fly
|
||||||
You can edit a Diff mode buffer like any other buffer. (If it is
|
You can edit a Diff mode buffer like any other buffer. (If it is
|
||||||
read-only, you need to make it writable first. @xref{Misc Buffer}.)
|
read-only, you need to make it writable first; see @ref{Misc Buffer}.)
|
||||||
Whenever you change a hunk, Diff mode attempts to automatically
|
Whenever you edit a hunk, Diff mode attempts to automatically correct
|
||||||
correct the line numbers in the hunk headers, to ensure that the patch
|
the line numbers in the hunk headers, to ensure that the patch remains
|
||||||
remains correct. To disable automatic line number correction,
|
correct, and could still be applied by @command{patch}. To disable
|
||||||
change the variable @code{diff-update-on-the-fly} to @code{nil}.
|
automatic line number correction, change the variable
|
||||||
|
@code{diff-update-on-the-fly} to @code{nil}.
|
||||||
|
|
||||||
Diff mode treats each hunk as an error message, similar to
|
Diff mode arranges for hunks to be treated as compiler error
|
||||||
Compilation mode. Thus, you can use commands such as @kbd{C-x `} to
|
messages by @kbd{C-x `} and other commands that handle error messages
|
||||||
visit the corresponding source locations. @xref{Compilation Mode}.
|
(@pxref{Compilation Mode}). Thus, you can use the compilation-mode
|
||||||
|
commands to visit the corresponding source locations.
|
||||||
|
|
||||||
In addition, Diff mode provides the following commands to navigate,
|
In addition, Diff mode provides the following commands to navigate,
|
||||||
manipulate and apply parts of patches:
|
manipulate and apply parts of patches:
|
||||||
|
@ -1451,7 +1458,8 @@ manipulate and apply parts of patches:
|
||||||
@table @kbd
|
@table @kbd
|
||||||
@item M-n
|
@item M-n
|
||||||
@findex diff-hunk-next
|
@findex diff-hunk-next
|
||||||
Move to the next hunk-start (@code{diff-hunk-next}).
|
Move to the next hunk-start (@code{diff-hunk-next}). With prefix
|
||||||
|
argument @var{n}, move forward to the @var{n}th next hunk.
|
||||||
|
|
||||||
@findex diff-auto-refine-mode
|
@findex diff-auto-refine-mode
|
||||||
@cindex mode, Diff Auto-Refine
|
@cindex mode, Diff Auto-Refine
|
||||||
|
@ -1469,19 +1477,22 @@ default, add this to your init file (@pxref{Hooks}):
|
||||||
|
|
||||||
@item M-p
|
@item M-p
|
||||||
@findex diff-hunk-prev
|
@findex diff-hunk-prev
|
||||||
Move to the previous hunk-start (@code{diff-hunk-prev}). Like
|
Move to the previous hunk-start (@code{diff-hunk-prev}). With prefix
|
||||||
|
argument @var{n}, move back to the @var{n}th previous hunk. Like
|
||||||
@kbd{M-n}, this has the side-effect of refining the hunk you move to,
|
@kbd{M-n}, this has the side-effect of refining the hunk you move to,
|
||||||
unless you disable Diff Auto-Refine mode.
|
unless you disable Diff Auto-Refine mode.
|
||||||
|
|
||||||
@item M-@}
|
@item M-@}
|
||||||
@findex diff-file-next
|
@findex diff-file-next
|
||||||
Move to the next file-start, in a multi-file patch
|
Move to the next file-start, in a multi-file patch
|
||||||
(@code{diff-file-next}).
|
(@code{diff-file-next}). With prefix argument @var{n}, move forward
|
||||||
|
to the start of the @var{n}th next file.
|
||||||
|
|
||||||
@item M-@{
|
@item M-@{
|
||||||
@findex diff-file-prev
|
@findex diff-file-prev
|
||||||
Move to the previous file-start, in a multi-file patch
|
Move to the previous file-start, in a multi-file patch
|
||||||
(@code{diff-file-prev}).
|
(@code{diff-file-prev}). With prefix argument @var{n}, move back to
|
||||||
|
the start of the @var{n}th previous file.
|
||||||
|
|
||||||
@item M-k
|
@item M-k
|
||||||
@findex diff-hunk-kill
|
@findex diff-hunk-kill
|
||||||
|
@ -1496,7 +1507,10 @@ In a multi-file patch, kill the current file part.
|
||||||
@findex diff-apply-hunk
|
@findex diff-apply-hunk
|
||||||
@cindex patches, applying
|
@cindex patches, applying
|
||||||
Apply this hunk to its target file (@code{diff-apply-hunk}). With a
|
Apply this hunk to its target file (@code{diff-apply-hunk}). With a
|
||||||
prefix argument of @kbd{C-u}, revert this hunk.
|
prefix argument of @kbd{C-u}, revert this hunk, i.e.@: apply the
|
||||||
|
reverse of the hunk, which changes the ``new'' version into the ``old''
|
||||||
|
version. If @code{diff-jump-to-old-file} is non-@code{nil}, apply the
|
||||||
|
hunk to the ``old'' version of the file instead.
|
||||||
|
|
||||||
@item C-c C-b
|
@item C-c C-b
|
||||||
@findex diff-refine-hunk
|
@findex diff-refine-hunk
|
||||||
|
@ -1506,8 +1520,16 @@ of each changed line were actually changed.
|
||||||
|
|
||||||
@item C-c C-c
|
@item C-c C-c
|
||||||
@findex diff-goto-source
|
@findex diff-goto-source
|
||||||
|
@vindex diff-jump-to-old-file
|
||||||
Go to the source file and line corresponding to this hunk
|
Go to the source file and line corresponding to this hunk
|
||||||
(@code{diff-goto-source}).
|
(@code{diff-goto-source}). By default, this jumps to the ``new''
|
||||||
|
version of the file, the one shown first on the file header.
|
||||||
|
With a prefix argument, jump to the ``old'' version instead. If
|
||||||
|
@code{diff-jump-to-old-file} is non-@code{nil}, this command by
|
||||||
|
default jumps to the ``old'' file, and the meaning of the prefix
|
||||||
|
argument is reversed. If the prefix argument is a number greater than
|
||||||
|
8 (e.g., if you type @kbd{C-u C-u C-c C-c}), then this command also
|
||||||
|
sets @code{diff-jump-to-old-file} for the next invocation.
|
||||||
|
|
||||||
@item C-c C-e
|
@item C-c C-e
|
||||||
@findex diff-ediff-patch
|
@findex diff-ediff-patch
|
||||||
|
@ -1517,41 +1539,47 @@ Start an Ediff session with the patch (@code{diff-ediff-patch}).
|
||||||
@item C-c C-n
|
@item C-c C-n
|
||||||
@findex diff-restrict-view
|
@findex diff-restrict-view
|
||||||
Restrict the view to the current hunk (@code{diff-restrict-view}).
|
Restrict the view to the current hunk (@code{diff-restrict-view}).
|
||||||
@xref{Narrowing}. With a prefix argument of @kbd{C-u}, restrict the
|
@xref{Narrowing}. With a prefix argument, restrict the
|
||||||
view to the current file of a multiple-file patch. To widen again,
|
view to the current file of a multiple-file patch. To widen again,
|
||||||
use @kbd{C-x n w} (@code{widen}).
|
use @kbd{C-x n w} (@code{widen}).
|
||||||
|
|
||||||
@item C-c C-r
|
@item C-c C-r
|
||||||
@findex diff-reverse-direction
|
@findex diff-reverse-direction
|
||||||
Reverse the direction of comparison for the entire buffer
|
Reverse the direction of comparison for the entire buffer
|
||||||
(@code{diff-reverse-direction}).
|
(@code{diff-reverse-direction}). With a prefix argument, reverse the
|
||||||
|
direction only inside the current region (@pxref{Mark}). Reversing
|
||||||
|
the direction means changing the hunks and the file-start headers to
|
||||||
|
produce a patch that would change the ``new'' version into the ``old''
|
||||||
|
one.
|
||||||
|
|
||||||
@item C-c C-s
|
@item C-c C-s
|
||||||
@findex diff-split-hunk
|
@findex diff-split-hunk
|
||||||
Split the hunk at point (@code{diff-split-hunk}). This is for
|
Split the hunk at point (@code{diff-split-hunk}) into two separate
|
||||||
manually editing patches, and only works with the @dfn{unified diff
|
hunks. This inserts a hunk header and modifies the header of the
|
||||||
format} produced by the @option{-u} or @option{--unified} options to
|
current hunk. This command is useful for manually editing patches,
|
||||||
the @command{diff} program. If you need to split a hunk in the
|
and only works with the @dfn{unified diff format} produced by the
|
||||||
@dfn{context diff format} produced by the @option{-c} or
|
@option{-u} or @option{--unified} options to the @command{diff}
|
||||||
@option{--context} options to @command{diff}, first convert the buffer
|
program. If you need to split a hunk in the @dfn{context diff format}
|
||||||
to the unified diff format with @kbd{C-c C-u}.
|
produced by the @option{-c} or @option{--context} options to
|
||||||
|
@command{diff}, first convert the buffer to the unified diff format
|
||||||
|
with @kbd{C-c C-u}.
|
||||||
|
|
||||||
@item C-c C-d
|
@item C-c C-d
|
||||||
@findex diff-unified->context
|
@findex diff-unified->context
|
||||||
Convert the entire buffer to the @dfn{context diff format}
|
Convert the entire buffer to the @dfn{context diff format}
|
||||||
(@code{diff-unified->context}). With a prefix argument, convert only
|
(@code{diff-unified->context}). With a prefix argument, convert only
|
||||||
the text within the region.
|
the hunks within the region.
|
||||||
|
|
||||||
@item C-c C-u
|
@item C-c C-u
|
||||||
@findex diff-context->unified
|
@findex diff-context->unified
|
||||||
Convert the entire buffer to unified diff format
|
Convert the entire buffer to unified diff format
|
||||||
(@code{diff-context->unified}). With a prefix argument, convert
|
(@code{diff-context->unified}). With a prefix argument, convert
|
||||||
unified format to context format. When the mark is active, convert
|
unified format to context format. When the mark is active, convert
|
||||||
only the text within the region.
|
only the hunks within the region.
|
||||||
|
|
||||||
@item C-c C-w
|
@item C-c C-w
|
||||||
@findex diff-ignore-whitespace-hunk
|
@findex diff-ignore-whitespace-hunk
|
||||||
Re-diff the current hunk, disregarding changes in whitespace
|
Re-generate the current hunk, disregarding changes in whitespace
|
||||||
(@code{diff-ignore-whitespace-hunk}).
|
(@code{diff-ignore-whitespace-hunk}).
|
||||||
|
|
||||||
@item C-x 4 A
|
@item C-x 4 A
|
||||||
|
@ -1582,7 +1610,8 @@ that whitespace in both the patch and the patched source file(s).
|
||||||
This command does not save the modifications that it makes, so you can
|
This command does not save the modifications that it makes, so you can
|
||||||
decide whether to save the changes (the list of modified files is
|
decide whether to save the changes (the list of modified files is
|
||||||
displayed in the echo area). With a prefix argument, it tries to
|
displayed in the echo area). With a prefix argument, it tries to
|
||||||
modify the original source files rather than the patched source files.
|
modify the original (``old'') source files rather than the patched
|
||||||
|
(``new'') source files.
|
||||||
|
|
||||||
@node Copying and Naming
|
@node Copying and Naming
|
||||||
@section Copying, Naming and Renaming Files
|
@section Copying, Naming and Renaming Files
|
||||||
|
|
Loading…
Add table
Reference in a new issue