:linkattrs:
= Review UI Overview

Reviewing changes is an important task and the Gerrit Web UI provides
many functionalities to make the review process comfortable and
efficient.

[[change-screen]]
== Change Screen

The change screen is the main view for a change. It shows the details of a
single change and allows various actions on it.

image::images/user-review-ui-change-screen.png[width=800, link="images/user-review-ui-change-screen.png"]

Here are the main areas of the screen

image::images/user-review-ui-change-screen-annotated.png[width=800, link="images/user-review-ui-change-screen-annotated.png"]


=== Top info

Top left, you find the status of the change, and a permalink.

image::images/user-review-ui-change-screen-topleft.png[width=600, link="images/user-review-ui-change-screen-topleft.png"]

[[change-status]]
The change status shows the state of the change:

- `Active`:
+
The change is under active review.

- `Merge Conflict`:
+
The change can't be merged into the destination branch due to conflicts.

- `Ready to Submit`:
+
The change has all necessary approvals and fulfils all other submit
requirements. It can be submitted.

- `Merged`:
+
The change was successfully merged into the destination branch.

- `Abandoned`:
+
The change was abandoned. It is not intended to be updated, reviewed or
submitted anymore.

- `Private`:
+
The change is marked as link:intro-user.html#private-changes[Private]. And has
reduced visibility.

- `Revert Created|Revert Submitted`:
+
The change has a corresponding revert change. Revert changes can be created
through UI (see <<actions, Actions section>>).

- `WIP`:
+
The change was marked as "Work in Progress". For example to indicate to
reviewers that they shouldn't review the change yet.

[[star]]
=== Star Change

Clicking the star icon bookmarks the change: it turns on
email notifications for this change, and the change is added to the
list under `Your` > `Starred Changes`. They can be queried by the
link:user-search.html#is[is:starred] search operator.

[[quick-links]]
=== Links Menu

Links menu contains various change related strings for quick copying. Such as:
Change Number, URL, Title+Url, etc. The lines in this menu can also be accessed
via shortcuts for convenience.

image::images/user-review-ui-copy-links.png[width=600, link="images/user-review-ui-copy-links.png"]

[[change-info]]
=== Change metadata

The change metadata block contains detailed information about the change.

image::images/user-review-ui-change-metadata.png[width=600, link="images/user-review-ui-change-metadata.png"]

- [[owner]]Owner/Uploader/Author/Committer
+
Owner is the person who created the change
+
Uploader is the person who uploaded the latest patchset (the patchset that will
be merged if the change is submitted)
+
Author/Committer are concepts from Git and are retrieved from the commit when
it's sent for review.

- [[reviewers]]Reviewers:
+
The reviewers of the change are displayed as chips.
+
For each reviewer there is a tooltip that shows on which labels the
reviewer is allowed to vote.
+
New reviewers can be added through reply dialog that is opened by clicking on
the pencil icon or on "Reply" button. Typing into the reviewer text field
activates auto completion of user and group names.
+

- [[cc-list]]CC:
+
Accounts in CC receive notifications for the updates on the change, but don't
need to vote/review. If the CC'ed user votes they are moved to reviewers.
+

- [[attention-set]]Attention set:
+
Users in attention set are marked by "chevron" symbol (see screenshot above).
The mark indicates that there are actions their attention is required on the
change: Something updated/changed since last review, their vote is required,
etc.
+
Changes for which you are currently in attention set can be found using
`attention:<User>` in search and show up in a separate category of personal
dashboard.
+
Clicking on the mark removes the user from attention set.


[[remove-reviewer]]
Reviewers can be removed from the change by selecting the appropriate option on
the chip's hovercard. Removing a reviewer also removes current votes of the
reviewer. The removal of votes is recorded in the change log.

Removing reviewers is protected by permissions:

