    {-# LINE 2 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
    -- -*-haskell-*-
    -- GIMP Toolkit (GTK) TextBuffer
    --
    -- Author : Axel Simon, Andy Stewart
    --
    -- Created: 23 February 2002
    --
    -- Copyright (C) 2001-2005 Axel Simon
    -- Copyright (C) 2009 Andy Stewart
    --
    -- This library is free software; you can redistribute it and/or
    -- modify it under the terms of the GNU Lesser General Public
    -- License as published by the Free Software Foundation; either
    -- version 2.1 of the License, or (at your option) any later version.
    --
    -- This library is distributed in the hope that it will be useful,
    -- but WITHOUT ANY WARRANTY; without even the implied warranty of
    -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
    -- Lesser General Public License for more details.
    --
    -- NOTES
    --
    -- Below `variadic` functions can't support by FFI:
    -- gtk_text_buffer_insert_with_tags
    -- gtk_text_buffer_insert_with_tags_by_name
    -- gtk_text_buffer_create_tag
    -- But above functions is not essential, we can use other functions do same work.
    -- Example:
    --
    -- gtk_text_buffer_insert_with_tags equivalent to calling textBufferInsert,
    -- then textBufferApplyTag on the inserted text.
    --
    -- gtk_text_buffer_insert_with_tags_by_name same as gtk_text_buffer_insert_with_tags,
    -- just use textTagName handle tag name.
    --
    -- gtk_text_buffer_create_tag Equivalent to calling textTagNew
    -- and then adding the tag to the buffer's tag table.
    --
    -- The following functions do not make sense due to Haskell's wide character
    -- representation of Unicode:
    -- gtk_text_buffer_get_iter_at_line_index
    --
    -- The function gtk_text_buffer_get_selection_bounds is only used to test
    -- if there is a selection (see 'textBufferHasSelection').
    --
    -- |
    -- Maintainer : gtk2hs-users@lists.sourceforge.net
    -- Stability : provisional
    -- Portability : portable (depends on GHC)
    --
    -- Stores attributed text for display in a 'TextView'
    --
    module Graphics.UI.Gtk.Multiline.TextBuffer (
    -- * Detail
    --
    -- | You may wish to begin by reading the text widget conceptual overview
    -- which gives an overview of all the objects and data types related to the
    -- text widget and how they work together.

    -- * Class Hierarchy
    -- |
    -- @
    -- | 'GObject'
    -- | +----TextBuffer
    -- @

    -- * Types
      TextBuffer,
      TextBufferClass,
      castToTextBuffer, gTypeTextBuffer,
      toTextBuffer,

    -- * Constructors
      textBufferNew,

    -- * Methods
      textBufferGetLineCount,
      textBufferGetCharCount,
      textBufferGetTagTable,
      textBufferInsert,
      textBufferInsertByteString,
      textBufferInsertAtCursor,
      textBufferInsertByteStringAtCursor,
      textBufferInsertInteractive,
      textBufferInsertByteStringInteractive,
      textBufferInsertInteractiveAtCursor,
      textBufferInsertByteStringInteractiveAtCursor,
      textBufferInsertRange,
      textBufferInsertRangeInteractive,
      textBufferDelete,
      textBufferDeleteInteractive,
      textBufferSetByteString,
      textBufferGetByteString,
      textBufferGetByteStringSlice,
      textBufferSetText,
      textBufferGetText,
      textBufferGetSlice,
      textBufferInsertPixbuf,
      textBufferCreateMark,

      textBufferAddMark,

      textBufferMoveMark,
      textBufferMoveMarkByName,
      textBufferDeleteMark,
      textBufferDeleteMarkByName,
      textBufferGetMark,
      textBufferGetInsert,
      textBufferGetSelectionBound,
      textBufferPlaceCursor,
      textBufferApplyTag,
      textBufferRemoveTag,
      textBufferApplyTagByName,
      textBufferRemoveTagByName,
      textBufferRemoveAllTags,
      textBufferGetIterAtLineOffset,
      textBufferGetIterAtOffset,
      textBufferGetIterAtLine,
      textBufferGetIterAtMark,
      textBufferGetStartIter,
      textBufferGetEndIter,
      textBufferGetModified,
      textBufferSetModified,
      textBufferDeleteSelection,
      textBufferHasSelection,
      textBufferGetSelectionBounds,

      textBufferSelectRange,

      textBufferGetBounds,
      textBufferBeginUserAction,
      textBufferEndUserAction,

      textBufferBackspace,

      textBufferInsertChildAnchor,
      textBufferCreateChildAnchor,
      textBufferGetIterAtChildAnchor,

      textBufferPasteClipboard,
      textBufferPasteClipboardAtCursor,
      textBufferCopyClipboard,
      textBufferCutClipboard,

      textBufferAddSelectionClipboard,
      textBufferRemoveSelectionClipboard,

    -- * Attributes
      textBufferTagTable,

      textBufferText,

      textBufferModified,

    -- * Signals
      applyTag,
      beginUserAction,
      bufferChanged,
      deleteRange,
      endUserAction,
      insertPixbuf,
      insertChildAnchor,
      bufferInsertText,
      markDeleted,
      markSet,
      modifiedChanged,
      pasteDone,
      removeTag,

    -- * Deprecated
    {-# LINE 196 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
      ) where

    import Control.Monad (liftM)

    import System.Glib.FFI
    import System.Glib.UTFString
    import System.Glib.Attributes
    import System.Glib.Properties
    import Data.ByteString (ByteString)
    import Data.ByteString.Unsafe (unsafeUseAsCStringLen, unsafePackCStringFinalizer)
    import Graphics.UI.Gtk.Types
    {-# LINE 207 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
    import Graphics.UI.Gtk.Signals
    {-# LINE 208 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
    import Graphics.UI.Gtk.Multiline.Types
    {-# LINE 209 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
    import Graphics.UI.Gtk.Multiline.TextMark (MarkName)
    import Graphics.UI.Gtk.Multiline.TextTag (TagName)

    {-# LINE 213 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}

    --------------------
    -- Constructors

    -- | Creates a new text buffer.
    --
    textBufferNew ::
        Maybe TextTagTable -- ^ @table@ - a tag table, or @Nothing@ to create a
                           -- new one
     -> IO TextBuffer
    textBufferNew :: Maybe TextTagTable -> IO TextBuffer
    textBufferNew Maybe TextTagTable
    table =
      (ForeignPtr TextBuffer -> TextBuffer, FinalizerPtr TextBuffer)
    -> IO (Ptr TextBuffer) -> IO TextBuffer
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    wrapNewGObject (ForeignPtr TextBuffer -> TextBuffer, FinalizerPtr TextBuffer)
    forall {a}. (ForeignPtr TextBuffer -> TextBuffer, FinalizerPtr a)
    mkTextBuffer (IO (Ptr TextBuffer) -> IO TextBuffer)
    -> IO (Ptr TextBuffer) -> IO TextBuffer
    forall a b. (a -> b) -> a -> b
    $
      (\(TextTagTable ForeignPtr TextTagTable
    arg1) -> ForeignPtr TextTagTable
    -> (Ptr TextTagTable -> IO (Ptr TextBuffer)) -> IO (Ptr TextBuffer)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextTagTable
    arg1 ((Ptr TextTagTable -> IO (Ptr TextBuffer)) -> IO (Ptr TextBuffer))
    -> (Ptr TextTagTable -> IO (Ptr TextBuffer)) -> IO (Ptr TextBuffer)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextTagTable
    argPtr1 ->Ptr TextTagTable -> IO (Ptr TextBuffer)
    gtk_text_buffer_new Ptr TextTagTable
    argPtr1)
    {-# LINE 226 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (maybe (TextTagTable nullForeignPtr) toTextTagTable table)

    --------------------
    -- Methods

    -- | Obtains the number of lines in the buffer. This value is cached, so the
    -- function is very fast.
    --
    textBufferGetLineCount :: TextBufferClass self => self -> IO Int
    textBufferGetLineCount :: forall self. TextBufferClass self => self -> IO Int
    textBufferGetLineCount self
    self =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO CInt
    gtk_text_buffer_get_line_count Ptr TextBuffer
    argPtr1)
    {-# LINE 238 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | Gets the number of characters in the buffer. The character count is
    -- cached, so this function is very fast.
    --
    textBufferGetCharCount :: TextBufferClass self => self -> IO Int
    textBufferGetCharCount :: forall self. TextBufferClass self => self -> IO Int
    textBufferGetCharCount self
    self =
      (CInt -> Int) -> IO CInt -> IO Int
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Int
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral (IO CInt -> IO Int) -> IO CInt -> IO Int
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO CInt
    gtk_text_buffer_get_char_count Ptr TextBuffer
    argPtr1)
    {-# LINE 247 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | Get the 'TextTagTable' associated with this buffer.
    --
    textBufferGetTagTable :: TextBufferClass self => self -> IO TextTagTable
    textBufferGetTagTable :: forall self. TextBufferClass self => self -> IO TextTagTable
    textBufferGetTagTable self
    self =
      (ForeignPtr TextTagTable -> TextTagTable,
     FinalizerPtr TextTagTable)
    -> IO (Ptr TextTagTable) -> IO TextTagTable
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TextTagTable -> TextTagTable,
     FinalizerPtr TextTagTable)
    forall {a}.
    (ForeignPtr TextTagTable -> TextTagTable, FinalizerPtr a)
    mkTextTagTable (IO (Ptr TextTagTable) -> IO TextTagTable)
    -> IO (Ptr TextTagTable) -> IO TextTagTable
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr TextTagTable))
    -> IO (Ptr TextTagTable)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr TextTagTable))
     -> IO (Ptr TextTagTable))
    -> (Ptr TextBuffer -> IO (Ptr TextTagTable))
    -> IO (Ptr TextTagTable)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO (Ptr TextTagTable)
    gtk_text_buffer_get_tag_table Ptr TextBuffer
    argPtr1)
    {-# LINE 255 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | Inserts @text@ at position @iter@. Emits the
    -- 'insertText' signal; insertion actually occurs in the default handler for
    -- the signal. @iter@ is invalidated when insertion occurs (because the buffer
    -- contents change).
    --
    textBufferInsert :: (TextBufferClass self, GlibString string) => self
     -> TextIter -- ^ @iter@ - a position in the buffer
     -> string -- ^ @text@ - text to insert
     -> IO ()
    textBufferInsert :: forall self string.
    (TextBufferClass self, GlibString string) =>
    self -> TextIter -> string -> IO ()
    textBufferInsert self
    self TextIter
    iter string
    text =
      string -> (CStringLen -> IO ()) -> IO ()
    forall a. string -> (CStringLen -> IO a) -> IO a
    forall s a. GlibString s => s -> (CStringLen -> IO a) -> IO a
    withUTFStringLen string
    text ((CStringLen -> IO ()) -> IO ()) -> (CStringLen -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) Ptr CChar
    arg3 CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> Ptr CChar -> CInt -> IO ()
    gtk_text_buffer_insert Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr CChar
    arg3 CInt
    arg4)
    {-# LINE 269 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)

    -- | Inserts @text@ at position @iter@. Similar
    -- to 'textBufferInsert' but uses 'ByteString' buffers.
    --
    -- * The passed-in buffer must contain a valid UTF-8 encoded string.
    --
    textBufferInsertByteString :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - a position in the buffer
     -> ByteString -- ^ @text@ - text to insert
     -> IO ()
    textBufferInsertByteString :: forall self.
    TextBufferClass self =>
    self -> TextIter -> ByteString -> IO ()
    textBufferInsertByteString self
    self TextIter
    iter ByteString
    text =
      ByteString -> (CStringLen -> IO ()) -> IO ()
    forall a. ByteString -> (CStringLen -> IO a) -> IO a
    unsafeUseAsCStringLen ByteString
    text ((CStringLen -> IO ()) -> IO ()) -> (CStringLen -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) Ptr CChar
    arg3 CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> Ptr CChar -> CInt -> IO ()
    gtk_text_buffer_insert Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr CChar
    arg3 CInt
    arg4)
    {-# LINE 286 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)

    -- | Simply calls 'textBufferInsert', using the current cursor position as the
    -- insertion point.
    --
    textBufferInsertAtCursor :: (TextBufferClass self, GlibString string) => self -> string -> IO ()
    textBufferInsertAtCursor :: forall self string.
    (TextBufferClass self, GlibString string) =>
    self -> string -> IO ()
    textBufferInsertAtCursor self
    self string
    text =
      string -> (CStringLen -> IO ()) -> IO ()
    forall a. string -> (CStringLen -> IO a) -> IO a
    forall s a. GlibString s => s -> (CStringLen -> IO a) -> IO a
    withUTFStringLen string
    text ((CStringLen -> IO ()) -> IO ()) -> (CStringLen -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> CInt -> IO ()
    gtk_text_buffer_insert_at_cursor Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 CInt
    arg3)
    {-# LINE 298 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)

    -- | Simply calls 'textBufferInsert', using the current cursor position as the
    -- insertion point. Similar to 'textBufferInsertAtCursor' but uses 'ByteString' buffers.
    --
    -- * The passed-in buffer must contain a valid UTF-8 encoded string.
    --
    textBufferInsertByteStringAtCursor :: TextBufferClass self => self -> ByteString -> IO ()
    textBufferInsertByteStringAtCursor :: forall self. TextBufferClass self => self -> ByteString -> IO ()
    textBufferInsertByteStringAtCursor self
    self ByteString
    text =
      ByteString -> (CStringLen -> IO ()) -> IO ()
    forall a. ByteString -> (CStringLen -> IO a) -> IO a
    unsafeUseAsCStringLen ByteString
    text ((CStringLen -> IO ()) -> IO ()) -> (CStringLen -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> CInt -> IO ()
    gtk_text_buffer_insert_at_cursor Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 CInt
    arg3)
    {-# LINE 311 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)

    -- | Like 'textBufferInsert', but the insertion will not occur if @iter@ is at
    -- a non-editable location in the buffer. Usually you want to prevent
    -- insertions at ineditable locations if the insertion results from a user
    -- action (is interactive).
    --
    -- If no tag is at the specified position, use the default value @def@ to
    -- decide if the text should be inserted. This value could be set to the result
    -- of 'Graphics.UI.Gtk.Multiline.TextView.textViewGetEditable'.
    --
    textBufferInsertInteractive :: (TextBufferClass self, GlibString string) => self
     -> TextIter -- ^ @iter@ - a position in @buffer@
     -> string -- ^ @text@ - the text to insert
     -> Bool -- ^ @defaultEditable@ - default editability of buffer
     -> IO Bool -- ^ returns whether text was actually inserted
    textBufferInsertInteractive :: forall self string.
    (TextBufferClass self, GlibString string) =>
    self -> TextIter -> string -> Bool -> IO Bool
    textBufferInsertInteractive self
    self TextIter
    iter string
    text Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      string -> (CStringLen -> IO CInt) -> IO CInt
    forall a. string -> (CStringLen -> IO a) -> IO a
    forall s a. GlibString s => s -> (CStringLen -> IO a) -> IO a
    withUTFStringLen string
    text ((CStringLen -> IO CInt) -> IO CInt)
    -> (CStringLen -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) Ptr CChar
    arg3 CInt
    arg4 CInt
    arg5 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr CChar -> CInt -> CInt -> IO CInt
    gtk_text_buffer_insert_interactive Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr CChar
    arg3 CInt
    arg4 CInt
    arg5)
    {-# LINE 333 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Similar to 'textBufferInsertInteractive' but uses 'ByteString' buffers.
    --
    -- * The passed-in buffer must contain a valid UTF-8 encoded string.
    --
    textBufferInsertByteStringInteractive :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - a position in @buffer@
     -> ByteString -- ^ @text@ - the text to insert
     -> Bool -- ^ @defaultEditable@ - default editability of buffer
     -> IO Bool -- ^ returns whether text was actually inserted
    textBufferInsertByteStringInteractive :: forall self.
    TextBufferClass self =>
    self -> TextIter -> ByteString -> Bool -> IO Bool
    textBufferInsertByteStringInteractive self
    self TextIter
    iter ByteString
    text Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      ByteString -> (CStringLen -> IO CInt) -> IO CInt
    forall a. ByteString -> (CStringLen -> IO a) -> IO a
    unsafeUseAsCStringLen ByteString
    text ((CStringLen -> IO CInt) -> IO CInt)
    -> (CStringLen -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) Ptr CChar
    arg3 CInt
    arg4 CInt
    arg5 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr CChar -> CInt -> CInt -> IO CInt
    gtk_text_buffer_insert_interactive Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr CChar
    arg3 CInt
    arg4 CInt
    arg5)
    {-# LINE 352 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Calls 'textBufferInsertInteractive' at the cursor position.
    --
    textBufferInsertInteractiveAtCursor :: (TextBufferClass self, GlibString string) => self
     -> string -- ^ @text@ - the text to insert
     -> Bool -- ^ @defaultEditable@ - default editability of buffer
     -> IO Bool -- ^ returns whether text was actually inserted
    textBufferInsertInteractiveAtCursor :: forall self string.
    (TextBufferClass self, GlibString string) =>
    self -> string -> Bool -> IO Bool
    textBufferInsertInteractiveAtCursor self
    self string
    text Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      string -> (CStringLen -> IO CInt) -> IO CInt
    forall a. string -> (CStringLen -> IO a) -> IO a
    forall s a. GlibString s => s -> (CStringLen -> IO a) -> IO a
    withUTFStringLen string
    text ((CStringLen -> IO CInt) -> IO CInt)
    -> (CStringLen -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 CInt
    arg3 CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> CInt -> CInt -> IO CInt
    gtk_text_buffer_insert_interactive_at_cursor Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 CInt
    arg3 CInt
    arg4)
    {-# LINE 368 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Similar to 'textBufferInsertInteractiveAtCursor' but uses 'ByteString' buffers.
    --
    -- * The passed-in buffer must contain a valid UTF-8 encoded string.
    --
    textBufferInsertByteStringInteractiveAtCursor :: TextBufferClass self => self
     -> ByteString -- ^ @text@ - the text to insert
     -> Bool -- ^ @defaultEditable@ - default editability of buffer
     -> IO Bool -- ^ returns whether text was actually inserted
    textBufferInsertByteStringInteractiveAtCursor :: forall self.
    TextBufferClass self =>
    self -> ByteString -> Bool -> IO Bool
    textBufferInsertByteStringInteractiveAtCursor self
    self ByteString
    text Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      ByteString -> (CStringLen -> IO CInt) -> IO CInt
    forall a. ByteString -> (CStringLen -> IO a) -> IO a
    unsafeUseAsCStringLen ByteString
    text ((CStringLen -> IO CInt) -> IO CInt)
    -> (CStringLen -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 CInt
    arg3 CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> CInt -> CInt -> IO CInt
    gtk_text_buffer_insert_interactive_at_cursor Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 CInt
    arg3 CInt
    arg4)
    {-# LINE 385 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Copies text, tags, and pixbufs between @start@ and @end@ (the order of
    -- @start@ and @end@ doesn't matter) and inserts the copy at @iter@. Used
    -- instead of simply getting\/inserting text because it preserves images and
    -- tags. If @start@ and @end@ are in a different buffer from @buffer@, the two
    -- buffers must share the same tag table.
    --
    -- Implemented via emissions of the insert-text and 'applyTag' signals, so
    -- expect those.
    --
    textBufferInsertRange :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - a position in the buffer
     -> TextIter -- ^ @start@ - a position in a 'TextBuffer'
     -> TextIter -- ^ @end@ - another position in the same buffer as @start@
     -> IO ()
    textBufferInsertRange :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> TextIter -> IO ()
    textBufferInsertRange self
    self TextIter
    iter TextIter
    start TextIter
    end =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) (TextIter ForeignPtr TextIter
    arg4) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg4 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr4 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_insert_range Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3 Ptr TextIter
    argPtr4)
    {-# LINE 406 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        TextIter
    start
        TextIter
    end

    -- | Same as 'textBufferInsertRange', but does nothing if the insertion point
    -- isn't editable. The @defaultEditable@ parameter indicates whether the text
    -- is editable at @iter@ if no tags enclosing @iter@ affect editability.
    -- Typically the result of
    -- 'Graphics.UI.Gtk.Multiline.TextView.textViewGetEditable' is appropriate here.
    --
    textBufferInsertRangeInteractive :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - a position in the buffer
     -> TextIter -- ^ @start@ - a position in a 'TextBuffer'
     -> TextIter -- ^ @end@ - another position in the same buffer as @start@
     -> Bool -- ^ @defaultEditable@ - default editability of the buffer
     -> IO Bool -- ^ returns whether an insertion was possible at @iter@
    textBufferInsertRangeInteractive :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> TextIter -> Bool -> IO Bool
    textBufferInsertRangeInteractive self
    self TextIter
    iter TextIter
    start TextIter
    end Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) (TextIter ForeignPtr TextIter
    arg4) CInt
    arg5 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg4 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr4 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr TextIter -> Ptr TextIter -> CInt -> IO CInt
    gtk_text_buffer_insert_range_interactive Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3 Ptr TextIter
    argPtr4 CInt
    arg5)
    {-# LINE 426 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        TextIter
    start
        TextIter
    end
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Deletes text between @start@ and @end@. The order of @start@ and @end@ is
    -- not actually relevant; 'textBufferDelete' will reorder them. This function
    -- actually emits the 'deleteRange' signal, and the default handler of that
    -- signal deletes the text. Because the buffer is modified, all outstanding
    -- iterators become invalid after calling this function; however, the @start@
    -- and @end@ will be re-initialized to point to the location where text was
    -- deleted.
    --
    textBufferDelete :: TextBufferClass self => self
     -> TextIter -- ^ @start@ - a position in @buffer@
     -> TextIter -- ^ @end@ - another position in @buffer@
     -> IO ()
    textBufferDelete :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> IO ()
    textBufferDelete self
    self TextIter
    start TextIter
    end =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_delete Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3)
    {-# LINE 446 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    start
        TextIter
    end

    -- | Deletes all /editable/ text in the given range. Calls 'textBufferDelete'
    -- for each editable sub-range of [@start@,@end@). @start@ and @end@ are
    -- revalidated to point to the location of the last deleted range, or left
    -- untouched if no text was deleted.
    --
    textBufferDeleteInteractive :: TextBufferClass self => self
     -> TextIter -- ^ @startIter@ - start of range to delete
     -> TextIter -- ^ @endIter@ - end of range
     -> Bool -- ^ @defaultEditable@ - whether the buffer is editable by
                 -- default
     -> IO Bool -- ^ returns whether some text was actually deleted
    textBufferDeleteInteractive :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> Bool -> IO Bool
    textBufferDeleteInteractive self
    self TextIter
    startIter TextIter
    endIter Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextIter -> CInt -> IO CInt
    gtk_text_buffer_delete_interactive Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 464 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    startIter
        TextIter
    endIter
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Deletes current contents of @buffer@, and inserts @text@ instead.
    --
    textBufferSetText :: (TextBufferClass self, GlibString string) => self
     -> string -- ^ @text@ - text to insert
     -> IO ()
    textBufferSetText :: forall self string.
    (TextBufferClass self, GlibString string) =>
    self -> string -> IO ()
    textBufferSetText self
    self string
    text =
      string -> (CStringLen -> IO ()) -> IO ()
    forall a. string -> (CStringLen -> IO a) -> IO a
    forall s a. GlibString s => s -> (CStringLen -> IO a) -> IO a
    withUTFStringLen string
    text ((CStringLen -> IO ()) -> IO ()) -> (CStringLen -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> CInt -> IO ()
    gtk_text_buffer_set_text Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 CInt
    arg3)
    {-# LINE 477 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)

    -- | Returns the text in the range [@start@,@end@). Excludes undisplayed text
    -- (text marked with tags that set the invisibility attribute) if
    -- @includeHiddenChars@ is @False@. Does not include characters representing
    -- embedded images, so character indexes into the returned string do
    -- /not/ correspond to character indexes into the buffer. Contrast
    -- with 'textBufferGetSlice'.
    --
    textBufferGetText :: (TextBufferClass self, GlibString string) => self
     -> TextIter -- ^ @start@ - start of a range
     -> TextIter -- ^ @end@ - end of a range
     -> Bool -- ^ @includeHiddenChars@ - whether to include invisible text
     -> IO string
    textBufferGetText :: forall self string.
    (TextBufferClass self, GlibString string) =>
    self -> TextIter -> TextIter -> Bool -> IO string
    textBufferGetText self
    self TextIter
    start TextIter
    end Bool
    includeHiddenChars =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr TextIter -> CInt -> IO (Ptr CChar)
    gtk_text_buffer_get_text Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 495 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    start
        TextIter
    end
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    includeHiddenChars)
      IO (Ptr CChar) -> (Ptr CChar -> IO string) -> IO string
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= Ptr CChar -> IO string
    forall s. GlibString s => Ptr CChar -> IO s
    readUTFString

    -- | Returns the text in the range [@start@,@end@). Excludes undisplayed text
    -- (text marked with tags that set the invisibility attribute) if
    -- @includeHiddenChars@ is @False@. The returned string includes a
    -- @(chr 0xFFFC)@ character whenever the buffer contains embedded images, so
    -- character indexes into the returned string /do/ correspond to
    -- character indexes into the buffer. Contrast with 'textBufferGetText'. Note
    -- that @(chr 0xFFFC)@ can occur in normal text as well, so it is not a reliable
    -- indicator that a pixbuf or widget is in the buffer.
    --
    textBufferGetSlice :: (TextBufferClass self, GlibString string) => self
     -> TextIter -- ^ @start@ - start of a range
     -> TextIter -- ^ @end@ - end of a range
     -> Bool -- ^ @includeHiddenChars@ - whether to include invisible text
     -> IO string
    textBufferGetSlice :: forall self string.
    (TextBufferClass self, GlibString string) =>
    self -> TextIter -> TextIter -> Bool -> IO string
    textBufferGetSlice self
    self TextIter
    start TextIter
    end Bool
    includeHiddenChars =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr TextIter -> CInt -> IO (Ptr CChar)
    gtk_text_buffer_get_slice Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 517 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    start
        TextIter
    end
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    includeHiddenChars)
      IO (Ptr CChar) -> (Ptr CChar -> IO string) -> IO string
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= Ptr CChar -> IO string
    forall s. GlibString s => Ptr CChar -> IO s
    readUTFString

    -- | Deletes current contents of @buffer@, and inserts @text@ instead. Similar
    -- to 'textBufferSetText' but uses 'ByteString' buffers.
    --
    -- * The passed-in buffer must contain a valid UTF-8 encoded string.
    --
    textBufferSetByteString :: TextBufferClass self => self
     -> ByteString -- ^ @text@ - text to insert
     -> IO ()
    textBufferSetByteString :: forall self. TextBufferClass self => self -> ByteString -> IO ()
    textBufferSetByteString self
    self ByteString
    text =
      ByteString -> (CStringLen -> IO ()) -> IO ()
    forall a. ByteString -> (CStringLen -> IO a) -> IO a
    unsafeUseAsCStringLen ByteString
    text ((CStringLen -> IO ()) -> IO ()) -> (CStringLen -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \(Ptr CChar
    textPtr, Int
    len) ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> CInt -> IO ()
    gtk_text_buffer_set_text Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 CInt
    arg3)
    {-# LINE 534 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    textPtr
        (Int -> CInt
    forall a b. (Integral a, Num b) => a -> b
    fromIntegral Int
    len)

    -- | Returns the text in the range [@start@,@end@). Similar to
    -- `textBufferGetText` but uses 'ByteString' buffers.
    --
    -- * The returned buffer is a UTF-8 encoded string.
    --
    textBufferGetByteString :: TextBufferClass self => self
     -> TextIter -- ^ @start@ - start of a range
     -> TextIter -- ^ @end@ - end of a range
     -> Bool -- ^ @includeHiddenChars@ - whether to include invisible text
     -> IO ByteString
    textBufferGetByteString :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> Bool -> IO ByteString
    textBufferGetByteString self
    self TextIter
    start TextIter
    end Bool
    includeHiddenChars = do
      sPtr <- (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr TextIter -> CInt -> IO (Ptr CChar)
    gtk_text_buffer_get_text Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 550 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    start
        TextIter
    end
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    includeHiddenChars)
      sLen <- lengthArray0 0 sPtr
      unsafePackCStringFinalizer (castPtr sPtr) (fromIntegral sLen)
        (g_free (castPtr sPtr))

    -- | Returns the text in the range [@start@,@end@). Similar to
    -- `textBufferGetSlice` but uses 'ByteString' buffers.
    --
    -- * The returned buffer is a UTF-8 encoded string.
    --
    textBufferGetByteStringSlice :: TextBufferClass self => self
     -> TextIter -- ^ @start@ - start of a range
     -> TextIter -- ^ @end@ - end of a range
     -> Bool -- ^ @includeHiddenChars@ - whether to include invisible text
     -> IO ByteString
    textBufferGetByteStringSlice :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> Bool -> IO ByteString
    textBufferGetByteStringSlice self
    self TextIter
    start TextIter
    end Bool
    includeHiddenChars = do
      sPtr <- (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextBuffer -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar))
    -> (Ptr TextIter -> IO (Ptr CChar)) -> IO (Ptr CChar)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer
    -> Ptr TextIter -> Ptr TextIter -> CInt -> IO (Ptr CChar)
    gtk_text_buffer_get_slice Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 570 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    start
        TextIter
    end
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    includeHiddenChars)
      sLen <- lengthArray0 0 sPtr
      unsafePackCStringFinalizer (castPtr sPtr) (fromIntegral sLen)
        (g_free (castPtr sPtr))

    -- | Inserts an image into the text buffer at @iter@. The image will be
    -- counted as one character in character counts, and when obtaining the buffer
    -- contents as a string, will be represented by the Unicode \"object
    -- replacement character\" @(chr 0xFFFC)@. Note that the \"slice\" variants for
    -- obtaining portions of the buffer as a string include this character for
    -- pixbufs, but the \"text\" variants do not. e.g. see 'textBufferGetSlice' and
    -- 'textBufferGetText'.
    --
    textBufferInsertPixbuf :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - location to insert the pixbuf
     -> Pixbuf -- ^ @pixbuf@ - a 'Pixbuf'
     -> IO ()
    textBufferInsertPixbuf :: forall self.
    TextBufferClass self =>
    self -> TextIter -> Pixbuf -> IO ()
    textBufferInsertPixbuf self
    self TextIter
    iter Pixbuf
    pixbuf =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (Pixbuf ForeignPtr Pixbuf
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr Pixbuf -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Pixbuf
    arg3 ((Ptr Pixbuf -> IO ()) -> IO ()) -> (Ptr Pixbuf -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Pixbuf
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr Pixbuf -> IO ()
    gtk_text_buffer_insert_pixbuf Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr Pixbuf
    argPtr3)
    {-# LINE 592 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        Pixbuf
    pixbuf

    -- | Creates a mark at position @where@. If @markName@ 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).
    --
    -- Emits the 'markSet' signal as notification of the mark's initial
    -- placement.
    --
    textBufferCreateMark :: TextBufferClass self => self
     -> Maybe MarkName -- ^ @markName@ - name for mark, or @Nothing@
     -> TextIter -- ^ @where@ - location to place mark
     -> Bool -- ^ @leftGravity@ - whether the mark has left gravity
     -> IO TextMark -- ^ returns the new 'TextMark' object
    textBufferCreateMark :: forall self.
    TextBufferClass self =>
    self -> Maybe MarkName -> TextIter -> Bool -> IO TextMark
    textBufferCreateMark self
    self Maybe MarkName
    markName TextIter
    where_ Bool
    leftGravity =
      (ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    -> IO (Ptr TextMark) -> IO TextMark
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    forall {a}. (ForeignPtr TextMark -> TextMark, FinalizerPtr a)
    mkTextMark (IO (Ptr TextMark) -> IO TextMark)
    -> IO (Ptr TextMark) -> IO TextMark
    forall a b. (a -> b) -> a -> b
    $
      (MarkName -> (Ptr CChar -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> Maybe MarkName
    -> (Ptr CChar -> IO (Ptr TextMark))
    -> IO (Ptr TextMark)
    forall a b c.
    (a -> (Ptr b -> IO c) -> IO c)
    -> Maybe a -> (Ptr b -> IO c) -> IO c
    maybeWith MarkName -> (Ptr CChar -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall s a. GlibString s => s -> (Ptr CChar -> IO a) -> IO a
    forall a. MarkName -> (Ptr CChar -> IO a) -> IO a
    withUTFString Maybe MarkName
    markName ((Ptr CChar -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> (Ptr CChar -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. (a -> b) -> a -> b
    $ \Ptr CChar
    markNamePtr ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> (Ptr TextIter -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer
    -> Ptr CChar -> Ptr TextIter -> CInt -> IO (Ptr TextMark)
    gtk_text_buffer_create_mark Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 617 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    markNamePtr
        TextIter
    where_
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    leftGravity)

    -- | Adds the mark at position given by the 'TextIter'.
    -- The mark may not be added to any other buffer.
    --
    -- Emits the 'markSet' signal as notification of the mark's initial placement.
    --
    textBufferAddMark :: TextBufferClass self => self
     -> TextMark -- ^ @mark@ the mark to add
     -> TextIter -- ^ @iter@ location to place mark
     -> IO ()
    textBufferAddMark :: forall self.
    TextBufferClass self =>
    self -> TextMark -> TextIter -> IO ()
    textBufferAddMark self
    self TextMark
    mark TextIter
    iter =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextMark ForeignPtr TextMark
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextMark -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextMark
    arg2 ((Ptr TextMark -> IO ()) -> IO ())
    -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextMark
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextMark -> Ptr TextIter -> IO ()
    gtk_text_buffer_add_mark Ptr TextBuffer
    argPtr1 Ptr TextMark
    argPtr2 Ptr TextIter
    argPtr3) (self -> TextBuffer
    forall o. TextBufferClass o => o -> TextBuffer
    toTextBuffer self
    self) (TextMark -> TextMark
    forall o. TextMarkClass o => o -> TextMark
    toTextMark TextMark
    mark) TextIter
    iter

    -- | Moves @mark@ to the new location @where@. Emits the 'markSet' signal
    -- as notification of the move.
    --
    textBufferMoveMark :: (TextBufferClass self, TextMarkClass mark) => self
     -> mark -- ^ @mark@ - a 'TextMark'
     -> TextIter -- ^ @where@ - new location for @mark@ in the buffer
     -> IO ()
    textBufferMoveMark :: forall self mark.
    (TextBufferClass self, TextMarkClass mark) =>
    self -> mark -> TextIter -> IO ()
    textBufferMoveMark self
    self mark
    mark TextIter
    where_ =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextMark ForeignPtr TextMark
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextMark -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextMark
    arg2 ((Ptr TextMark -> IO ()) -> IO ())
    -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextMark
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextMark -> Ptr TextIter -> IO ()
    gtk_text_buffer_move_mark Ptr TextBuffer
    argPtr1 Ptr TextMark
    argPtr2 Ptr TextIter
    argPtr3)
    {-# LINE 645 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        (mark -> TextMark
    forall o. TextMarkClass o => o -> TextMark
    toTextMark mark
    mark)
        TextIter
    where_

    -- | Moves the mark named @name@ (which must exist) to location @where@. See
    -- 'textBufferMoveMark' for details.
    --
    textBufferMoveMarkByName :: TextBufferClass self => self
     -> MarkName -- ^ @name@ - name of a mark
     -> TextIter -- ^ @where@ - new location for mark
     -> IO ()
    textBufferMoveMarkByName :: forall self.
    TextBufferClass self =>
    self -> MarkName -> TextIter -> IO ()
    textBufferMoveMarkByName self
    self MarkName
    name TextIter
    where_ =
      MarkName -> (Ptr CChar -> IO ()) -> IO ()
    forall s a. GlibString s => s -> (Ptr CChar -> IO a) -> IO a
    forall a. MarkName -> (Ptr CChar -> IO a) -> IO a
    withUTFString MarkName
    name ((Ptr CChar -> IO ()) -> IO ()) -> (Ptr CChar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CChar
    namePtr ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr CChar -> Ptr TextIter -> IO ()
    gtk_text_buffer_move_mark_by_name Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 Ptr TextIter
    argPtr3)
    {-# LINE 659 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    namePtr
        TextIter
    where_

    -- | Deletes @mark@, so that it's no longer located anywhere in the buffer.
    -- Most operations on @mark@ become invalid. There is no way to undelete a
    -- mark. 'Graphics.UI.Gtk.Multiline.TextMark.textMarkGetDeleted' will
    -- return @True@ after this function has been
    -- called on a mark; 'Graphics.UI.Gtk.Multiline.TextMark.textMarkGetDeleted'
    -- indicates that a mark no longer
    -- belongs to a buffer. The 'markDeleted' signal will be emitted as
    -- notification after the mark is deleted.
    --
    textBufferDeleteMark :: (TextBufferClass self, TextMarkClass mark) => self
     -> mark -- ^ @mark@ - a 'TextMark' in the buffer
     -> IO ()
    textBufferDeleteMark :: forall self mark.
    (TextBufferClass self, TextMarkClass mark) =>
    self -> mark -> IO ()
    textBufferDeleteMark self
    self mark
    mark =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextMark ForeignPtr TextMark
    arg2) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextMark -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextMark
    arg2 ((Ptr TextMark -> IO ()) -> IO ())
    -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextMark
    argPtr2 ->Ptr TextBuffer -> Ptr TextMark -> IO ()
    gtk_text_buffer_delete_mark Ptr TextBuffer
    argPtr1 Ptr TextMark
    argPtr2)
    {-# LINE 677 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        (mark -> TextMark
    forall o. TextMarkClass o => o -> TextMark
    toTextMark mark
    mark)

    -- | Deletes the mark named @name@; the mark must exist. See
    -- 'textBufferDeleteMark' for details.
    --
    textBufferDeleteMarkByName :: TextBufferClass self => self
     -> MarkName -- ^ @name@ - name of a mark in @buffer@
     -> IO ()
    textBufferDeleteMarkByName :: forall self. TextBufferClass self => self -> MarkName -> IO ()
    textBufferDeleteMarkByName self
    self MarkName
    name =
      MarkName -> (Ptr CChar -> IO ()) -> IO ()
    forall s a. GlibString s => s -> (Ptr CChar -> IO a) -> IO a
    forall a. MarkName -> (Ptr CChar -> IO a) -> IO a
    withUTFString MarkName
    name ((Ptr CChar -> IO ()) -> IO ()) -> (Ptr CChar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CChar
    namePtr ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> IO ()
    gtk_text_buffer_delete_mark_by_name Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2)
    {-# LINE 689 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    namePtr

    -- | Returns the mark named @name@ in the buffer, or @Nothing@ if no such
    -- mark exists in the buffer.
    --
    textBufferGetMark :: TextBufferClass self => self
     -> MarkName -- ^ @name@ - a mark name
     -> IO (Maybe TextMark) -- ^ returns a 'TextMark', or @Nothing@
    textBufferGetMark :: forall self.
    TextBufferClass self =>
    self -> MarkName -> IO (Maybe TextMark)
    textBufferGetMark self
    self MarkName
    name =
      (IO (Ptr TextMark) -> IO TextMark)
    -> IO (Ptr TextMark) -> IO (Maybe TextMark)
    forall a. (IO (Ptr a) -> IO a) -> IO (Ptr a) -> IO (Maybe a)
    maybeNull ((ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    -> IO (Ptr TextMark) -> IO TextMark
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    forall {a}. (ForeignPtr TextMark -> TextMark, FinalizerPtr a)
    mkTextMark) (IO (Ptr TextMark) -> IO (Maybe TextMark))
    -> IO (Ptr TextMark) -> IO (Maybe TextMark)
    forall a b. (a -> b) -> a -> b
    $
      MarkName -> (Ptr CChar -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall s a. GlibString s => s -> (Ptr CChar -> IO a) -> IO a
    forall a. MarkName -> (Ptr CChar -> IO a) -> IO a
    withUTFString MarkName
    name ((Ptr CChar -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> (Ptr CChar -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. (a -> b) -> a -> b
    $ \Ptr CChar
    namePtr ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> Ptr CChar -> IO (Ptr TextMark)
    gtk_text_buffer_get_mark Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2)
    {-# LINE 702 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    namePtr

    -- | Returns the mark that represents the cursor (insertion point). Equivalent
    -- to calling @liftM fromJust $ textBufferGetMark \"insert\"@, but very
    -- slightly more efficient, and involves less typing.
    --
    textBufferGetInsert :: TextBufferClass self => self -> IO TextMark
    textBufferGetInsert :: forall self. TextBufferClass self => self -> IO TextMark
    textBufferGetInsert self
    self =
      (ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    -> IO (Ptr TextMark) -> IO TextMark
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    forall {a}. (ForeignPtr TextMark -> TextMark, FinalizerPtr a)
    mkTextMark (IO (Ptr TextMark) -> IO TextMark)
    -> IO (Ptr TextMark) -> IO TextMark
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO (Ptr TextMark)
    gtk_text_buffer_get_insert Ptr TextBuffer
    argPtr1)
    {-# LINE 713 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | Returns the mark that represents the selection bound. Equivalent to
    -- calling @liftM fromJust $ textBufferGetMark \"selection_bound\"@, but
    -- very slightly more efficient, and involves less typing.
    --
    -- The currently-selected text in @buffer@ is the region between the
    -- \"selection_bound\" and \"insert\" marks. If \"selection_bound\" and
    -- \"insert\" are in the same place, then there is no current selection.
    -- 'textBufferGetSelectionBounds' is another convenient function for handling
    -- the selection, if you just want to know whether there's a selection and what
    -- its bounds are.
    --
    textBufferGetSelectionBound :: TextBufferClass self => self -> IO TextMark
    textBufferGetSelectionBound :: forall self. TextBufferClass self => self -> IO TextMark
    textBufferGetSelectionBound self
    self =
      (ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    -> IO (Ptr TextMark) -> IO TextMark
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TextMark -> TextMark, FinalizerPtr TextMark)
    forall {a}. (ForeignPtr TextMark -> TextMark, FinalizerPtr a)
    mkTextMark (IO (Ptr TextMark) -> IO TextMark)
    -> IO (Ptr TextMark) -> IO TextMark
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark))
    -> (Ptr TextBuffer -> IO (Ptr TextMark)) -> IO (Ptr TextMark)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO (Ptr TextMark)
    gtk_text_buffer_get_selection_bound Ptr TextBuffer
    argPtr1)
    {-# LINE 730 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | This function moves the \"insert\" and \"selection_bound\" marks
    -- simultaneously. If you move them to the same place in two steps with
    -- 'textBufferMoveMark', you will temporarily select a region in between their
    -- old and new locations, which can be pretty inefficient since the
    -- temporarily-selected region will force stuff to be recalculated. This
    -- function moves them as a unit, which can be optimized.
    --
    textBufferPlaceCursor :: TextBufferClass self => self
     -> TextIter -- ^ @where@ - where to put the cursor
     -> IO ()
    textBufferPlaceCursor :: forall self. TextBufferClass self => self -> TextIter -> IO ()
    textBufferPlaceCursor self
    self TextIter
    where_ =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> IO ()
    gtk_text_buffer_place_cursor Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2)
    {-# LINE 744 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    where_

    -- | Emits the 'applyTag' signal on the buffer. The default handler for the
    -- signal applies @tag@ to the given range. @start@ and @end@ do not have to be
    -- in order.
    --
    textBufferApplyTag :: (TextBufferClass self, TextTagClass tag) => self
     -> tag -- ^ @tag@ - a 'TextTag'
     -> TextIter -- ^ @start@ - one bound of range to be tagged
     -> TextIter -- ^ @end@ - other bound of range to be tagged
     -> IO ()
    textBufferApplyTag :: forall self tag.
    (TextBufferClass self, TextTagClass tag) =>
    self -> tag -> TextIter -> TextIter -> IO ()
    textBufferApplyTag self
    self tag
    tag TextIter
    start TextIter
    end =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextTag ForeignPtr TextTag
    arg2) (TextIter ForeignPtr TextIter
    arg3) (TextIter ForeignPtr TextIter
    arg4) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextTag -> (Ptr TextTag -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextTag
    arg2 ((Ptr TextTag -> IO ()) -> IO ())
    -> (Ptr TextTag -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextTag
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg4 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr4 ->Ptr TextBuffer
    -> Ptr TextTag -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_apply_tag Ptr TextBuffer
    argPtr1 Ptr TextTag
    argPtr2 Ptr TextIter
    argPtr3 Ptr TextIter
    argPtr4)
    {-# LINE 758 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        (tag -> TextTag
    forall o. TextTagClass o => o -> TextTag
    toTextTag tag
    tag)
        TextIter
    start
        TextIter
    end

    -- | Emits the 'removeTag' signal. The default handler for the signal
    -- removes all occurrences of @tag@ from the given range. @start@ and @end@
    -- don't have to be in order.
    --
    textBufferRemoveTag :: (TextBufferClass self, TextTagClass tag) => self
     -> tag -- ^ @tag@ - a 'TextTag'
     -> TextIter -- ^ @start@ - one bound of range to be untagged
     -> TextIter -- ^ @end@ - other bound of range to be untagged
     -> IO ()
    textBufferRemoveTag :: forall self tag.
    (TextBufferClass self, TextTagClass tag) =>
    self -> tag -> TextIter -> TextIter -> IO ()
    textBufferRemoveTag self
    self tag
    tag TextIter
    start TextIter
    end =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextTag ForeignPtr TextTag
    arg2) (TextIter ForeignPtr TextIter
    arg3) (TextIter ForeignPtr TextIter
    arg4) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextTag -> (Ptr TextTag -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextTag
    arg2 ((Ptr TextTag -> IO ()) -> IO ())
    -> (Ptr TextTag -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextTag
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg4 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr4 ->Ptr TextBuffer
    -> Ptr TextTag -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_remove_tag Ptr TextBuffer
    argPtr1 Ptr TextTag
    argPtr2 Ptr TextIter
    argPtr3 Ptr TextIter
    argPtr4)
    {-# LINE 774 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        (tag -> TextTag
    forall o. TextTagClass o => o -> TextTag
    toTextTag tag
    tag)
        TextIter
    start
        TextIter
    end

    -- | Calls 'Graphics.UI.Gtk.Multiline.TextTagTable.textTagTableLookup' on the
    -- buffer's tag table to get a 'TextTag', then calls 'textBufferApplyTag'.
    --
    textBufferApplyTagByName :: TextBufferClass self => self
     -> TagName -- ^ @name@ - name of a named 'TextTag'
     -> TextIter -- ^ @start@ - one bound of range to be tagged
     -> TextIter -- ^ @end@ - other bound of range to be tagged
     -> IO ()
    textBufferApplyTagByName :: forall self.
    TextBufferClass self =>
    self -> MarkName -> TextIter -> TextIter -> IO ()
    textBufferApplyTagByName self
    self MarkName
    name TextIter
    start TextIter
    end =
      MarkName -> (Ptr CChar -> IO ()) -> IO ()
    forall s a. GlibString s => s -> (Ptr CChar -> IO a) -> IO a
    forall a. MarkName -> (Ptr CChar -> IO a) -> IO a
    withUTFString MarkName
    name ((Ptr CChar -> IO ()) -> IO ()) -> (Ptr CChar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CChar
    namePtr ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 (TextIter ForeignPtr TextIter
    arg3) (TextIter ForeignPtr TextIter
    arg4) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg4 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr4 ->Ptr TextBuffer
    -> Ptr CChar -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_apply_tag_by_name Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 Ptr TextIter
    argPtr3 Ptr TextIter
    argPtr4)
    {-# LINE 790 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    namePtr
        TextIter
    start
        TextIter
    end

    -- | Calls 'Graphics.UI.Gtk.Multiline.TextTagTable.textTagTableLookup' on the
    -- buffer's tag table to get a 'TextTag', then calls 'textBufferRemoveTag'.
    --
    textBufferRemoveTagByName :: TextBufferClass self => self
     -> TagName -- ^ @name@ - name of a 'TextTag'
     -> TextIter -- ^ @start@ - one bound of range to be untagged
     -> TextIter -- ^ @end@ - other bound of range to be untagged
     -> IO ()
    textBufferRemoveTagByName :: forall self.
    TextBufferClass self =>
    self -> MarkName -> TextIter -> TextIter -> IO ()
    textBufferRemoveTagByName self
    self MarkName
    name TextIter
    start TextIter
    end =
      MarkName -> (Ptr CChar -> IO ()) -> IO ()
    forall s a. GlibString s => s -> (Ptr CChar -> IO a) -> IO a
    forall a. MarkName -> (Ptr CChar -> IO a) -> IO a
    withUTFString MarkName
    name ((Ptr CChar -> IO ()) -> IO ()) -> (Ptr CChar -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr CChar
    namePtr ->
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) Ptr CChar
    arg2 (TextIter ForeignPtr TextIter
    arg3) (TextIter ForeignPtr TextIter
    arg4) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg4 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr4 ->Ptr TextBuffer
    -> Ptr CChar -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_remove_tag_by_name Ptr TextBuffer
    argPtr1 Ptr CChar
    arg2 Ptr TextIter
    argPtr3 Ptr TextIter
    argPtr4)
    {-# LINE 806 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Ptr CChar
    namePtr
        TextIter
    start
        TextIter
    end

    -- | Removes all tags in the range between @start@ and @end@. Be careful with
    -- this function; it could remove tags added in code unrelated to the code
    -- you\'re currently writing. That is, using this function is probably a bad
    -- idea if you have two or more unrelated code sections that add tags.
    --
    textBufferRemoveAllTags :: TextBufferClass self => self
     -> TextIter -- ^ @start@ - one bound of range to be untagged
     -> TextIter -- ^ @end@ - other bound of range to be untagged
     -> IO ()
    textBufferRemoveAllTags :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> IO ()
    textBufferRemoveAllTags self
    self TextIter
    start TextIter
    end =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_remove_all_tags Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3)
    {-# LINE 822 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    start
        TextIter
    end

    -- | Obtains an iterator pointing to @charOffset@ within the given line. The
    -- @charOffset@ must exist, offsets off the end of the line are not allowed.
    --
    textBufferGetIterAtLineOffset :: TextBufferClass self => self
     -> Int -- ^ @lineNumber@ - line number counting from 0
     -> Int -- ^ @charOffset@ - char offset from start of line
     -> IO TextIter
    textBufferGetIterAtLineOffset :: forall self.
    TextBufferClass self =>
    self -> Int -> Int -> IO TextIter
    textBufferGetIterAtLineOffset self
    self Int
    lineNumber Int
    charOffset = do
      iter <- IO TextIter
    makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) CInt
    arg3 CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> CInt -> CInt -> IO ()
    gtk_text_buffer_get_iter_at_line_offset Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 CInt
    arg3 CInt
    arg4)
    {-# LINE 836 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        iter
        (fromIntegral lineNumber)
        (fromIntegral charOffset)
      return iter

    -- | Creates an iterator pointing to a position @charOffset@ chars from the
    -- start of the entire buffer. If @charOffset@ is -1 or greater than the number
    -- of characters in the buffer, the end iterator is returned, that is the
    -- iterator one past the last valid character in the buffer.
    --
    textBufferGetIterAtOffset :: TextBufferClass self => self
     -> Int -- ^ @charOffset@ - char offset from start of buffer (counting
                 -- from 0) or -1
     -> IO TextIter
    textBufferGetIterAtOffset :: forall self. TextBufferClass self => self -> Int -> IO TextIter
    textBufferGetIterAtOffset self
    self Int
    charOffset = do
      iter <- IO TextIter
    makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> CInt -> IO ()
    gtk_text_buffer_get_iter_at_offset Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 CInt
    arg3)
    {-# LINE 854 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        iter
        (fromIntegral charOffset)
      return iter

    -- | Create an iterator at a specific line.
    --
    textBufferGetIterAtLine :: TextBufferClass self => self
     -> Int -- ^ @lineNumber@ - line number counting from 0
     -> IO TextIter
    textBufferGetIterAtLine :: forall self. TextBufferClass self => self -> Int -> IO TextIter
    textBufferGetIterAtLine self
    self Int
    lineNumber = do
      iter <- IO TextIter
    makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> CInt -> IO ()
    gtk_text_buffer_get_iter_at_line Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 CInt
    arg3)
    {-# LINE 867 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        iter
        (fromIntegral lineNumber)
      return iter

    -- | Create an iterator from a mark.
    --
    textBufferGetIterAtMark :: (TextBufferClass self, TextMarkClass mark) => self
     -> mark -- ^ @mark@ - a 'TextMark' in the buffer
     -> IO TextIter
    textBufferGetIterAtMark :: forall self mark.
    (TextBufferClass self, TextMarkClass mark) =>
    self -> mark -> IO TextIter
    textBufferGetIterAtMark self
    self mark
    mark = do
      iter <- IO TextIter
    makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextMark ForeignPtr TextMark
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextMark -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextMark
    arg3 ((Ptr TextMark -> IO ()) -> IO ())
    -> (Ptr TextMark -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextMark
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextMark -> IO ()
    gtk_text_buffer_get_iter_at_mark Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextMark
    argPtr3)
    {-# LINE 881 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        iter
        (toTextMark mark)
      return iter

    -- | Create an iterator at the first position in the text buffer. This is
    -- the same as using 'textBufferGetIterAtOffset' to get the iter at character
    -- offset 0.
    --
    textBufferGetStartIter :: TextBufferClass self => self -> IO TextIter
    textBufferGetStartIter :: forall self. TextBufferClass self => self -> IO TextIter
    textBufferGetStartIter self
    self = do
      iter <- IO TextIter
    makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> IO ()
    gtk_text_buffer_get_start_iter Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2)
    {-# LINE 894 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        iter
      return iter

    -- | Returns the \"end iterator,\" one past the last valid
    -- character in the text buffer. If dereferenced with
    -- 'Graphics.UI.Gtk.Multiline.TextIter.textIterGetChar', the
    -- end iterator has a character value of 0. The entire buffer lies in the range
    -- from the first position in the buffer (call 'textBufferGetStartIter' to get
    -- character position 0) to the end iterator.
    --
    textBufferGetEndIter :: TextBufferClass self => self -> IO TextIter
    textBufferGetEndIter :: forall self. TextBufferClass self => self -> IO TextIter
    textBufferGetEndIter self
    self = do
      iter <- IO TextIter
    makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> IO ()
    gtk_text_buffer_get_end_iter Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2)
    {-# LINE 909 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        iter
      return iter

    -- | Indicates whether the buffer has been modified since the last call to
    -- 'textBufferSetModified' set the modification flag to @False@. Used for
    -- example to enable a \"save\" function in a text editor.
    --
    -- It is often more convenient to use 'onModifiedChanged'.
    --
    textBufferGetModified :: TextBufferClass self => self
     -> IO Bool -- ^ returns @True@ if the buffer has been modified
    textBufferGetModified :: forall self. TextBufferClass self => self -> IO Bool
    textBufferGetModified self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO CInt
    gtk_text_buffer_get_modified Ptr TextBuffer
    argPtr1)
    {-# LINE 924 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | Used to keep track of whether the buffer has been modified since the last
    -- time it was saved. Whenever the buffer is saved to disk, call
    -- @'textBufferSetModified' buffer False@. When the buffer is
    -- modified, it will automatically toggled on the modified bit again. When the
    -- modified bit flips, the buffer emits a 'modifiedChanged' signal.
    --
    textBufferSetModified :: TextBufferClass self => self -> Bool -> IO ()
    textBufferSetModified :: forall self. TextBufferClass self => self -> Bool -> IO ()
    textBufferSetModified self
    self Bool
    setting =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) CInt
    arg2 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> CInt -> IO ()
    gtk_text_buffer_set_modified Ptr TextBuffer
    argPtr1 CInt
    arg2)
    {-# LINE 935 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    setting)

    -- | Deletes the range between the \"insert\" and \"selection_bound\" marks,
    -- that is, the currently-selected text. If @interactive@ is @True@, the
    -- editability of the selection will be considered (users can't delete
    -- uneditable text).
    --
    textBufferDeleteSelection :: TextBufferClass self => self
     -> Bool -- ^ @interactive@ - whether the deletion is caused by user
                -- interaction
     -> Bool -- ^ @defaultEditable@ - whether the buffer is editable by default
     -> IO Bool -- ^ returns whether there was a non-empty selection to delete
    textBufferDeleteSelection :: forall self.
    TextBufferClass self =>
    self -> Bool -> Bool -> IO Bool
    textBufferDeleteSelection self
    self Bool
    interactive Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) CInt
    arg2 CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> CInt -> CInt -> IO CInt
    gtk_text_buffer_delete_selection Ptr TextBuffer
    argPtr1 CInt
    arg2 CInt
    arg3)
    {-# LINE 951 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    interactive)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Check if a selection exists.
    --
    textBufferHasSelection :: TextBufferClass self => self -> IO Bool
    textBufferHasSelection :: forall self. TextBufferClass self => self -> IO Bool
    textBufferHasSelection self
    self =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextIter -> IO CInt
    gtk_text_buffer_get_selection_bounds Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3)
    {-# LINE 961 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        (ForeignPtr TextIter -> TextIter
    TextIter ForeignPtr TextIter
    forall a. ForeignPtr a
    nullForeignPtr)
        (ForeignPtr TextIter -> TextIter
    TextIter ForeignPtr TextIter
    forall a. ForeignPtr a
    nullForeignPtr)

    -- | Returns the bounds of the selection (if the selection has length 0, then
    -- @start@ and @end@ will be the same). @start@ and @end@ will be in ascending
    -- order.
    --
    textBufferGetSelectionBounds :: TextBufferClass self => self
     -> IO (TextIter, TextIter) -- ^ @(start, end)@ returns the selection start and
                                -- end iterators
    textBufferGetSelectionBounds :: forall self.
    TextBufferClass self =>
    self -> IO (TextIter, TextIter)
    textBufferGetSelectionBounds self
    self = do
      start <- IO TextIter
    makeEmptyTextIter
      end <- makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextIter -> IO CInt
    gtk_text_buffer_get_selection_bounds Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3)
    {-# LINE 976 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        start
        end
      return (start, end)

    -- | Called to indicate that the buffer operations between here and a call to
    -- 'textBufferEndUserAction' are part of a single user-visible operation. The
    -- operations between 'textBufferBeginUserAction' and 'textBufferEndUserAction'
    -- can then be grouped when creating an undo stack. 'TextBuffer' maintains a
    -- count of calls to 'textBufferBeginUserAction' that have not been closed with
    -- a call to 'textBufferEndUserAction', and emits the 'beginUserAction' and
    -- 'endUserAction' signals only for the outermost pair of calls. This
    -- allows you to build user actions from other user actions.
    --
    -- The \"interactive\" buffer mutation functions, such as
    -- 'textBufferInsertInteractive', automatically call begin\/end user action
    -- around the buffer operations they perform, so there's no need to add extra
    -- calls if you user action consists solely of a single call to one of those
    -- functions.
    --
    textBufferBeginUserAction :: TextBufferClass self => self -> IO ()
    textBufferBeginUserAction :: forall self. TextBufferClass self => self -> IO ()
    textBufferBeginUserAction self
    self =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO ()
    gtk_text_buffer_begin_user_action Ptr TextBuffer
    argPtr1)
    {-# LINE 999 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | Should be paired with a call to 'textBufferBeginUserAction'. See that
    -- function for a full explanation.
    --
    textBufferEndUserAction :: TextBufferClass self => self -> IO ()
    textBufferEndUserAction :: forall self. TextBufferClass self => self -> IO ()
    textBufferEndUserAction self
    self =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->Ptr TextBuffer -> IO ()
    gtk_text_buffer_end_user_action Ptr TextBuffer
    argPtr1)
    {-# LINE 1007 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)

    -- | Performs the appropriate action as if the user hit the delete key with
    -- the cursor at the position specified by @iter@. In the normal case a single
    -- character will be deleted, but when combining accents are involved, more
    -- than one character can be deleted, and when precomposed character and accent
    -- combinations are involved, less than one character will be deleted.
    --
    -- Because the buffer is modified, all outstanding iterators become invalid
    -- after calling this function; however, the @iter@ will be re-initialized to
    -- point to the location where text was deleted.
    --
    -- * Available since Gtk+ version 2.6
    --
    textBufferBackspace :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - a position in @buffer@
     -> Bool -- ^ @interactive@ - whether the deletion is caused by user
                 -- interaction
     -> Bool -- ^ @defaultEditable@ - whether the buffer is editable by
                 -- default
     -> IO Bool -- ^ returns @True@ if the buffer was modified
    textBufferBackspace :: forall self.
    TextBufferClass self =>
    self -> TextIter -> Bool -> Bool -> IO Bool
    textBufferBackspace self
    self TextIter
    iter Bool
    interactive Bool
    defaultEditable =
      (CInt -> Bool) -> IO CInt -> IO Bool
    forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
    liftM CInt -> Bool
    forall a. (Eq a, Num a) => a -> Bool
    toBool (IO CInt -> IO Bool) -> IO CInt -> IO Bool
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) CInt
    arg3 CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO CInt) -> IO CInt)
    -> (Ptr TextBuffer -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO CInt) -> IO CInt)
    -> (Ptr TextIter -> IO CInt) -> IO CInt
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> CInt -> CInt -> IO CInt
    gtk_text_buffer_backspace Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 CInt
    arg3 CInt
    arg4)
    {-# LINE 1032 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    interactive)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Inserts a child widget anchor into the text buffer at @iter@. The anchor
    -- will be counted as one character in character counts, and when obtaining the
    -- buffer contents as a string, will be represented by the Unicode \"object
    -- replacement character\" @(chr 0xFFFC)@. Note that the \"slice\" variants for
    -- obtaining portions of the buffer as a string include this character for
    -- child anchors, but the \"text\" variants do not. e.g. see
    -- 'textBufferGetSlice' and 'textBufferGetText'. Consider
    -- 'textBufferCreateChildAnchor' as a more convenient alternative to this
    -- function.
    --
    textBufferInsertChildAnchor :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - location to insert the anchor
     -> TextChildAnchor -- ^ @anchor@ - a 'TextChildAnchor'
     -> IO ()
    textBufferInsertChildAnchor :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextChildAnchor -> IO ()
    textBufferInsertChildAnchor self
    self TextIter
    iter TextChildAnchor
    anchor =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextChildAnchor ForeignPtr TextChildAnchor
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextChildAnchor
    -> (Ptr TextChildAnchor -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextChildAnchor
    arg3 ((Ptr TextChildAnchor -> IO ()) -> IO ())
    -> (Ptr TextChildAnchor -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextChildAnchor
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextChildAnchor -> IO ()
    gtk_text_buffer_insert_child_anchor Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextChildAnchor
    argPtr3)
    {-# LINE 1054 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        TextChildAnchor
    anchor

    -- | This is a convenience function which simply creates a child anchor with
    -- 'Graphics.UI.Gtk.Multiline.TextView.textBufferChildAnchorNew' and inserts
    -- it into the buffer with 'textBufferInsertChildAnchor'.
    --
    textBufferCreateChildAnchor :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - location in the buffer
     -> IO TextChildAnchor -- ^ returns the created child anchor
    textBufferCreateChildAnchor :: forall self.
    TextBufferClass self =>
    self -> TextIter -> IO TextChildAnchor
    textBufferCreateChildAnchor self
    self TextIter
    iter =
      (ForeignPtr TextChildAnchor -> TextChildAnchor,
     FinalizerPtr TextChildAnchor)
    -> IO (Ptr TextChildAnchor) -> IO TextChildAnchor
    forall obj.
    GObjectClass obj =>
    (ForeignPtr obj -> obj, FinalizerPtr obj) -> IO (Ptr obj) -> IO obj
    makeNewGObject (ForeignPtr TextChildAnchor -> TextChildAnchor,
     FinalizerPtr TextChildAnchor)
    forall {a}.
    (ForeignPtr TextChildAnchor -> TextChildAnchor, FinalizerPtr a)
    mkTextChildAnchor (IO (Ptr TextChildAnchor) -> IO TextChildAnchor)
    -> IO (Ptr TextChildAnchor) -> IO TextChildAnchor
    forall a b. (a -> b) -> a -> b
    $
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) -> ForeignPtr TextBuffer
    -> (Ptr TextBuffer -> IO (Ptr TextChildAnchor))
    -> IO (Ptr TextChildAnchor)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO (Ptr TextChildAnchor))
     -> IO (Ptr TextChildAnchor))
    -> (Ptr TextBuffer -> IO (Ptr TextChildAnchor))
    -> IO (Ptr TextChildAnchor)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter
    -> (Ptr TextIter -> IO (Ptr TextChildAnchor))
    -> IO (Ptr TextChildAnchor)
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO (Ptr TextChildAnchor))
     -> IO (Ptr TextChildAnchor))
    -> (Ptr TextIter -> IO (Ptr TextChildAnchor))
    -> IO (Ptr TextChildAnchor)
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->Ptr TextBuffer -> Ptr TextIter -> IO (Ptr TextChildAnchor)
    gtk_text_buffer_create_child_anchor Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2)
    {-# LINE 1068 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter

    -- | This function moves the \"insert\" and \"selection_bound\" marks
    -- simultaneously. If you move them in two steps with 'textBufferMoveMark', you
    -- will temporarily select a region in between their old and new locations,
    -- which can be pretty inefficient since the temporarily-selected region will
    -- force stuff to be recalculated. This function moves them as a unit, which
    -- can be optimized.
    --
    -- * Available since Gtk+ version 2.4
    --
    textBufferSelectRange :: TextBufferClass self => self
     -> TextIter -- ^ @ins@ - where to put the \"insert\" mark
     -> TextIter -- ^ @bound@ - where to put the \"selection_bound\" mark
     -> IO ()
    textBufferSelectRange :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextIter -> IO ()
    textBufferSelectRange self
    self TextIter
    ins TextIter
    bound =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_select_range Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3)
    {-# LINE 1087 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    ins
        TextIter
    bound

    -- | Obtains the location of @anchor@ within @buffer@.
    --
    textBufferGetIterAtChildAnchor :: TextBufferClass self => self
     -> TextIter -- ^ @iter@ - an iterator to be initialized
     -> TextChildAnchor -- ^ @anchor@ - a child anchor that appears in @buffer@
     -> IO ()
    textBufferGetIterAtChildAnchor :: forall self.
    TextBufferClass self =>
    self -> TextIter -> TextChildAnchor -> IO ()
    textBufferGetIterAtChildAnchor self
    self TextIter
    iter TextChildAnchor
    anchor =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextChildAnchor ForeignPtr TextChildAnchor
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextChildAnchor
    -> (Ptr TextChildAnchor -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextChildAnchor
    arg3 ((Ptr TextChildAnchor -> IO ()) -> IO ())
    -> (Ptr TextChildAnchor -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextChildAnchor
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextChildAnchor -> IO ()
    gtk_text_buffer_get_iter_at_child_anchor Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextChildAnchor
    argPtr3)
    {-# LINE 1100 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        TextIter
    iter
        TextChildAnchor
    anchor

    -- | Retrieves the first and last iterators in the buffer, i.e. the entire
    -- buffer lies within the range @[start,end)@.
    --
    textBufferGetBounds :: TextBufferClass self => self
     -> IO (TextIter, TextIter) -- ^ return the first and last iterators in the buffer
    textBufferGetBounds :: forall self.
    TextBufferClass self =>
    self -> IO (TextIter, TextIter)
    textBufferGetBounds self
    self = do
      start <- IO TextIter
    makeEmptyTextIter
      end <- makeEmptyTextIter
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (TextIter ForeignPtr TextIter
    arg2) (TextIter ForeignPtr TextIter
    arg3) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg2 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr TextIter -> Ptr TextIter -> IO ()
    gtk_text_buffer_get_bounds Ptr TextBuffer
    argPtr1 Ptr TextIter
    argPtr2 Ptr TextIter
    argPtr3)
    {-# LINE 1113 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        start
        end
      return (start, end)

    -- | Pastes the contents of a clipboard at the given @location@.
    -- (Note: pasting is asynchronous, that is,
    -- we'll ask for the paste data and return, and at some point later
    -- after the main loop runs, the paste data will be inserted.)
    textBufferPasteClipboard :: TextBufferClass self => self
      -> Clipboard -- ^ @clipboard@ - the GtkClipboard to paste from
      -> TextIter -- ^ @location@ - location to insert pasted text
      -> Bool -- ^ @defaultEditable@ - whether the buffer is editable by default
      -> IO ()
    textBufferPasteClipboard :: forall self.
    TextBufferClass self =>
    self -> Clipboard -> TextIter -> Bool -> IO ()
    textBufferPasteClipboard self
    self Clipboard
    clipboard TextIter
    overrideLocation Bool
    defaultEditable =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (Clipboard ForeignPtr Clipboard
    arg2) (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr Clipboard -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Clipboard
    arg2 ((Ptr Clipboard -> IO ()) -> IO ())
    -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Clipboard
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr Clipboard -> Ptr TextIter -> CInt -> IO ()
    gtk_text_buffer_paste_clipboard Ptr TextBuffer
    argPtr1 Ptr Clipboard
    argPtr2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 1130 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Clipboard
    clipboard
        TextIter
    overrideLocation
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Pastes the contents of a clipboard at the insertion point.
    -- (Note: pasting is asynchronous, that is,
    -- we'll ask for the paste data and return, and at some point later
    -- after the main loop runs, the paste data will be inserted.)
    textBufferPasteClipboardAtCursor :: TextBufferClass self => self
      -> Clipboard -- ^ @clipboard@ - the GtkClipboard to paste from
      -> Bool -- ^ @defaultEditable@ - whether the buffer is editable by default
      -> IO ()
    textBufferPasteClipboardAtCursor :: forall self.
    TextBufferClass self =>
    self -> Clipboard -> Bool -> IO ()
    textBufferPasteClipboardAtCursor self
    self Clipboard
    clipboard Bool
    defaultEditable =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (Clipboard ForeignPtr Clipboard
    arg2) (TextIter ForeignPtr TextIter
    arg3) CInt
    arg4 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr Clipboard -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Clipboard
    arg2 ((Ptr Clipboard -> IO ()) -> IO ())
    -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Clipboard
    argPtr2 ->ForeignPtr TextIter -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextIter
    arg3 ((Ptr TextIter -> IO ()) -> IO ())
    -> (Ptr TextIter -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextIter
    argPtr3 ->Ptr TextBuffer -> Ptr Clipboard -> Ptr TextIter -> CInt -> IO ()
    gtk_text_buffer_paste_clipboard Ptr TextBuffer
    argPtr1 Ptr Clipboard
    argPtr2 Ptr TextIter
    argPtr3 CInt
    arg4)
    {-# LINE 1145 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Clipboard
    clipboard
        (ForeignPtr TextIter -> TextIter
    TextIter ForeignPtr TextIter
    forall a. ForeignPtr a
    nullForeignPtr)
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Copies the currently-selected text to a clipboard.
    textBufferCopyClipboard :: TextBufferClass self => self
      -> Clipboard -- ^ @clipboard@ - the GtkClipboard object to copy to
      -> IO ()
    textBufferCopyClipboard :: forall self. TextBufferClass self => self -> Clipboard -> IO ()
    textBufferCopyClipboard self
    self Clipboard
    clipboard =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (Clipboard ForeignPtr Clipboard
    arg2) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr Clipboard -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Clipboard
    arg2 ((Ptr Clipboard -> IO ()) -> IO ())
    -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Clipboard
    argPtr2 ->Ptr TextBuffer -> Ptr Clipboard -> IO ()
    gtk_text_buffer_copy_clipboard Ptr TextBuffer
    argPtr1 Ptr Clipboard
    argPtr2)
    {-# LINE 1156 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Clipboard
    clipboard

    -- | Copies the currently-selected text to a clipboard,
    -- then deletes said text if it's editable.
    textBufferCutClipboard :: TextBufferClass self => self
      -> Clipboard -- ^ @clipboard@ - the GtkClipboard object to cut to
      -> Bool -- ^ @defaultEditable@ - whether the buffer is editable by default
      -> IO ()
    textBufferCutClipboard :: forall self.
    TextBufferClass self =>
    self -> Clipboard -> Bool -> IO ()
    textBufferCutClipboard self
    self Clipboard
    clipboard Bool
    defaultEditable =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (Clipboard ForeignPtr Clipboard
    arg2) CInt
    arg3 -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr Clipboard -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Clipboard
    arg2 ((Ptr Clipboard -> IO ()) -> IO ())
    -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Clipboard
    argPtr2 ->Ptr TextBuffer -> Ptr Clipboard -> CInt -> IO ()
    gtk_text_buffer_cut_clipboard Ptr TextBuffer
    argPtr1 Ptr Clipboard
    argPtr2 CInt
    arg3)
    {-# LINE 1167 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}
        (toTextBuffer self)
        Clipboard
    clipboard
        (Bool -> CInt
    forall a. Num a => Bool -> a
    fromBool Bool
    defaultEditable)

    -- | Adds clipboard to the list of clipboards in which the selection contents of @self@ are available.
    -- In most cases, @clipboard@ will be the 'Clipboard' of type 'selectionPrimary' for a view of @self@.
    --
    textBufferAddSelectionClipboard :: TextBufferClass self => self
     -> Clipboard -- ^ @clipboard@ - the 'Clipboard' object to add
     -> IO ()
    textBufferAddSelectionClipboard :: forall self. TextBufferClass self => self -> Clipboard -> IO ()
    textBufferAddSelectionClipboard self
    self Clipboard
    clipboard =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (Clipboard ForeignPtr Clipboard
    arg2) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr Clipboard -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Clipboard
    arg2 ((Ptr Clipboard -> IO ()) -> IO ())
    -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Clipboard
    argPtr2 ->Ptr TextBuffer -> Ptr Clipboard -> IO ()
    gtk_text_buffer_add_selection_clipboard Ptr TextBuffer
    argPtr1 Ptr Clipboard
    argPtr2) (self -> TextBuffer
    forall o. TextBufferClass o => o -> TextBuffer
    toTextBuffer self
    self) Clipboard
    clipboard

    -- | Removes a 'Clipboard' added with 'textBufferAddSelectionClipboard'.
    --
    textBufferRemoveSelectionClipboard :: TextBufferClass self => self
     -> Clipboard -- ^ @clipboard@ - the 'Clipboard' object to remove
     -> IO ()
    textBufferRemoveSelectionClipboard :: forall self. TextBufferClass self => self -> Clipboard -> IO ()
    textBufferRemoveSelectionClipboard self
    self Clipboard
    clipboard =
      (\(TextBuffer ForeignPtr TextBuffer
    arg1) (Clipboard ForeignPtr Clipboard
    arg2) -> ForeignPtr TextBuffer -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr TextBuffer
    arg1 ((Ptr TextBuffer -> IO ()) -> IO ())
    -> (Ptr TextBuffer -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr TextBuffer
    argPtr1 ->ForeignPtr Clipboard -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
    withForeignPtr ForeignPtr Clipboard
    arg2 ((Ptr Clipboard -> IO ()) -> IO ())
    -> (Ptr Clipboard -> IO ()) -> IO ()
    forall a b. (a -> b) -> a -> b
    $ \Ptr Clipboard
    argPtr2 ->Ptr TextBuffer -> Ptr Clipboard -> IO ()
    gtk_text_buffer_remove_selection_clipboard Ptr TextBuffer
    argPtr1 Ptr Clipboard
    argPtr2) (self -> TextBuffer
    forall o. TextBufferClass o => o -> TextBuffer
    toTextBuffer self
    self) Clipboard
    clipboard

    --------------------
    -- Attributes

    -- | Text Tag Table.
    --
    textBufferTagTable :: (TextBufferClass self, TextTagTableClass textTagTable)
     => ReadWriteAttr self TextTagTable textTagTable
    textBufferTagTable :: forall self textTagTable.
    (TextBufferClass self, TextTagTableClass textTagTable) =>
    ReadWriteAttr self TextTagTable textTagTable
    textBufferTagTable = String -> GType -> ReadWriteAttr self TextTagTable textTagTable
    forall gobj gobj' gobj''.
    (GObjectClass gobj, GObjectClass gobj', GObjectClass gobj'') =>
    String -> GType -> ReadWriteAttr gobj gobj' gobj''
    newAttrFromObjectProperty String
    "tag-table"
      GType
    gtk_text_tag_table_get_type
    {-# LINE 1198 "./Graphics/UI/Gtk/Multiline/TextBuffer.chs" #-}

    -- | The text content of the buffer. Without child widgets and images, see
    -- 'textBufferGetText' for more information.
    --
    -- Default value: \"\"
    --
    textBufferText :: (TextBufferClass self, GlibString string) => Attr self string
    textBufferText :: forall self string.
    (TextBufferClass self, GlibString string) =>
    Attr self string
    textBufferText = String -> Attr self string
    forall gobj string.
    (GObjectClass gobj, GlibString string) =>
    String -> Attr gobj string
    newAttrFromStringProperty String
    "text"

    -- | The \'modified\' property. See 'textBufferGetModified' and
    -- 'textBufferSetModified'
    --
    textBufferModified :: TextBufferClass self => Attr self Bool
    textBufferModified :: forall self. TextBufferClass self => Attr self Bool
    textBufferModified = (self -> IO Bool)
    -> (self -> Bool -> IO ()) -> ReadWriteAttr self Bool Bool
    forall o a b.
    (o -> IO a) -> (o -> b -> IO ()) -> ReadWriteAttr o a b
    newAttr
      self -> IO Bool
    forall self. TextBufferClass self => self -> IO Bool
    textBufferGetModified
      self -> Bool -> IO ()
    forall self. TextBufferClass self => self -> Bool -> IO ()
    textBufferSetModified

    --------------------
    -- Signals

    -- | A 'TextTag' was applied to a region of text.
    --
    applyTag :: TextBufferClass self => Signal self (TextTag -> TextIter -> TextIter -> IO ())
    applyTag :: forall self.
    TextBufferClass self =>
    Signal self (TextTag -> TextIter -> TextIter -> IO ())
    applyTag = (Bool
     -> self
     -> (TextTag -> TextIter -> TextIter -> IO ())
     -> IO (ConnectId self))
    -> Signal self (TextTag -> TextIter -> TextIter -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TextIter -> IO TextIter)
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (TextTag -> TextIter -> TextIter -> IO ())
    -> IO (ConnectId self)
    forall a' obj b' b c' c.
    (GObjectClass a', GObjectClass obj) =>
    String
    -> (Ptr b' -> IO b)
    -> (Ptr c' -> IO c)
    -> Bool
    -> obj
    -> (a' -> b -> c -> IO ())
    -> IO (ConnectId obj)
    connect_OBJECT_BOXED_BOXED__NONE String
    "apply-tag" Ptr TextIter -> IO TextIter
    mkTextIterCopy Ptr TextIter -> IO TextIter
    mkTextIterCopy)

    -- | A new atomic user action is started.
    --
    -- * Together with 'endUserAction' these signals can be
    -- used to build an undo stack.
    --
    beginUserAction :: TextBufferClass self => Signal self (IO ())
    beginUserAction :: forall self. TextBufferClass self => Signal self (IO ())
    beginUserAction = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "begin-user-action")

    -- | Emitted when the contents of the buffer change.
    --
    bufferChanged :: TextBufferClass self => Signal self (IO ())
    bufferChanged :: forall self. TextBufferClass self => Signal self (IO ())
    bufferChanged = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "changed")

    -- | A range of text is about to be deleted.
    --
    deleteRange :: TextBufferClass self => Signal self (TextIter -> TextIter -> IO ())
    deleteRange :: forall self.
    TextBufferClass self =>
    Signal self (TextIter -> TextIter -> IO ())
    deleteRange = (Bool
     -> self -> (TextIter -> TextIter -> IO ()) -> IO (ConnectId self))
    -> Signal self (TextIter -> TextIter -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TextIter -> IO TextIter)
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (TextIter -> TextIter -> IO ())
    -> IO (ConnectId self)
    forall obj a' a b' b.
    GObjectClass obj =>
    String
    -> (Ptr a' -> IO a)
    -> (Ptr b' -> IO b)
    -> Bool
    -> obj
    -> (a -> b -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_BOXED__NONE String
    "delete-range" Ptr TextIter -> IO TextIter
    mkTextIterCopy Ptr TextIter -> IO TextIter
    mkTextIterCopy)

    -- | An atomic action has ended.
    --
    -- * see 'beginUserAction'
    --
    endUserAction :: TextBufferClass self => Signal self (IO ())
    endUserAction :: forall self. TextBufferClass self => Signal self (IO ())
    endUserAction = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "end-user-action")

    -- | A 'Pixbuf' is inserted into the buffer.
    --
    -- * See note in 'bufferInsertText'.
    --
    insertPixbuf :: TextBufferClass self => Signal self (TextIter -> Pixbuf -> IO ())
    insertPixbuf :: forall self.
    TextBufferClass self =>
    Signal self (TextIter -> Pixbuf -> IO ())
    insertPixbuf = (Bool
     -> self -> (TextIter -> Pixbuf -> IO ()) -> IO (ConnectId self))
    -> Signal self (TextIter -> Pixbuf -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (TextIter -> Pixbuf -> IO ())
    -> IO (ConnectId self)
    forall b' obj a' a.
    (GObjectClass b', GObjectClass obj) =>
    String
    -> (Ptr a' -> IO a)
    -> Bool
    -> obj
    -> (a -> b' -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_OBJECT__NONE String
    "insert-pixbuf" Ptr TextIter -> IO TextIter
    mkTextIterCopy)

    -- | The 'insertChildAnchor' signal is emitted to insert a 'TextChildAnchor' in a 'TextBuffer'.
    -- Insertion actually occurs in the default handler.
    --
    -- * See note in 'bufferInsertText'.
    --
    insertChildAnchor :: TextBufferClass self => Signal self (TextIter -> TextChildAnchor -> IO ())
    insertChildAnchor :: forall self.
    TextBufferClass self =>
    Signal self (TextIter -> TextChildAnchor -> IO ())
    insertChildAnchor = (Bool
     -> self
     -> (TextIter -> TextChildAnchor -> IO ())
     -> IO (ConnectId self))
    -> Signal self (TextIter -> TextChildAnchor -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (TextIter -> TextChildAnchor -> IO ())
    -> IO (ConnectId self)
    forall b' obj a' a.
    (GObjectClass b', GObjectClass obj) =>
    String
    -> (Ptr a' -> IO a)
    -> Bool
    -> obj
    -> (a -> b' -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_OBJECT__NONE String
    "insert-child-anchor" Ptr TextIter -> IO TextIter
    mkTextIterCopy)

    -- | Some text is inserted. Insertion actually occurs in the default handler.
    --
    -- * The function connected to this handler may not modify the buffer since
    -- this would invalidate the iterator. If this function replaces the
    -- default handler, it needs to stop the emission of this signal in order
    -- to prevent the default handler from running. If additional text should
    -- be inserted, this can be done using the 'after' function to connect.
    --
    bufferInsertText :: (TextBufferClass self, GlibString string) => Signal self (TextIter -> string -> IO ())
    bufferInsertText :: forall self string.
    (TextBufferClass self, GlibString string) =>
    Signal self (TextIter -> string -> IO ())
    bufferInsertText = (Bool
     -> self -> (TextIter -> string -> IO ()) -> IO (ConnectId self))
    -> Signal self (TextIter -> string -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal ((Bool
      -> self -> (TextIter -> string -> IO ()) -> IO (ConnectId self))
     -> Signal self (TextIter -> string -> IO ()))
    -> (Bool
        -> self -> (TextIter -> string -> IO ()) -> IO (ConnectId self))
    -> Signal self (TextIter -> string -> IO ())
    forall a b. (a -> b) -> a -> b
    $ \Bool
    after self
    obj TextIter -> string -> IO ()
    handler ->
      String
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (TextIter -> Ptr CChar -> Int -> IO ())
    -> IO (ConnectId self)
    forall obj a' a b.
    GObjectClass obj =>
    String
    -> (Ptr a' -> IO a)
    -> Bool
    -> obj
    -> (a -> Ptr b -> Int -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_PTR_INT__NONE String
    "insert-text" Ptr TextIter -> IO TextIter
    mkTextIterCopy Bool
    after self
    obj
      (\TextIter
    iter Ptr CChar
    strPtr Int
    strLen -> CStringLen -> IO string
    forall s. GlibString s => CStringLen -> IO s
    peekUTFStringLen (Ptr CChar
    strPtr, Int
    strLen) IO string -> (string -> IO ()) -> IO ()
    forall a b. IO a -> (a -> IO b) -> IO b
    forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
    >>= TextIter -> string -> IO ()
    handler TextIter
    iter)

    -- | A 'TextMark' within the buffer was deleted.
    --
    markDeleted :: TextBufferClass self => Signal self (TextMark -> IO ())
    markDeleted :: forall self.
    TextBufferClass self =>
    Signal self (TextMark -> IO ())
    markDeleted = (Bool -> self -> (TextMark -> IO ()) -> IO (ConnectId self))
    -> Signal self (TextMark -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> Bool -> self -> (TextMark -> IO ()) -> IO (ConnectId self)
    forall a' obj.
    (GObjectClass a', GObjectClass obj) =>
    String -> Bool -> obj -> (a' -> IO ()) -> IO (ConnectId obj)
    connect_OBJECT__NONE String
    "mark-deleted")

    -- | A 'TextMark' was inserted into the buffer.
    --
    markSet :: TextBufferClass self => Signal self (TextIter -> TextMark -> IO ())
    markSet :: forall self.
    TextBufferClass self =>
    Signal self (TextIter -> TextMark -> IO ())
    markSet = (Bool
     -> self -> (TextIter -> TextMark -> IO ()) -> IO (ConnectId self))
    -> Signal self (TextIter -> TextMark -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (TextIter -> TextMark -> IO ())
    -> IO (ConnectId self)
    forall b' obj a' a.
    (GObjectClass b', GObjectClass obj) =>
    String
    -> (Ptr a' -> IO a)
    -> Bool
    -> obj
    -> (a -> b' -> IO ())
    -> IO (ConnectId obj)
    connect_BOXED_OBJECT__NONE String
    "mark-set" Ptr TextIter -> IO TextIter
    mkTextIterCopy)

    modifiedChanged :: TextBufferClass self => Signal self (IO ())
    modifiedChanged :: forall self. TextBufferClass self => Signal self (IO ())
    modifiedChanged = (Bool -> self -> IO () -> IO (ConnectId self))
    -> Signal self (IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String -> Bool -> self -> IO () -> IO (ConnectId self)
    forall obj.
    GObjectClass obj =>
    String -> Bool -> obj -> IO () -> IO (ConnectId obj)
    connect_NONE__NONE String
    "modified-changed")

    -- | The 'pasteDone' signal is emitted after paste operation has been completed.
    -- This is useful to properly scroll the view to the end of the pasted text.
    -- See 'textBufferPasteClipboard' for more details.
    pasteDone :: TextBufferClass self => Signal self (Clipboard -> IO ())
    pasteDone :: forall self.
    TextBufferClass self =>
    Signal self (Clipboard -> IO ())
    pasteDone = (Bool -> self -> (Clipboard -> IO ()) -> IO (ConnectId self))
    -> Signal self (Clipboard -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> Bool -> self -> (Clipboard -> IO ()) -> IO (ConnectId self)
    forall a' obj.
    (GObjectClass a', GObjectClass obj) =>
    String -> Bool -> obj -> (a' -> IO ()) -> IO (ConnectId obj)
    connect_OBJECT__NONE String
    "paste-done")

    -- | The textbuffer has changed.
    --
    removeTag :: TextBufferClass self => Signal self (TextTag -> TextIter -> TextIter -> IO ())
    removeTag :: forall self.
    TextBufferClass self =>
    Signal self (TextTag -> TextIter -> TextIter -> IO ())
    removeTag = (Bool
     -> self
     -> (TextTag -> TextIter -> TextIter -> IO ())
     -> IO (ConnectId self))
    -> Signal self (TextTag -> TextIter -> TextIter -> IO ())
    forall object handler.
    (Bool -> object -> handler -> IO (ConnectId object))
    -> Signal object handler
    Signal (String
    -> (Ptr TextIter -> IO TextIter)
    -> (Ptr TextIter -> IO TextIter)
    -> Bool
    -> self
    -> (TextTag -> TextIter -> TextIter -> IO ())
    -> IO (ConnectId self)
    forall a' obj b' b c' c.
    (GObjectClass a', GObjectClass obj) =>
    String
    -> (Ptr b' -> IO b)
    -> (Ptr c' -> IO c)
    -> Bool
    -> obj
    -> (a' -> b -> c -> IO ())
    -> IO (ConnectId obj)
    connect_OBJECT_BOXED_BOXED__NONE String
    "remove-tag" Ptr TextIter -> IO TextIter
    mkTextIterCopy Ptr TextIter -> IO TextIter
    mkTextIterCopy)

    --------------------
    -- Deprecated Signals and Events

    foreign import ccall unsafe "gtk_text_buffer_new"
      gtk_text_buffer_new :: ((Ptr TextTagTable) -> (IO (Ptr TextBuffer)))

    foreign import ccall unsafe "gtk_text_buffer_get_line_count"
      gtk_text_buffer_get_line_count :: ((Ptr TextBuffer) -> (IO CInt))

    foreign import ccall unsafe "gtk_text_buffer_get_char_count"
      gtk_text_buffer_get_char_count :: ((Ptr TextBuffer) -> (IO CInt))

    foreign import ccall unsafe "gtk_text_buffer_get_tag_table"
      gtk_text_buffer_get_tag_table :: ((Ptr TextBuffer) -> (IO (Ptr TextTagTable)))

    foreign import ccall safe "gtk_text_buffer_insert"
      gtk_text_buffer_insert :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr CChar) -> (CInt -> (IO ())))))

    foreign import ccall safe "gtk_text_buffer_insert_at_cursor"
      gtk_text_buffer_insert_at_cursor :: ((Ptr TextBuffer) -> ((Ptr CChar) -> (CInt -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_insert_interactive"
      gtk_text_buffer_insert_interactive :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr CChar) -> (CInt -> (CInt -> (IO CInt))))))

    foreign import ccall safe "gtk_text_buffer_insert_interactive_at_cursor"
      gtk_text_buffer_insert_interactive_at_cursor :: ((Ptr TextBuffer) -> ((Ptr CChar) -> (CInt -> (CInt -> (IO CInt)))))

    foreign import ccall safe "gtk_text_buffer_insert_range"
      gtk_text_buffer_insert_range :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ())))))

    foreign import ccall safe "gtk_text_buffer_insert_range_interactive"
      gtk_text_buffer_insert_range_interactive :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (CInt -> (IO CInt))))))

    foreign import ccall safe "gtk_text_buffer_delete"
      gtk_text_buffer_delete :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_delete_interactive"
      gtk_text_buffer_delete_interactive :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (CInt -> (IO CInt)))))

    foreign import ccall safe "gtk_text_buffer_set_text"
      gtk_text_buffer_set_text :: ((Ptr TextBuffer) -> ((Ptr CChar) -> (CInt -> (IO ()))))

    foreign import ccall unsafe "gtk_text_buffer_get_text"
      gtk_text_buffer_get_text :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (CInt -> (IO (Ptr CChar))))))

    foreign import ccall unsafe "gtk_text_buffer_get_slice"
      gtk_text_buffer_get_slice :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (CInt -> (IO (Ptr CChar))))))

    foreign import ccall unsafe "g_free"
      g_free :: ((Ptr ()) -> (IO ()))

    foreign import ccall safe "gtk_text_buffer_insert_pixbuf"
      gtk_text_buffer_insert_pixbuf :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr Pixbuf) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_create_mark"
      gtk_text_buffer_create_mark :: ((Ptr TextBuffer) -> ((Ptr CChar) -> ((Ptr TextIter) -> (CInt -> (IO (Ptr TextMark))))))

    foreign import ccall safe "gtk_text_buffer_add_mark"
      gtk_text_buffer_add_mark :: ((Ptr TextBuffer) -> ((Ptr TextMark) -> ((Ptr TextIter) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_move_mark"
      gtk_text_buffer_move_mark :: ((Ptr TextBuffer) -> ((Ptr TextMark) -> ((Ptr TextIter) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_move_mark_by_name"
      gtk_text_buffer_move_mark_by_name :: ((Ptr TextBuffer) -> ((Ptr CChar) -> ((Ptr TextIter) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_delete_mark"
      gtk_text_buffer_delete_mark :: ((Ptr TextBuffer) -> ((Ptr TextMark) -> (IO ())))

    foreign import ccall safe "gtk_text_buffer_delete_mark_by_name"
      gtk_text_buffer_delete_mark_by_name :: ((Ptr TextBuffer) -> ((Ptr CChar) -> (IO ())))

    foreign import ccall unsafe "gtk_text_buffer_get_mark"
      gtk_text_buffer_get_mark :: ((Ptr TextBuffer) -> ((Ptr CChar) -> (IO (Ptr TextMark))))

    foreign import ccall unsafe "gtk_text_buffer_get_insert"
      gtk_text_buffer_get_insert :: ((Ptr TextBuffer) -> (IO (Ptr TextMark)))

    foreign import ccall unsafe "gtk_text_buffer_get_selection_bound"
      gtk_text_buffer_get_selection_bound :: ((Ptr TextBuffer) -> (IO (Ptr TextMark)))

    foreign import ccall safe "gtk_text_buffer_place_cursor"
      gtk_text_buffer_place_cursor :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (IO ())))

    foreign import ccall safe "gtk_text_buffer_apply_tag"
      gtk_text_buffer_apply_tag :: ((Ptr TextBuffer) -> ((Ptr TextTag) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ())))))

    foreign import ccall safe "gtk_text_buffer_remove_tag"
      gtk_text_buffer_remove_tag :: ((Ptr TextBuffer) -> ((Ptr TextTag) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ())))))

    foreign import ccall safe "gtk_text_buffer_apply_tag_by_name"
      gtk_text_buffer_apply_tag_by_name :: ((Ptr TextBuffer) -> ((Ptr CChar) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ())))))

    foreign import ccall safe "gtk_text_buffer_remove_tag_by_name"
      gtk_text_buffer_remove_tag_by_name :: ((Ptr TextBuffer) -> ((Ptr CChar) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ())))))

    foreign import ccall safe "gtk_text_buffer_remove_all_tags"
      gtk_text_buffer_remove_all_tags :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ()))))

    foreign import ccall unsafe "gtk_text_buffer_get_iter_at_line_offset"
      gtk_text_buffer_get_iter_at_line_offset :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (CInt -> (CInt -> (IO ())))))

    foreign import ccall unsafe "gtk_text_buffer_get_iter_at_offset"
      gtk_text_buffer_get_iter_at_offset :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (CInt -> (IO ()))))

    foreign import ccall unsafe "gtk_text_buffer_get_iter_at_line"
      gtk_text_buffer_get_iter_at_line :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (CInt -> (IO ()))))

    foreign import ccall unsafe "gtk_text_buffer_get_iter_at_mark"
      gtk_text_buffer_get_iter_at_mark :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextMark) -> (IO ()))))

    foreign import ccall unsafe "gtk_text_buffer_get_start_iter"
      gtk_text_buffer_get_start_iter :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (IO ())))

    foreign import ccall unsafe "gtk_text_buffer_get_end_iter"
      gtk_text_buffer_get_end_iter :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (IO ())))

    foreign import ccall unsafe "gtk_text_buffer_get_modified"
      gtk_text_buffer_get_modified :: ((Ptr TextBuffer) -> (IO CInt))

    foreign import ccall safe "gtk_text_buffer_set_modified"
      gtk_text_buffer_set_modified :: ((Ptr TextBuffer) -> (CInt -> (IO ())))

    foreign import ccall safe "gtk_text_buffer_delete_selection"
      gtk_text_buffer_delete_selection :: ((Ptr TextBuffer) -> (CInt -> (CInt -> (IO CInt))))

    foreign import ccall unsafe "gtk_text_buffer_get_selection_bounds"
      gtk_text_buffer_get_selection_bounds :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO CInt))))

    foreign import ccall safe "gtk_text_buffer_begin_user_action"
      gtk_text_buffer_begin_user_action :: ((Ptr TextBuffer) -> (IO ()))

    foreign import ccall safe "gtk_text_buffer_end_user_action"
      gtk_text_buffer_end_user_action :: ((Ptr TextBuffer) -> (IO ()))

    foreign import ccall safe "gtk_text_buffer_backspace"
      gtk_text_buffer_backspace :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (CInt -> (CInt -> (IO CInt)))))

    foreign import ccall safe "gtk_text_buffer_insert_child_anchor"
      gtk_text_buffer_insert_child_anchor :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextChildAnchor) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_create_child_anchor"
      gtk_text_buffer_create_child_anchor :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> (IO (Ptr TextChildAnchor))))

    foreign import ccall safe "gtk_text_buffer_select_range"
      gtk_text_buffer_select_range :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_get_iter_at_child_anchor"
      gtk_text_buffer_get_iter_at_child_anchor :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextChildAnchor) -> (IO ()))))

    foreign import ccall unsafe "gtk_text_buffer_get_bounds"
      gtk_text_buffer_get_bounds :: ((Ptr TextBuffer) -> ((Ptr TextIter) -> ((Ptr TextIter) -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_paste_clipboard"
      gtk_text_buffer_paste_clipboard :: ((Ptr TextBuffer) -> ((Ptr Clipboard) -> ((Ptr TextIter) -> (CInt -> (IO ())))))

    foreign import ccall safe "gtk_text_buffer_copy_clipboard"
      gtk_text_buffer_copy_clipboard :: ((Ptr TextBuffer) -> ((Ptr Clipboard) -> (IO ())))

    foreign import ccall safe "gtk_text_buffer_cut_clipboard"
      gtk_text_buffer_cut_clipboard :: ((Ptr TextBuffer) -> ((Ptr Clipboard) -> (CInt -> (IO ()))))

    foreign import ccall safe "gtk_text_buffer_add_selection_clipboard"
      gtk_text_buffer_add_selection_clipboard :: ((Ptr TextBuffer) -> ((Ptr Clipboard) -> (IO ())))

    foreign import ccall safe "gtk_text_buffer_remove_selection_clipboard"
      gtk_text_buffer_remove_selection_clipboard :: ((Ptr TextBuffer) -> ((Ptr Clipboard) -> (IO ())))

    foreign import ccall unsafe "gtk_text_tag_table_get_type"
      gtk_text_tag_table_get_type :: CULong