/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
**
****************************************************************************/

// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
// Run the fixnavi.pl script to adjust the links to the index order.
// **********************************************************************

/*!
    \contentspage {Qt Creator Manual}
    \previouspage creator-editor-functions.html
    \page creator-coding-navigating.html
    \nextpage creator-highlighting.html

    \title Working in Edit Mode

    This section describes how to use the \uicontrol Edit mode. For more
    information about using the sidebar, see \l{Browsing Project Contents}.

    \section1 Using the Editor Toolbar

    The editor toolbar is located at the top of the editor view. The editor
    toolbar is context sensitive and shows items relevant to the file currently
    open in the editor.

    \image qtcreator-editortoolbar-symbols.png

    Use the toolbar to navigate between open files and symbols in use. To browse
    backward or forward through your location history, click
    \inlineimage prev.png
    (\uicontrol {Go Back}) and \inlineimage next.png
    (\uicontrol {Go Forward}).

    To go to any open file, select it from the \uicontrol {Open files} drop-down
    menu (1). Right-click the menu title and select \uicontrol {Copy Full Path}
    to copy the path and name of the current file to the clipboard.

    Code might be interpreted differently in different contexts. A file can be
    used by different projects or subprojects with different defines, or it can
    be included in the context of C, C++, Objective-C, or Objective-C++. To
    change the active parse context, select an available parse context in the
    \uicontrol {Active Parse Context} menu (3). The menu is visible only when
    several parse contexts are available. To reset the parse context,
    right-click on the menu to open a context menu, and then select
    \uicontrol {Clear Preferred Parse Context}.
    If the information needed for parsing the project is still incomplete or
    incorrect, select \uicontrol {Additional Preprocessor Directives} (2) to
    add preprocessor directives.

    To jump to any symbol used in the current file, select it from the
    \uicontrol Symbols drop-down menu (4). By default, the symbols are displayed
    in the order in which they appear in the file. Right-click the menu title
    and select \uicontrol {Sort Alphabetically} to arrange the symbols in
    alphabetic order.

    To jump to a line and column in the current file, select the line and column
    indicator (5) or press \key {Ctrl+L} (or \key {Cmd+L} on \macos) to open the
    locator. Enter the line number and column number in the locator, separated
    by a colon (:).

    To show the file encoding of the current file on the editor toolbar (6),
    select \uicontrol Tools > \uicontrol Options > \uicontrol {Text Editor} >
    \uicontrol Display > \uicontrol {Display file encoding}. To change the
    encoding, click it on the toolbar and select new encoding in the
    \uicontrol {Text Encoding} dialog. To reload the file with the selected
    encoding, select \uicontrol {Reload with Encoding}. To save the file with
    the new encoding, select \uicontrol {Save with Encoding}.

    \note Other convenient ways of navigating in \QC are provided by the
    \l{Searching with the Locator}{locator}, \l{Keyboard Shortcuts}
    {keyboard shortcuts}, and the \l{Browsing Project Contents}{sidebar}.

    \section1 Splitting the Editor View

    Split the editor view or open the editor in a new window when you want to
    work on and view multiple files on the same screen or on multiple screens.

    \image qtcreator-spliteditorview.png

    You can view multiple files simultaneously in the following ways:

    \list

        \li To split the editor view into a top and bottom view, select
            \uicontrol Window > \uicontrol Split, press \key {Ctrl+E, 2}, or
            select the \inlineimage splitbutton_horizontal.png
            (\uicontrol Split) button and then select \uicontrol Split.

            Split command creates views below the currently active editor view.

        \li To split the editor view into adjacent views, select
            \uicontrol Window > \uicontrol {Split Side by Side}, press
            \key {Ctrl+E, 3}, or select \uicontrol Split >
            \uicontrol {Split Side by Side}.

           Side by side split command creates views to the right of the
           currently active editor view.

        \li To open the editor in a detached window, press \key {Ctrl+E, 4}, or
            select \uicontrol Window > \uicontrol {Open in New Window}.

            The new window behaves basically in the same way as the editor area
            in the main window. For example, you can split this window, as well.
            Documents are opened in the currently active editor window.

    \endlist

    To move between split views and detached editor windows, select
    \uicontrol Window > \uicontrol {Go to Next Split or Window} or press
    \key {Ctrl+E, O}.

    To remove a split view, place the cursor within the view you want to
    remove and select \uicontrol Window > \uicontrol {Remove Current Split},
    press \key {Ctrl+E, 0}, or select the \inlineimage splitbutton_closetop.png
    (\uicontrol {Remove Split}) button. To remove all but the currently selected
    split view, select \uicontrol Window > \uicontrol {Remove All Splits} or
    press \key {Ctrl+E, 1}.

    \section1 Using Bookmarks

    To insert or delete a bookmark:

    \list

        \li Right-click the line number and select \uicontrol {Toggle Bookmark}.

        \li Press \key Shift and click the left margin at a line.

        \li Press \key {Ctrl+M} when the cursor is on a line.

    \endlist

    \image qtcreator-togglebookmark.png

    To add a note to a bookmark, right-click the bookmark and select
    \uicontrol {Edit Bookmark}. To view the note, move the mouse pointer over
    the bookmark.

    To go to previous bookmark in the current session, press \key {Ctrl+,}.

    To go to next bookmark in the current session, press \key {Ctrl+.}.

    \section1 Moving to Symbol Definition or Declaration

    You can move directly to the definition or the declaration of a symbol by
    holding the \key Ctrl key and clicking the symbol. If you have multiple
    splits opened, you can open the link in the next split by holding \key Ctrl
    and \key Alt while clicking the symbol.

    To enable this moving function, select \uicontrol Tools >
    \uicontrol Options > \uicontrol {Text Editor} > \uicontrol Behavior >
    \uicontrol {Enable mouse navigation}.

    You can also select the symbol and press \key F2, or right-click the symbol
    and select \uicontrol {Follow Symbol Under Cursor} to move to its definition
    or declaration. This feature is supported for namespaces, classes,
    functions, variables, include statements, and macros.

    To switch between the definition and declaration of a function, place the
    cursor on either and press \key {Shift+F2} or right-click and select
    \uicontrol {Switch Between Function Declaration/Definition}. For example,
    this allows you to navigate from anywhere within a function body directly to
    the function declaration.

    Links are opened in the same split by default. To open links in the next
    split, prepend \key {Ctrl+E} to the shortcut. For example, press
    \key {Ctrl+E,F2} to follow the symbol in the next split. If necessary, the
    view is automatically split. To change the default behavior, select
    \uicontrol Tools > \uicontrol Options > \uicontrol {Text Editor} >
    \uicontrol Display > \uicontrol {Always open links in another split}.
    Additional symbols are
    displayed and switching between definition and declaration is done in
    another split. If you change the default behavior, the shortcuts for opening
    link targets in the next split are used to open them in the current split.

    \section1 Reparsing Externally Changed Files

    If source files are modified from outside \QC, the opened files will be
    reparsed automatically. For all other files, you can use \uicontrol Tools >
    \uicontrol {C++} > \uicontrol {Reparse Externally Changed Files} to update
    the code model.

    \section1 Inspecting the Code Model

    When you report a bug that is related to the C++ code model, the \QC
    developers might ask you to write information about the internal state of
    the code model into a log file and to deliver the file to them for
    inspection.

    To view information about the C++ code model in the
    \uicontrol {C++ Code Model Inspector} dialog and write it to a log file,
    select \uicontrol Tools > \uicontrol {C++} >
    \uicontrol {Inspect C++ Code Model} or press \key {Ctrl+Shift+F12}.

    \QC generates the code model inspection log file in a temporary folder.

    \QC underlines semantic errors in olive in the C++ code editor. To check the
    correct paths for includes that are not resolved or that are resolved to the
    wrong file, select \uicontrol {Project Parts} > \uicontrol {Header Paths}.
*/