** Users can always remove themselves.
** The change owner may remove any zero or positive score.
** Users with the link:access-control.html#category_remove_reviewer[
   Remove Reviewer] access right, the branch owner, the project owner
   and Gerrit administrators may remove anyone.

- [[repo-branch-topic]]Project (Repo) / Branch / Topic:
+
The name of the project for which the change was done is displayed as a
link to the link:user-dashboards.html#project-default-dashboard[default
dashboard] of the project. If no default dashboard is defined, the link
opens a list of open changes on the project.
+
The name of the destination branch is displayed as a link to a list
with all changes on this branch that have the same status as the
currently viewed change.
+
If a topic was assigned to the change it is displayed below the branch.
By clicking on the edit icon the topic can be set. This requires the
link:access-control.html#category_edit_topic_name[Edit Topic Name]
access right. To be able to set a topic on a closed change, the
`Edit Topic Name` must be assigned with the `force` flag.

- [[parent]]Parent:
+
Parent commit of the latest uploaded patchset. Or if the change has been merged
the parent of the commit it was merged as into the destination branch.

- [[merged-as]]Merged As:
+
The SHA of the commit corresponding to the merged change on the destination
branch.

- [[revert-created-as]]Revert (Created|Submitted) As
+
Points to the revert change, if one was created.

- [[cherry-pick-of]]Cherry-pick of
+
If the change was created as cherry-pick of some other change to a different
branch, points to the original change.

- [[submit-strategy]]Submit Strategy:
+
The link:project-setup.html#submit_type[submit strategy] that will be
used to submit the change. The submit strategy is only displayed for
open changes.

- [[hastags]]Hashtags:
+
Arbitrary string hashtags, that can be used to categorize changes and later use
hashtags for search queries.

[[submit-requirements]]
=== Submit Requirements

image::images/user-review-ui-submit-requirements.png[width=600, link="images/user-review-ui-copy-links.png"]

Submit Requirements describe various conditions that must be fulfilled before
the change can be submitted. Hovering over the requirement will show the
description of the requirement, as well as additional information, such as:
corresponding expression that is being evaluated, who can vote on the related
labels etc.

Approving votes are colored green; negative votes are colored red.

For more detail on Submit Requirements see
link:config-submit-requirements.html[Submit Requirement Configuration] page.

[[actions]]
=== Actions:
Actions buttons are at the top right and in the overflow menu.
Depending on the change state and the permissions of the user, different
actions are available on the change:

** [[submit]]`Submit`:
+
Submits the change and adds it to the merge queue. If possible the
change is merged into the destination branch.
+
The `Submit` button is available if the change is submittable and
the link:access-control.html#category_submit[Submit] access right is
assigned.

** [[revert]]`Revert`:
+
Reverts the change via creating a new one.
+
The `Revert` button is available if the change has been submitted.
+
When the `Revert` button is pressed, a panel will appear to allow
the user to enter a commit message for the reverting change.
+
Once a revert change is created, the original author and any reviewers
of the original change are added as reviewers and a message is posted
to the original change linking to the revert.

** [[abandon]]`Abandon`:
+
Abandons the change.
+
The `Abandon` button is only available if the change is open and the
link:access-control.html#category_abandon[Abandon] access right is
assigned.
+
When a change is abandoned, a panel appears that allows one to type a
comment message to explain why the change is being abandoned.

** [[restore]]`Restore`:
+
Restores the change.
+
The `Restore` button is only available if the change is abandoned and
the link:access-control.html#category_abandon[Abandon] and the
link:access-control.html#category_push[Push] access right is
assigned.
+
When a change is restored, a panel appears that allows one to type a
comment message to explain why the change is being restored.

