58 const gchar *sub_msg =
"unknown";
62 sub_msg =
"generic failure";
65 sub_msg =
"memory is exhausted";
68 sub_msg =
"regular expression is invalid";
72 sub_msg =
"unknown warning";
74 sub_msg =
"unknown failure";
77#define SCI_STATUS_FORMAT_STRING "%s:%u: scintilla has non-zero status " \
78 "code '%d' after sending message '%u' to instance '%p' with " \
79 "wParam='%lu' and lParam='%ld': %s"
83 (gpointer)
sci, wparam, lparam, sub_msg);
88 (gpointer)
sci, wparam, lparam, sub_msg);
106 g_snprintf(tmp_str, 15,
"_%d", len);
157 static struct height_spec cache = {0};
158 static gint cache_value = 0;
159 struct height_spec current;
166 if (g_strcmp0(current.font, cache.font) == 0 &&
167 current.size == cache.size &&
168 current.zoom == cache.zoom &&
169 current.extra == cache.extra)
171 g_free(current.font);
190 width = line_height * ratio;
192 width = width - (width % 2);
194 if (width < threshold)
195 width = MIN(threshold, line_height);
416 return (state & (1 << marker));
439 if (wrap && marker_line == -1)
453 if (wrap && marker_line == -1)
679 if (old != (gint)lexer_id)
699 gint size = (gint) SSM(
sci, msg, wParam, 0);
700 gchar *str = g_malloc(size + 1);
750 text = g_malloc(buffer_len);
1059 g_return_if_fail(cp == 0 || cp ==
SC_CP_UTF8);
1108 g_return_val_if_fail(start < end,
NULL);
1110 text = g_malloc((gsize) (end - start) + 1);
1182 SSM(
sci, cmd, 0, 0);
1212 return line_end - line_start + 1;
sptr_t scintilla_send_message(ScintillaObject *sci, unsigned int iMessage, uptr_t wParam, sptr_t lParam)
#define SCI_SETSELECTIONSTART
#define SCI_SETINDENTATIONGUIDES
#define SCI_POSITIONFROMLINE
#define SCI_REPLACETARGETRE
#define SCI_GETLINEVISIBLE
#define SCI_GETEXTRAASCENT
#define SCI_SETUNDOCOLLECTION
#define SCWS_VISIBLEALWAYS
#define SCI_GETEXTRADESCENT
#define SC_FONT_SIZE_MULTIPLIER
#define SCI_GETLINESELENDPOSITION
#define SCI_SETTABINDENTS
#define SCI_WORDENDPOSITION
#define SCI_SETENDATLASTLINE
#define SCI_SETEDGECOLUMN
#define SCI_MARKERPREVIOUS
#define SCI_GETSELECTIONMODE
#define SCI_BEGINUNDOACTION
#define SCI_INDICATORFILLRANGE
#define SCI_GETSELECTIONSTART
#define SC_STATUS_BADALLOC
#define SC_STATUS_WARN_START
#define SCI_GETCURRENTPOS
#define SCI_LINEFROMPOSITION
#define SCI_GETFIRSTVISIBLELINE
#define SCI_SETYCARETPOLICY
#define SCI_EMPTYUNDOBUFFER
#define SCI_SETLINEINDENTATION
#define SCI_SETMARGINSENSITIVEN
#define SCI_AUTOCSETMAXHEIGHT
#define SCI_GETFOLDPARENT
#define SCI_SETCURRENTPOS
#define SCI_SETEDGECOLOUR
#define SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE
#define SCI_SELECTIONDUPLICATE
#define SCI_POSITIONAFTER
#define SCI_ENDUNDOACTION
#define SCI_REPLACETARGET
#define SCI_GETSELECTIONEND
#define SCI_ENSUREVISIBLE
#define SCI_GETSELECTIONNCARETVIRTUALSPACE
#define SCI_POSITIONFROMPOINT
#define SCI_SETSELECTIONMODE
#define SCI_MARKERDELETEALL
#define SCI_GETLINESELSTARTPOSITION
#define SCI_GETLINEINDENTPOSITION
#define SCI_WORDSTARTPOSITION
#define SCI_SETMARGINWIDTHN
#define SCI_INDICATORCLEARRANGE
#define SCI_SETVSCROLLBAR
#define SCI_POSITIONFROMPOINTCLOSE
#define SCI_SETSELECTIONEND
#define SC_STATUS_WARN_REGEX
#define SCI_STYLESETSIZEFRACTIONAL
#define SCI_MOVESELECTEDLINESDOWN
#define SCI_GETLINEINDENTATION
#define SC_STATUS_FAILURE
#define SCI_SETHSCROLLBAR
#define SCI_GETMAINSELECTION
#define SCI_GETLINEENDPOSITION
#define SCI_GETFOLDEXPANDED
#define SCI_LINEDUPLICATE
#define SCI_CLEARDOCUMENTSTYLE
#define SCI_MOVESELECTEDLINESUP
#define SCI_STYLEGETSIZEFRACTIONAL
#define SCI_SETTARGETSTART
#define SCI_SETINDICATORCURRENT
#define SCI_SETXCARETPOLICY
void sci_set_savepoint(ScintillaObject *sci)
void sci_scroll_columns(ScintillaObject *sci, gint columns)
void sci_set_selection_mode(ScintillaObject *sci, gint mode)
Sets selection mode.
void sci_indicator_fill(ScintillaObject *sci, gint pos, gint len)
void sci_set_font_fractional(ScintillaObject *sci, gint style, const gchar *font, gdouble size)
void sci_set_keywords(ScintillaObject *sci, guint k, const gchar *text)
void sci_undo(ScintillaObject *sci)
gint sci_get_col_from_position(ScintillaObject *sci, gint position)
Gets the column number relative to the start of the line that position is on.
void sci_set_current_line(ScintillaObject *sci, gint line)
gint sci_get_selected_text_length(ScintillaObject *sci)
Gets selected text length.
gint sci_get_eol_mode(ScintillaObject *sci)
void sci_set_lexer(ScintillaObject *sci, guint lexer_id)
gchar * sci_get_line(ScintillaObject *sci, gint line_num)
Gets line contents.
void sci_set_symbol_margin(ScintillaObject *sci, gboolean set)
static gint sci_text_height_cached(ScintillaObject *sci)
void sci_toggle_marker_at_line(ScintillaObject *sci, gint line, gint marker)
void sci_colourise(ScintillaObject *sci, gint start, gint end)
void sci_assign_cmdkey(ScintillaObject *sci, gint key, gint command)
gint sci_get_line_count(ScintillaObject *sci)
Gets the total number of lines.
void sci_set_marker_at_line(ScintillaObject *sci, gint line_number, gint marker)
Sets a line marker.
gint sci_marker_next(ScintillaObject *sci, gint line, gint marker_mask, gboolean wrap)
gint sci_replace_target(ScintillaObject *sci, const gchar *text, gboolean regex)
gboolean sci_is_modified(ScintillaObject *sci)
void sci_set_visible_eols(ScintillaObject *sci, gboolean set)
gboolean sci_is_marker_set_at_line(ScintillaObject *sci, gint line, gint marker)
Checks if a line has a marker set.
void sci_set_autoc_max_height(ScintillaObject *sci, gint val)
void sci_set_tab_indents(ScintillaObject *sci, gboolean set)
gint sci_word_start_position(ScintillaObject *sci, gint position, gboolean onlyWordCharacters)
gint sci_text_width(ScintillaObject *sci, gint styleNumber, const gchar *text)
gint sci_get_style_at(ScintillaObject *sci, gint position)
Gets style ID at position.
void sci_move_selected_lines_down(ScintillaObject *sci)
void sci_set_tab_width(ScintillaObject *sci, gint width)
void sci_select_all(ScintillaObject *sci)
void sci_use_popup(ScintillaObject *sci, gboolean enable)
void sci_set_folding_margin_visible(ScintillaObject *sci, gboolean set)
void sci_get_text(ScintillaObject *sci, gint len, gchar *text)
Gets all text.
gint sci_word_end_position(ScintillaObject *sci, gint position, gboolean onlyWordCharacters)
void sci_set_target_start(ScintillaObject *sci, gint start)
gboolean sci_get_line_is_visible(ScintillaObject *sci, gint line)
Checks if a line is visible (folding may have hidden it).
void sci_goto_pos(ScintillaObject *sci, gint pos, gboolean unfold)
gchar * sci_get_selection_contents(ScintillaObject *sci)
Gets selected text.
void sci_zoom_out(ScintillaObject *sci)
void sci_ensure_line_is_visible(ScintillaObject *sci, gint line)
Makes line visible (folding may have hidden it).
gint sci_get_pos_at_line_sel_start(ScintillaObject *sci, gint line)
gint sci_search_next(ScintillaObject *sci, gint flags, const gchar *text)
gint sci_get_length(ScintillaObject *sci)
Gets the length of all text.
void sci_set_indentation_guides(ScintillaObject *sci, gint mode)
gint sci_get_current_position(ScintillaObject *sci)
Gets the cursor position.
void sci_set_undo_collection(ScintillaObject *sci, gboolean set)
void sci_set_eol_mode(ScintillaObject *sci, gint eolmode)
void sci_set_scrollbar_mode(ScintillaObject *sci, gboolean visible)
sptr_t sci_send_message_internal(const gchar *file, guint line, ScintillaObject *sci, guint msg, uptr_t wparam, sptr_t lparam)
void sci_set_selection_start(ScintillaObject *sci, gint position)
Sets the selection start position.
gint sci_get_selection_mode(ScintillaObject *sci)
Gets selection mode.
void sci_delete_marker_at_line(ScintillaObject *sci, gint line_number, gint marker)
Deletes a line marker.
void sci_send_command(ScintillaObject *sci, gint cmd)
Sends Scintilla commands without any parameters.
void sci_set_line_indentation(ScintillaObject *sci, gint line, gint indent)
Sets the indentation of a line.
gint sci_get_line_length(ScintillaObject *sci, gint line)
Gets line length.
gint sci_get_overtype(ScintillaObject *sci)
void sci_set_text(ScintillaObject *sci, const gchar *text)
Sets all text.
void sci_set_font(ScintillaObject *sci, gint style, const gchar *font, gint size)
Sets the font for a particular style.
void sci_paste(ScintillaObject *sci)
void sci_set_lines_wrapped(ScintillaObject *sci, gboolean set)
void sci_marker_delete_all(ScintillaObject *sci, gint marker)
static gint margin_width_from_line_height(ScintillaObject *sci, gdouble ratio, gint threshold)
void sci_indicator_clear(ScintillaObject *sci, gint pos, gint len)
Clears the currently set indicator from a range of text.
gint sci_get_fold_level(ScintillaObject *sci, gint line)
void sci_get_text_range(ScintillaObject *sci, gint start, gint end, gchar *text)
Gets text between start and end.
void sci_set_caret_policy_y(ScintillaObject *sci, gint policy, gint slop)
void sci_scroll_caret(ScintillaObject *sci)
Scrolls the cursor in view.
void sci_set_readonly(ScintillaObject *sci, gboolean readonly)
void sci_set_line_numbers(ScintillaObject *sci, gboolean set)
gint sci_get_lines_selected(ScintillaObject *sci)
void sci_set_search_anchor(ScintillaObject *sci)
gint sci_get_current_line(ScintillaObject *sci)
Gets current line number.
gint sci_get_line_indentation(ScintillaObject *sci, gint line)
Gets the indentation width of a line.
#define SCI_STATUS_FORMAT_STRING
gint sci_get_selection_end(ScintillaObject *sci)
Gets the selection end position.
void sci_set_selection(ScintillaObject *sci, gint anchorPos, gint currentPos)
void sci_cancel(ScintillaObject *sci)
void sci_set_visible_white_spaces(ScintillaObject *sci, gboolean set)
gint sci_get_pos_at_line_sel_end(ScintillaObject *sci, gint line)
gint sci_get_line_indent_position(ScintillaObject *sci, gint line)
void sci_replace_sel(ScintillaObject *sci, const gchar *text)
Replaces selection.
void sci_clear_all(ScintillaObject *sci)
gint sci_find_text(ScintillaObject *sci, gint flags, struct Sci_TextToFind *ttf)
Finds text in the document.
void sci_indicator_set(ScintillaObject *sci, gint indic)
Sets the current indicator.
gboolean sci_get_fold_expanded(ScintillaObject *sci, gint line)
gint sci_get_lexer(ScintillaObject *sci)
Gets the currently used lexer.
void sci_convert_eols(ScintillaObject *sci, gint eolmode)
void sci_set_current_position(ScintillaObject *sci, gint position, gboolean scroll_to_caret)
Sets the cursor position.
void sci_set_codepage(ScintillaObject *sci, gint cp)
gchar * sci_get_string(ScintillaObject *sci, guint msg, gulong wParam)
gint sci_get_cursor_virtual_space(ScintillaObject *sci)
void sci_cut(ScintillaObject *sci)
gboolean sci_can_redo(ScintillaObject *sci)
gint sci_get_tab_width(ScintillaObject *sci)
Gets display tab width (this is not indent width, see GeanyIndentPrefs).
gchar sci_get_char_at(ScintillaObject *sci, gint pos)
Gets a character.
void sci_lines_join(ScintillaObject *sci)
void sci_zoom_in(ScintillaObject *sci)
gint sci_get_position_from_col(ScintillaObject *sci, gint line, gint col)
gboolean sci_has_selection(ScintillaObject *sci)
Checks if there's a selection.
void sci_get_selected_text(ScintillaObject *sci, gchar *text)
Gets selected text.
void sci_move_selected_lines_up(ScintillaObject *sci)
gint sci_search_prev(ScintillaObject *sci, gint flags, const gchar *text)
void sci_set_anchor(ScintillaObject *sci, gint pos)
void sci_selection_duplicate(ScintillaObject *sci)
void sci_set_mark_long_lines(ScintillaObject *sci, gint type, gint column, const gchar *colour)
void sci_start_undo_action(ScintillaObject *sci)
Begins grouping a set of edits together as one Undo action.
void sci_insert_text(ScintillaObject *sci, gint pos, const gchar *text)
Inserts text.
void sci_end_undo_action(ScintillaObject *sci)
Ends grouping a set of edits together as one Undo action.
void sci_add_text(ScintillaObject *sci, const gchar *text)
void sci_copy(ScintillaObject *sci)
void sci_set_target_end(ScintillaObject *sci, gint end)
gint sci_marker_previous(ScintillaObject *sci, gint line, gint marker_mask, gboolean wrap)
void sci_set_use_tabs(ScintillaObject *sci, gboolean set)
void sci_clear(ScintillaObject *sci)
void sci_empty_undo_buffer(ScintillaObject *sci)
gint sci_get_line_end_position(ScintillaObject *sci, gint line)
Gets the position at the end of a line.
gchar * sci_get_contents(ScintillaObject *sci, gint buffer_len)
Allocates and fills a buffer with text from the start of the document.
gchar * sci_get_contents_range(ScintillaObject *sci, gint start, gint end)
Gets text between start and end.
gint sci_get_position_after(ScintillaObject *sci, gint start)
void sci_set_caret_policy_x(ScintillaObject *sci, gint policy, gint slop)
gint sci_get_position_from_xy(ScintillaObject *sci, gint x, gint y, gboolean nearby)
gint sci_get_selection_start(ScintillaObject *sci)
Gets the selection start position.
gint sci_get_fold_parent(ScintillaObject *sci, gint start_line)
gint sci_get_first_visible_line(ScintillaObject *sci)
void sci_clear_cmdkey(ScintillaObject *sci, gint key)
void sci_line_duplicate(ScintillaObject *sci)
gint sci_get_end_styled(ScintillaObject *sci)
gint sci_get_line_from_position(ScintillaObject *sci, gint position)
Gets the line number from position.
void sci_zoom_off(ScintillaObject *sci)
gint sci_get_position_from_line(ScintillaObject *sci, gint line)
Gets the position for the start of line.
void sci_goto_line(ScintillaObject *sci, gint line, gboolean unfold)
Jumps to the specified line in the document.
gint sci_find_matching_brace(ScintillaObject *sci, gint pos)
Finds a matching brace at pos.
void sci_toggle_fold(ScintillaObject *sci, gint line)
void sci_set_scroll_stop_at_last_line(ScintillaObject *sci, gboolean set)
void sci_redo(ScintillaObject *sci)
void sci_set_selection_end(ScintillaObject *sci, gint position)
Sets the selection end position.
gboolean sci_can_undo(ScintillaObject *sci)
Wrapper functions for the Scintilla editor widget SCI_* messages.
gint utils_parse_color_to_bgr(const gchar *spec)
General utility functions, non-GTK related.