### Class

# GtkSource View

#### Description [src]

    class GtkSource.View : Gtk.TextView
      implements Gtk.Accessible, Gtk.AccessibleText, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.Scrollable {
      /* No available fields */
    }

Subclass of `GtkTextView`.

`GtkSourceView` is the main class of the GtkSourceView library. Use a `GtkSourceBuffer` to display text with a `GtkSourceView`.

This class provides:

- Show the line numbers;
- Show a right margin;
- Highlight the current line;
- Indentation settings;
- Configuration for the Home and End keyboard keys;
- Configure and show line marks;
- And a few other things.

An easy way to test all these features is to use the test-widget mini-program provided in the GtkSourceView repository, in the tests/ directory.

# GtkSourceView as GtkBuildable

The GtkSourceView implementation of the `GtkBuildable` interface exposes the `GtkSourceView:completion` object with the internal-child “completion”.

An example of a UI definition fragment with GtkSourceView:

    <object class="GtkSourceView" id="source_view">
      <property name="tab-width">4</property>
      <property name="auto-indent">True</property>
      <child internal-child="completion">
        <object class="GtkSourceCompletion">
          <property name="select-on-show">False</property>
        </object>
      </child>
    </object>

# Changing the Font

Gtk CSS provides the best way to change the font for a `GtkSourceView` in a manner that allows for components like `GtkSourceMap` to scale the desired font.

    GtkCssProvider *provider = gtk_css_provider_new ();
    gtk_css_provider_load_from_string (provider,
                                      "textview { font-family: Monospace; font-size: 8pt; }");
    gtk_style_context_add_provider (gtk_widget_get_style_context (view),
                                    GTK_STYLE_PROVIDER (provider),
                                    GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
    g_object_unref (provider);

    provider = Gtk.CssProvider()
    provider.load_from_string("textview { font-family: Monospace; font-size: 8pt; }")
    style_context = view.get_style_context()
    style_context.add_provider(provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)

If you need to adjust the font or size of font within a portion of the document only, you should use a `GtkTextTag` with the `GtkTextTag:family` or `GtkTextTag:scale` set so that the font size may be scaled relative to the default font set in CSS.

#### Ancestors

- GtkTextView
- GtkWidget
- GInitiallyUnowned
- GObject

#### Descendants

- GtkSourceMap

#### Implements

- GtkAccessible
- GtkAccessibleText
- GtkBuildable
- GtkConstraintTarget
- GtkScrollable

#### Constructors

###### gtk_source_view_new

Creates a new `GtkSourceView`.

###### gtk_source_view_new_with_buffer

Creates a new `GtkSourceView` widget displaying the buffer `buffer`.

#### Instance methods

###### gtk_source_view_get_annotations

Gets the `GtkSourceAnnotations` associated with `view`.

since: 5.18

###### gtk_source_view_get_auto_indent

Returns whether auto-indentation of text is enabled.

###### gtk_source_view_get_background_pattern

Returns the `GtkSourceBackgroundPatternType` specifying if and how the background pattern should be displayed for this `view`.

###### gtk_source_view_get_completion

Gets the `GtkSourceCompletion` associated with `view`.

###### gtk_source_view_get_enable_snippets

Gets the `GtkSourceView:enable-snippets` property.

###### gtk_source_view_get_gutter

Returns the `GtkSourceGutter` object associated with `window_type` for `view`.

###### gtk_source_view_get_highlight_current_line

Returns whether the current line is highlighted.

###### gtk_source_view_get_hover

Gets the `GtkSourceHover` associated with `view`.

###### gtk_source_view_get_indent_on_tab

Returns whether when the tab key is pressed the current selection should get indented instead of replaced with the `\t` character.

###### gtk_source_view_get_indent_width

Returns the number of spaces to use for each step of indent.

###### gtk_source_view_get_indenter

Gets the `GtkSourceView:indenter` property.

###### gtk_source_view_get_insert_spaces_instead_of_tabs

Returns whether when inserting a tabulator character it should be replaced by a group of space characters.

###### gtk_source_view_get_mark_attributes

Gets attributes and priority for the `category`.

###### gtk_source_view_get_right_margin_position

Gets the position of the right margin in the given `view`.

###### gtk_source_view_get_show_line_marks

Returns whether line marks are displayed beside the text.

###### gtk_source_view_get_show_line_numbers

Returns whether line numbers are displayed beside the text.

###### gtk_source_view_get_show_right_margin

Returns whether a right margin is displayed.

###### gtk_source_view_get_smart_backspace

Returns `TRUE` if pressing the Backspace key will try to delete spaces up to the previous tab stop.

###### gtk_source_view_get_smart_home_end

Returns a `GtkSourceSmartHomeEndType` end value specifying how the cursor will move when HOME and END keys are pressed.

###### gtk_source_view_get_space_drawer

Gets the `GtkSourceSpaceDrawer` associated with `view`.

###### gtk_source_view_get_tab_width

Returns the width of tabulation in characters.

###### gtk_source_view_get_visual_column

Determines the visual column at `iter` taking into consideration the `GtkSourceView:tab-width` of `view`.

###### gtk_source_view_indent_lines

Inserts one indentation level at the beginning of the specified lines. The empty lines are not indented.

###### gtk_source_view_push_snippet

Inserts a new snippet at `location`.

###### gtk_source_view_set_auto_indent

If `TRUE` auto-indentation of text is enabled.

###### gtk_source_view_set_background_pattern

Set if and how the background pattern should be displayed.

###### gtk_source_view_set_enable_snippets

Sets the `GtkSourceView:enable-snippets` property.

###### gtk_source_view_set_highlight_current_line

If `highlight` is `TRUE` the current line will be highlighted.

###### gtk_source_view_set_indent_on_tab

If `TRUE`, when the tab key is pressed when several lines are selected, the selected lines are indented of one level instead of being replaced with a `\t` character. Shift+Tab unindents the selection.

###### gtk_source_view_set_indent_width

Sets the number of spaces to use for each step of indent when the tab key is pressed.

###### gtk_source_view_set_indenter

Sets the indenter for `view` to `indenter`.

###### gtk_source_view_set_insert_spaces_instead_of_tabs

If `TRUE` a tab key pressed is replaced by a group of space characters.

###### gtk_source_view_set_mark_attributes

Sets attributes and priority for the `category`.

###### gtk_source_view_set_right_margin_position

Sets the position of the right margin in the given `view`.

###### gtk_source_view_set_show_line_marks

If `TRUE` line marks will be displayed beside the text.

###### gtk_source_view_set_show_line_numbers

If `TRUE` line numbers will be displayed beside the text.

###### gtk_source_view_set_show_right_margin

If `TRUE` a right margin is displayed.

###### gtk_source_view_set_smart_backspace

When set to `TRUE`, pressing the Backspace key will try to delete spaces up to the previous tab stop.

###### gtk_source_view_set_smart_home_end

Set the desired movement of the cursor when HOME and END keys are pressed.

###### gtk_source_view_set_tab_width

Sets the width of tabulation in characters.

###### gtk_source_view_unindent_lines

Removes one indentation level at the beginning of the specified lines.

##### Methods inherited from GtkTextView (72)

Please see GtkTextView for a full list of methods.

##### Methods inherited from GtkWidget (164)

Please see GtkWidget for a full list of methods.

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

##### Methods inherited from GtkAccessible (20)

###### gtk_accessible_announce

Requests the user’s screen reader to announce the given message.

###### gtk_accessible_get_accessible_parent

Retrieves the accessible parent for an accessible object.

###### gtk_accessible_get_accessible_role

Retrieves the accessible role of an accessible object.

###### gtk_accessible_get_at_context

Retrieves the implementation for the given accessible object.

###### gtk_accessible_get_bounds

Queries the coordinates and dimensions of this accessible.

###### gtk_accessible_get_first_accessible_child

Retrieves the first accessible child of an accessible object.

###### gtk_accessible_get_next_accessible_sibling

Retrieves the next accessible sibling of an accessible object.

###### gtk_accessible_get_platform_state

Queries a platform state, such as focus.

###### gtk_accessible_reset_property

Resets the accessible property to its default value.

###### gtk_accessible_reset_relation

Resets the accessible relation to its default value.

###### gtk_accessible_reset_state

Resets the accessible state to its default value.

###### gtk_accessible_set_accessible_parent

Sets the parent and sibling of an accessible object.

###### gtk_accessible_update_next_accessible_sibling

Updates the next accessible sibling.

###### gtk_accessible_update_platform_state

Informs ATs that the platform state has changed.

###### gtk_accessible_update_property

Updates a list of accessible properties.

###### gtk_accessible_update_property_value

Updates an array of accessible properties.

###### gtk_accessible_update_relation

Updates a list of accessible relations.

###### gtk_accessible_update_relation_value

Updates an array of accessible relations.

###### gtk_accessible_update_state

Updates a list of accessible states.

###### gtk_accessible_update_state_value

Updates an array of accessible states.

##### Methods inherited from GtkAccessibleText (3)

###### gtk_accessible_text_update_caret_position

Updates the position of the caret.

###### gtk_accessible_text_update_contents

Notifies assistive technologies of a change in contents.

###### gtk_accessible_text_update_selection_bound

Updates the boundary of the selection.

##### Methods inherited from GtkBuildable (1)

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

##### Methods inherited from GtkScrollable (9)

###### gtk_scrollable_get_border

Returns the size of a non-scrolling border around the outside of the scrollable.

###### gtk_scrollable_get_hadjustment

Retrieves the `GtkAdjustment` used for horizontal scrolling.

###### gtk_scrollable_get_hscroll_policy

Gets the horizontal `GtkScrollablePolicy`.

###### gtk_scrollable_get_vadjustment

Retrieves the `GtkAdjustment` used for vertical scrolling.

###### gtk_scrollable_get_vscroll_policy

Gets the vertical `GtkScrollablePolicy`.

###### gtk_scrollable_set_hadjustment

Sets the horizontal adjustment of the `GtkScrollable`.

###### gtk_scrollable_set_hscroll_policy

Sets the `GtkScrollablePolicy`.

###### gtk_scrollable_set_vadjustment

Sets the vertical adjustment of the `GtkScrollable`.

###### gtk_scrollable_set_vscroll_policy

Sets the `GtkScrollablePolicy`.

#### Properties

###### GtkSource.View:annotations

The `GtkSourceAnnotations` object associated with the view.

since: 5.18

###### GtkSource.View:auto-indent

No description available.

###### GtkSource.View:background-pattern

Draw a specific background pattern on the view.

###### GtkSource.View:completion

The completion object associated with the view.

###### GtkSource.View:enable-snippets

The property denotes if snippets should be expanded when the user presses Tab after having typed a word matching the snippets found in `GtkSourceSnippetManager`.

###### GtkSource.View:highlight-current-line

No description available.

###### GtkSource.View:indent-on-tab

No description available.

###### GtkSource.View:indent-width

Width of an indentation step expressed in number of spaces.

###### GtkSource.View:indenter

The property is a `GtkSourceIndenter` to use to indent as the user types into the `GtkSourceView`.

###### GtkSource.View:insert-spaces-instead-of-tabs

No description available.

###### GtkSource.View:right-margin-position

Position of the right margin.

###### GtkSource.View:show-line-marks

Whether to display line mark pixbufs.

###### GtkSource.View:show-line-numbers

Whether to display line numbers.

###### GtkSource.View:show-right-margin

Whether to display the right margin.

###### GtkSource.View:smart-backspace

Whether smart Backspace should be used.

###### GtkSource.View:smart-home-end

Set the behavior of the HOME and END keys.

###### GtkSource.View:space-drawer

The `GtkSourceSpaceDrawer` object associated with the view.

###### GtkSource.View:tab-width

Width of a tab character expressed in number of spaces.

##### Properties inherited from GtkTextView (21)

###### Gtk.TextView:accepts-tab

Whether Tab will result in a tab character being entered.

###### Gtk.TextView:bottom-margin

The bottom margin for text in the text view.

###### Gtk.TextView:buffer

The buffer which is displayed.

###### Gtk.TextView:cursor-visible

If the insertion cursor is shown.

###### Gtk.TextView:editable

Whether the text can be modified by the user.

###### Gtk.TextView:extra-menu

A menu model whose contents will be appended to the context menu.

###### Gtk.TextView:im-module

Which IM (input method) module should be used for this text_view.

###### Gtk.TextView:indent

Amount to indent the paragraph, in pixels.

###### Gtk.TextView:input-hints

Additional hints (beyond `GtkTextView:input-purpose`) that allow input methods to fine-tune their behaviour.

###### Gtk.TextView:input-purpose

The purpose of this text field.

###### Gtk.TextView:justification

Left, right, or center justification.

###### Gtk.TextView:left-margin

The default left margin for text in the text view.

###### Gtk.TextView:monospace

Whether text should be displayed in a monospace font.

###### Gtk.TextView:overwrite

Whether entered text overwrites existing contents.

###### Gtk.TextView:pixels-above-lines

Pixels of blank space above paragraphs.

###### Gtk.TextView:pixels-below-lines

Pixels of blank space below paragraphs.

###### Gtk.TextView:pixels-inside-wrap

Pixels of blank space between wrapped lines in a paragraph.

###### Gtk.TextView:right-margin

The default right margin for text in the text view.

###### Gtk.TextView:tabs

Custom tabs for this text.

###### Gtk.TextView:top-margin

The top margin for text in the text view.

###### Gtk.TextView:wrap-mode

Whether to wrap lines never, at word boundaries, or at character boundaries.

##### Properties inherited from GtkWidget (35)

###### Gtk.Widget:can-focus

Whether the widget or any of its descendents can accept the input focus.

###### Gtk.Widget:can-target

Whether the widget can receive pointer events.

###### Gtk.Widget:css-classes

A list of css classes applied to this widget.

###### Gtk.Widget:css-name

The name of this widget in the CSS tree.

###### Gtk.Widget:cursor

The cursor used by `widget`.

###### Gtk.Widget:focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

###### Gtk.Widget:focusable

Whether this widget itself will accept the input focus.

###### Gtk.Widget:halign

How to distribute horizontal space if widget gets extra space.

###### Gtk.Widget:has-default

Whether the widget is the default widget.

###### Gtk.Widget:has-focus

Whether the widget has the input focus.

###### Gtk.Widget:has-tooltip

Enables or disables the emission of the `GtkWidget::query-tooltip` signal on `widget`.

###### Gtk.Widget:height-request

Overrides for height request of the widget.

###### Gtk.Widget:hexpand

Whether to expand horizontally.

###### Gtk.Widget:hexpand-set

Whether to use the `hexpand` property.

###### Gtk.Widget:layout-manager

The `GtkLayoutManager` instance to use to compute the preferred size of the widget, and allocate its children.

###### Gtk.Widget:limit-events

Makes this widget act like a modal dialog, with respect to event delivery.

###### Gtk.Widget:margin-bottom

Margin on bottom side of widget.

###### Gtk.Widget:margin-end

Margin on end of widget, horizontally.

###### Gtk.Widget:margin-start

Margin on start of widget, horizontally.

###### Gtk.Widget:margin-top

Margin on top side of widget.

###### Gtk.Widget:name

The name of the widget.

###### Gtk.Widget:opacity

The requested opacity of the widget.

###### Gtk.Widget:overflow

How content outside the widget’s content area is treated.

###### Gtk.Widget:parent

The parent widget of this widget.

###### Gtk.Widget:receives-default

Whether the widget will receive the default action when it is focused.

###### Gtk.Widget:root

The `GtkRoot` widget of the widget tree containing this widget.

###### Gtk.Widget:scale-factor

The scale factor of the widget.

###### Gtk.Widget:sensitive

Whether the widget responds to input.

###### Gtk.Widget:tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

###### Gtk.Widget:tooltip-text

Sets the text of tooltip to be the given string.

###### Gtk.Widget:valign

How to distribute vertical space if widget gets extra space.

###### Gtk.Widget:vexpand

Whether to expand vertically.

###### Gtk.Widget:vexpand-set

Whether to use the `vexpand` property.

###### Gtk.Widget:visible

Whether the widget is visible.

###### Gtk.Widget:width-request

Overrides for width request of the widget.

##### Properties inherited from GtkAccessible (1)

###### Gtk.Accessible:accessible-role

The accessible role of the given `GtkAccessible` implementation.

##### Properties inherited from GtkScrollable (4)

###### Gtk.Scrollable:hadjustment

Horizontal `GtkAdjustment` of the scrollable widget.

###### Gtk.Scrollable:hscroll-policy

Determines when horizontal scrolling should start.

###### Gtk.Scrollable:vadjustment

Vertical `GtkAdjustment` of the scrollable widget.

###### Gtk.Scrollable:vscroll-policy

Determines when vertical scrolling should start.

#### Signals

###### GtkSource.View::change-case

Keybinding signal to change case of the text at the current cursor position.

###### GtkSource.View::change-number

Keybinding signal to edit a number at the current cursor position.

###### GtkSource.View::join-lines

Keybinding signal to join the lines currently selected.

###### GtkSource.View::line-mark-activated

Emitted when a line mark has been activated (for instance when there was a button press in the line marks gutter).

###### GtkSource.View::move-lines

The signal is a keybinding which gets emitted when the user initiates moving a line.

###### GtkSource.View::move-to-matching-bracket

Keybinding signal to move the cursor to the matching bracket.

###### GtkSource.View::move-words

The signal is a keybinding which gets emitted when the user initiates moving a word.

###### GtkSource.View::push-snippet

The signal is emitted to insert a new snippet into the view.

###### GtkSource.View::show-completion

The signal is a key binding signal which gets emitted when the user requests a completion, by pressing <keycombo><keycap>Control</keycap><keycap>space</keycap></keycombo>.

###### GtkSource.View::smart-home-end

Emitted when a the cursor was moved according to the smart home end setting.

##### Signals inherited from GtkTextView (15)

###### GtkTextView::backspace

Gets emitted when the user asks for it.

###### GtkTextView::copy-clipboard

Gets emitted to copy the selection to the clipboard.

###### GtkTextView::cut-clipboard

Gets emitted to cut the selection to the clipboard.

###### GtkTextView::delete-from-cursor

Gets emitted when the user initiates a text deletion.

###### GtkTextView::extend-selection

Emitted when the selection needs to be extended at `location`.

###### GtkTextView::insert-at-cursor

Gets emitted when the user initiates the insertion of a fixed string at the cursor.

###### GtkTextView::insert-emoji

Gets emitted to present the Emoji chooser for the `text_view`.

###### GtkTextView::move-cursor

Gets emitted when the user initiates a cursor movement.

###### GtkTextView::move-viewport

Gets emitted to move the viewport.

###### GtkTextView::paste-clipboard

Gets emitted to paste the contents of the clipboard into the text view.

###### GtkTextView::preedit-changed

Emitted when preedit text of the active IM changes.

###### GtkTextView::select-all

Gets emitted to select or unselect the complete contents of the text view.

###### GtkTextView::set-anchor

Gets emitted when the user initiates settings the “anchor” mark.

###### GtkTextView::toggle-cursor-visible

Gets emitted to toggle the `cursor-visible` property.

###### GtkTextView::toggle-overwrite

Gets emitted to toggle the overwrite mode of the text view.

##### Signals inherited from GtkWidget (13)

###### GtkWidget::destroy

Signals that all holders of a reference to the widget should release the reference that they hold.

###### GtkWidget::direction-changed

Emitted when the text direction of a widget changes.

###### GtkWidget::hide

Emitted when `widget` is hidden.

###### GtkWidget::keynav-failed

Emitted if keyboard navigation fails.

###### GtkWidget::map

Emitted when `widget` is going to be mapped.

###### GtkWidget::mnemonic-activate

Emitted when a widget is activated via a mnemonic.

###### GtkWidget::move-focus

Emitted when the focus is moved.

###### GtkWidget::query-tooltip

Emitted when the widget’s tooltip is about to be shown.

###### GtkWidget::realize

Emitted when `widget` is associated with a `GdkSurface`.

###### GtkWidget::show

Emitted when `widget` is shown.

###### GtkWidget::state-flags-changed

Emitted when the widget state changes.

###### GtkWidget::unmap

Emitted when `widget` is going to be unmapped.

###### GtkWidget::unrealize

Emitted when the `GdkSurface` associated with `widget` is destroyed.

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

#### Class structure

    struct GtkSourceViewClass {
      GtkTextViewClass parent_class;
      void (* line_mark_activated) (
        GtkSourceView* view,
        const GtkTextIter* iter,
        guint button,
        GdkModifierType state,
        gint n_presses
      );
      void (* show_completion) (
        GtkSourceView* view
      );
      void (* move_lines) (
        GtkSourceView* view,
        gboolean down
      );
      void (* move_words) (
        GtkSourceView* view,
        gint step
      );
      void (* push_snippet) (
        GtkSourceView* view,
        GtkSourceSnippet* snippet,
        GtkTextIter* location
      );

    }

No description available.

###### Class members

`parent_class: GtkTextViewClass`

  No description available.

`line_mark_activated: void (* line_mark_activated) ( GtkSourceView* view, const GtkTextIter* iter, guint button, GdkModifierType state, gint n_presses )`

  No description available.

`show_completion: void (* show_completion) ( GtkSourceView* view )`

  No description available.

`move_lines: void (* move_lines) ( GtkSourceView* view, gboolean down )`

  No description available.

`move_words: void (* move_words) ( GtkSourceView* view, gint step )`

  No description available.

`push_snippet: void (* push_snippet) ( GtkSourceView* view, GtkSourceSnippet* snippet, GtkTextIter* location )`

  No description available.

#### Virtual methods

###### GtkSource.ViewClass.line_mark_activated

No description available.

###### GtkSource.ViewClass.move_lines

No description available.

###### GtkSource.ViewClass.move_words

No description available.

###### GtkSource.ViewClass.push_snippet

Inserts a new snippet at `location`.

###### GtkSource.ViewClass.show_completion

No description available.