** [[rebase]]`Rebase`:
+
Rebases the change. The rebase is always done with content merge
enabled. If the rebase is successful a new patch set with the rebased
commit is created. If the rebase fails, there are conflicts that have
to be resolved manually.
+
If the change does not depend on another open change, it is rebased
onto the tip of the destination branch.
+
If the change depends on another open change, it is rebased onto the
current patch set of that other change.
+
It is possible to change parent revision of a change. The new parent
revision can be another change towards the same target branch, or
the tip of the target branch.
+
The `Rebase` button is only available if
the link:access-control.html#category_rebase[Rebase] access right is
assigned. Rebasing merge commits is not supported.

** [[cherry-pick]]`Cherry-Pick`:
+
Allows to cherry-pick the change to another branch. The destination
branch can be selected from a dialog. Cherry-picking a change creates a
new open change on the selected destination branch.
+
It is also possible to cherry-pick a change to the same branch. This is
effectively the same as rebasing it to the current tip of the
destination branch. This can be used to remove dependencies on other
open changes.
+
Users can only cherry-pick changes to branches for which they are
allowed to upload changes for review.

** [[delete]]`Delete Change` / `Delete Revision`:
+
Deletes the change.
+
For open or abandoned changes, the `Delete Change` button will be available
and if the user is the change owner and is granted the
link:access-control.html#category_delete_own_changes[Delete Own Changes]
permission, if they are granted the
link:access-control.html#category_delete_changes[Delete Changes] permission,
or if they are an administrator.

** [[plugin-actions]]Further actions may be available if plugins are installed.

+
image::images/user-review-ui-change-screen-change-info-actions.png[width=400, link="images/user-review-ui-change-screen-change-info-actions.png"]

[[files-tab]]
=== File List

The file list shows the files that are modified in the currently viewed
patch set.

image::images/user-review-ui-change-screen-file-list.png[width=800, link="images/user-review-ui-change-screen-file-list.png"]

[[magic-files]]
In addition to the modified files the file list contains magic files
that are generated by Gerrit and which don't exist in the repository.
The magic files contain additional commit data that should be
reviewable and allow users to comment on this data. The magic files are
always listed first. The following magic files exist:

* `Commit Message`:
+
The commit message and headers with the parent commit(s), the author
information and the committer information.

* `Merge List` (for merge commits only):
+
The list of commits that are being integrated into the destination
branch by submitting the merge commit.

Every file is accompanied by a number of extra information, such as status
(modified, added, deleted, etc.), number of changed lines, type (executable,
link, plain), comments and others. Hovering over most icons and columns reveals
additional information.

Each file can be expanded to view the contents of the file and diff. For more
information see <<diff-view, Diff View>> section.

[[comments-tab]]
=== Comments Tab

Instead of the file list, a comments tab can be selected. Comments tab presents
comments along with related file/diff snippets. It also offers some filtering
opportunities at the top (ex. only unresolved, only comments from user X, etc.)

image::images/user-review-ui-change-screen-comments-tab.png[width=800, link="images/user-review-ui-change-screen-comments-tab.png"]

[[checks-tab]]
=== Checks Tab
Checks tab contains results of different "Check Runs" installed by plugins. For
more information see link:pg-plugin-checks-api.html[Checks API] page.

[[patch-sets]]
=== Patch Sets

The change screen only presents one pair of patch sets (`Patchset A` and
`Patchset B`) at a time. `A` is always an earlier upload than `B` and serves as
a base for diffing when viewing changes in the files. Which patch
sets is currently viewed can be seen from the `Patch Sets` drop-down
panel in the change header. If patchset 'A' is not selected a parent commit of
patchset 'B' is used by default.

image::images/user-review-ui-change-screen-patch-sets.png[width=300, link="images/user-review-ui-change-screen-patch-sets.png"]

[[download]]
=== Download

The `Download` drop-down panel in the change header offers commands and
links for downloading the currently viewed patch set.

image::images/user-review-ui-change-screen-download-commands.png[width=800, link="images/user-review-ui-change-screen-download-commands.png"]

