-- Copyright 2007-2015 Mitchell mitchell.att.foicica.com. See LICENSE.
-- This is a DUMMY FILE used for making LuaDoc for Buffers.

---
-- A Textadept buffer object.
-- Constants are documented in the fields they apply to.
-- While you can work with individual buffer instances, it is really only useful
-- to work with the global one.
-- @field additional_caret_fore (number)
--   The foreground color, in "0xBBGGRR" format, of additional carets.
-- @field additional_carets_blink (bool)
--   Allow additional carets to blink.
--   The default value is `true`.
-- @field additional_carets_visible (bool)
--   Display additional carets.
--   The default value is `true`.
-- @field additional_sel_alpha (number)
--   The alpha value, ranging from `0` (transparent) to `255` (opaque), of
--   additional selections.
--   The default value is `buffer.ALPHA_NOALPHA`, for no alpha.
-- @field additional_sel_back (number, Write-only)
--   The background color, in "0xBBGGRR" format, of additional selections.
--   This field has no effect when calling `buffer.set_sel_back(false, ...)`.
-- @field additional_sel_fore (number, Write-only)
--   The foreground color, in "0xBBGGRR" format, of additional selections.
--   This field has no effect when calling `buffer.set_sel_fore(false, ...)`.
-- @field additional_selection_typing (bool)
--   Type into multiple selections.
--   The default value is `false`.
-- @field all_lines_visible (bool, Read-only)
--   Whether or not all lines are visible.
-- @field anchor (number)
--   The anchor's position.
-- @field annotation_lines (table, Read-only)
--   Table of the number of annotation text lines for line numbers starting from
--   zero.
-- @field annotation_style (table)
--   Table of style numbers for annotation text for line numbers starting from
--   zero.
--   Only some style attributes are active in annotations: font,
--   size/size_fractional, bold/weight, italics, fore, back, and character_set.
-- @field annotation_text (table)
--   Table of annotation text for line numbers starting from zero.
-- @field annotation_visible (number)
--   The annotation visibility mode.
--
--   * `buffer.ANNOTATION_HIDDEN`
--     Annotations are invisible.
--   * `buffer.ANNOTATION_STANDARD`
--     Draw annotations left-justified with no decoration.
--   * `buffer.ANNOTATION_BOXED`
--     Indent annotations to match the annotated text and outline them with a
--     box.
--   * `buffer.ANNOTATION_INDENTED`
--     Indent non-decorated annotations to match the annotated text.
--
--   The default value is `buffer.ANNOTATION_HIDDEN`.
-- @field auto_c_auto_hide (bool)
--   Automatically cancel an autocompletion or user list when no entries match
--   typed text.
--   The default value is `true`.
-- @field auto_c_cancel_at_start (bool)
--   Cancel an autocompletion list when backspacing to a position before where
--   autocompletion started (instead of before the word being completed).
--   This option has no effect for a user list.
--   The default value is `true`.
-- @field auto_c_case_insensitive_behaviour (number)
--   The behavior mode for a case insensitive autocompletion or user list when
--   [`buffer.auto_c_ignore_case`]() is `true`.
--
--   * `buffer.CASEINSENSITIVEBEHAVIOUR_RESPECTCASE`
--     Prefer to select case-sensitive matches.
--   * `buffer.CASEINSENSITIVEBEHAVIOUR_IGNORECASE`
--     No preference.
--
--   The default value is `buffer.CASEINSENSITIVEBEHAVIOUR_RESPECTCASE`.
-- @field auto_c_choose_single (bool)
--   Automatically choose the item in a single-item autocompletion list.
--   This option has no effect for a user list.
--   The default value is `false`.
-- @field auto_c_current (number, Read-only)
--   The index of the currently selected item in an autocompletion or user list.
-- @field auto_c_current_text (string, Read-only)
--   The text of the currently selected item in an autocompletion or user list.
-- @field auto_c_drop_rest_of_word (bool)
--   Delete any word characters immediately to the right of autocompleted text.
--   The default value is `false`.
-- @field auto_c_fill_ups (string, Write-only)
--   The set of characters that choose the currently selected item in an
--   autocompletion or user list when the user types one of them.
--   The default value is `''`.
-- @field auto_c_ignore_case (bool)
--   Ignore case when searching an autocompletion or user list for matches.
--   The default value is `false`.
-- @field auto_c_max_height (number)
--   The maximum number of items per page to show in autocompletion and user
--   lists. The default value is `5`.
-- @field auto_c_max_width (number)
--   The maximum number of characters per item to show in autocompletion and
--   user lists.
--   The default value is `0`, which automatically sizes the width to fit the
--   longest item.
-- @field auto_c_multi (number)
--   The multiple selection autocomplete mode.
--
--   * `buffer.MULTIAUTOC_ONCE`
--     Autocomplete into only the main selection.
--   * `buffer.MULTIAUTOC_EACH`
--     Autocomplete into all selections.
--
--   The default value is `buffer.MULTIAUTOC_ONCE`.
-- @field auto_c_order (number)
--   The order setting for autocompletion and user lists.
--
--   * `buffer.ORDER_PRESORTED`
--     Lists passed to [`buffer.auto_c_show()`]() are in sorted, alphabetical
--     order.
--   * `buffer.ORDER_PERFORMSORT`
--     Sort autocompletion lists passed to [`buffer.auto_c_show()`]().
--   * `buffer.ORDER_CUSTOM`
--     Lists passed to [`buffer.auto_c_show()`]() are already in a custom order.
--
--   The default value is `buffer.ORDER_PRESORTED`.
-- @field auto_c_separator (number)
--   The byte value of the character that separates autocompletion and user list
--   list items.
--   The default value is `32` (' ').
-- @field auto_c_type_separator (number)
--   The character byte that separates autocompletion and user list items and
--   their image types.
--   Autocompletion and user list items can display both an image and text.
--   Register images and their types using [`buffer.register_image()`]() or
--   [`buffer.register_rgba_image()`]() before appending image types to list
--   items after type separator characters.
--   The default value is 63 ('?').
-- @field back_space_un_indents (bool)
--   Un-indent text when backspacing within indentation.
--   The default value is `false`.
-- @field buffered_draw (bool)
--   Buffer drawing to avoid flickering.
--   Buffering draws each line of text into a bitmap buffer before drawing the
--   bitmap to the screen.
--   The default value is `true`.
-- @field call_tip_fore_hlt (number, Write-only)
--   A call tip's highlighted text foreground color, in "0xBBGGRR" format.
-- @field call_tip_pos_start (number, Write-only)
--   The position in which backspacing beyond it hides a visible call tip.
-- @field call_tip_position (boolean)
--   Display a call tip above the current line instead of below it.
--   The default value is `false`.
-- @field call_tip_use_style (number)
--   The pixel width of tab characters in call tips.
--   When non-zero, also enables the use of style number `buffer.STYLE_CALLTIP`
--   instead of `buffer.STYLE_DEFAULT` for call tip styles.
--   The default value is `0`.
-- @field caret_fore (number)
--   The caret's foreground color, in "0xBBGGRR" format.
-- @field caret_line_back (number)
--   The background color, in "0xBBGGRR" format, of the line that contains the
--   caret.
-- @field caret_line_back_alpha (number)
--   The caret line's background alpha value, ranging from `0` (transparent) to
--   `255` (opaque).
--   The default value is `buffer.ALPHA_NOALPHA`, for no alpha.
-- @field caret_line_visible (bool)
--   Color the background of the line that contains the caret a different color.
--   The default value is `false`.
-- @field caret_line_visible_always (bool)
--   Always show the caret line, even when the window is not in focus.
--   The default value is `false`, showing the line only when the window is in
--   focus.
-- @field caret_period (number)
--   The time between caret blinks in milliseconds.
--   A value of `0` stops blinking.
--   The default value is `500`.
-- @field caret_sticky (number)
--   The caret's preferred horizontal position when moving between lines.
--
--   * `buffer.CARETSTICKY_OFF`
--     Use the same position the caret had on the previous line.
--   * `buffer.CARETSTICKY_ON`
--     Use the last position the caret was moved to via the mouse, left/right
--     arrow keys, home/end keys, etc. Typing text does not affect the position.
--   * `buffer.CARETSTICKY_WHITESPACE`
--     Use the position the caret had on the previous line, but prior to any
--     inserted indentation.
--
--   The default value is `buffer.CARETSTICKY_OFF`.
-- @field caret_style (number)
--   The caret's visual style.
--
--   * `buffer.CARETSTYLE_INVISIBLE`
--     No caret.
--   * `buffer.CARETSTYLE_LINE`
--     A line caret.
--   * `buffer.CARETSTYLE_BLOCK`
--     A block caret.
--
--   The default value is `buffer.CARETSTYLE_LINE`.
-- @field caret_width (number)
--   The line caret's pixel width in insert mode, either `0`, `1`, `2`, or `3`.
--   The default value is `1`.
-- @field char_at (table, Read-only)
--   Table of character bytes at positions starting from zero.
-- @field column (table, Read-only)
--   Table of column numbers (taking tab widths into account) for positions
--   starting from zero.
--   Multi-byte characters count as single characters.
-- @field current_pos (number)
--   The caret's position.
--   When set, does not scroll the caret into view.
-- @field cursor (number)
--   The display cursor type.
--
--   * `buffer.CURSORNORMAL`
--     The text insert cursor.
--   * `buffer.CURSORARROW`
--     The arrow cursor.
--   * `buffer.CURSORWAIT`
--     The wait cursor.
--   * `buffer.CURSORREVERSEARROW`
--     The reversed arrow cursor.
--
--   The default value is `buffer.CURSORNORMAL`.
-- @field edge_colour (number)
--   The color, in "0xBBGGRR" format, of the edge or background for long lines
--   according to `buffer.edge_mode`.
-- @field edge_column (number)
--   The column number to mark long lines at.
-- @field edge_mode (number)
--   The long line mark mode.
--
--   * `buffer.EDGE_NONE`
--     Long lines are not marked.
--   * `buffer.EDGE_LINE`
--     Draw a vertical line whose color is [`buffer.edge_colour`]() at column
--     [`buffer.edge_column`]().
--   * `buffer.EDGE_BACKGROUND`
--     Change the background color of text after column [`buffer.edge_column`]()
--     to [`buffer.edge_colour`]().
-- @field encoding (string or nil)
--   The string encoding of the file, or `nil` for binary files.
-- @field encoding_bom (string)
--   The byte-order mark (if any) of the file.
-- @field end_at_last_line (bool)
--   Disable scrolling past the last line.
--   The default value is `true`.
-- @field end_styled (number, Read-only)
--   The current styling position or the last correctly styled character's
--   position.
-- @field eol_mode (number)
--   The current end of line mode. Changing the current mode does not convert
--   any of the buffer's existing end of line characters.
--   Use [`buffer.convert_eols()`]() to do so.
--
--   * `buffer.EOL_CRLF`
--     Carriage return with line feed ("\r\n").
--   * `buffer.EOL_CR`
--     Carriage return ("\r").
--   * `buffer.EOL_LF`
--     Line feed ("\n").
--
--   The default value is `buffer.EOL_CRLF` on Windows platforms,
--   `buffer.EOL_LF` otherwise.
-- @field extra_ascent (number)
--   The amount of pixel padding above lines.
--   The default value is `0`.
-- @field extra_descent (number)
--   The amount of pixel padding below lines.
--   The default is `0`.
-- @field filename (string)
--   The absolute file path associated with the buffer.
-- @field first_visible_line (number)
--   The line number of the line at the top of the view, starting from zero.
-- @field fold_expanded (table)
--   Table of flags that indicate whether or not fold points are expanded for
--   line numbers starting from zero.
--   Setting expanded fold states does not toggle folds; it only updates fold
--   margin markers. Use [`buffer.toggle_fold()`]() instead.
-- @field fold_flags (number, Read-only)
--   Bit-mask of folding lines to draw in the buffer.
--
--   * `buffer.FOLDFLAG_LINEBEFORE_EXPANDED`
--     Draw lines above expanded folds.
--   * `buffer.FOLDFLAG_LINEBEFORE_CONTRACTED`
--     Draw lines above collapsed folds.
--   * `buffer.FOLDFLAG_LINEAFTER_EXPANDED`
--     Draw lines below expanded folds.
--   * `buffer.FOLDFLAG_LINEAFTER_CONTRACTED`
--     Draw lines below collapsed folds.
--   * `buffer.FOLDFLAG_LEVELNUMBERS`
--     Show hexadecimal fold levels in line margins.
--     This option cannot be combined with `FOLDFLAG_LINESTATE`.
--   * `buffer.FOLDFLAG_LINESTATE`
--     Show line state in line margins.
--     This option cannot be combined with `FOLDFLAG_LEVELNUMBERS`.
--
--   The default value is `0`.
-- @field fold_level (table)
--   Table of fold level bit-masks for line numbers starting from zero.
--   Fold level masks comprise of an integer level combined with any of the
--   following bit flags:
--
--   * `buffer.FOLDLEVELBASE`
--     The initial fold level.
--   * `buffer.FOLDLEVELWHITEFLAG`
--     The line is blank.
--   * `buffer.FOLDLEVELHEADERFLAG`
--     The line is a header, or fold point.
-- @field fold_parent (table, Read-only)
--   Table of fold point line numbers for child line numbers starting from zero.
--   A line number of `-1` means no line was found.
-- @field h_scroll_bar (bool)
--   Display the horizontal scroll bar.
--   The default value is `true`.
-- @field highlight_guide (number)
--   The indentation guide column number to highlight, or `0` to stop
--   highlighting.
-- @field indent (number)
--   The number of spaces in one level of indentation.
--   The default value is `0`, which uses the value of [`buffer.tab_width`]().
-- @field indentation_guides (number)
--   The indentation guide drawing mode.
--   Indentation guides are dotted vertical lines that appear within indentation
--   whitespace at each level of indentation.
--
--   * `buffer.IV_NONE`
--     Does not draw any guides.
--   * `buffer.IV_REAL`
--     Draw guides only within indentation whitespace.
--   * `buffer.IV_LOOKFORWARD`
--     Draw guides beyond the current line up to the next non-empty line's
--     indentation level, but with an additional level if the previous non-empty
--     line is a fold point.
--   * `buffer.IV_LOOKBOTH`
--     Draw guides beyond the current line up to either the indentation level of
--     the previous or next non-empty line, whichever is greater.
--
--   The default value is `buffer.IV_NONE`.
-- @field indic_alpha (table)
--   Table of fill color alpha values, ranging from `0` (transparent) to `255`
--   (opaque), for indicator numbers from `0` to `31` whose styles are either
--   `INDIC_ROUNDBOX`, `INDIC_STRAIGHTBOX`, or `INDIC_DOTBOX`.
--   The default values are `buffer.ALPHA_NOALPHA`, for no alpha.
-- @field indic_fore (table)
--   Table of foreground colors, in "0xBBGGRR" format, for indicator numbers
--   from `0` to `31`.
--   Changing an indicator's foreground color resets that indicator's hover
--   foreground color.
-- @field indic_hover_fore (table)
--   Table of hover foreground colors, in "0xBBGGRR" format, for indicator
--   numbers from `0` to `31`.
--   The default values are the respective indicator foreground colors.
-- @field indic_hover_style (table)
--   Table of hover styles for indicators numbers from `0` to `31`. An
--   indicator's hover style drawn when either the cursor hovers over that
--   indicator or the caret is within that indicator.
--   The default values are the respective indicator styles.
-- @field indic_outline_alpha (table)
--   Table of outline color alpha values, ranging from `0` (transparent) to
--   `255` (opaque), for indicator numbers from `0` to `31` whose styles are
--   either `INDIC_ROUNDBOX`, `INDIC_STRAIGHTBOX`, or `INDIC_DOTBOX`.
--   The default values are `buffer.ALPHA_NOALPHA`, for no alpha.
-- @field indic_style (table)
--   Table of styles for indicator numbers from `0` to `31`.
--
--   * `buffer.INDIC_PLAIN`
--     An underline.
--   * `buffer.INDIC_SQUIGGLE`
--     A squiggly underline 3 pixels in height.
--   * `buffer.INDIC_TT`
--     An underline of small 'T' shapes.
--   * `buffer.INDIC_DIAGONAL`
--     An underline of diagonal hatches.
--   * `buffer.INDIC_STRIKE`
--     Strike out.
--   * `buffer.INDIC_HIDDEN`
--     Invisible.
--   * `buffer.INDIC_BOX`
--     A bounding box.
--   * `buffer.INDIC_ROUNDBOX`
--     A translucent box with rounded corners around the text. Use
--     [`buffer.indic_alpha`]() and [`buffer.indic_outline_alpha`]() to set the
--     fill and outline transparency, respectively. Their default values are
--     `30` and `50`.
--   * `buffer.INDIC_STRAIGHTBOX`
--     Similar to `INDIC_ROUNDBOX` but with sharp corners.
--   * `buffer.INDIC_DASH`
--     A dashed underline.
--   * `buffer.INDIC_DOTS`
--     A dotted underline.
--   * `buffer.INDIC_SQUIGGLELOW`
--     A squiggly underline 2 pixels in height.
--   * `buffer.INDIC_DOTBOX`
--     Similar to `INDIC_STRAIGHTBOX` but with a dotted outline.
--     Translucency alternates between [`buffer.indic_alpha`]() and
--     [`buffer.indic_outline_alpha`]() starting with the top-left pixel.
--   * `buffer.INDIC_SQUIGGLEPIXMAP`
--     Identical to `INDIC_SQUIGGLE` but draws faster by using a pixmap instead
--     of multiple line segments.
--   * `buffer.INDIC_COMPOSITIONTHICK`
--     A 2-pixel thick underline at the bottom of the line inset by 1 pixel on
--     on either side. Similar in appearance to the target in Asian language
--     input composition.
--   * `buffer.INDIC_COMPOSITIONTHIN`
--     A 1-pixel thick underline just before the bottom of the line inset by 1
--     pixel on either side. Similar in appearance to the non-target ranges in
--     Asian language input composition.
--   * `buffer.INDIC_FULLBOX`
--     Similar to `INDIC_STRAIGHTBOX` but extends to the top of its line, 
--     potentially touching any similar indicators on the line above.
--   * `buffer.INDIC_TEXTFORE`
--     Changes the color of text to an indicator's foreground color.
--
--   Use [`_SCINTILLA.next_indic_number()`]() for custom indicators.
--   Changing an indicator's style resets that indicator's hover style.
-- @field indic_under (table)
--   Table of flags that indicate whether or not to draw indicators behind text
--   instead of over the top of it for indicator numbers from `0` to `31`.
--   The default values are `false`.
-- @field indicator_current (number)
--   The indicator number in the range of `0` to `31` used by
--   [`buffer.indicator_fill_range()`]() and
--   [`buffer.indicator_clear_range()`]().
-- @field length (number, Read-only)
--   The number of bytes in the buffer.
-- @field line_count (number, Read-only)
--   The number of lines in the buffer.
--   There is always at least one.
-- @field line_end_position (table, Read-only)
--   Table of positions at the ends of lines, but before any end of line
--   characters, for line numbers starting from zero.
-- @field line_indent_position (table, Read-only)
--   Table of positions at the ends of indentation for line numbers starting
--   from zero.
-- @field line_indentation (table)
--   Table of column indentation amounts, for line numbers starting from zero.
-- @field line_visible (table, Read-only)
--   Table of flags that indicate whether or not lines are visible for line
--   numbers starting from zero.
-- @field lines_on_screen (number, Read-only)
--   The number of completely visible lines in the view.
--   It is possible to have a partial line visible at the bottom of the view.
-- @field main_selection (number)
--   The number of the main, or most recent, selection.
--   Only an existing selection can be made main.
-- @field margin_cursor_n (table)
--   Table of cursor types shown over margin numbers from zero to four.
--
--   * `buffer.CURSORARROW`
--     Normal arrow cursor.
--   * `buffer.CURSORREVERSEARROW`
--     Reversed arrow cursor.
--
--   The default values are `buffer.CURSORREVERSEARROW`.
-- @field margin_left (number)
--   The pixel size of the left margin of the buffer text.
--   The default value is `1`.
-- @field margin_mask_n (table)
--   Table of bit-masks of markers whose symbols marker symbol margins can
--   display for margin numbers from zero to four.
--   Bit-masks are 32-bit values whose bits correspond to the 32 available
--   markers.
--   The default values are `0`, `bit32.bnot(buffer.MASK_FOLDERS)`, `0`, `0`,
--   and `0`, for a line margin and logical marker margin.
-- @field margin_options (number)
--   A bit-mask of margin option settings.
--
--   * `buffer.MARGINOPTION_NONE`
--     None.
--   * `buffer.MARGINOPTION_SUBLINESELECT`
--     Select only a wrapped line's sub-line (rather than the entire line) when
--     the line number margin is clicked.
--
--   The default value is `buffer.MARGINOPTION_NONE`.
-- @field margin_right (number)
--   The pixel size of the right margin of the buffer text.
--   The default value is `1`.
-- @field margin_sensitive_n (table)
--   Table of flags that indicate whether or not mouse clicks in margins emit
--   `MARGIN_CLICK` events for margin numbers from zero to four.
--   The default values are `false`.
-- @field margin_style (table)
--   Table of style numbers for line numbers starting from zero in the text
--   margin.
--   Only some style attributes are active in text margins: font, size, bold,
--   italics, fore, and back.
-- @field margin_text (table)
--   Table of text displayed in text margins for line numbers starting from
--   zero.
-- @field margin_type_n (table)
--   Table of margin types for margin numbers from zero to four.
--
--   * `buffer.MARGIN_SYMBOL`
--     A marker symbol margin.
--   * `buffer.MARGIN_NUMBER`
--     A line number margin.
--   * `buffer.MARGIN_BACK`
--     A marker symbol margin whose background color matches the default text
--     background color.
--   * `buffer.MARGIN_FORE`
--     A marker symbol margin whose foreground color matches the default text
--     foreground color.
--   * `buffer.MARGIN_TEXT`
--     A text margin.
--   * `buffer.MARGIN_RTEXT`
--     A right-justified text margin.
--
--   The default value for the first margin is `buffer.MARGIN_NUMBER`, followed
--   by `buffer.MARGIN_SYMBOL` for the rest.
-- @field margin_width_n (table)
--   Table of pixel margin widths for margin numbers from zero to four.
-- @field marker_alpha (table, Write-only)
--   Table of alpha values, ranging from `0` (transparent) to `255` (opaque),
--   of markers drawn in the text area (not the margin) for markers numbers from
--   `0` to `31`.
--   The default values are `buffer.ALPHA_NOALPHA`, for no alpha.
-- @field marker_back (table, Write-only)
--   Table of background colors, in "0xBBGGRR" format, of marker numbers from
--   `0` to `31`.
-- @field marker_back_selected (table, Write-only)
--   Table of background colors, in "0xBBGGRR" format, of markers whose folding
--   blocks are selected for marker numbers from `0` to `31`.
-- @field marker_fore (table, Write-only)
--   Table of foreground colors, in "0xBBGGRR" format, of marker numbers from
--   `0` to `31`.
-- @field mouse_dwell_time (number)
--   The number of milliseconds the mouse must idle before generating a
--   `DWELL_START` event. A time of `buffer.TIME_FOREVER` will never generate
--   one.
-- @field mouse_selection_rectangular_switch (bool)
--   Whether or not pressing [`buffer.rectangular_selection_modifier`]() when
--   selecting text normally with the mouse turns on rectangular selection.
--   The default value is `false`.
-- @field modify (bool)
--   Whether or not the buffer has unsaved changes.
-- @field multi_paste (number)
--   The multiple selection paste mode.
--
--   * `buffer.MULTIPASTE_ONCE`
--     Paste into only the main selection.
--   * `buffer.MULTIPASTE_EACH`
--     Paste into all selections.
--
--   The default value is `buffer.MULTIPASTE_ONCE`.
-- @field multiple_selection (bool)
--   Enable multiple selection.
--   The default value is `false`.
-- @field overtype (bool)
--   Enable overtype mode, where typed characters overwrite existing ones.
--   The default value is `false`.
-- @field property (table)
--   Map of key-value string pairs used by lexers.
-- @field property_expanded (table, Read-only)
--   Map of key-value string pairs used by lexers with `%()` variable
--   replacement performed in values.
-- @field property_int (table, Read-only)
--   Map of key-value pairs used by lexers with values interpreted as numbers,
--   or `0` if not found.
-- @field punctuation_chars (string)
--   The string set of characters recognized as punctuation characters.
--   Set this only after setting [`buffer.word_chars`]().
--   The default value is a string that contains all non-word and non-whitespace
--   characters.
-- @field read_only (bool)
--   Whether or not the buffer is read-only.
--   The default value is `false`.
-- @field rectangular_selection_anchor (number)
--   The rectangular selection's anchor position.
-- @field rectangular_selection_anchor_virtual_space (number)
--   The amount of virtual space for the rectangular selection's anchor.
-- @field rectangular_selection_caret (number)
--   The rectangular selection's caret position.
-- @field rectangular_selection_caret_virtual_space (number)
--   The amount of virtual space for the rectangular selection's caret.
-- @field rectangular_selection_modifier (number)
--   The modifier key used in combination with a mouse drag in order to create a
--   rectangular selection.
--
--   * `buffer.MOD_CTRL`
--     The "Control" modifier key.
--   * `buffer.MOD_ALT`
--     The "Alt" modifier key.
--   * `buffer.MOD_SUPER`
--     The "Super" modifier key, usually defined as the left "Windows" or
--     "Command" key.
--
--   The default value is `buffer.MOD_CTRL`.
-- @field representation (table)
--   The alternative string representations of characters.
--   Representations are displayed in the same way control characters are. Use
--   the empty string for the '\0' character when assigning its representation.
--   Call [`buffer.clear_representation()`]() to remove a representation.
-- @field rgba_image_height (number)
--   The height of the RGBA image to be defined using
--   [`buffer.marker_define_rgba_image()`]().
-- @field rgba_image_scale (number)
--   The scale factor in percent of the RGBA image to be defined using
--   [`buffer.marker_define_rgba_image()`]().
--   This is useful on OSX with a retina display where each display unit is 2
--   pixels: use a factor of `200` so that each image pixel is displayed using a
--   screen pixel. The default scale, `100`, will stretch each image pixel to
--   cover 4 screen pixels on a retina display.
-- @field rgba_image_width (number)
--   The width of the RGBA image to be defined using
--   [`buffer.marker_define_rgba_image()`]() and
--   [`buffer.register_rgba_image()`]().
-- @field scroll_width (number)
--   The horizontal scrolling pixel width.
--   For performance, the view does not measure the display width of the buffer
--   to determine the properties of the horizontal scroll bar, but uses an
--   assumed width instead. To ensure the width of the currently visible lines
--   can be scrolled use [`buffer.scroll_width_tracking`]().
--   The default value is `2000`.
-- @field scroll_width_tracking (bool)
--   Continuously update the horizontal scrolling width to match the maximum
--   width of a displayed line beyond [`buffer.scroll_width`]().
--   The default value is `false`.
-- @field search_flags (number)
--   The bit-mask of search flags used by [`buffer.search_in_target()`]().
--
--   * `buffer.FIND_WHOLEWORD`
--     Match search text only when it is surrounded by non-word characters.
--   * `buffer.FIND_MATCHCASE`
--     Match search text case sensitively.
--   * `buffer.FIND_WORDSTART`
--     Match search text only when the previous character is a non-word
--     character.
--   * `buffer.FIND_REGEXP`
--     Interpret search text as a regular expression.
--
--   The default value is `0`.
--
--   Regular expression characters recognized are:
--
--   * `.`
--     Matches any character.
--   * `[set]`
--     Matches any character in *set*, including ranges (e.g. `[A-Za-z]`).
--   * `[^set]`
--     Matches the complement of *set*.
--   * `*`
--     Matches zero or more of the previous match.
--   * `+`
--     Matches one or more of the previous match.
--   * `\<`
--     Matches the beginning of a word.
--   * `\>`
--     Matches the end of a word.
--   * `^`
--     Matches the start of a line unless inside a set.
--   * `$`
--     Matches the end of a line unless inside a set.
--   * `(`
--     The beginning of a tagged matching region.
--   * `)`
--     The end of a tagged matching region.
--   * `\n`
--     The matched text of the *n*th tagged region. In replacement text, "\0" is
--     all matched text.
--   * `\x`
--     Represents character *x*, ignoring any special meaning it may have by
--     itself.
-- @field sel_alpha (number)
--   The selection's alpha value, ranging from `0` (transparent) to `255`
--   (opaque).
--   The default value is `buffer.ALPHA_NOALPHA`, for no alpha.
-- @field sel_eol_filled (bool)
--   Extend the selection to the view's right margin.
--   The default value is `false`.
-- @field selection_empty (bool, Read-only)
--   Whether or not no text is selected.
-- @field selection_end (number)
--   The position of the end of the selected text.
--   When set, becomes the current position, but is not scrolled into view.
-- @field selection_is_rectangle (bool, Read-only)
--   Whether or not the selection is a rectangular selection.
-- @field selection_mode (number)
--   The selection mode.
--
--   * `buffer.SEL_STREAM`
--     Character selection.
--   * `buffer.SEL_RECTANGLE`
--     Rectangular selection.
--   * `buffer.SEL_LINES`
--     Line selection.
--   * `buffer.SEL_THIN`
--     Thin rectangular selection. This is the mode after a rectangular
--     selection has been typed into and ensures that no characters are
--     selected.
--
--   When set, caret movement alters the selected text until this field is set
--   again to the same value or until [`buffer.cancel()`]() is called.
-- @field selection_n_anchor (table)
--   Table of positions at the beginning of existing selections numbered from
--   zero, the main selection.
-- @field selection_n_anchor_virtual_space (table)
--   Table of positions at the beginning of virtual space selected in existing
--   selections numbered from zero, the main selection.
-- @field selection_n_caret (table)
--   Table of positions at the end of existing selections numbered from zero,
--   the main selection.
-- @field selection_n_caret_virtual_space (table)
--   Table of positions at the end of virtual space selected in existing
--   selections numbered from zero, the main selection.
-- @field selection_n_end (table)
--   Table of positions at the end of existing selections numbered from zero,
--   the main selection.
-- @field selection_n_start (table)
--   Table of positions at the beginning of existing selections numbered from
--   zero, the main selection.
-- @field selection_start (number)
--   The position of the beginning of the selected text.
--   When set, becomes the anchor, but is not scrolled into view.
-- @field selections (number, Read-only)
--   The number of active selections.
-- @field style_at (table, Read-only)
--   Table of style numbers at positions starting from zero.
-- @field style_back (table)
--   Table of background colors, in "0xBBGGRR" format, of text for style numbers
--   from `0` to `255`.
-- @field style_bold (table)
--   Table of flags that indicate whether or not text is bold for style numbers
--   from `0` to `255`.
--   The default values are `false`.
-- @field style_case (table)
--   Table of letter case modes of text for style numbers from `0` to `255`.
--
--   * `buffer.CASE_MIXED`
--     Display text in normally.
--   * `buffer.CASE_UPPER`
--     Display text in upper case.
--   * `buffer.CASE_LOWER`
--     Display text in lower case.
--
--   The default values are `buffer.CASE_MIXED`.
-- @field style_changeable (table)
--   Table of flags that indicate whether or not text is changeable for style
--   numbers from `0` to `255`.
--   The default values are `true`.
--   Currently, read-only styles do not allow the caret into the range of text,
--   but ranges that contain read-only text are deletable.
-- @field style_eol_filled (table)
--   Table of flags that indicate whether or not the background colors of styles
--   whose characters occur last on lines extend all the way to the view's right
--   margin for style numbers from `0` to `255`.
--   The default values are `false`.
-- @field style_font (table)
--   Table of string font names of text for style numbers from `0` to `255`.
-- @field style_fore (table)
--   Table of foreground colors, in "0xBBGGRR" format, of text for style numbers
--   from `0` to `255`.
-- @field style_hot_spot (table)
--   Table of flags that indicate whether or not text is clickable for style
--   numbers from `0` to `255`.
--   The default values are `false`.
-- @field style_italic (table)
--   Table of flags that indicate whether or not text is italic for style
--   numbers from `0` to `255`.
--   The default values are `false`.
-- @field style_name (table, Read-only)
--   Table of style names for style numbers from `0` to `255`.
-- @field style_size (table)
--   Table of font sizes of text for style numbers from `0` to `255`.
-- @field style_underline (table)
--   Table of flags that indicate whether or not text is underlined for style
--   numbers from `0` to `255`.
--   The default values are `false`.
-- @field style_visible (table)
--   Table of flags that indicate whether or not text is visible for style
--   numbers from `0` to `255`.
--   The default values are `true`.
-- @field tab_indents (bool)
--   Indent text when tabbing within indentation.
--   The default value is `false`.
-- @field tab_label (string)
--   The buffer's tab label in the tab bar.
-- @field tab_width (number)
--   The number of space characters represented by a tab character.
--   The default value is `8`.
-- @field tag (table, Read-only)
--   List of capture text for capture numbers from a regular expression search.
-- @field target_end (number)
--   The position of the end of the target range.
--   This is also set by a successful [`buffer.search_in_target()`]().
-- @field target_start (number)
--   The position of the beginning of the target range.
--   This is also set by a successful [`buffer.search_in_target()`]().
-- @field target_text (string, Read-only)
--   The text in the target range.
-- @field text_length (number, Read-only)
--   The number of bytes in the buffer.
-- @field use_tabs (bool)
--   Use tabs instead of spaces in indentation. Changing the current setting
--   does not convert any of the buffer's existing indentation. Use
--   [`textadept.editing.convert_indentation()`]() to do so.
--   The default value is `true`.
-- @field v_scroll_bar (bool)
--   Display the vertical scroll bar.
--   The default value is `true`.
-- @field view_eol (bool)
--   Display end of line characters.
--   The default value is `false`.
-- @field view_ws (number)
--   The whitespace visibility mode.
--
--   * `buffer.WS_INVISIBLE`
--     Whitespace is invisible.
--   * `buffer.WS_VISIBLEALWAYS`
--     Display all space characters as dots and tab characters as arrows.
--   * `buffer.WS_VISIBLEAFTERINDENT`
--     Display only non-indentation spaces and tabs as dots and arrows.
--
--   The default value is `buffer.WS_INVISIBLE`.
-- @field virtual_space_options (number)
--   The virtual space mode.
--
--   * `buffer.VS_NONE`
--     Disable virtual space.
--   * `buffer.VS_RECTANGULARSELECTION`
--     Enable virtual space only for rectangular selections.
--   * `buffer.VS_USERACCESSIBLE`
--     Enable virtual space.
--
--   When virtual space is enabled, the caret may move into the space past end
--   of line characters.
--   The default value is `buffer.VS_NONE`.
-- @field whitespace_chars (string)
--   The string set of characters recognized as whitespace characters.
--   Set this only after setting [`buffer.word_chars`]().
--   The default value is a string that contains all non-newline characters less
--   than ASCII value 33.
-- @field whitespace_size (number)
--   The pixel size of the dots that represent space characters when whitespace
--   is visible.
--   The default value is `1`.
-- @field word_chars (string)
--   The string set of characters recognized as word characters.
--   The default value is a string that contains alphanumeric characters, an
--   underscore, and all characters greater than ASCII value 127.
-- @field wrap_indent_mode (number)
--   The wrapped line indent mode.
--
--   * `buffer.WRAPINDENT_FIXED`
--     Indent wrapped lines by [`buffer.wrap_start_indent`]().
--   * `buffer.WRAPINDENT_SAME`
--     Indent wrapped lines the same amount as the first line.
--   * `buffer.WRAPINDENT_INDENT`
--     Indent wrapped lines one more level than the level of the first line.
--
--   The default value is `buffer.WRAPINDENT_FIXED`.
-- @field wrap_mode (number)
--   Long line wrap mode.
--
--   * `buffer.WRAP_NONE`
--     Long lines are not wrapped.
--   * `buffer.WRAP_WORD`
--     Wrap long lines at word (and style) boundaries.
--   * `buffer.WRAP_CHAR`
--     Wrap long lines at character boundaries.
--   * `buffer.WRAP_WHITESPACE`
--     Wrap long lines at word boundaries (ignoring style boundaries).
--
--   The default value is `buffer.WRAP_NONE`.
-- @field wrap_start_indent (number)
--   The number of spaces of indentation to display wrapped lines with if
--   [`buffer.wrap_indent_mode`]() is `buffer.WRAP_INDENT_FIXED`.
--   The default value is `0`.
-- @field wrap_visual_flags (number)
--   The wrapped line visual flag display mode.
--
--   * `buffer.WRAPVISUALFLAG_NONE`
--     No visual flags.
--   * `buffer.WRAPVISUALFLAG_END`
--     Show a visual flag at the end of a wrapped line.
--   * `buffer.WRAPVISUALFLAG_START`
--     Show a visual flag at the beginning of a sub-line.
--   * `buffer.WRAPVISUALFLAG_MARGIN`
--     Show a visual flag in the sub-line's line number margin.
--
--   The default value is `buffer.WRAPVISUALFLAG_NONE`.
-- @field wrap_visual_flags_location (number)
--   The wrapped line visual flag drawing mode.
--
--   * `buffer.WRAPVISUALFLAGLOC_DEFAULT`
--     Draw a visual flag near the view's right margin.
--   * `buffer.WRAPVISUALFLAGLOC_END_BY_TEXT`
--     Draw a visual flag near text at the end of a wrapped line.
--   * `buffer.WRAPVISUALFLAGLOC_START_BY_TEXT`
--     Draw a visual flag near text at the beginning of a subline.
--
--   The default value is `buffer.WRAPVISUALFLAGLOC_DEFAULT`.
-- @field x_offset (number)
--   The horizontal scroll pixel position.
--   A value of `0` is the normal position with the first text column visible at
--   the left of the view.
-- @field zoom (number)
--   The number of points to add to the size of all fonts.
--   Negative values are allowed.
--   The default value is `0`.
-- @field ANNOTATION_BOXED (number, Read-only)
--
-- @field ANNOTATION_HIDDEN (number, Read-only)
--
-- @field ANNOTATION_STANDARD (number, Read-only)
--
-- @field ANNOTATION_INDENTED (number, Read-only)
--
-- @field CARETSTYLE_BLOCK (number, Read-only)
--
-- @field CARETSTYLE_INVISIBLE (number, Read-only)
--
-- @field CARETSTYLE_LINE (number, Read-only)
--
-- @field CARET_EVEN (number, Read-only)
--
-- @field CARET_JUMPS (number, Read-only)
--
-- @field CARET_SLOP (number, Read-only)
--
-- @field CARET_STRICT (number, Read-only)
--
-- @field EDGE_BACKGROUND (number, Read-only)
--
-- @field EDGE_LINE (number, Read-only)
--
-- @field EDGE_NONE (number, Read-only)
--
-- @field INDIC_BOX (number, Read-only)
--
-- @field INDIC_COMPOSITIONTHICK (number, Read-only)
--
-- @field INDIC_COMPOSITIONTHIN (number, Read-only)
--
-- @field INDIC_DASH (number, Read-only)
--
-- @field INDIC_DIAGONAL (number, Read-only)
--
-- @field INDIC_DOTBOX (number, Read-only)
--
-- @field INDIC_DOTS (number, Read-only)
--
-- @field INDIC_FULLBOX (number, Read-only)
--
-- @field INDIC_HIDDEN (number, Read-only)
--
-- @field INDIC_MAX (number, Read-only)
--
-- @field INDIC_PLAIN (number, Read-only)
--
-- @field INDIC_ROUNDBOX (number, Read-only)
--
-- @field INDIC_SQUIGGLE (number, Read-only)
--
-- @field INDIC_SQUIGGLELOW (number, Read-only)
--
-- @field INDIC_SQUIGGLEPIXMAP (number, Read-only)
--
-- @field INDIC_STRAIGHTBOX (number, Read-only)
--
-- @field INDIC_STRIKE (number, Read-only)
--
-- @field INDIC_TEXTFORE (number, Read-only)
--
-- @field INDIC_TT (number, Read-only)
--
-- @field FIND_MATCHCASE (number, Read-only)
--
-- @field FIND_REGEXP (number, Read-only)
--
-- @field FIND_WHOLEWORD (number, Read-only)
--
-- @field FIND_WORDSTART (number, Read-only)
--
-- @field MOD_ALT (number, Read-only)
--
-- @field MOD_CTRL (number, Read-only)
--
-- @field MOD_META (number, Read-only)
--
-- @field MOD_SHIFT (number, Read-only)
--
-- @field MOD_SUPER (number, Read-only)
--
-- @field MOUSE_DRAG (number, Read-only)
--
-- @field MOUSE_PRESS (number, Read-only)
--
-- @field MOUSE_RELEASE (number, Read-only)
--
-- @field VS_NONE (number, Read-only)
--
-- @field VS_RECTANGULARSELECTION (number, Read-only)
--
-- @field VS_USERACCESSIBLE (number, Read-only)
--
-- @field WS_INVISIBLE (number, Read-only)
--
-- @field WS_VISIBLEAFTERINDENT (number, Read-only)
--
-- @field WS_VISIBLEALWAYS (number, Read-only)
--
-- @field ALPHA_NOALPHA (number, Read-only)
--
-- @field ALPHA_OPAQUE (number, Read-only)
--
-- @field ALPHA_TRANSPARENT (number, Read-only)
--
-- @field AUTOMATICFOLD_CHANGE (number, Read-only)
--
-- @field AUTOMATICFOLD_CLICK (number, Read-only)
--
-- @field AUTOMATICFOLD_SHOW (number, Read-only)
--
-- @field CARETSTICKY_OFF (number, Read-only)
--
-- @field CARETSTICKY_ON (number, Read-only)
--
-- @field CARETSTICKY_WHITESPACE (number, Read-only)
--
-- @field CASEINSENSITIVEBEHAVIOUR_IGNORECASE (number, Read-only)
--
-- @field CASEINSENSITIVEBEHAVIOUR_RESPECTCASE (number, Read-only)
--
-- @field CASE_LOWER (number, Read-only)
--
-- @field CASE_MIXED (number, Read-only)
--
-- @field CASE_UPPER (number, Read-only)
--
-- @field CURSORARROW (number, Read-only)
--
-- @field CURSORNORMAL (number, Read-only)
--
-- @field CURSORREVERSEARROW (number, Read-only)
--
-- @field CURSORWAIT (number, Read-only)
--
-- @field EOL_CR (number, Read-only)
--
-- @field EOL_CRLF (number, Read-only)
--
-- @field EOL_LF (number, Read-only)
--
-- @field FOLDACTION_CONTRACT (number, Read-only)
--
-- @field FOLDACTION_EXPAND (number, Read-only)
--
-- @field FOLDACTION_TOGGLE (number, Read-only)
--
-- @field FOLDFLAG_LEVELNUMBERS (number, Read-only)
--
-- @field FOLDFLAG_LINEAFTER_CONTRACTED (number, Read-only)
--
-- @field FOLDFLAG_LINEAFTER_EXPANDED (number, Read-only)
--
-- @field FOLDFLAG_LINEBEFORE_CONTRACTED (number, Read-only)
--
-- @field FOLDFLAG_LINEBEFORE_EXPANDED (number, Read-only)
--
-- @field FOLDFLAG_LINESTATE (number, Read-only)
--
-- @field FOLDLEVELBASE (number, Read-only)
--
-- @field FOLDLEVELHEADERFLAG (number, Read-only)
--
-- @field FOLDLEVELNUMBERMASK (number, Read-only)
--
-- @field FOLDLEVELWHITEFLAG (number, Read-only)
--
-- @field IV_LOOKBOTH (number, Read-only)
--
-- @field IV_LOOKFORWARD (number, Read-only)
--
-- @field IV_NONE (number, Read-only)
--
-- @field IV_REAL (number, Read-only)
--
-- @field MARGINOPTION_NONE (number, Read-only)
--
-- @field MARGINOPTION_SUBLINESELECT (number, Read-only)
--
-- @field MARGIN_BACK (number, Read-only)
--
-- @field MARGIN_FORE (number, Read-only)
--
-- @field MARGIN_NUMBER (number, Read-only)
--
-- @field MARGIN_RTEXT (number, Read-only)
--
-- @field MARGIN_SYMBOL (number, Read-only)
--
-- @field MARGIN_TEXT (number, Read-only)
--
-- @field MARKER_MAX (number, Read-only)
--
-- @field MARKNUM_FOLDER (number, Read-only)
--
-- @field MARKNUM_FOLDEREND (number, Read-only)
--
-- @field MARKNUM_FOLDERMIDTAIL (number, Read-only)
--
-- @field MARKNUM_FOLDEROPEN (number, Read-only)
--
-- @field MARKNUM_FOLDEROPENMID (number, Read-only)
--
-- @field MARKNUM_FOLDERSUB (number, Read-only)
--
-- @field MARKNUM_FOLDERTAIL (number, Read-only)
--
-- @field MARK_ARROW (number, Read-only)
--
-- @field MARK_ARROWDOWN (number, Read-only)
--
-- @field MARK_ARROWS (number, Read-only)
--
-- @field MARK_AVAILABLE (number, Read-only)
--
-- @field MARK_BACKGROUND (number, Read-only)
--
-- @field MARK_BOOKMARK (number, Read-only)
--
-- @field MARK_BOXMINUS (number, Read-only)
--
-- @field MARK_BOXMINUSCONNECTED (number, Read-only)
--
-- @field MARK_BOXPLUS (number, Read-only)
--
-- @field MARK_BOXPLUSCONNECTED (number, Read-only)
--
-- @field MARK_CHARACTER (number, Read-only)
--
-- @field MARK_CIRCLE (number, Read-only)
--
-- @field MARK_CIRCLEMINUS (number, Read-only)
--
-- @field MARK_CIRCLEMINUSCONNECTED (number, Read-only)
--
-- @field MARK_CIRCLEPLUS (number, Read-only)
--
-- @field MARK_CIRCLEPLUSCONNECTED (number, Read-only)
--
-- @field MARK_DOTDOTDOT (number, Read-only)
--
-- @field MARK_EMPTY (number, Read-only)
--
-- @field MARK_FULLRECT (number, Read-only)
--
-- @field MARK_LCORNER (number, Read-only)
--
-- @field MARK_LCORNERCURVE (number, Read-only)
--
-- @field MARK_LEFTRECT (number, Read-only)
--
-- @field MARK_MINUS (number, Read-only)
--
-- @field MARK_PIXMAP (number, Read-only)
--
-- @field MARK_PLUS (number, Read-only)
--
-- @field MARK_RGBAIMAGE (number, Read-only)
--
-- @field MARK_ROUNDRECT (number, Read-only)
--
-- @field MARK_SHORTARROW (number, Read-only)
--
-- @field MARK_SMALLRECT (number, Read-only)
--
-- @field MARK_TCORNER (number, Read-only)
--
-- @field MARK_TCORNERCURVE (number, Read-only)
--
-- @field MARK_UNDERLINE (number, Read-only)
--
-- @field MARK_VLINE (number, Read-only)
--
-- @field MASK_FOLDERS (number, Read-only)
--
-- @field MULTIAUTOC_EACH (number, Read-only)
--
-- @field MULTIAUTOC_ONCE (number, Read-only)
--
-- @field MULTIPASTE_EACH (number, Read-only)
--
-- @field MULTIPASTE_ONCE (number, Read-only)
--
-- @field ORDER_CUSTOM (number, Read-only)
--
-- @field ORDER_PERFORMSORT (number, Read-only)
--
-- @field ORDER_PRESORTED (number, Read-only)
--
-- @field SEL_LINES (number, Read-only)
--
-- @field SEL_RECTANGLE (number, Read-only)
--
-- @field SEL_STREAM (number, Read-only)
--
-- @field SEL_THIN (number, Read-only)
--
-- @field TIME_FOREVER (number, Read-only)
--
-- @field UPDATE_CONTENT (number, Read-only)
--
-- @field UPDATE_H_SCROLL (number, Read-only)
--
-- @field UPDATE_SELECTION (number, Read-only)
--
-- @field UPDATE_V_SCROLL (number, Read-only)
--
-- @field WRAPINDENT_FIXED (number, Read-only)
--
-- @field WRAPINDENT_INDENT (number, Read-only)
--
-- @field WRAPINDENT_SAME (number, Read-only)
--
-- @field WRAPVISUALFLAGLOC_DEFAULT (number, Read-only)
--
-- @field WRAPVISUALFLAGLOC_END_BY_TEXT (number, Read-only)
--
-- @field WRAPVISUALFLAGLOC_START_BY_TEXT (number, Read-only)
--
-- @field WRAPVISUALFLAG_END (number, Read-only)
--
-- @field WRAPVISUALFLAG_MARGIN (number, Read-only)
--
-- @field WRAPVISUALFLAG_NONE (number, Read-only)
--
-- @field WRAPVISUALFLAG_START (number, Read-only)
--
-- @field WRAP_CHAR (number, Read-only)
--
-- @field WRAP_NONE (number, Read-only)
--
-- @field WRAP_WHITESPACE (number, Read-only)
--
-- @field WRAP_WORD (number, Read-only)
--
-- @field STYLE_BRACEBAD (number, Read-only)
--
-- @field STYLE_BRACELIGHT (number, Read-only)
--
-- @field STYLE_CALLTIP (number, Read-only)
--
-- @field STYLE_CONTROLCHAR (number, Read-only)
--
-- @field STYLE_DEFAULT (number, Read-only)
--
-- @field STYLE_INDENTGUIDE (number, Read-only)
--
-- @field STYLE_LINENUMBER (number, Read-only)
--
-- @field STYLE_MAX (number, Read-only)
--
-- @field VISIBLE_SLOP (number, Read-only)
--
-- @field VISIBLE_STRICT (number, Read-only)
--
module('buffer')

