[meld: 21/63] filediff, sourceview: Simplify source language sniffing



commit 12fd9d211dcd237468262efd1f09f06666ca11e3
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Sun Jul 19 13:32:10 2015 +1000

    filediff, sourceview: Simplify source language sniffing

 meld/filediff.py   |    9 ++-------
 meld/sourceview.py |   11 +++++------
 2 files changed, 7 insertions(+), 13 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index a08be2f..9cf0a8d 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -1123,13 +1123,8 @@ class FileDiff(melddoc.MeldDoc, gnomeglade.Component):
         self._connect_buffer_handlers()
         self._set_merge_action_sensitivity()
 
-        langs = []
-        for i in range(self.num_panes):
-            filename = self.textbuffer[i].data.filename
-            if filename:
-                langs.append(LanguageManager.get_language_from_file(filename))
-            else:
-                langs.append(None)
+        langs = [LanguageManager.get_language_from_file(buf.data.gfile)
+                 for buf in self.textbuffer[:self.num_panes]]
 
         # If we have only one identified language then we assume that all of
         # the files are actually of that type.
diff --git a/meld/sourceview.py b/meld/sourceview.py
index 0d142f3..145bf89 100644
--- a/meld/sourceview.py
+++ b/meld/sourceview.py
@@ -32,15 +32,14 @@ class LanguageManager(object):
     manager = GtkSource.LanguageManager()
 
     @classmethod
-    def get_language_from_file(cls, filename):
-        f = Gio.File.new_for_path(filename)
+    def get_language_from_file(cls, gfile):
         try:
-            info = f.query_info(Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
-                                0, None)
-        except GLib.GError:
+            info = gfile.query_info(
+                Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, 0, None)
+        except (GLib.GError, AttributeError):
             return None
         content_type = info.get_content_type()
-        return cls.manager.guess_language(filename, content_type)
+        return cls.manager.guess_language(gfile.get_basename(), content_type)
 
     @classmethod
     def get_language_from_mime_type(cls, mime_type):


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]