Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.0.1, 2.0.2, and 2.0.3

stable settings: allow 'hgext' prefix for extensions in config file

fixes #185

Changeset c60cf85827ee

Parent 83328ef80e39

by Johan Samyn

Changes to one file · Browse files at c60cf85827ee Showing diff from parent 83328ef80e39 Diff from another changeset...

 
779
780
781
782
 
 
783
784
785
786
787
788
789
 
 
 
 
 
790
791
792
 
796
797
798
 
 
 
 
799
800
801
 
975
976
977
978
 
 
979
980
 
981
982
983
984
985
986
987
988
989
 
 
 
 
990
991
992
 
997
998
999
1000
 
1001
1002
1003
1004
1005
1006
1007
 
 
 
 
 
1008
1009
1010
 
 
1011
1012
1013
 
1023
1024
1025
1026
 
1027
1028
1029
 
779
780
781
 
782
783
784
785
786
787
788
789
 
790
791
792
793
794
795
796
797
 
801
802
803
804
805
806
807
808
809
810
 
984
985
986
 
987
988
989
 
990
991
992
993
994
 
 
 
 
 
995
996
997
998
999
1000
1001
 
1006
1007
1008
 
1009
1010
1011
 
 
 
 
 
1012
1013
1014
1015
1016
1017
 
 
1018
1019
1020
1021
1022
 
1032
1033
1034
 
1035
1036
1037
1038
@@ -779,14 +779,19 @@
  def refresh(self, *args):   # refresh config values   self.ini = self.loadIniFile(self.rcpath) - self.readonly = not (hasattr(self.ini, 'write') and os.access(self.fn, os.W_OK)) + self.readonly = not (hasattr(self.ini, 'write') + and os.access(self.fn, os.W_OK))   self.stack.setDisabled(self.readonly)   self.fnedit.setText(hglib.tounicode(self.fn))   for name, info, widgets in self.pages.values():   if name == 'extensions':   extsmentioned = False   for row, w in enumerate(widgets): - val = self.readCPath('extensions.' + w.opts['label']) + key = w.opts['label'] + for fullkey in (key, 'hgext.%s' % key, 'hgext/%s' % key): + val = self.readCPath('extensions.' + fullkey) + if val != None: + break   if val == None:   curvalue = False   elif len(val) and val[0] == '!': @@ -796,6 +801,10 @@
  curvalue = True   extsmentioned = True   w.setValue(curvalue) + if val == None: + w.opts['cpath'] = 'extensions.' + key + else: + w.opts['cpath'] = 'extensions.' + fullkey   if not extsmentioned:   # make sure widgets are shown properly,   # even when no extensions mentioned in the config file @@ -975,18 +984,18 @@
  if (not emitChanged) and chk.isDirty():   self.restartRequested.emit(_('Extensions'))   emitChanged = True - key = chk.opts['label'] + name = chk.opts['label'] + section, key = chk.opts['cpath'].split('.', 1)   newvalue = chk.value() - if newvalue and (key in enabledexts): + if newvalue and (name in enabledexts):   continue # unchanged   if newvalue:   self.ini.set(section, key, '')   else: - for cand in (key, 'hgext.%s' % key, 'hgext/%s' % key): - try: - del self.ini[section][cand] - except KeyError: - pass + try: + del self.ini[section][key] + except KeyError: + pass     @pyqtSlot()   def validateextensions(self): @@ -997,17 +1006,17 @@
  if chk.isChecked())   invalidexts = hglib.validateextensions(selectedexts)   - def getinival(name): + def getinival(cpath):   if section not in self.ini:   return None - for cand in (name, 'hgext.%s' % name, 'hgext/%s' % name): - try: - return self.ini[section][cand] - except KeyError: - pass + sect, key = cpath.split('.', 1) + try: + return self.ini[sect][key] + except KeyError: + pass   - def changable(name): - curval = getinival(name) + def changable(name, cpath): + curval = getinival(cpath)   if curval not in ('', None):   # enabled or unspecified, official extensions only   return False @@ -1023,7 +1032,7 @@
  allexts = hglib.allextensions()   for chk in self.pages['extensions'][2]:   name = chk.opts['label'] - chk.setEnabled(changable(name)) + chk.setEnabled(changable(name, chk.opts['cpath']))   invalmsg = invalidexts.get(name)   if invalmsg:   invalmsg = invalmsg.decode('utf-8')