---
-- Selects the range of text between positions *start_pos* to *end_pos* as the
-- main selection, retaining all other selections as additional selections.
-- Since an empty selection still counts as a selection, use
-- `buffer.set_selection()` first when setting a list of selections.
-- @param buffer A buffer.
-- @param end_pos The caret position of the range of text to select in *buffer*.
-- @param start_pos The anchor position of the range of text to select in
--   *buffer*.
-- @see set_selection
function add_selection(buffer, end_pos, start_pos) end

---
-- Adds string *text* to the buffer at the caret position and moves the caret to
-- the end of the added text without scrolling it into view.
-- @param buffer A buffer.
-- @param text The text to add.
function add_text(buffer, text) end

---
-- Clears annotations from all lines.
-- @param buffer A buffer.
function annotation_clear_all(buffer) end

---
-- Appends string *text* to the end of the buffer without modifying any existing
-- selections or scrolling the text into view.
-- @param buffer A buffer.
-- @param text The text to append.
function append_text(buffer, text) end

---
-- Returns whether or not an autocompletion or user list is visible.
-- @param buffer A buffer.
-- @return bool
function auto_c_active(buffer) end

---
-- Cancels an autocompletion or user list.
-- @param buffer A buffer.
function auto_c_cancel(buffer) end

---
-- Completes the current word with the one selected in an autocompletion list.
-- @param buffer A buffer.
function auto_c_complete(buffer) end

