<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF97%3AGtkSourceView</id>
		<title>LXF97:GtkSourceView - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF97%3AGtkSourceView"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;action=history"/>
		<updated>2026-05-13T13:03:31Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5653&amp;oldid=prev</id>
		<title>Crazy Rebel: оформление</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5653&amp;oldid=prev"/>
				<updated>2008-11-27T07:00:01Z</updated>
		
		<summary type="html">&lt;p&gt;оформление&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 07:00, 27 ноября 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Чтобы создать новый виджет '''GtkSourceView''', используется функция ''Gtk_source_view_new'':&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Чтобы создать новый виджет '''GtkSourceView''', используется функция ''Gtk_source_view_new'':&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkWidget *text_view = gtk_source_view_new ();&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkWidget *text_view = gtk_source_view_new ();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Классу буфера для '''GtkSourceView''', вместо '''GtkTextBuffer''', соответствует '''GtkSourceBuffer'''. Для его создания надо вызвать функцию ''gtk_source_buffer_new'':&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Классу буфера для '''GtkSourceView''', вместо '''GtkTextBuffer''', соответствует '''GtkSourceBuffer'''. Для его создания надо вызвать функцию ''gtk_source_buffer_new'':&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkSourceBuffer *text_buffer = gtk_source_buffer_new (table);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkSourceBuffer *text_buffer = gtk_source_buffer_new (table);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Для получения текста из '''GtkSourceBuffer''' и помещения его туда применяются те же функции, что и для '''GtkTextBuffer''' – ''gtk_text_buffer_get_text'' и ''gtk_text_buffer_set_text''. Передавая экземпляр '''GtkSourceBuffer''' в качестве параметра, можете приводить его к типу (макросом '''GTK_TEXT_BUFFER'''), а можете не приводить – все равно передается указатель, а компилятор может выдавать предупреждения в зависимости от своих настроек. Однако ничего дурного не случится, если вы вместо:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Для получения текста из '''GtkSourceBuffer''' и помещения его туда применяются те же функции, что и для '''GtkTextBuffer''' – ''gtk_text_buffer_get_text'' и ''gtk_text_buffer_set_text''. Передавая экземпляр '''GtkSourceBuffer''' в качестве параметра, можете приводить его к типу (макросом '''GTK_TEXT_BUFFER'''), а можете не приводить – все равно передается указатель, а компилятор может выдавать предупреждения в зависимости от своих настроек. Однако ничего дурного не случится, если вы вместо:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gchar *text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer));&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gchar *text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer));&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;напишете такое:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;напишете такое:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gchar *text = gtk_text_buffer_get_text (buffer);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gchar *text = gtk_text_buffer_get_text (buffer);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 43:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 43:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В '''GtkSourceView 1''':&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В '''GtkSourceView 1''':&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_language (buffer, language);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_language (buffer, language);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_highlight (buffer, TRUE);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_highlight (buffer, TRUE);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 50:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 50:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В '''GtkSourceView 2''':&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В '''GtkSourceView 2''':&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_language (buffer, language);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_language (buffer, language);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_highlight_syntax (buffer, TRUE);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; gtk_source_buffer_set_highlight_syntax (buffer, TRUE);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 57:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 57:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Функция ''gtk_source_buffer_set_language'' устанавливает нужную подсветку (удаляя при этом все тэги типа '''GtkSourceTag''' из таблицы тэгов переданного буфера), а ''gtk_source_buffer_set_highlight'' (либо ''gtk_source_buffer_set_highlight_syntax'') включает ее. А вот что такое переменная ''language'' в параметре первой функции? Определена она так:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Функция ''gtk_source_buffer_set_language'' устанавливает нужную подсветку (удаляя при этом все тэги типа '''GtkSourceTag''' из таблицы тэгов переданного буфера), а ''gtk_source_buffer_set_highlight'' (либо ''gtk_source_buffer_set_highlight_syntax'') включает ее. А вот что такое переменная ''language'' в параметре первой функции? Определена она так:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; GtkSourceLanguage *language = NULL;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; GtkSourceLanguage *language = NULL;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 67:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 67:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Итак, для получения механизма подсветки, соответствующего некоторому типу MIME, используется примерно следующее:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Итак, для получения механизма подсветки, соответствующего некоторому типу MIME, используется примерно следующее:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; language = gtk_source_languages_manager_get_language_from_mime_type (source_languages_manager, mime_string);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; language = gtk_source_languages_manager_get_language_from_mime_type (source_languages_manager, mime_string);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 77:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 77:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Теперь о типах MIME. Есть несколько библиотек, позволяющих работать с ними. Самый естественный способ для программы, основанной на ''Gtk'' – обратиться к библиотеке '''GnomeVFS''' ('''LXF94'''):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Теперь о типах MIME. Есть несколько библиотек, позволяющих работать с ними. Самый естественный способ для программы, основанной на ''Gtk'' – обратиться к библиотеке '''GnomeVFS''' ('''LXF94'''):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; GnomeVFSFileInfo *info = gnome_vfs_file_info_new ();&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; GnomeVFSFileInfo *info = gnome_vfs_file_info_new ();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; GnomeVFSResult r = gnome_vfs_get_file_info (filename, info, GNOME_VFS_FILE_INFO_GET_MIME_TYPE);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; GnomeVFSResult r = gnome_vfs_get_file_info (filename, info, GNOME_VFS_FILE_INFO_GET_MIME_TYPE);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 93:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 93:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сначала раздобудем список идентификаторов установленных в системе схем:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Сначала раздобудем список идентификаторов установленных в системе схем:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkSourceStyleSchemeManager *manager = gtk_source_style_scheme_manager_get_default ();&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkSourceStyleSchemeManager *manager = gtk_source_style_scheme_manager_get_default ();&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; gchar **scheme_ids;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; gchar **scheme_ids;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 108:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 108:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Далее, зная идентификаторы доступных схем, мы можем затребовать нужную схему по ее идентификатору:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Далее, зная идентификаторы доступных схем, мы можем затребовать нужную схему по ее идентификатору:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkSourceStyleScheme *scheme = gtk_source_style_scheme_manager_get_scheme (manager, cheme_id);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; GtkSourceStyleScheme *scheme = gtk_source_style_scheme_manager_get_scheme (manager, cheme_id);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Осталось лишь назначить схему буферу '''GtkSourceBuffer''':&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Осталось лишь назначить схему буферу '''GtkSourceBuffer''':&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; gtk_source_buffer_set_style_scheme (buffer, scheme);&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; gtk_source_buffer_set_style_scheme (buffer, scheme);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 128:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 128:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Проверить наличие установленной библиотеки и включить ее в параметры сборки можно разными способами.&amp;#160; Приведенный ниже код (предназначенный для размещения в '''configure.in''') проверяет, установлены ли в системы библиотеки '''GtkSourceView2''' и '''GnomeVFS 2'''. Если да, то они добавляются к параметрам сборки, а в файле '''config.h''' будет определена константа '''gtksourceview2_SUPPORTED''', проверяя которую, мы сможем узнать, есть поддержка '''GtkSourceView2''' или нет:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Проверить наличие установленной библиотеки и включить ее в параметры сборки можно разными способами.&amp;#160; Приведенный ниже код (предназначенный для размещения в '''configure.in''') проверяет, установлены ли в системы библиотеки '''GtkSourceView2''' и '''GnomeVFS 2'''. Если да, то они добавляются к параметрам сборки, а в файле '''config.h''' будет определена константа '''gtksourceview2_SUPPORTED''', проверяя которую, мы сможем узнать, есть поддержка '''GtkSourceView2''' или нет:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;java&lt;/del&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;c&lt;/ins&gt;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; echo -n “checking for GtkSourceView2... “&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; echo -n “checking for GtkSourceView2... “&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; if pkg-config --exists gtksourceview-2.0 ; then&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; if pkg-config --exists gtksourceview-2.0 ; then&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5652&amp;oldid=prev</id>
		<title>Crazy Rebel: оформление</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5652&amp;oldid=prev"/>
				<updated>2008-11-27T06:58:42Z</updated>
		
		<summary type="html">&lt;p&gt;оформление&lt;/p&gt;
