Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.1, 2.1.1, and 2.1.2

filedialogs: unify/simplify lexer detection and font specification

Changeset 8f90244b2535

Parent 5dc262bc6c08

by Steve Borho

Changes to one file · Browse files at 8f90244b2535 Showing diff from parent 5dc262bc6c08 Diff from another changeset...

 
23
24
25
26
27
28
29
30
 
31
32
33
 
41
42
43
44
45
46
47
 
49
50
51
52
53
54
55
 
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
158
159
160
161
162
163
164
 
357
358
359
 
 
 
 
 
 
 
360
361
362
363
364
365
 
367
368
369
370
371
 
 
 
 
372
373
374
 
23
24
25
 
26
27
28
 
29
30
31
32
 
40
41
42
 
43
44
45
 
47
48
49
 
50
51
52
 
64
65
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
68
69
 
141
142
143
 
144
145
146
 
339
340
341
342
343
344
345
346
347
348
349
350
 
351
352
353
 
355
356
357
 
 
358
359
360
361
362
363
364
@@ -23,11 +23,10 @@
   from tortoisehg.util import hglib  from tortoisehg.hgqt.i18n import _ -from tortoisehg.hgqt.lexers import get_lexer  from tortoisehg.hgqt.fileview import HgFileView  from tortoisehg.hgqt.repoview import HgRepoView  from tortoisehg.hgqt.revpanel import RevPanelWidget -from tortoisehg.hgqt import qtlib, visdiff, filerevmodel, blockmatcher +from tortoisehg.hgqt import qtlib, visdiff, filerevmodel, blockmatcher, lexers    from PyQt4.QtCore import *  from PyQt4.QtGui import * @@ -41,7 +40,6 @@
  QMainWindow.__init__(self)   self.repo = repo   - self._font = qtlib.getfont('fontdiff').font()   self.setupUi(self)   self.setRepoViewer(repoviewer)   self._show_rev = None @@ -49,7 +47,6 @@
  if isinstance(filename, (unicode, QString)):   filename = hglib.fromunicode(filename)   self.filename = filename - self.findLexer()     self.createActions()   self.setupToolbars() @@ -67,20 +64,6 @@
  self.repo.thginvalidate()   self.setupModels()   - def findLexer(self): - # try to find a lexer for our file. - f = self.repo.file(self.filename) - head = f.heads()[0] - if f.size(f.rev(head)) < 1e6: - data = f.read(head) - else: - data = '' # too big - lexer = get_lexer(self.filename, data, self) - if lexer: - lexer.setDefaultFont(self._font) - lexer.setFont(self._font) - self.lexer = lexer -   def onRevisionActivated(self, rev):   """   Callback called when a revision is double-clicked in the revisions table @@ -158,7 +141,6 @@
  vbox.addWidget(self.textView, 1)     def setupViews(self): - self.textView.setFont(self._font)   self.textView.showMessage.connect(self.statusBar().showMessage)     def setupToolbars(self): @@ -357,9 +339,15 @@
  lay = QHBoxLayout(self.frame)   lay.setSpacing(0)   lay.setContentsMargins(0, 0, 0, 0) + + try: + contents = open(self.repo.wjoin(self.filename), "rb").read(1024) + lexer = lexers.get_lexer(self.filename, contents, self) + except Exception: + lexer = None +   for side, idx in (('left', 0), ('right', 3)):   sci = QsciScintilla(self.frame) - sci.setFont(self._font)   sci.verticalScrollBar().setFocusPolicy(Qt.StrongFocus)   sci.setFocusProxy(sci.verticalScrollBar())   sci.verticalScrollBar().installEventFilter(self) @@ -367,8 +355,10 @@
  sci.setFrameShape(QFrame.NoFrame)   sci.setMarginLineNumbers(1, True)   sci.SendScintilla(sci.SCI_SETSELEOLFILLED, True) - if self.lexer: - sci.setLexer(self.lexer) + + sci.setLexer(lexer) + if lexer is None: + sci.setFont(qtlib.getfont('fontdiff').font())     sci.setReadOnly(True)   sci.setUtf8(True)