---
-- Returns the position where autocompletion started or where a user list was
-- shown.
-- @param buffer A buffer.
-- @return number
function auto_c_pos_start(buffer) end

---
-- Selects the first item that starts with string *prefix* in an autocompletion
-- or user list, using the case sensitivity setting `buffer.auto_c_ignore_case`.
-- @param buffer A buffer.
-- @param prefix The item in the list to select.
function auto_c_select(buffer, prefix) end

---
-- Displays an autocompletion list constructed from string *items* (whose items
-- are delimited by `buffer.auto_c_separator` characters) using *len_entered*
-- number of characters behind the caret as the prefix of the word to be
-- autocompleted.
-- The sorted order of *items* (`buffer.auto_c_order`) must have already been
-- defined.
-- @param buffer A buffer.
-- @param len_entered The number of characters before the caret used to provide
--   the context.
-- @param items The sorted string of words to show, separated by
--   `buffer.auto_c_separator` characters (initially spaces).
-- @see auto_c_separator
-- @see auto_c_order
function auto_c_show(buffer, len_entered, items) end

---
-- Allows the user to type any character in string set *chars* in order to
-- cancel an autocompletion or user list.
-- The default set is empty.
-- @param buffer A buffer.
-- @param chars The string of characters that cancel autocompletion. This string
--   is empty by default.
function auto_c_stops(buffer, chars) end

