@@ -27,12 +27,20 @@ import math
2727import string
2828import fcntl
2929
30+ try :
31+ import gtksourceview2
32+ have_gtksourceview2 = True
33+ except ImportError :
34+ have_gtksourceview2 = False
35+
3036try :
3137 import gtksourceview
3238 have_gtksourceview = True
3339except ImportError :
3440 have_gtksourceview = False
35- print "Running without gtksourceview module"
41+
42+ if not have_gtksourceview2 and not have_gtksourceview :
43+ print "Running without gtksourceview2 or gtksourceview module"
3644
3745re_ident = re .compile ('(author|committer) (?P<ident>.*) (?P<epoch>\d+) (?P<tz>[+-]\d{4})' )
3846
@@ -58,6 +66,26 @@ def show_date(epoch, tz):
5866
5967 return time .strftime ("%Y-%m-%d %H:%M:%S" , time .gmtime (secs ))
6068
69+ def get_source_buffer_and_view ():
70+ if have_gtksourceview2 :
71+ buffer = gtksourceview2 .Buffer ()
72+ slm = gtksourceview2 .LanguageManager ()
73+ gsl = slm .get_language ("diff" )
74+ buffer .set_highlight_syntax (True )
75+ buffer .set_language (gsl )
76+ view = gtksourceview2 .View (buffer )
77+ elif have_gtksourceview :
78+ buffer = gtksourceview .SourceBuffer ()
79+ slm = gtksourceview .SourceLanguagesManager ()
80+ gsl = slm .get_language_from_mime_type ("text/x-patch" )
81+ buffer .set_highlight (True )
82+ buffer .set_language (gsl )
83+ view = gtksourceview .SourceView (buffer )
84+ else :
85+ buffer = gtk .TextBuffer ()
86+ view = gtk .TextView (buffer )
87+ return (buffer , view )
88+
6189
6290class CellRendererGraph (gtk .GenericCellRenderer ):
6391 """Cell renderer for directed graph.
@@ -582,17 +610,7 @@ class DiffWindow(object):
582610 hpan .pack1 (scrollwin , True , True )
583611 scrollwin .show ()
584612
585- if have_gtksourceview :
586- self .buffer = gtksourceview .SourceBuffer ()
587- slm = gtksourceview .SourceLanguagesManager ()
588- gsl = slm .get_language_from_mime_type ("text/x-patch" )
589- self .buffer .set_highlight (True )
590- self .buffer .set_language (gsl )
591- sourceview = gtksourceview .SourceView (self .buffer )
592- else :
593- self .buffer = gtk .TextBuffer ()
594- sourceview = gtk .TextView (self .buffer )
595-
613+ (self .buffer , sourceview ) = get_source_buffer_and_view ()
596614
597615 sourceview .set_editable (False )
598616 sourceview .modify_font (pango .FontDescription ("Monospace" ))
@@ -956,16 +974,7 @@ class GitView(object):
956974 vbox .pack_start (scrollwin , expand = True , fill = True )
957975 scrollwin .show ()
958976
959- if have_gtksourceview :
960- self .message_buffer = gtksourceview .SourceBuffer ()
961- slm = gtksourceview .SourceLanguagesManager ()
962- gsl = slm .get_language_from_mime_type ("text/x-patch" )
963- self .message_buffer .set_highlight (True )
964- self .message_buffer .set_language (gsl )
965- sourceview = gtksourceview .SourceView (self .message_buffer )
966- else :
967- self .message_buffer = gtk .TextBuffer ()
968- sourceview = gtk .TextView (self .message_buffer )
977+ (self .message_buffer , sourceview ) = get_source_buffer_and_view ()
969978
970979 sourceview .set_editable (False )
971980 sourceview .modify_font (pango .FontDescription ("Monospace" ))
0 commit comments