The available download commands depend on the installed Gerrit plugins.
The most popular plugin for download commands, the
link:https://gerrit-review.googlesource.com/admin/repos/plugins/download-commands[
download-commands,role=external,window=_blank] plugin, provides commands to checkout, pull and
cherry-pick a patch set.

Each command has a copy-to-clipboard icon that allows the command to be
copied into the clipboard. This makes it easy to paste and execute the
command on a Git command line. Additionally each line can copied to clipboard
using number (1..9) of the appropriate line as a keyboard shortcut.

If several download schemes are configured on the server (e.g. SSH and
HTTP) there is a drop-down list to switch between the download schemes.
Gerrit automatically remembers the download scheme that was last chosen
and selects this download scheme the next time the download commands
drop-down panel is opened.

The `Patch-File` links provide the Git patch file for the currently
viewed patch set for download. The patch file can be base64 encoded or
zipped.

The `Archive` links allow one to download an archive with the contents
of the currently viewed patch set. The archive is offered in several
formats (e.g. tar and tbz2); which formats are available depends on the
configuration of the server.

[[included-in]]
=== Included In

For merged changes the `Included In` drop-down panel is available
through the overflow menu at the top. It shows the branches and tags
in which the change is included. E.g. if a change fixes a bug, this
shows which released versions contain the bug-fix (assuming that every
release is tagged).

image::images/user-review-ui-change-screen-included-in.png[width=800, link="images/user-review-ui-change-screen-included-in.png"]

[[related-changes]]
=== Related Changes

If there are changes that are related to the currently viewed change
they are displayed in the third column of the change screen.

There are several lists of related changes that are displayed in separate
sectionsunder each other.

The following sections may be displayed:

- [[related-changes-section]]`Related Changes`:
+
This section shows changes on which the current change depends
(ancestors) and open changes that depend on the current change
(descendants). For merge commits it also shows the closed changes that
will be merged into the destination branch by submitting the merge
commit.
+
The changes are sorted in the same way as the output of 'git log'. This
means the relationship between the changes can be inferred from the
position of the changes in the list. Changes listed above the current
change are descendants; changes below the current change are ancestors.
+
For merged changes this tab is only shown if there are open
descendants.
+
Related changes may be annotated with dependencies
on outdated patch sets, or commits that are not associated to changes
under review:
+
** [[not-current]]Not current:
+
The patch set of the related change which is related to the current change is
outdated; it is not the current patch set of the change.
+
For ancestor it means that the
currently viewed patch set depends on a outdated patch set of the
ancestor change. This is because a new patch set for the ancestor
change was uploaded in the meantime and as result the currently viewed
patch set now needs to be rebased.
+
If a descendant change is marked "not current" it means that an
old patch set of the descendant change depends on the currently viewed
patch set. It may be that the descendant was rebased in the meantime
and with the new patch set this dependency was removed.

** [[indirect-descendant]]Indirect descendant:
+
The selected patch set of the change is an indirect descendant of the
currently viewed patch set; it has a dependency to another patch set of
this change. E.g. this could mean that a new patch set was uploaded for
this change and the descendant change now needs to be rebased. Please
note that following the link to an indirect descendant change may
result in a completely different related changes listing.

** [[merged-related-change]]Merged
+
The change has been  merged.
+
If the relationship to submitted change falls under conditions described in
<<not-current, Not current>> the status is orange. Such changes can appear as
both ancestors and descendants of the change.

** [[submittable-related-change]]Submittable
+
All the submit requirements are fulfilled for the related change and it can be
submitted when all of its ancestors are submitted.

** [[closed-ancestor-abandoned]]Abandoned:
+
Indicates an abandoned change.

- [[conflicts-with]]`Merge Conflicts`:
+
This section shows changes that conflict with the current change.
Non-mergeable changes are filtered out; only conflicting changes that
are mergeable are shown.
+
If this change is merged, its conflicting changes will have merge
conflicts and must be rebased. The rebase of the other changes with the
conflict resolution must then be done manually.