---
-- Un-indents the text on the selected lines.
-- @param buffer A buffer.
function back_tab(buffer) end

---
-- Starts a sequence of actions to be undone or redone as a single action.
-- May be nested.
-- @param buffer A buffer.
function begin_undo_action(buffer) end

---
-- Highlights the character at position *pos* as an unmatched brace character
-- using the `'style.bracebad'` style.
-- Removes highlighting when *pos* is `-1`.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to highlight, or `-1` to remove the
--   highlight.
function brace_bad_light(buffer, pos) end

---
-- Highlights unmatched brace characters with indicator number *indicator*, in
-- the range of `0` to `31`, instead of the
-- `buffer.STYLE_BRACEBAD` style if *use_indicator* is `true`.
-- @param buffer A buffer.
-- @param use_indicator Whether or not to use an indicator.
-- @param indicator The indicator number to use.
function brace_bad_light_indicator(buffer, use_indicator, indicator) end

---
-- Highlights the characters at positions *pos1* and *pos2* as matching braces
-- using the `'style.bracelight'` style.
-- If indent guides are enabled, locates the column with `buffer.column` and
-- sets `buffer.highlight_guide` in order to highlight the indent guide.
-- @param buffer A buffer.
-- @param pos1 The first position in *buffer* to highlight.
-- @param pos2 The second position in *buffer* to highlight.
function brace_highlight(buffer, pos1, pos2) end