&lt;a href=&quot;http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;amp;diff=5652&amp;amp;oldid=5345&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5345&amp;oldid=prev</id>
		<title>Crazy Rebel в 07:35, 17 ноября 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5345&amp;oldid=prev"/>
				<updated>2008-11-17T07:35:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 07:35, 17 ноября 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Категория:Учебники]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Движок текстового редактора==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Движок текстового редактора==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5130&amp;oldid=prev</id>
		<title>Crazy Rebel в 03:22, 3 октября 2008</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5130&amp;oldid=prev"/>
				<updated>2008-10-03T03:22:51Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 03:22, 3 октября 2008&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Если возможностей чистого '''GtkTextView''' для вашего приложения уже недостаточно или вы просто решили по-быстрому написать лучшую IDE всех времен и народов – начните с урока '''GtkSourceView''' от '''Петра Семилетова'''.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;: Если возможностей чистого '''GtkTextView''' для вашего приложения уже недостаточно или вы просто решили по-быстрому написать лучшую IDE всех времен и народов – начните с урока '''GtkSourceView''' от '''Петра Семилетова'''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В состав библиотеки Gtk входит отличный виджет текстового редактора, воплощенный в виде взаимодополняющих классов '''GtkTextBuffer, GtkSourceView''' и ряда других, вспомогательных (мы писали про них в '''LXF93'''). Но ради универсальности этого виджета его разработчики пожертвовали некоторыми вещами. Например, нет встроенного механизма redo/undo, нет также подсветки синтаксиса различных языков программирования, хотя виджет обладает способностью задавать цвет и параметры шрифта при отображении отдельных участков текста.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В состав библиотеки &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''&lt;/ins&gt;Gtk&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'' &lt;/ins&gt;входит отличный виджет текстового редактора, воплощенный в виде взаимодополняющих классов '''GtkTextBuffer, GtkSourceView''' и ряда других, вспомогательных (мы писали про них в '''LXF93'''). Но ради универсальности этого виджета его разработчики пожертвовали некоторыми вещами. Например, нет встроенного механизма redo/undo, нет также подсветки синтаксиса различных языков программирования, хотя виджет обладает способностью задавать цвет и параметры шрифта при отображении отдельных участков текста.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Однако среди разрабочиков известного редактора ''GEdit'' вырос виджет-надстройка над '''GetTextView''' – и называется он '''GtkSourceView''' (http://gtksourceview.sourceforge.net). В нем есть все то, чего недостает в стандартном виджете: и движок redo/undo, и подсветка синтаксиса, и отображение правой границы – так называемого margin’а, и многое другое.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Однако среди разрабочиков известного редактора ''GEdit'' вырос виджет-надстройка над '''GetTextView''' – и называется он '''GtkSourceView''' (http://gtksourceview.sourceforge.net). В нем есть все то, чего недостает в стандартном виджете: и движок redo/undo, и подсветка синтаксиса, и отображение правой границы – так называемого margin’а, и многое другое.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В качестве параметра мы передаем этой функции экземпляр таблицы с определениями тэгов пользовательской подсветки (вне движка подсветки '''GtkSourceView'''). Напомню, что в текстовом движке ''Gtk'', тэг – это объект, содержащий параметры форматирования текста, как то: шрифт, цвет и тому подобное.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;В качестве параметра мы передаем этой функции экземпляр таблицы с определениями тэгов пользовательской подсветки (вне движка подсветки '''GtkSourceView'''). Напомню, что в текстовом движке ''Gtk'', тэг – это объект, содержащий параметры форматирования текста, как то: шрифт, цвет и тому подобное.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Для движка GtkSourceView первой версии, таблица имеет тип '''GtkSourceTagTable'''. Во второй версии '''GtkSourceView''' надо использовать стандартный тип из ''Gtk'' – '''GtkTextTagTable'''. Можно передавать в параметре значение '''NULL'''. Тэги вам понадобятся, только если вы захотите неким образом размечать текст – например, подчеркивать слова с ошибками. Создание тэгов, помещение их в таблицу и последующее применение (тэги применяются в тексте к месту, ограниченному итераторами) – тема, выходящая за рамки данной статьи.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Для движка &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;GtkSourceView&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;''' &lt;/ins&gt;первой версии, таблица имеет тип '''GtkSourceTagTable'''. Во второй версии '''GtkSourceView''' надо использовать стандартный тип из ''Gtk'' – '''GtkTextTagTable'''. Можно передавать в параметре значение '''NULL'''. Тэги вам понадобятся, только если вы захотите неким образом размечать текст – например, подчеркивать слова с ошибками. Создание тэгов, помещение их в таблицу и последующее применение (тэги применяются в тексте к месту, ограниченному итераторами) – тема, выходящая за рамки данной статьи.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Для получения текста из '''GtkSourceBuffer''' и помещения его туда применяются те же функции, что и для '''GtkTextBuffer''' – ''gtk_text_buffer_get_text'' и ''gtk_text_buffer_set_text''. Передавая экземпляр '''GtkSourceBuffer''' в качестве параметра, можете приводить его к типу (макросом '''GTK_TEXT_BUFFER'''), а можете не приводить – все равно передается указатель, а компилятор может выдавать предупреждения в зависимости от своих настроек. Однако ничего дурного не случится, если вы вместо:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Для получения текста из '''GtkSourceBuffer''' и помещения его туда применяются те же функции, что и для '''GtkTextBuffer''' – ''gtk_text_buffer_get_text'' и ''gtk_text_buffer_set_text''. Передавая экземпляр '''GtkSourceBuffer''' в качестве параметра, можете приводить его к типу (макросом '''GTK_TEXT_BUFFER'''), а можете не приводить – все равно передается указатель, а компилятор может выдавать предупреждения в зависимости от своих настроек. Однако ничего дурного не случится, если вы вместо:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5129&amp;oldid=prev</id>
		<title>Crazy Rebel: Новая: ==Движок текстового редактора==  : Если возможностей чистого '''GtkTextView''' для вашего приложения уже недос...</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF97:GtkSourceView&amp;diff=5129&amp;oldid=prev"/>
				<updated>2008-10-03T03:21:32Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: ==Движок текстового редактора==  : Если возможностей чистого &amp;#039;&amp;#039;&amp;#039;GtkTextView&amp;#039;&amp;#039;&amp;#039; для вашего приложения уже недос...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Движок текстового редактора==&lt;br /&gt;
&lt;br /&gt;
: Если возможностей чистого '''GtkTextView''' для вашего приложения уже недостаточно или вы просто решили по-быстрому написать лучшую IDE всех времен и народов – начните с урока '''GtkSourceView''' от '''Петра Семилетова'''.&lt;br /&gt;
&lt;br /&gt;
В состав библиотеки Gtk входит отличный виджет текстового редактора, воплощенный в виде взаимодополняющих классов '''GtkTextBuffer, GtkSourceView''' и ряда других, вспомогательных (мы писали про них в '''LXF93'''). Но ради универсальности этого виджета его разработчики пожертвовали некоторыми вещами. Например, нет встроенного механизма redo/undo, нет также подсветки синтаксиса различных языков программирования, хотя виджет обладает способностью задавать цвет и параметры шрифта при отображении отдельных участков текста.&lt;br /&gt;
&lt;br /&gt;
Однако среди разрабочиков известного редактора ''GEdit'' вырос виджет-надстройка над '''GetTextView''' – и называется он '''GtkSourceView''' (http://gtksourceview.sourceforge.net). В нем есть все то, чего недостает в стандартном виджете: и движок redo/undo, и подсветка синтаксиса, и отображение правой границы – так называемого margin’а, и многое другое.&lt;br /&gt;
&lt;br /&gt;
Сейчас развитие '''GtkSourceView''' стоит на пороге перехода на новую ветку – под номером два. Вторая версия еще считается нестабильной, а API ее не устоялось. В этой статье я постараюсь дать представление и о современной версии библиотеки, и о грядущей. Замечу также, что я предполагаю ваше умение работать с обычным '''GtkTextView'''. Как я упоминал, '''GtkSourceView''' – лишь надстройка над '''GtkTextView,''' поэтому работа с '''GtkSourceView''' подразумевает использование и «стандартных» функций из ''Gtk''.&lt;br /&gt;
&lt;br /&gt;
Чтобы создать новый виджет '''GtkSourceView''', используется функция ''Gtk_source_view_new'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 GtkWidget *text_view = gtk_source_view_new ();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Классу буфера для '''GtkSourceView''', вместо '''GtkTextBuffer''', соответствует '''GtkSourceBuffer'''. Для его создания надо вызвать функцию ''gtk_source_buffer_new'':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 GtkSourceBuffer *text_buffer = gtk_source_buffer_new (table);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В качестве параметра мы передаем этой функции экземпляр таблицы с определениями тэгов пользовательской подсветки (вне движка подсветки '''GtkSourceView'''). Напомню, что в текстовом движке ''Gtk'', тэг – это объект, содержащий параметры форматирования текста, как то: шрифт, цвет и тому подобное.&lt;br /&gt;
&lt;br /&gt;
Для движка GtkSourceView первой версии, таблица имеет тип '''GtkSourceTagTable'''. Во второй версии '''GtkSourceView''' надо использовать стандартный тип из ''Gtk'' – '''GtkTextTagTable'''. Можно передавать в параметре значение '''NULL'''. Тэги вам понадобятся, только если вы захотите неким образом размечать текст – например, подчеркивать слова с ошибками. Создание тэгов, помещение их в таблицу и последующее применение (тэги применяются в тексте к месту, ограниченному итераторами) – тема, выходящая за рамки данной статьи.&lt;br /&gt;
&lt;br /&gt;
Для получения текста из '''GtkSourceBuffer''' и помещения его туда применяются те же функции, что и для '''GtkTextBuffer''' – ''gtk_text_buffer_get_text'' и ''gtk_text_buffer_set_text''. Передавая экземпляр '''GtkSourceBuffer''' в качестве параметра, можете приводить его к типу (макросом '''GTK_TEXT_BUFFER'''), а можете не приводить – все равно передается указатель, а компилятор может выдавать предупреждения в зависимости от своих настроек. Однако ничего дурного не случится, если вы вместо:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  gchar *text = gtk_text_buffer_get_text (GTK_TEXT_BUFFER (buffer));&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
напишете такое:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  gchar *text = gtk_text_buffer_get_text (buffer);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В общем, здесь и далее, ради экономии журнального места, я не буду использовать в примерах приведение к типу.&lt;br /&gt;
&lt;br /&gt;
Итак, с текстовым содержимым '''GtkSourceBuffer''' мы разобрались. Теперь давайте применим к загруженному тексту подсветку синтаксиса – если таковая, конечно же, предусмотрена для конкретного языка движком: создания подсветки «пользовательского» языка мы касаться не будем. Используем готовые, «встроенные» модули подсветки – физически это XML-файлы, в которых заданы правила подсветки.&lt;br /&gt;
&lt;br /&gt;
Само собой, виджет не догадывается по помещенному в него тексту, подсветку синтаксиса какого языка надо использовать. Эту процедуру необходимо запрограммировать Работать будем опять-таки с буфером.&lt;br /&gt;
&lt;br /&gt;
В '''GtkSourceView 1''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  gtk_source_buffer_set_language (buffer, language);&lt;br /&gt;
  gtk_source_buffer_set_highlight (buffer, TRUE);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В '''GtkSourceView 2''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  gtk_source_buffer_set_language (buffer, language);&lt;br /&gt;
  gtk_source_buffer_set_highlight_syntax (buffer, TRUE);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Функция ''gtk_source_buffer_set_language'' устанавливает нужную подсветку (удаляя при этом все тэги типа '''GtkSourceTag''' из таблицы тэгов переданного буфера), а ''gtk_source_buffer_set_highlight'' (либо ''gtk_source_buffer_set_highlight_syntax'') включает ее. А вот что такое переменная ''language'' в параметре первой функции? Определена она так:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  GtkSourceLanguage *language = NULL;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Каким образом связать переменную ''language'' с подсветкой файлов определенного типа? В первой версии '''GtkSourceView''' есть функция с очень длинным названием: ''gtk_source_languages_manager_get_language_from_mime_type''. Она получает два параметра – указатель на менеджер языков и строку, задающую тип MIME (для загруженного файла).&lt;br /&gt;
&lt;br /&gt;
Менеджер языков – это переменная типа ''GtkSourceLanguagesManager'' (в '''GtkSourceView 1''') и ''GtkSourceLanguageManager'' (в '''GtkSourceView 2''). В первом случае получаем экземпляр нужного класса с помощью функции ''gtk_source_languages_manager_new'', во втором лучше использовать новое средство, функцию ''gtk_source_language_manager_get_default''. Вручную уничтожать полученные объекты не нужно.&lt;br /&gt;
&lt;br /&gt;
Итак, для получения механизма подсветки, соответствующего некоторому типу MIME, используется примерно следующее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  language = gtk_source_languages_manager_get_language_from_mime_type (source_languages_manager, mime_string);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Однако тут возникают два вопроса. Как быть в '''GtkSourceView 2''', где покамест нет функции, «отдающей» нам язык по переданному типу MIME? И как вообще получить MIME для файла?&lt;br /&gt;
&lt;br /&gt;
На первый вопрос ответ очевиден – надо писать свою функцию. В каталоге ''tests'' исходных текстов '''GtkSourceView 2''' есть образец – смотрите файл ''test-widget.c'', функцию ''get_language_for_mime_type''. Не самое удачное воплощение алгоритма, но оно работает, и вы будете иметь представление, куда двигаться дальше.&lt;br /&gt;
&lt;br /&gt;
Теперь о типах MIME. Есть несколько библиотек, позволяющих работать с ними. Самый естественный способ для программы, основанной на ''Gtk'' – обратиться к библиотеке '''GnomeVFS''' ('''LXF94'''):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  GnomeVFSFileInfo *info = gnome_vfs_file_info_new ();&lt;br /&gt;
  GnomeVFSResult r = gnome_vfs_get_file_info (filename, info, GNOME_VFS_FILE_INFO_GET_MIME_TYPE);&lt;br /&gt;
  gchar *mime = gnome_vfs_file_info_get_mime_type (info);&lt;br /&gt;
  // тут что-то делаем со строкой mime, затем освобождаем память, выделенную под структуру info:&lt;br /&gt;
  gnome_vfs_file_info_unref (info);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итого – в переменной ''mime'', покуда память для ''info'' не освобождена, имеем значение, соответствующее типу MIME для файла, чье имя передано в переменной ''filename''.&lt;br /&gt;
&lt;br /&gt;
Не забудьте, что перед использованием функций '''GnomeVFS''' надо инициализировать эту библиотеку (''gnome_vfs_init''), а после завершения работы вызвать ''gnome_vfs_shutdown''.&lt;br /&gt;
&lt;br /&gt;
Итак, подсветка заработала. Что еще мы можем с ней сделать? Изменить цвета. В '''GtkSourceView 1''' можно, с помощью довольно громоздкого кода, назначить параметры подсветки для каждого элемента каждого доступного языка, например, для строки в HTML или CSS. В '''GtkSourceView 2''' появился более удобный способ изменения цветов – использование схем. Схема здесь – это, грубо говоря, предустановленный набор цветов. Во время написания этих строк, в составе '''GtkSourceView''' идет 3 схемы – ''classic, kate и tango''. Как выбрать схему?&lt;br /&gt;
&lt;br /&gt;
Сначала раздобудем список идентификаторов установленных в системе схем:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 GtkSourceStyleSchemeManager *manager = gtk_source_style_scheme_manager_get_default ();&lt;br /&gt;
 gchar **scheme_ids;&lt;br /&gt;
 g_object_get (manager, “scheme-ids”, &amp;amp;scheme_ids, NULL);&lt;br /&gt;
 GList *ids = NULL;&lt;br /&gt;
 gint c = g_strv_length (scheme_ids) - 1;&lt;br /&gt;
 gint i;&lt;br /&gt;
 for (i = 0; i &amp;lt;= c; i++)&lt;br /&gt;
   ids = g_list_prepend (ids, scheme_ids[i]);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы получаем менеджер схем по умолчанию, а затем считываем из него свойство ''scheme-ids'' в массив ''scheme_ids''. После чего, для удобства, перемещаем идентификаторы в список ''ids''. Со списком ''GList'' удобнее работать, если у вас есть готовые функции для создания виджетов-меню или виджетов-списков на основе данных из ''GList''. А массивы представляются мне чем-то старорежимным.&lt;br /&gt;
&lt;br /&gt;
Далее, зная идентификаторы доступных схем, мы можем затребовать нужную схему по ее идентификатору:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 GtkSourceStyleScheme *scheme = gtk_source_style_scheme_manager_get_scheme (manager, cheme_id);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Осталось лишь назначить схему буферу '''GtkSourceBuffer''':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 gtk_source_buffer_set_style_scheme (buffer, scheme);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Чем еще полезным нас может порадовать '''GtkSourceView2'''? Механизмом '''Undo/Redo'''. По умолчанию любое изменение текста в буфере подлежит отмене либо обратному действию. Если вам надо временно этот механизм отключить, используйте функции '''gtk_source_buffer_begin_not_undoable_action''' и '''gtk_source_buffer_end_not_undoable_action'''. Любые действия с текстом в буфере между их вызовами не будут включены в очередь отмены. Так, например, следует поступить при первой вставке текста из загруженного файла – иначе, когда пользователь будет применять отмену, он рано или поздно дойдет до пустого документа.&lt;br /&gt;
&lt;br /&gt;
Для программного вызова отмены и отмены отмены (''redo'', как вы догадались) нам даны функции '''gtk_source_buffer_undo''' и '''gtk_source_buffer_redo'''. Можно также проверить, доступны ли эти операции, и установить наибольшую длину очереди движка замен – указать, сколько в ней может быть элементов.&lt;br /&gt;
&lt;br /&gt;
Кроме того, движок '''GtkSourceView''' предоставляет много функций, полезных разработчикам редакторов для программистов. Это управление автоматическим отступом и параметрами табуляции, отображение номеров строк слева от текста, работа с маркерами (полезно для показа каких-нибудь закладок) и многое другое.&lt;br /&gt;
&lt;br /&gt;
Обе версии '''GtkSourceView''' – первую и вторую – можно установить одновременно, они не мешают одна другой. Если вы пишете программу с использованием '''GtkSourceView''', то стоит подумать над поддержкой обеих версий, ведь в старых дистрибутивах (да и в стабильной ветке Debian) вторая версия появится не скоро.&lt;br /&gt;
&lt;br /&gt;
Проверить наличие установленной библиотеки и включить ее в параметры сборки можно разными способами.  Приведенный ниже код (предназначенный для размещения в '''configure.in''') проверяет, установлены ли в системы библиотеки '''GtkSourceView2''' и '''GnomeVFS 2'''. Если да, то они добавляются к параметрам сборки, а в файле '''config.h''' будет определена константа '''gtksourceview2_SUPPORTED''', проверяя которую, мы сможем узнать, есть поддержка '''GtkSourceView2''' или нет:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
  echo -n “checking for GtkSourceView2... “&lt;br /&gt;
  if pkg-config --exists gtksourceview-2.0 ; then&lt;br /&gt;
            LIBS=”$LIBS `pkg-config --libs gtksourceview-2.0 `”&lt;br /&gt;
            CFLAGS=”$CFLAGS `pkg-config --cflags gtksourceview-2.0 `”&lt;br /&gt;
            AC_DEFINE(GTKSOURCEVIEW2_SUPPORTED, 1, [GTKSOURCEVIEW2_SUPPORTED])&lt;br /&gt;
            echo “yes”&lt;br /&gt;
            echo -n “checking for gnome-vfs-2.0... “&lt;br /&gt;
            if pkg-config --exists gnome-vfs-2.0 ; then&lt;br /&gt;
                          LIBS=”$LIBS `pkg-config --libs gnome-vfs-2.0`”&lt;br /&gt;
                          CFLAGS=”$CFLAGS `pkg-config --cflags gnome-vfs-2.0`”&lt;br /&gt;
                          echo “yes”&lt;br /&gt;
            else&lt;br /&gt;
                          echo “no”&lt;br /&gt;
            fi&lt;br /&gt;
  else&lt;br /&gt;
            echo “no”&lt;br /&gt;
  fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Сходным способом можно проверить и наличие '''GtkSourceView 1'''.&lt;br /&gt;
&lt;br /&gt;
Все это касается стандартной системы сборки/установки с помощью ''Autotools – Scons, CMake'' и прочие настраиваются аналогично (с поправкой на синтаксис, разумеется). Для удобной работы с пользовательской настройкой подсветки в первой версии ''GtkSourceView'' вам еще понадобится библиотека ''GConf'', чтобы держать настройки цветов в хранилище. Все подробности можно найти в исходных текстах ''GEdit'' или ''TEA''. '''LXF'''&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>