- [[submitted-together]]`Submitted Together`:
+
This section shows changes that will be submitted together with the
currently viewed change, when clicking the submit button. It includes
ancestors of the current patch set.
+
If `change.submitWholeTopic` is enabled this section also includes changes with
the same topic. The list recursively includes all changes that can be reached by
ancestor and topic relationships. Only open changes are included in the result.

- [[cherry-picks]]`Cherry-Picks`:
+
This section shows changes with the same link:user-changeid.html[
Change-Id] for the current project.
+
Abandoned changes are filtered out.
+
For each change in this list the destination branch is shown as a
prefix in front of the change subject.
+

If there are no related changes for a tab, the tab is not displayed.

- [[same-topic]]`Same Topic`:
+
This section shows changes which are part of the same topic. If
`change.submitWholeTopic` is enabled, then this section is omitted and changes
are included as part of <<submitted-together, `Submitted Together`>>

[[reply]]
=== Reply

The `Reply...` button in the change header allows to reply to the
currently viewed patch set; one can add a summary comment, publish
inline draft comments, vote on the labels and adjust attention set.

image::images/user-review-ui-change-screen-reply.png[width=800, link="images/user-review-ui-change-screen-reply.png"]

Clicking on the `Reply...` button opens a popup panel.

[[summary-comment]]
A text box allows to type a summary comment for the currently viewed
patch set. Markdown syntax is supported same as in other
<<comments-markdown, Comments>>.

[[vote]]
If the current patch set is viewed, buttons are displayed for
each label on which the user is allowed to vote. Voting on non-current
patch sets is not possible.

The inline draft comments that will be published are displayed in a
separate section so that they can be reviewed before publishing. There
are links to navigate to the inline comments which can be used if a
comment needs to be edited.

The `SEND` button publishes the comments and the votes.

[[quick-approve]]
If a user can approve a label that is still required, a quick approve
button appears in the change header that allows to add this missing
approval by a single click. The quick approve button only appears if
there is a single label that is still required and can be approved by
the user.

E.g. if a change requires approvals on the 'Code-Review' and the
'Verified' labels, and there is already a '+1 Verified' vote, then
if the user is allowed to vote the max score on 'Code-Review', a
`Code-Review+2` quick approve button appears that approves the
'Code-Review' label if clicked.

Using the quick approve button also publishes all inline draft
comments; a summary comment is only added if the reply popup panel is
open when the quick approve button is clicked.

image::images/user-review-ui-change-screen-quick-approve.png[width=800, link="images/user-review-ui-change-screen-quick-approve.png"]

[[change-log]]
=== Change Log

The history of the change can be seen in the lower part of the screen.

The log contains messages for all kinds of change updates, e.g. a
message is added when a new patch set is uploaded or when a review was
done.

[[update-notification]]
=== Update Notification

The change screen automatically polls for updates to the currently
viewed change. If there is an update the user is informed by a popup
panel in the bottom right corner.

The polling frequency depends on the server configuration; by default
it is 30 seconds. Polling may also be completely disabled by the
administrator.

image::images/user-review-ui-change-screen-change-update.png[width=400, link="images/user-review-ui-change-screen-change-update.png"]

[[plugin-extensions]]
=== Plugin Extensions

Gerrit plugins may extend the change screen. Java plugins in the
backend can add additional actions to the triple-dot menu block.
Frontend plugins can change the UI controls in arbitrary ways.

image::images/user-review-ui-change-screen-plugin-extensions.png[width=300, link="images/user-review-ui-change-screen-plugin-extensions.png"]

[[diff-view]]
== Side-by-Side Diff Screen

The side-by-side diff screen shows a single patch (or difference between two
patchsets); the old file version is displayed on the left side of the screen;
the new file version is displayed on the right side of the screen.

This screen allows to review a patch and to comment on it.

image::images/user-review-ui-side-by-side-diff-screen.png[width=800, link="images/user-review-ui-side-by-side-diff-screen.png"]


