Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
GI.Gtk.Objects.TextMark
Contents
Description
You may wish to begin by reading the [text widget conceptual overview][TextWidget] which gives an overview of all the objects and data types related to the text widget and how they work together.
A TextMark
is like a bookmark in a text buffer; it preserves a position in
the text. You can convert the mark to an iterator using
textBufferGetIterAtMark
. Unlike iterators, marks remain valid across
buffer mutations, because their behavior is defined when text is inserted or
deleted. When text containing a mark is deleted, the mark remains in the
position originally occupied by the deleted text. When text is inserted at a
mark, a mark with “left gravity” will be moved to the
beginning of the newly-inserted text, and a mark with “right
gravity” will be moved to the end.
Note that “left” and “right” here refer to logical direction (left is the toward the start of the buffer); in some languages such as Hebrew the logically-leftmost text is not actually on the left when displayed.
Marks are reference counted, but the reference count only controls the validity
of the memory; marks can be deleted from the buffer at any time with
textBufferDeleteMark
. Once deleted from the buffer, a mark is
essentially useless.
Marks optionally have names; these can be convenient to avoid passing the
TextMark
object around.
Marks are typically created using the textBufferCreateMark
function.
- newtype TextMark = TextMark (ManagedPtr TextMark)
- class GObject o => IsTextMark o
- toTextMark :: (MonadIO m, IsTextMark o) => o -> m TextMark
- noTextMark :: Maybe TextMark
- textMarkGetBuffer :: (HasCallStack, MonadIO m, IsTextMark a) => a -> m TextBuffer
- textMarkGetDeleted :: (HasCallStack, MonadIO m, IsTextMark a) => a -> m Bool
- textMarkGetLeftGravity :: (HasCallStack, MonadIO m, IsTextMark a) => a -> m Bool
- textMarkGetName :: (HasCallStack, MonadIO m, IsTextMark a) => a -> m (Maybe Text)
- textMarkGetVisible :: (HasCallStack, MonadIO m, IsTextMark a) => a -> m Bool
- textMarkNew :: (HasCallStack, MonadIO m) => Maybe Text -> Bool -> m TextMark
- textMarkSetVisible :: (HasCallStack, MonadIO m, IsTextMark a) => a -> Bool -> m ()
- constructTextMarkLeftGravity :: IsTextMark o => Bool -> IO (GValueConstruct o)
- getTextMarkLeftGravity :: (MonadIO m, IsTextMark o) => o -> m Bool
- constructTextMarkName :: IsTextMark o => Text -> IO (GValueConstruct o)
- getTextMarkName :: (MonadIO m, IsTextMark o) => o -> m (Maybe Text)
Exported types
Constructors
TextMark (ManagedPtr TextMark) |
class GObject o => IsTextMark o Source #
Instances
(GObject a, UnknownAncestorError Constraint TextMark a) => IsTextMark a Source # | |
IsTextMark TextMark Source # | |
toTextMark :: (MonadIO m, IsTextMark o) => o -> m TextMark Source #
Methods
getBuffer
Arguments
:: (HasCallStack, MonadIO m, IsTextMark a) | |
=> a |
|
-> m TextBuffer | Returns: the mark’s |
Gets the buffer this mark is located inside,
or Nothing
if the mark is deleted.
getDeleted
Arguments
:: (HasCallStack, MonadIO m, IsTextMark a) | |
=> a |
|
-> m Bool | Returns: whether the mark is deleted |
Returns True
if the mark has been removed from its buffer
with textBufferDeleteMark
. See textBufferAddMark
for a way to add it to a buffer again.
getLeftGravity
textMarkGetLeftGravity Source #
Arguments
:: (HasCallStack, MonadIO m, IsTextMark a) | |
=> a |
|
-> m Bool |
Determines whether the mark has left gravity.
getName
Arguments
:: (HasCallStack, MonadIO m, IsTextMark a) | |
=> a |
|
-> m (Maybe Text) | Returns: mark name |
Returns the mark name; returns NULL for anonymous marks.
getVisible
Arguments
:: (HasCallStack, MonadIO m, IsTextMark a) | |
=> a |
|
-> m Bool | Returns: |
Returns True
if the mark is visible (i.e. a cursor is displayed
for it).
new
Arguments
:: (HasCallStack, MonadIO m) | |
=> Maybe Text |
|
-> Bool |
|
-> m TextMark | Returns: new |
Creates a text mark. Add it to a buffer using textBufferAddMark
.
If name
is Nothing
, the mark is anonymous; otherwise, the mark can be
retrieved by name using textBufferGetMark
. If a mark has left
gravity, and text is inserted at the mark’s current location, the mark
will be moved to the left of the newly-inserted text. If the mark has
right gravity (leftGravity
= False
), the mark will end up on the
right of newly-inserted text. The standard left-to-right cursor is a
mark with right gravity (when you type, the cursor stays on the right
side of the text you’re typing).
Since: 2.12
setVisible
Arguments
:: (HasCallStack, MonadIO m, IsTextMark a) | |
=> a |
|
-> Bool |
|
-> m () |
Sets the visibility of mark
; the insertion point is normally
visible, i.e. you can see it as a vertical bar. Also, the text
widget uses a visible mark to indicate where a drop will occur when
dragging-and-dropping text. Most other marks are not visible.
Marks are not visible by default.
Properties
leftGravity
constructTextMarkLeftGravity :: IsTextMark o => Bool -> IO (GValueConstruct o) Source #
getTextMarkLeftGravity :: (MonadIO m, IsTextMark o) => o -> m Bool Source #
name
constructTextMarkName :: IsTextMark o => Text -> IO (GValueConstruct o) Source #
getTextMarkName :: (MonadIO m, IsTextMark o) => o -> m (Maybe Text) Source #