---
-- Highlights matching brace characters with indicator number *indicator*, in
-- the range of `0` to `31`, instead of the
-- `buffer.STYLE_BRACELIGHT` style if *use_indicator* is `true`.
-- @param buffer A buffer.
-- @param use_indicator Whether or not to use an indicator.
-- @param indicator The indicator number to use.
function brace_highlight_indicator(buffer, use_indicator, indicator) end

---
-- Returns the position of the matching brace for the brace character at
-- position *pos*, taking nested braces into account, or `-1`.
-- The brace characters recognized are '(', ')', '[', ']', '{', '}', '<', and
-- '>' and must have the same style.
-- @param buffer A buffer.
-- @param pos The position of the brace in *buffer* to match.
-- @return number
function brace_match(buffer, pos) end

---
-- Returns whether or not a call tip is visible.
-- @param buffer A buffer.
-- @return bool
function call_tip_active(buffer) end

---
-- Removes a call tip from view.
-- @param buffer A buffer.
function call_tip_cancel(buffer) end

---
-- Returns a call tip's display position.
-- @param buffer A buffer.
-- @return number
function call_tip_pos_start(buffer) end

---
-- Highlights a call tip's text between positions *start_pos*, starting from
-- zero, to *end_pos* with the color `buffer.call_tip_fore_hlt`.
-- @param buffer A buffer.
-- @param start_pos The start position in a call tip text to highlight.
-- @param end_pos The end position in a call tip text to highlight.
function call_tip_set_hlt(buffer, start_pos, end_pos) end

---
-- Displays a call tip at position *pos* with string *text* as the call tip's
-- contents.
-- Any "\001" or "\002" bytes in *text* are replaced by clickable up or down
-- arrow visuals, respectively. These may be used to indicate that a symbol has
-- more than one call tip, for example.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to show a call tip at.
-- @param text The call tip text to show.
function call_tip_show(buffer, pos, text) end

---
-- Returns whether or not there is an action to be redone.
-- @param buffer A buffer.
-- @return bool
function can_redo(buffer) end

---
-- Returns whether or not there is an action to be undone.
-- @param buffer A buffer.
-- @return bool
function can_undo(buffer) end

---
-- Cancels the active selection mode, autocompletion or user list, call tip,
-- etc.
-- @param buffer A buffer.
function cancel(buffer) end

---
-- Moves the caret left one character.
-- @param buffer A buffer.
function char_left(buffer) end

---
-- Moves the caret left one character, extending the selected text to the new
-- position.
-- @param buffer A buffer.
function char_left_extend(buffer) end

---
-- Moves the caret left one character, extending the rectangular selection to
-- the new position.
-- @param buffer A buffer.
function char_left_rect_extend(buffer) end

---
-- Moves the caret right one character.
-- @param buffer A buffer.
function char_right(buffer) end

---
-- Moves the caret right one character, extending the selected text to the new
-- position.
-- @param buffer A buffer.
function char_right_extend(buffer) end

---
-- Moves the caret right one character, extending the rectangular selection to
-- the new position.
-- @param buffer A buffer.
function char_right_rect_extend(buffer) end

---
-- Identifies the current horizontal caret position as the caret's preferred
-- horizontal position when moving between lines.
-- @param buffer A buffer.
-- @see caret_sticky
function choose_caret_x(buffer) end

---
-- Deletes the selected text or the character at the caret.
-- @param buffer A buffer.
function clear(buffer) end

---
-- Deletes the buffer's text.
-- @param buffer A buffer.
function clear_all(buffer) end

---
-- Clears all styling and folding information.
-- @param buffer A buffer.
function clear_document_style(buffer) end

---
-- Clears all images registered using `buffer.register_image()` and
-- `buffer.register_rgba_image()`.
-- @param buffer A buffer.
function clear_registered_images(buffer) end

---
-- Removes the alternate string representation for character *char*.
-- @param buffer A buffer.
-- @param char The character in `buffer.representations` to remove the alternate
--   string representation for.
function clear_representation(buffer, char) end

---
-- Removes all selections and moves the caret to the beginning of the buffer.
-- @param buffer A buffer.
function clear_selections(buffer) end

---
-- Instructs the lexer to style and mark fold points in the range of text
-- between *start_pos* and *end_pos*.
-- If *end_pos* is `-1`, styles and marks to the end of the buffer.
-- @param buffer A buffer.
-- @param start_pos The start position of the range of text in *buffer* to
--   process.
-- @param end_pos The end position of the range of text in *buffer* to process,
--   or `-1` to process from *start_pos* to the end of *buffer*.
function colourise(buffer, start_pos, end_pos) end

---
-- Returns the line number of the next contracted fold point starting from line
-- number *line*, or `-1` if none exists.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to start at.
-- @return number
function contracted_fold_next(buffer, line) end

---
-- Converts all end of line characters to those in end of line mode *mode*.
-- @param buffer A buffer.
-- @param mode The end of line mode to convert to. Valid values are:
--   * `buffer.EOL_CRLF`
--   * `buffer.EOL_CR`
--   * `buffer.EOL_LF`
function convert_eols(buffer, mode) end

---
-- Copies the selected text to the clipboard.
-- Multiple selections are copied in order with no delimiters. Rectangular
-- selections are copied from top to bottom with end of line characters. Virtual
-- space is not copied.
-- @param buffer A buffer.
function copy(buffer) end

---
-- Copies the selected text or the current line to the clipboard.
-- @param buffer A buffer.
function copy_allow_line(buffer) end

---
-- Copies the range of text between positions *start_pos* and *end_pos* to the
-- clipboard.
-- @param buffer A buffer.
-- @param start_pos The start position of the range of text in *buffer* to copy.
-- @param end_pos The end position of the range of text in *buffer* to copy.
function copy_range(buffer, start_pos, end_pos) end

---
-- Copies string *text* to the clipboard.
-- @param buffer A buffer.
-- @param text The text to copy.
function copy_text(buffer, text) end

---
-- Returns the number of whole characters (taking multi-byte characters into
-- account) between positions *start_pos* and *end_pos*.
-- @param buffer A buffer.
-- @param start_pos The start position of the range of text in *buffer* to start
--   counting at.
-- @param end_pos The end position of the range of text in *buffer* to stop
--   counting at.
-- @return number
function count_characters(buffer, start_pos, end_pos) end

---
-- Cuts the selected text to the clipboard.
-- Multiple selections are copied in order with no delimiters. Rectangular
-- selections are copied from top to bottom with end of line characters. Virtual
-- space is not copied.
-- @param buffer A buffer.
function cut(buffer) end

---
-- Deletes the range of text from the caret to the beginning of the current
-- line.
-- @param buffer A buffer.
function del_line_left(buffer) end

---
-- Deletes the range of text from the caret to the end of the current line.
-- @param buffer A buffer.
function del_line_right(buffer) end

---
-- Deletes the word to the left of the caret, including any leading non-word
-- characters.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function del_word_left(buffer) end

---
-- Deletes the word to the right of the caret, including any trailing non-word
-- characters.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function del_word_right(buffer) end

---
-- Deletes the word to the right of the caret, excluding any trailing non-word
-- characters.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function del_word_right_end(buffer) end

---
-- Deletes the character behind the caret if no text is selected.
-- Otherwise, deletes the selected text.
-- @param buffer A buffer.
function delete_back(buffer) end

---
-- Deletes the character behind the caret unless either the caret is at the
-- beginning of a line or text is selected.
-- If text is selected, deletes it.
-- @param buffer A buffer.
function delete_back_not_line(buffer) end

---
-- Deletes the range of text from position *pos* to *pos* + *length*.
-- @param buffer A buffer.
-- @param pos The start position of the range of text in *buffer* to delete.
-- @param length The number of characters in the range of text to delete.
function delete_range(buffer, pos, length) end

---
-- Returns the actual line number of displayed line number *display_line*,
-- taking hidden lines into account.
-- If *display_line* is less than or equal to zero, returns `0`. If
-- *display_line* is greater than or equal to the number of displayed lines,
-- returns `buffer.line_count`.
-- @param buffer A buffer.
-- @param display_line The display line number to use.
-- @return number
function doc_line_from_visible(buffer, display_line) end

---
-- Moves the caret to the end of the buffer.
-- @param buffer A buffer.
function document_end(buffer) end

---
-- Moves the caret to the end of the buffer, extending the selected text to the
-- new position.
-- @param buffer A buffer.
function document_end_extend(buffer) end

---
-- Moves the caret to the beginning of the buffer.
-- @param buffer A buffer.
function document_start(buffer) end

---
-- Moves the caret to the beginning of the buffer, extending the selected text
-- to the new position.
-- @param buffer A buffer.
function document_start_extend(buffer) end

---
-- Drops existing selection number *n*.
-- @param buffer A buffer.
-- @param n The number of the existing selection.
function drop_selection_n(buffer, n) end

---
-- Toggles `buffer.overtype`.
-- @param buffer A buffer.
function edit_toggle_overtype(buffer) end

---
-- Deletes the undo and redo history.
-- @param buffer A buffer.
function empty_undo_buffer(buffer) end

---
-- Ends a sequence of actions to be undone or redone as a single action.
-- @param buffer A buffer.
function end_undo_action(buffer) end

---
-- Ensures line number *line* is visible by expanding any fold points hiding it.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to ensure visible.
function ensure_visible(buffer, line) end

---
-- Ensures line number *line* is visible by expanding any fold points hiding it
-- based on the vertical caret policy previously defined in
-- `buffer.set_visible_policy()`.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to ensure visible.
function ensure_visible_enforce_policy(buffer, line) end

---
-- Returns the position of column number *column* on line number *line* (taking
-- tab and multi-byte characters into account), or the position at the end of
-- line *line*.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to use.
-- @param column The column number to use.
function find_column(buffer, line, column) end

---
-- Contracts, expands, or toggles all fold points, depending on *action*.
-- When toggling, the state of the first fold point determines whether to
-- expand or contract.
-- @param buffer A buffer.
-- @param action The fold action to perform. Valid values are:
--   * `buffer.FOLDACTION_CONTRACT`
--   * `buffer.FOLDACTION_EXPAND`
--   * `buffer.FOLDACTION_TOGGLE`
function fold_all(buffer, action) end

---
-- Contracts, expands, or toggles the fold point on line number *line*, as well
-- as all of its children, depending on *action*.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to set the fold states for.
-- @param action The fold action to perform. Valid values are:
--   * `buffer.FOLDACTION_CONTRACT`
--   * `buffer.FOLDACTION_EXPAND`
--   * `buffer.FOLDACTION_TOGGLE`
function fold_children(buffer, line, action) end

---
-- Contracts, expands, or toggles the fold point on line number *line*,
-- depending on *action*.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to set the fold state for.
-- @param action The fold action to perform. Valid values are:
--   * `buffer.FOLDACTION_CONTRACT`
--   * `buffer.FOLDACTION_EXPAND`
--   * `buffer.FOLDACTION_TOGGLE`
function fold_line(buffer, line, action) end

---
-- Returns the current line's text and the caret's position on that line,
-- starting from zero.
-- @param buffer A buffer.
-- @return string, number
function get_cur_line(buffer) end

---
-- Returns the line number of the last line after line number *line* whose fold
-- level is greater than *level*.
-- If *level* is `-1`, returns the level of *line*.
-- @param buffer A buffer.
-- @param line The line number in *buffer* of a header line.
-- @param level The fold level, or `-1` for the level of *line*.
function get_last_child(buffer, line, level) end

---
-- Returns the text on line number *line*, including end of line characters.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to use.
-- @return string, number
function get_line(buffer, line) end

---
-- Returns the position of the end of the selected text on line number *line*,
-- or `-1` if *line* has no selection.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to use.
function get_line_sel_end_position(buffer, line) end

---
-- Returns the position of the beginning of the selected text on line number
-- *line*, or `-1` if *line* has no selection.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to use.
function get_line_sel_start_position(buffer, line) end

---
-- Returns the selected text.
-- Multiple selections are included in order with no delimiters. Rectangular
-- selections are included from top to bottom with end of line characters.
-- Virtual space is not included.
-- @param buffer A buffer.
-- @return string, number
function get_sel_text(buffer) end

---
-- Returns the buffer's text.
-- @param buffer A buffer.
function get_text(buffer) end

---
-- Moves the caret to the beginning of line number *line* and scrolls it into
-- view.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to go to.
function goto_line(buffer, line) end

---
-- Moves the caret to position *pos* and scrolls it into view.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to go to.
function goto_pos(buffer, pos) end

---
-- Hides the range of lines between line numbers *start_line* to *end_line*.
-- This has no effect on fold levels or fold flags and the first line cannot be
-- hidden.
-- @param buffer A buffer.
-- @param start_line The start line of the range of lines in *buffer* to hide.
-- @param end_line The end line of the range of lines in *buffer* to hide.
function hide_lines(buffer, start_line, end_line) end

---
-- Moves the caret to the beginning of the current line.
-- @param buffer A buffer.
function home(buffer) end

---
-- Moves the caret to the beginning of the current wrapped line.
-- @param buffer A buffer.
function home_display(buffer) end

---
-- Moves the caret to the beginning of the current wrapped line, extending the
-- selected text to the new position.
-- @param buffer A buffer.
function home_display_extend(buffer) end

---
-- Moves the caret to the beginning of the current line, extending the selected
-- text to the new position.
-- @param buffer A buffer.
function home_extend(buffer) end

