Update Scintilla keywords and highlighting when changing document tabs
This commit is contained in:
parent
bb745e8f3b
commit
1a14e4869f
@ -632,6 +632,7 @@ void on_notebook1_switch_page_after(GtkNotebook *notebook, GtkNotebookPage *page
|
|||||||
ui_document_show_hide(doc); /* update the document menu */
|
ui_document_show_hide(doc); /* update the document menu */
|
||||||
build_menu_update(doc);
|
build_menu_update(doc);
|
||||||
sidebar_update_tag_list(doc, FALSE);
|
sidebar_update_tag_list(doc, FALSE);
|
||||||
|
document_update_highlighting(doc);
|
||||||
|
|
||||||
/* We delay the check to avoid weird fast, unintended switching of notebook pages when
|
/* We delay the check to avoid weird fast, unintended switching of notebook pages when
|
||||||
* the 'file has changed' dialog is shown while the switch event is not yet completely
|
* the 'file has changed' dialog is shown while the switch event is not yet completely
|
||||||
|
@ -2448,6 +2448,39 @@ static gboolean update_type_keywords(GeanyDocument *doc, gint lang)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Updates the keywords in a document and re-colourizes it.
|
||||||
|
*
|
||||||
|
* @param doc The document
|
||||||
|
*/
|
||||||
|
void document_update_highlighting(GeanyDocument *doc)
|
||||||
|
{
|
||||||
|
const GString *s = NULL;
|
||||||
|
ScintillaObject *sci;
|
||||||
|
gint keyword_idx;
|
||||||
|
|
||||||
|
g_return_if_fail(DOC_VALID(doc));
|
||||||
|
g_return_if_fail(IS_SCINTILLA(doc->editor->sci));
|
||||||
|
|
||||||
|
sci = doc->editor->sci;
|
||||||
|
|
||||||
|
/* get possibly cached list of keywords for the current language.
|
||||||
|
* we don't care whether the cached keywords have changed. */
|
||||||
|
get_project_typenames(&s, doc->file_type->lang);
|
||||||
|
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
keyword_idx = editor_lexer_get_type_keyword_idx(sci_get_lexer(sci));
|
||||||
|
|
||||||
|
if (keyword_idx > 0)
|
||||||
|
{
|
||||||
|
sci_set_keywords(sci, keyword_idx, s->str);
|
||||||
|
queue_colourise(doc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void document_load_config(GeanyDocument *doc, GeanyFiletype *type,
|
static void document_load_config(GeanyDocument *doc, GeanyFiletype *type,
|
||||||
gboolean filetype_changed)
|
gboolean filetype_changed)
|
||||||
{
|
{
|
||||||
|
@ -235,6 +235,8 @@ void document_update_tag_list(GeanyDocument *doc, gboolean update);
|
|||||||
|
|
||||||
void document_update_tag_list_in_idle(GeanyDocument *doc);
|
void document_update_tag_list_in_idle(GeanyDocument *doc);
|
||||||
|
|
||||||
|
void document_update_highlighting(GeanyDocument *doc);
|
||||||
|
|
||||||
void document_set_encoding(GeanyDocument *doc, const gchar *new_encoding);
|
void document_set_encoding(GeanyDocument *doc, const gchar *new_encoding);
|
||||||
|
|
||||||
gboolean document_check_disk_status(GeanyDocument *doc, gboolean force);
|
gboolean document_check_disk_status(GeanyDocument *doc, gboolean force);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user