[[side-by-side-mark-reviewed]]
The checkbox in front of the file name allows the
patch to be marked as reviewed. The link:#mark-reviewed[Mark Reviewed]
diff preference allows to control whether the files should be
automatically marked as reviewed when they are viewed.

image::images/user-review-ui-side-by-side-diff-screen-reviewed.png[width=800, link="images/user-review-ui-side-by-side-diff-screen-reviewed.png"]

[[patch-set-selection]]
In the header, on each side, the list of patch sets is shown. Clicking
on a patch set changes the selection for the patch set comparison and
the screen is refreshed to show the diff between the selected patch
sets. The currently selected patch set is highlighted by a light blue
background.

On the left side `Base` can be selected to compare a patch set against
its base. For merge commits `Auto Merge` is available instead which
allows to compare the patch against the result of the auto merge. The
auto merge version may contain Git conflict markers and is useful for
reviewing how conflicts are resolved by a patch.

Reviewers that are reviewing a patch for the first time look at its
diff against its base; reviewers that have reviewed an old patch
version before, may see what has changed since that version by
comparing the old patch against the current patch.

image::images/user-review-ui-side-by-side-diff-screen-patch-sets.png[width=400, link="images/user-review-ui-side-by-side-diff-screen-patch-sets.png"]

[[download-file]]
The download icon next to the patch set list allows to download the
patch. Unless the mime type of the file is configured as safe, the
download file is a zip archive that contains the patch file.


[[side-by-side-rename]]
If a file was renamed, the old and new file paths are shown in the
header together with a similarity index that shows how much of the file
content is unmodified.

image::images/user-review-ui-side-by-side-diff-screen-rename.png[width=400, link="images/user-review-ui-side-by-side-diff-screen-rename.png"]

[[inline-comments]]
=== Inline Comments

Inline comments are displayed directly in the patch file under the code
that is commented. Inline comments can be placed on lines or on code
blocks.

If an inline comment relates to a code block, this code block is
highlighted by a yellow background.

Code blocks with comments may overlap. This means it is possible to
attach several comments to the same code.

[[comments-markdown]]
The comments support markdown. It follows the CommonMark spec, except inline
images and direct HTML are not rendered and kept as plaintext.

[[line-links]]
The lines of the patch file are linkable: simply append
'#<linenumber>' to the URL, or click on the line-number. This not only
opens a draft comment box, but also sets the URL fragment.

[[reply-inline-comment]]
Clicking on the `Reply` button opens an editor to type the reply.

Previous comment can be quoted using "Quote" button. A new draft would be open
on the same comment thread with the text of the previoused comment quoted using
markdown syntax.

image::images/user-review-ui-side-by-side-diff-screen-inline-comments.png[width=800, link="images/user-review-ui-side-by-side-diff-screen-inline-comments.png"]

Comments are first saved as drafts, and you can revisit the drafts as
you read through code review. Finally, they will be published by
clicking the "Reply".

[[done]]
Comments can be unresolved (something should be changed) or resolved
(informational). If you have addressed an unresolved comment in a next
patchset, you can quickly resolve the comment by clicking "Done" (if it was
resolved in a next patchset) or "Ack" (if you acknowledge the comment,
but don't want to make changes).

image::images/user-review-ui-side-by-side-diff-screen-replied-done.png[width=400, link="images/user-review-ui-side-by-side-diff-screen-replied-done.png"]

[[add-inline-comment]]
To add a new inline comment there are several possibilities:

- select a code block and press 'c'
- go to a line, by clicking on it or by link:#key-navigation[key
  navigation], and press 'c'
- click on a line number

There are many ways to select code for commenting on it. The most
frequently used methods are:

- by mouse:
** click and drag with the mouse to select a block
** double-click on a word to select it
** double-click and drag with the mouse to select a code block word-wise
** triple-click on a line to select it
** triple-click and drag with the mouse to select a code block line-wise