---
-- Moves the caret to the beginning of the current line, extending the
-- rectangular selection to the new position.
-- @param buffer A buffer.
function home_rect_extend(buffer) end

---
-- Moves the caret to the beginning of the current wrapped line or, if already
-- there, to the beginning of the actual line.
-- @param buffer A buffer.
function home_wrap(buffer) end

---
-- Like `buffer.home_wrap()`, but extends the selected text to the new position.
-- @param buffer A buffer.
function home_wrap_extend(buffer) end

---
-- Returns a bit-mask that represents which indicators are on at position *pos*.
-- Bit 0 is set if indicator 0 is on, bit 1 for indicator 1, etc.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to get indicators at.
-- @return number
function indicator_all_on_for(buffer, pos) end

---
-- Clears indicator number `buffer.indicator_current` over the range of text
-- from position *pos* to *pos* + *length*.
-- @param buffer A buffer.
-- @param pos The start position of the range of text in *buffer* to clear
--   indicators over.
-- @param length The number of characters in the range of text to clear
--   indicators over.
function indicator_clear_range(buffer, pos, length) end

---
-- Returns the next boundary position, starting from position *pos*, of
-- indicator number *indicator*, in the range of `0` to `31`.
-- Returns `buffer.length` if *indicator* was not found.
-- @param buffer A buffer.
-- @param indicator An indicator number in the range of `0` to `31`.
-- @param pos The position in *buffer* of the indicator.
function indicator_end(buffer, indicator, pos) end

---
-- Fills the range of text from position *pos* to *pos* + *length* with
-- indicator number `buffer.indicator_current`.
-- @param buffer A buffer.
-- @param pos The start position of the range of text in *buffer* to set
--   indicators over.
-- @param length The number of characters in the range of text to set indicators
--   over.
function indicator_fill_range(buffer, pos, length) end

---
-- Returns the previous boundary position, starting from position *pos*, of
-- indicator number *indicator*, in the range of `0` to `31`.
-- Returns `0` if *indicator* was not found.
-- @param buffer A buffer.
-- @param indicator An indicator number in the range of `0` to `31`.
-- @param pos The position in *buffer* of the indicator.
function indicator_start(buffer, indicator, pos) end

---
-- Inserts string *text* at position *pos*, removing any selections.
-- If *pos* is `-1`, inserts *text* at the caret position.
-- If the caret is after the *pos*, it is moved appropriately, but not scrolled
-- into view.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to insert text at, or `-1` for the
--   current position.
-- @param text The text to insert.
function insert_text(buffer, pos, text) end

---
-- Copies the current line to the clipboard.
-- @param buffer A buffer.
function line_copy(buffer) end

---
-- Cuts the current line to the clipboard.
-- @param buffer A buffer.
function line_cut(buffer) end

---
-- Deletes the current line.
-- @param buffer A buffer.
function line_delete(buffer) end

---
-- Moves the caret down one line.
-- @param buffer A buffer.
function line_down(buffer) end

---
-- Moves the caret down one line, extending the selected text to the new
-- position.
-- @param buffer A buffer.
function line_down_extend(buffer) end

---
-- Moves the caret down one line, extending the rectangular selection to the new
-- position.
-- @param buffer A buffer.
function line_down_rect_extend(buffer) end

---
-- Duplicates the current line on a new line below.
-- @param buffer A buffer.
function line_duplicate(buffer) end

---
-- Moves the caret to the end of the current line.
-- @param buffer A buffer.
function line_end(buffer) end

---
-- Moves the caret to the end of the current wrapped line.
-- @param buffer A buffer.
function line_end_display(buffer) end

---
-- Moves the caret to the end of the current wrapped line, extending the
-- selected text to the new position.
-- @param buffer A buffer.
function line_end_display_extend(buffer) end

---
-- Moves the caret to the end of the current line, extending the selected text
-- to the new position.
-- @param buffer A buffer.
function line_end_extend(buffer) end

---
-- Moves the caret to the end of the current line, extending the rectangular
-- selection to the new position.
-- @param buffer A buffer.
function line_end_rect_extend(buffer) end

---
-- Moves the caret to the end of the current wrapped line or, if already there,
-- to the end of the actual line.
-- @param buffer A buffer.
function line_end_wrap(buffer) end

---
-- Like `buffer.line_end_wrap()`, but extends the selected text to the new
-- position.
-- @param buffer A buffer.
function line_end_wrap_extend(buffer) end

---
-- Returns the line number of the line that contains position *pos*.
-- Returns `0` if *pos* is less than 0 or `buffer.line_count` if *pos* is
-- greater than `buffer.length`.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to get the line number of.
-- @return number
function line_from_position(buffer, pos) end

---
-- Returns the number of bytes on line number *line*, including end of line
-- characters.
-- To get line length excluding end of line characters, use
-- `buffer.line_end_position[line] - buffer.position_from_line(line)`.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to get the length of.
-- @return number
function line_length(buffer, line) end

---
-- Scrolls the buffer right *columns* columns and down *lines* lines.
-- Negative values are allowed.
-- @param buffer A buffer.
-- @param columns The number of columns to scroll horizontally.
-- @param lines The number of lines to scroll vertically.
function line_scroll(buffer, columns, lines) end

---
-- Scrolls the buffer down one line, keeping the caret visible.
-- @param buffer A buffer.
function line_scroll_down(buffer) end

---
-- Scrolls the buffer up one line, keeping the caret visible.
-- @param buffer A buffer.
function line_scroll_up(buffer) end

---
-- Swaps the current line with the previous one.
-- @param buffer A buffer.
function line_transpose(buffer) end

---
-- Moves the caret up one line.
-- @param buffer A buffer.
function line_up(buffer) end

---
-- Moves the caret up one line, extending the selected text to the new position.
-- @param buffer A buffer.
function line_up_extend(buffer) end

---
-- Moves the caret up one line, extending the rectangular selection to the new
-- position.
-- @param buffer A buffer.
function line_up_rect_extend(buffer) end

---
-- Joins the lines in the target range, inserting spaces between the words
-- joined at line boundaries.
-- @param buffer A buffer.
function lines_join(buffer) end

---
-- Splits the lines in the target range into lines *width* pixels wide.
-- If *width* is `0`, splits the lines in the target range into lines as wide as
-- the view.
-- @param buffer A buffer.
-- @param width The pixel width to split lines at. When `0`, uses the width of
--   the view.
function lines_split(buffer, pixel_width) end

---
-- Converts the selected text to lower case letters.
-- @param buffer A buffer.
function lower_case(buffer) end

---
-- Clears all text in text margins.
-- @param buffer A buffer.
function margin_text_clear_all(buffer) end

---
-- Adds marker number *marker*, in the range of `0` to `31`, to line number
-- *line*, returning the added marker's handle which can be used in
-- `buffer.marker_delete_handle()` and `buffer.marker_line_from_handle()`, or
-- `0` if *line* is invalid.
-- @param buffer A buffer.
-- @param line The line number to add the marker on.
-- @param marker The marker number in the range of `0` to `31` to add.
-- @return number
function marker_add(buffer, line, marker) end

---
-- Adds the markers specified in marker bit-mask *marker_mask* to line number
-- *line*.
-- The first bit is set to add marker number 0, the second bit for marker number
-- 1, and so on up to marker number 31.
-- @param buffer A buffer.
-- @param line The line number to add the markers on.
-- @param marker_mask The mask of markers to set. Set bit 0 to set marker 0, bit
--   1 for marker 1 and so on.
function marker_add_set(buffer, line, marker_mask) end

---
-- Assigns marker symbol *symbol* to marker number *marker*, in the range of `0`
-- to `31`.
-- *symbol* is shown in marker symbol margins next to lines marked with
-- *marker*.
-- @param buffer A buffer.
-- @param marker The marker number in the range of `0` to `31` to set *symbol*
--   for.
-- @param symbol The marker symbol: `buffer.MARK_*`.
-- @see _SCINTILLA.next_marker_number
function marker_define(buffer, marker, symbol) end

---
-- Associates marker number *marker*, in the range of `0` to `31`, with XPM
-- image *pixmap*.
-- The `buffer.MARK_PIXMAP` marker symbol must be assigned to *marker*.
-- *pixmap* is shown in marker symbol margins next to lines marked with
-- *marker*.
-- @param buffer A buffer.
-- @param marker The marker number in the range of `0` to `31` to define
--   pixmap *pixmap* for.
-- @param pixmap The string pixmap data.
function marker_define_pixmap(buffer, marker, pixmap) end

---
-- Associates marker number *marker*, in the range of `0` to `31`, with RGBA
-- image *pixels*.
-- The dimensions for *pixels* (`buffer.rgba_image_width` and
-- `buffer.rgba_image_height`) must have already been defined. *pixels* is a
-- sequence of 4 byte pixel values (red, blue, green, and alpha) defining the
-- image line by line starting at the top-left pixel.
-- The `buffer.MARK_RGBAIMAGE` marker symbol must be assigned to *marker*.
-- *pixels* is shown in symbol margins next to lines marked with *marker*.
-- @param buffer A buffer.
-- @param marker The marker number in the range of `0` to `31` to define RGBA
--   data *pixels* for.
-- @param pixels The string sequence of 4 byte pixel values starting with the
--   pixels for the top line, with the leftmost pixel first, then continuing
--   with the pixels for subsequent lines. There is no gap between lines for
--   alignment reasons. Each pixel consists of, in order, a red byte, a green
--   byte, a blue byte and an alpha byte. The colour bytes are not premultiplied
--   by the alpha value. That is, a fully red pixel that is 25% opaque will be
--   `[FF, 00, 00, 3F]`.
function marker_define_rgba_image(buffer, marker, pixels) end

---
-- Deletes marker number *marker*, in the range of `0` to `31`, from line number
-- *line*. If *marker* is `-1`, deletes all markers from *line*.
-- @param buffer A buffer.
-- @param line The line number to delete the marker on.
-- @param marker The marker number in the range of `0` to `31` to delete from
--   *line*, or `-1` to delete all markers from the line.
function marker_delete(buffer, line, marker) end

---
-- Deletes marker number *marker*, in the range of `0` to `31`, from any line
-- that has it.
-- If *marker* is `-1`, deletes all markers from all lines.
-- @param buffer A buffer.
-- @param marker The marker number in the range of `0` to `31` to delete from
--   all lines, or `-1` to delete all markers from all lines.
function marker_delete_all(buffer, marker) end

---
-- Deletes the marker with handle *handle* returned by `buffer.marker_add()`.
-- @param buffer A buffer.
-- @param handle The identifier of a marker returned by `buffer.marker_add()`.
function marker_delete_handle(buffer, handle) end

---
-- Highlights the margin fold markers for the current fold block if *enabled* is
-- `true`.
-- @param buffer A buffer.
-- @param enabled Whether or not to enable highlight.
function marker_enable_highlight(buffer, enabled) end

---
-- Returns a bit-mask that represents the markers that were added to line number
-- *line*.
-- The first bit is set if marker number 0 is present, the second bit for marker
-- number 1, and so on.
-- @param buffer A buffer.
-- @param line The line number to get markers on.
-- @return number
function marker_get(buffer, line) end

---
-- Returns the line number that marker handle *handle*, returned by
-- `buffer.marker_add()`, was added to, or `-1` if the line was not found.
-- @param buffer A buffer.
-- @param handle The identifier of a marker returned by `buffer.marker_add()`.
-- @return number
function marker_line_from_handle(buffer, handle) end

---
-- Returns the first line number, starting at line number *line*, that has had
-- all of the markers represented by marker bit-mask *marker_mask* added to it.
-- Returns `-1` if no line was found.
-- Bit 0 is set if marker 0 is set, bit 1 for marker 1, etc., up to marker 31.
-- @param buffer A buffer.
-- @param line The start line to search from.
-- @param marker_mask The mask of markers to find. Set bit 0 to find marker 0,
--   bit 1 for marker 1 and so on.
-- @return number
function marker_next(buffer, line, marker_mask) end

---
-- Returns the last line number, before or on line number *line*, that has had
-- all of the markers represented by marker bit-mask *marker_mask* added to it.
-- Returns `-1` if no line was found.
-- Bit 0 is set if marker 0 is set, bit 1 for marker 1, etc., up to marker 31.
-- @param buffer A buffer.
-- @param line The start line to search from.
-- @param marker_mask The mask of markers to find. Set bit 0 to find marker 0,
--   bit 1 for marker 1 and so on.
-- @return number
function marker_previous(buffer, line, marker_mask) end

---
-- Returns the symbol assigned to marker number *marker*, in the range of `0` to
-- `31`, used in `buffer.marker_define()`,
-- `buffer.marker_define_pixmap()`, or `buffer.marker_define_rgba_image()`.
-- @param buffer A buffer.
-- @param marker The marker number in the range of `0` to `31` to get the symbol
--   of.
-- @return number
function marker_symbol_defined(buffer, marker) end

---
-- Moves the caret into view if it is not already, removing any selections.
-- @param buffer A buffer.
function move_caret_inside_view(buffer) end

---
-- Shifts the selected lines down one line.
-- @param buffer A buffer.
function move_selected_lines_down(buffer) end

---
-- Shifts the selected lines up one line.
-- @param buffer A buffer.
function move_selected_lines_up(buffer) end

---
-- Types a new line at the caret position according to [`buffer.eol_mode`]().
-- @param buffer A buffer.
function new_line(buffer) end

---
-- Moves the caret down one page.
-- @param buffer A buffer.
function page_down(buffer) end

---
-- Moves the caret down one page, extending the selected text to the new
-- position.
-- @param buffer A buffer.
function page_down_extend(buffer) end