For typing the new comment, a new comment box is shown under the code
that is commented.

Clicking on the `Save` button saves the new comment as a draft. To
make it visible to other users it must be published from the change
screen by link:#reply[replying] to the change.

[[suggest-fix]]
=== Suggest fix (WIP)
Comments can contain suggested fixes.

Clicking "Suggest Fix" will insert a special code-block in the text of the
comment. The contents of this code block will replace the lines the comment is
attached to (what gets highlighted when hovering over comment).

image::images/user-review-ui-suggest-fix.png[width=400, link="images/user-review-ui-suggest-fix.png"]

The author of the change can then preview and apply the change. This will created
a new patchset with changes applied.

image::images/user-review-ui-apply-fix.png[width=800, link="images/user-review-ui-apply-fix.png"]

[[file-level-comments]]
=== File Level Comments

File level comments are added by clicking the 'File' header at the top
of the file.

image::images/user-review-ui-side-by-side-diff-screen-file-level-comment.png[width=400, link="images/user-review-ui-side-by-side-diff-screen-file-level-comment.png"]

[[diff-preferences]]
=== Diff Preferences

There are several options to control how patch diffs should be
rendered. Users can configure their preferences in the diff
preferences. The diff preferences can be accessed by clicking on the
settings icon in the screen header.

image::images/user-review-ui-side-by-side-diff-screen-preferences.png[width=800, link="images/user-review-ui-side-by-side-diff-screen-preferences.png"]

The following diff preferences can be configured:

- [[ignore-whitespace]]`Ignore Whitespace`:
+
Controls whether differences in whitespace should be ignored or not.
+
** `None`:
+
All differences in whitespace are highlighted.
+
** `Trailing`:
+
Whitespace differences at the end of lines are ignored.
+
** `Leading, Trailing`:
+
Whitespace differences at the beginning and end of lines are ignored.
+
** `All`:
+
All differences in whitespace are ignored.

- [[tab-width]]`Tab Width`:
+
Controls how many spaces should be displayed for a tab.

- [[columns]]`Columns`:
+
Sets the preferred line length. At this position, lines are wrapped.

- [[lines-of-context]]`Lines Of Context`:
+
The number of context lines that should be displayed before and after
any diff. If the `entire file` checkbox is selected, the full file is
rendered.
+
Skipped common lines can be expanded by clicking on the placeholder for
the skipped lines.
+
Clicking on "... skipped <n> common lines ..." expands the complete
block of skipped lines.
+
If many lines are skipped there are additional links to expand the
context by ten lines before and after the skipped block.
+
image::images/user-review-ui-side-by-side-diff-screen-expand-skipped-lines.png[width=800, link="images/user-review-ui-side-by-side-diff-screen-expand-skipped-lines.png"]

- [[syntax-highlighting]]`Syntax Highlighting`:
+
Controls whether syntax highlighting should be enabled.
+
The language for the syntax highlighting is automatically detected from
the file extension.

- [[whitespace-errors]]`Show trailing whitespace`:
+
Controls whether trailing whitespace is highlighted.

- [[show-tabs]]`Show Tabs`:
+
Controls whether tabs are highlighted.

- [[mark-reviewed]]`Mark Reviewed`:
+
Controls whether the files of the patch set should be automatically
marked as reviewed when they are viewed.

[[keyboard-shortcuts]]
== Keyboard Shortcuts

Navigation within the review UI can be completely done by keys, and
most actions can be controlled by keyboard shortcuts. Typing `?` opens
a popup that shows a list of available keyboard shortcuts.


image::images/user-review-ui-change-screen-keyboard-shortcuts.png[width=800, link="images/user-review-ui-change-screen-keyboard-shortcuts.png"]


In addition, Vim-like commands can be used to link:#key-navigation[
navigate] and link:#search[search] within a patch file.

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