---
-- Moves the caret down one page, extending the rectangular selection to the new
-- position.
-- @param buffer A buffer.
function page_down_rect_extend(buffer) end

---
-- Moves the caret up one page.
-- @param buffer A buffer.
function page_up(buffer) end

---
-- Moves the caret up one page, extending the selected text to the new position.
-- @param buffer A buffer.
function page_up_extend(buffer) end

---
-- Moves the caret up one page, extending the rectangular selection to the new
-- position.
-- @param buffer A buffer.
function page_up_rect_extend(buffer) end

---
-- Moves the caret down one paragraph.
-- Paragraphs are surrounded by one or more blank lines.
-- @param buffer A buffer.
function para_down(buffer) end

---
-- Moves the caret down one paragraph, extending the selected text to the new
-- position.
-- Paragraphs are surrounded by one or more blank lines.
-- @param buffer A buffer.
function para_down_extend(buffer) end

---
-- Moves the caret up one paragraph.
-- Paragraphs are surrounded by one or more blank lines.
-- @param buffer A buffer.
function para_up(buffer) end

---
-- Moves the caret up one paragraph, extending the selected text to the new
-- position.
-- Paragraphs are surrounded by one or more blank lines.
-- @param buffer A buffer.
function para_up_extend(buffer) end

---
-- Pastes the clipboard's contents into the buffer, replacing any selected text
-- according to `buffer.multi_paste`.
-- @param buffer A buffer.
function paste(buffer) end

---
-- Returns the position of the character after position *pos* (taking multi-byte
-- characters into account), or `buffer.length` if there is no character after
-- *pos*.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to get the position after from.
function position_after(buffer, pos) end

---
-- Returns the position of the character before position *pos* (taking
-- multi-byte characters into account), or `0` if there is no character before
-- *pos*.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to get the position before from.
-- @return number
function position_before(buffer, pos) end

---
-- Returns the position at the beginning of line number *line*.
-- Returns `-1` if *line* is greater than `buffer.line_count`.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to get the beginning position for.
-- @return number
function position_from_line(buffer, line) end

---
-- Returns the position *n* characters before or after position *pos* (taking
-- multi-byte characters into account).
-- Returns `0` if the position is less than 0 or `buffer.length` if the position
-- is greater than `buffer.length`.
-- @param buffer A buffer.
-- @param pos The position in *buffer* to get the relative position from.
-- @param n The relative number of characters to get the position for. A
--   negative number indicates a position before while a positive number
--   indicates a position after.
-- @return number
function position_relative(buffer, pos, n) end

---
-- Redoes the next undone action.
-- @param buffer A buffer.
function redo(buffer) end

---
-- Registers XPM image *xpm_data* to type number *type* for use in
-- autocompletion and user lists.
-- @param buffer A buffer.
-- @param type Integer type to register the image with.
-- @param xpm_data The XPM data as described in `buffer.marker_define_pixmap()`.
function register_image(buffer, type, xpm_data) end

---
-- Registers RGBA image *pixels* to type number *type* for use in autocompletion
-- and user lists.
-- The dimensions for *pixels* (`buffer.rgba_image_width` and
-- `buffer.rgba_image_height`) must have already been defined. *pixels* is a
-- sequence of 4 byte pixel values (red, blue, green, and alpha) defining the
-- image line by line starting at the top-left pixel.
-- @param buffer A buffer.
-- @param type Integer type to register the image with.
-- @param pixels The RGBA data as described in
--   `buffer.marker_define_rgba_image()`.
function register_rgba_image(buffer, type, pixels) end

---
-- Replaces the selected text with string *text*, scrolling the caret into view.
-- @param buffer A buffer.
-- @param text The text to replace the selected text with.
function replace_sel(buffer, text) end

---
-- Replaces the text in the target range with string *text* sans modifying any
-- selections or scrolling the view.
-- Setting the target and calling this function with an empty string is another
-- way to delete text.
-- @param buffer A buffer.
-- @param text The text to replace the target range with.
-- @return number
function replace_target(buffer, text) end

---
-- Replaces the text in the target range with string *text* but first replaces
-- any "\d" sequences with the text of capture number *d* from the regular
-- expression (or the entire match for *d* = 0), and then returns the
-- replacement text's length.
-- @param buffer A buffer.
-- @param text The text to replace the target range with.
-- @return number
function replace_target_re(buffer, text) end

---
-- Designates the next additional selection to be the main selection.
-- @param buffer A buffer.
function rotate_selection(buffer) end

---
-- Scrolls the caret into view based on the policies previously defined in
-- `buffer.set_x_caret_policy()` and `buffer.set_y_caret_policy()`.
-- @param buffer A buffer.
-- @see set_x_caret_policy
-- @see set_y_caret_policy
function scroll_caret(buffer) end

---
-- Scrolls into view the range of text between positions *primary_pos* and
-- *secondary_pos*, with priority given to *primary_pos*.
-- Similar to `buffer.scroll_caret()`, but with *primary_pos* instead of
-- `buffer.current_pos`.
-- This is useful for scrolling search results into view.
-- @param buffer A buffer.
-- @param secondary_pos The secondary range position to scroll into view.
-- @param primary_pos The primary range position to scroll into view.
function scroll_range(buffer, secondary_pos, primary_pos) end

---
-- Scrolls to the end of the buffer without moving the caret.
-- @param buffer A buffer.
function scroll_to_end(buffer) end

---
-- Scrolls to the beginning of the buffer without moving the caret.
-- @param buffer A buffer.
function scroll_to_start(buffer) end

---
-- Anchors the position that `buffer.search_next()` and `buffer.search_prev()`
-- start at to the beginning of the current selection or caret position.
-- @param buffer A buffer.
function search_anchor(buffer) end

---
-- Searches for the first occurrence of string *text* in the target range
-- bounded by `buffer.target_start` and `buffer.target_end` using search flags
-- `buffer.search_flags` and, if found, sets the new target range to that
-- occurrence, returning its position or `-1` if *text* was not found.
-- @param buffer A buffer.
-- @param text The text to search the target range for.
-- @return number
-- @see search_flags
function search_in_target(buffer, text) end

---
-- Searches for and selects the first occurrence of string *text* starting at
-- the search anchor using search flags *flags*, returning that occurrence's
-- position or `-1` if *text* was not found.
-- Selected text is not scrolled into view.
-- @param buffer A buffer.
-- @param flags The search flags to use. See `buffer.search_flags`.
-- @param text The text to search for.
-- @return number
-- @see search_flags
function search_next(buffer, flags, text) end

---
-- Searches for and selects the last occurrence of string *text* before the
-- search anchor using search flags *flags*, returning that occurrence's
-- position or `-1` if *text* was not found.
-- @param buffer A buffer.
-- @param flags The search flags to use. See `buffer.search_flags`.
-- @param text The text to search for.
-- @return number
-- @see search_flags
function search_prev(buffer, flags, text) end

---
-- Selects all of the buffer's text without scrolling the view.
-- @param buffer A buffer.
function select_all(buffer) end

---
-- Duplicates the selected text to its right.
-- If no text is selected, duplicates the current line on a new line below.
-- @param buffer A buffer.
function selection_duplicate(buffer) end

---
-- Resets `buffer.word_chars`, `buffer.whitespace_chars`, and
-- `buffer.punctuation_chars` to their respective defaults.
-- @param buffer A buffer.
-- @see word_chars
-- @see whitespace_chars
-- @see punctuation_chars
function set_chars_default(buffer) end

---
-- Moves the caret to position *pos* without scrolling the view and removes any
-- selections.
-- @param buffer A buffer
-- @param pos The position in *buffer* to move to.
function set_empty_selection(buffer, pos) end

---
-- Overrides the fold margin's default color with color *color*, in "0xBBGGRR"
-- format,
-- if *use_setting* is `true`.
-- @param buffer A buffer.
-- @param use_setting Whether or not to use *color*.
-- @param color The color in "0xBBGGRR" format.
function set_fold_margin_colour(buffer, use_setting, color) end

---
-- Overrides the fold margin's default highlight color with color *color*, in
-- "0xBBGGRR" format, if *use_setting* is `true`.
-- @param buffer A buffer.
-- @param use_setting Whether or not to use *color*.
-- @param color The color in "0xBBGGRR" format.
function set_fold_margin_hi_colour(buffer, use_setting, color) end

---
-- Indicates the buffer has no unsaved changes.
-- @param buffer A buffer.
function set_save_point(buffer) end

---
-- Selects the range of text between positions *start_pos* and *end_pos*,
-- scrolling the selected text into view.
-- @param buffer A buffer.
-- @param start_pos The start position of the range of text in *buffer* to
--   select. If negative, it means the end of the buffer.
-- @param end_pos The end position of the range of text in *buffer* to select.
--   If negative, it means remove any selection (i.e. set the `anchor` to the
--   same position as `current_pos`).
function set_sel(buffer, start_pos, end_pos) end

---
-- Overrides the selection's default background color with color *color*, in
-- "0xBBGGRR" format, if *use_setting* is `true`.
-- Overwrites any existing `buffer.additional_sel_back` color.
-- @param buffer A buffer.
-- @param use_setting Whether or not to use *color*.
-- @param color The color in "0xBBGGRR" format.
function set_sel_back(buffer, use_setting, color) end

---
-- Overrides the selection's default foreground color with color *color*, in
-- "0xBBGGRR" format, if *use_setting* is `true`.
-- Overwrites any existing `buffer.additional_sel_fore` color.
-- @param buffer A buffer.
-- @param use_setting Whether or not to use *color*.
-- @param color The color in "0xBBGGRR" format.
function set_sel_fore(buffer, use_setting, color) end

---
-- Selects the range of text between positions *start_pos* to *end_pos*,
-- removing all other selections.
-- @param buffer A buffer.
-- @param end_pos The caret position of the range of text to select in *buffer*.
-- @param start_pos The anchor position of the range of text to select in
--   *buffer*.
function set_selection(buffer, end_pos, start_pos) end

---
-- Assigns style number *style*, in the range from `0` to `255`, to the next
-- *length* characters, starting from the current styling position, and
-- increments the styling position by *length*.
-- @param buffer A buffer.
-- @param length The number of characters to style.
-- @param style The style number to set.
function set_styling(buffer, length, style) end

---
-- Defines the target range's beginning and end positions as *start_pos* and 
-- *end_pos*, respectively.
-- @param buffer A buffer.
-- @param start_pos The position of the beginning of the target range.
-- @param end_pos The position of the end of the target range.
function set_target_range(buffer, start_pos, end_pos) end

---
-- Replaces the buffer's text with string *text*.
-- @param buffer A buffer.
-- @param text The text to set.
function set_text(buffer, text) end

---
-- Defines scrolling policy bit-mask *policy* as the policy for keeping the
-- caret *y* number of lines away from the vertical margins as
-- `buffer.ensure_visible_enforce_policy()` redisplays hidden or folded lines.
-- It is similar in operation to `buffer.set_y_caret_policy()`.
-- @param buffer A buffer.
-- @param policy The combination of `buffer.VISIBLE_SLOP` and
--   `buffer.VISIBLE_STRICT` policy flags to set.
-- @param y The number of lines from the vertical margins to keep the caret.
function set_visible_policy(buffer, policy, y) end

---
-- Overrides the background color of whitespace with color *color*, in
-- "0xBBGGRR" format, if *use_setting* is `true`.
-- @param buffer A buffer.
-- @param use_setting Whether or not to use *color*.
-- @param color The color in "0xBBGGRR" format.
function set_whitespace_back(buffer, use_setting, color) end

---
-- Overrides the foreground color of whitespace with color *color*, in
-- "0xBBGGRR" format, if *use_setting* is `true`.
-- @param use_setting Whether or not to use *color*.
-- @param color The color in "0xBBGGRR" format.
function set_whitespace_fore(buffer, use_setting, color) end

---
-- Defines scrolling policy bit-mask *policy* as the policy for keeping the
-- caret *x* number of pixels away from the horizontal margins.
-- @param buffer A buffer.
-- @param policy The combination of `buffer.CARET_SLOP`, `buffer.CARET_STRICT`,
--   `buffer.CARET_EVEN`, and `buffer.CARET_JUMPS` policy flags to set.
-- @param x The number of pixels from the horizontal margins to keep the caret.
function set_x_caret_policy(buffer, policy, x) end

---
-- Defines scrolling policy bit-mask *policy* as the policy for keeping the
-- caret *y* number of lines away from the vertical margins.
-- @param buffer A buffer.
-- @param policy The combination of `buffer.CARET_SLOP`, `buffer.CARET_STRICT`,
--   `buffer.CARET_EVEN`, and `buffer.CARET_JUMPS` policy flags to set.
-- @param y The number of lines from the vertical margins to keep the caret.
function set_y_caret_policy(buffer, policy, y) end

---
-- Shows the range of lines between line numbers *start_line* to *end_line*.
-- This has no effect on fold levels or fold flags and the first line cannot be
-- hidden.
-- @param buffer A buffer.
-- @param start_line The start line of the range of lines in *buffer* to show.
-- @param end_line The end line of the range of lines in *buffer* to show.
function show_lines(buffer, start_line, end_line) end

---
-- Begins styling at position *position* with styling bit-mask *style_mask*.
-- *style_mask* specifies which style bits can be set with
-- `buffer.set_styling()`.
-- @param buffer A buffer.
-- @param position The position in *buffer* to start styling at.
-- @param style_mask The bit mask of style bits that can be set when styling.
-- @usage buffer:start_styling(0, 0xFF)
-- @see set_styling
function start_styling(buffer, position, style_mask) end

---
-- Moves the caret to the bottom of the page or, if already there, down one
-- page.
-- @param buffer A buffer.
function stuttered_page_down(buffer) end

---
-- Like `buffer.stuttered_page_down()`, but extends the selected text to the new
-- position.
-- @param buffer A buffer.
function stuttered_page_down_extend(buffer) end

---
-- Moves the caret to the top of the page or, if already there, up one page.
-- @param buffer A buffer.
function stuttered_page_up(buffer) end

---
-- Like `buffer.stuttered_page_up()`, but extends the selected text to the new
-- position.
-- @param buffer A buffer.
function stuttered_page_up_extend(buffer) end

---
-- Reverts all styles to having the same properties as `buffer.STYLE_DEFAULT`.
-- @param buffer A buffer.
function style_clear_all(buffer) end

---
-- Resets `buffer.STYLE_DEFAULT` to its initial state.
-- @param buffer A buffer.
function style_reset_default(buffer) end

---
-- Swaps the main selection's beginning and end positions.
-- @param buffer A buffer.
function swap_main_anchor_caret(buffer) end

---
-- Indents the text on the selected lines or types a Tab character ("\t") at
-- the caret position.
-- @param buffer A buffer.
function tab(buffer) end

---
-- Defines the target range's beginning and end positions as the beginning and
-- end positions of the main selection, respectively.
-- @param buffer A buffer.
function target_from_selection(buffer) end

---
-- Returns the pixel height of line number *line*.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to get the pixel height of.
-- @return number
function text_height(buffer, line) end

---
-- Returns the pixel width string *text* would have when styled with style
-- number *style_num*, in the range of `0` to `255`.
-- @param buffer A buffer.
-- @param style_num The style number between `0` and `255` to use.
-- @param text The text to measure the width of.
-- @return number
function text_width(buffer, style_num, text) end

---
-- Cycles between `buffer.caret_sticky` option settings `buffer.CARETSTICKY_ON`
-- and `buffer.CARETSTICKY_OFF`.
-- @param buffer A buffer.
-- @see caret_sticky
function toggle_caret_sticky(buffer) end

---
-- Toggles the fold point on line number *line* between expanded (where all of
-- its child lines are displayed) and contracted (where all of its child lines
-- are hidden).
-- @param buffer A buffer.
-- @param line The line number in *buffer* to toggle the fold on.
function toggle_fold(buffer, line) end

---
-- Undoes the most recent action.
-- @param buffer A buffer.
function undo(buffer) end

---
-- Converts the selected text to upper case letters.
-- @param buffer A buffer.
function upper_case(buffer) end

---
-- Displays a user list identified by list identifier number *id* and
-- constructed from string *items* (whose items are delimited by
-- `buffer.auto_c_separator` characters).
-- The sorted order of *items* (`buffer.auto_c_order`) must have already been
-- defined. When the user selects an item, *id* is sent in a
-- `USER_LIST_SELECTION` event along with the selection.
-- @param buffer A buffer.
-- @param id The list identifier number greater than zero to use.
-- @param items The sorted string of words to show, separated by
--   `buffer.auto_c_separator` characters (initially spaces).
-- @see _SCINTILLA.next_user_list_type
function user_list_show(buffer, id, items) end

---
-- Moves the caret to the first visible character on the current line or, if
-- already there, to the beginning of the current line.
-- @param buffer A buffer.
function vc_home(buffer) end

---
-- Moves the caret to the first visible character on the current wrapped line,
-- or if already there, to the beginning of the current wrapped line.
-- @param buffer A buffer.
function vc_home_display(buffer) end

---
-- Like `buffer.vc_home_display()`, but extends the selected text to the new
-- position.
-- @param buffer A buffer.
function vc_home_display_extend(buffer) end

---
-- Like `buffer.vc_home()`, but extends the selected text to the new position.
-- @param buffer A buffer.
function vc_home_extend(buffer) end

---
-- Like `buffer.vc_home()`, but extends the rectangular selection to the new
-- position.
-- @param buffer A buffer.
function vc_home_rect_extend(buffer) end

---
-- Moves the caret to the first visible character on the current wrapped line,
-- or if already there, to the beginning of the actual line.
-- @param buffer A buffer.
function vc_home_wrap(buffer) end

---
-- Like `buffer.vc_home_wrap()`, but extends the selected text to the new
-- position.
-- @param buffer A buffer.
function vc_home_wrap_extend(buffer) end

---
-- Centers current line in the view.
-- @param buffer A buffer.
function vertical_centre_caret(buffer) end

---
-- Returns the displayed line number of actual line number *line*, taking hidden
-- lines into account, or `-1` if *line* is outside the range of lines in the
-- buffer.
-- Lines can occupy more than one display line if they wrap.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to use.
-- @return number
function visible_from_doc_line(buffer, line) end

---
-- Returns the position of the end of the word at position *pos*.
-- `buffer.word_chars` contains the set of characters that constitute words. If
-- *pos* has a non-word character to its right and *only_word_chars* is `false`,
-- returns the first word character's position.
-- @param buffer A buffer.
-- @param pos The position in *buffer* of the word.
-- @param only_word_chars If `true`, stops searching at the first non-word
--   character in the search direction. Otherwise, the first character in the
--   search direction sets the type of the search as word or non-word and the
--   search stops at the first non-matching character. Searches are also
--   terminated by the start or end of the buffer.
function word_end_position(buffer, pos, only_word_chars) end

---
-- Moves the caret left one word.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_left(buffer) end

---
-- Moves the caret left one word, positioning it at the end of the previous
-- word.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_left_end(buffer) end

---
-- Like `buffer.word_left_end()`, but extends the selected text to the new
-- position.
-- @param buffer A buffer.
function word_left_end_extend(buffer) end

---
-- Moves the caret left one word, extending the selected text to the new
-- position.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_left_extend(buffer) end

---
-- Moves the caret to the previous part of the current word.
-- Word parts are delimited by underscore characters or changes in
-- capitalization.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_part_left(buffer) end

---
-- Moves the caret to the previous part of the current word, extending the
-- selected text to the new position.
-- Word parts are delimited by underscore characters or changes in
-- capitalization.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_part_left_extend(buffer) end

---
-- Moves the caret to the next part of the current word.
-- Word parts are delimited by underscore characters or changes in
-- capitalization.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_part_right(buffer) end

---
-- Moves the caret to the next part of the current word, extending the selected
-- text to the new position.
-- Word parts are delimited by underscore characters or changes in
-- capitalization.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_part_right_extend(buffer) end

---
-- Moves the caret right one word.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_right(buffer) end

---
-- Moves the caret right one word, positioning it at the end of the current
-- word.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_right_end(buffer) end

---
-- Like `buffer.word_right_end()`, but extends the selected text to the new
-- position.
-- @param buffer A buffer.
function word_right_end_extend(buffer) end

---
-- Moves the caret right one word, extending the selected text to the new
-- position.
-- `buffer.word_chars` contains the set of characters that constitute words.
-- @param buffer A buffer.
function word_right_extend(buffer) end

---
-- Returns the position of the beginning of the word at position *pos*.
-- `buffer.word_chars` contains the set of characters that constitute words. If
-- *pos* has a non-word character to its left and *only_word_chars* is `false`,
-- returns the last word character's position.
-- @param buffer A buffer.
-- @param pos The position in *buffer* of the word.
-- @param only_word_chars If `true`, stops searching at the first non-word
--   character in the search direction. Otherwise, the first character in the
--   search direction sets the type of the search as word or non-word and the
--   search stops at the first non-matching character. Searches are also
--   terminated by the start or end of the buffer.
function word_start_position(buffer, pos, only_word_chars) end

---
-- Returns the number of wrapped lines needed to fully display line number
-- *line*.
-- @param buffer A buffer.
-- @param line The line number in *buffer* to use.
-- @return number
function wrap_count(buffer, line) end

---
-- Increases the size of all fonts by one point, up to 20.
-- @param buffer A buffer.
function zoom_in(buffer) end

---
-- Decreases the size of all fonts by one point, down to -10.
-- @param buffer A buffer.
function zoom_out(buffer) end

-- External functions.

---
-- Deletes the buffer.
-- **Do not call this function.** Call `io.close_buffer()` instead. Emits a
-- `BUFFER_DELETED` event.
-- @param buffer A buffer.
-- @see events.BUFFER_DELETED
function delete(buffer) end

---
-- Creates and returns a new buffer.
-- Emits a `BUFFER_NEW` event.
-- @return the new buffer.
-- @class function
-- @see events.BUFFER_NEW
function new() end

---
-- Returns the range of text between positions *start_pos* and *end_pos*.
-- @param buffer A buffer.
-- @param start_pos The start position of the range of text to get in *buffer*.
-- @param end_pos The end position of the range of text to get in *buffer*.
function text_range(buffer, start_pos, end_pos) end

---
-- Converts the current buffer's contents to encoding *encoding*.
-- @param buffer A buffer.
-- @param encoding The string encoding to set. Valid encodings are ones that GNU
--   iconv accepts.
-- @usage buffer:set_encoding('ASCII')
function set_encoding(buffer, encoding) end

---
-- Returns the buffer's lexer name.
-- If *current* is `true`, returns the name of the lexer under the caret in
-- a multiple-language lexer.
-- @param buffer A buffer.
-- @param current Whether or not to get the lexer at the current caret position
--   in multi-language lexers. The default is `false` and returns the parent
--   lexer.
function get_lexer(buffer, current) end

---
-- Associates lexer name *lexer* or the auto-detected lexer name with the buffer
-- and then loads the appropriate language module if that module exists.
-- @param buffer A buffer.
-- @param lexer Optional string lexer name to set. If `nil`, attempts to
--   auto-detect the buffer's lexer.
-- @usage buffer:set_lexer('lexer_name')
function set_lexer(buffer, lexer) end

-- Unused Fields.
--   * annotation_style_offset
--   * annotation_styles
--   * automatic_fold
--   * call_tip_back
--   * call_tip_fore
--   * character_pointer
--   * code_page
--   * control_char_symbol
--   * direct_function
--   * direct_pointer
--   * distance_to_secondary_styles
--   * doc_pointer
--   * focus
--   * font_quality
--   * gap_position
--   * hotspot_active_underline
--   * hotspot_single_line
--   * identifier
--   * identifiers
--   * ime_interaction
--   * indic_flags
--   * indicator_value
--   * keys_unicode
--   * key_words
--   * layout_cache
--   * lexer
--   * lexer_language
--   * line_end_types_active
--   * line_end_types_allowed
--   * line_end_types_supported
--   * line_state
--   * margin_style_offset
--   * margin_styles
--   * max_line_state
--   * mod_event_mask
--   * modify
--   * mouse_down_captures
--   * paste_convert_endings
--   * phases_draw
--   * position_cache
--   * primary_style_from_style
--   * print_colour_mode
--   * print_magnification
--   * print_wrap_mode
--   * status
--   * style_bits
--   * style_bits_needed
--   * style_character_set
--   * style_from_sub_style
--   * style_hotspot
--   * style_size_fractional
--   * style_weight
--   * sub_style_bases
--   * sub_styles_length
--   * sub_styles_start
--   * technology
--   * two_phase_draw
--   * undo_collection
--   * use_palette
--   * INDIC_CONTAINER
--   * MOD_NORM
--   * CP_UTF8
--   * LASTSTEPINUNDOREDO
--   * MAX_MARGIN
--   * MODEVENTMASKALL
--   * MOD_BEFOREDELETE
--   * MOD_BEFOREINSERT
--   * MOD_CHANGEANNOTATION
--   * MOD_CHANGEFOLD
--   * MOD_CHANGEINDICATOR
--   * MOD_CHANGELINESTATE
--   * MOD_CHANGEMARGIN
--   * MOD_CHANGEMARKER
--   * MOD_CHANGESTYLE
--   * MOD_CONTAINER
--   * MOD_DELETETEXT
--   * MOD_INSERTCHECK
--   * MOD_INSERTTEXT
--   * MOD_LEXERSTATE
--   * MULTILINEUNDOREDO
--   * MULTISTEPUNDOREDO
--   * PERFORMED_REDO
--   * PERFORMED_UNDO
--   * PERFORMED_USER
--   * STARTACTION
--   * STYLE_LASTPREDEFINED

-- Unused Functions.
--   * add_ref_document
--   * add_styled_text
--   * add_tab_stop
--   * add_undo_action
--   * allocate
--   * allocate_extended_styles
--   * allocate_sub_styles
--   * assign_cmd_key
--   * can_paste
--   * change_insertion
--   * change_lexer_state
--   * char_position_from_point
--   * char_position_from_point_close
--   * clear_cmd_key
--   * clear_all_cmd_keys
--   * clear_tab_stops
--   * create_document
--   * create_loader
--   * describe_key_word_sets
--   * describe_property
--   * encoded_from_utf8
--   * expand_children
--   * find_indicator_flash
--   * find_indicator_hide
--   * find_indicator_show
--   * find_text
--   * form_feed
--   * format_range
--   * free_sub_styles
--   * get_hotspot_active_back
--   * get_hotspot_active_fore
--   * get_next_tab_stop
--   * get_range_pointer
--   * get_styled_text
--   * grab_focus
--   * hide_selection
--   * indicator_value_at
--   * load_lexer_library
--   * null
--   * point_x_from_position
--   * point_y_from_position
--   * position_from_point
--   * position_from_point_close
--   * private_lexer_call
--   * property_names
--   * property_type
--   * release_all_extended_styles
--   * release_document
--   * set_hotspot_active_back
--   * set_hotspot_active_fore
--   * set_length_for_encode
--   * set_styling_ex
--   * start_record
--   * stop_record
--   * target_as_utf8
--   * use_pop_up
