# Buggy code
def getPreviousSettings(self, fn):
    """
    Return the settings in effect for fn. Typically, this involves
    pre-reading fn.
    """
    lm = self
    settingsName = "settings dict for %s" % g.shortFileName(fn)
    shortcutsName = "shortcuts dict for %s" % g.shortFileName(fn)
    # A special case: settings in leoSettings.leo do *not* override
    # the global settings, that is, settings in myLeoSettings.leo.
    isLeoSettings = g.shortFileName(fn).lower() == "leosettings.leo"
    exists = g.os_path_exists(fn)
    if fn and exists and lm.isLeoFile(fn) and not isLeoSettings:
        # Open the file usinging a null gui.
        try:
            g.app.preReadFlag = True
            c = lm.openSettingsFile(fn)
        finally:
            g.app.preReadFlag = False
        # Merge the settings from c into *copies* of the global dicts.
        d1, d2 = lm.computeLocalSettings(
            c, lm.globalSettingsDict, lm.globalBindingsDict, localFlag=True
        )
        # d1 and d2 are copies.
        d1.setName(settingsName)
        d2.setName(shortcutsName)
    else:
        # Get the settings from the globals settings dicts.
        d1 = lm.globalSettingsDict.copy(settingsName)
        d2 = lm.globalBindingsDict.copy(shortcutsName)
    return PreviousSettings(d1, d2)


# Traceback (xml.etree.ElementTree.ParseError)
setting leoID from os.getenv('USER'): 'matt'
reading settings in /home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/config/leoSettings.leo
reading settings in /home/matt/.leo/myLeoSettings.leo
QApplication: invalid style override passed, ignoring it.

Leo 5.8 b1, build 20180815095610, Wed, Aug 15, 2018  9:56:10 AM
Not running from a git repo
Python 3.6.6, PyQt version 5.11.1
linux
** isPython3: True

reading settings in /home/matt/.leo/workbook.leo
loadOnePlugin: leo.plugins.livecode.init() returned False
reading settings in /home/matt/code/leo-editor/leo/dist/leoDist.leo
Traceback (most recent call last):

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoCommands.py", line 2072, in executeAnyCommand
return command(event)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoGlobals.py", line 269, in commander_command_wrapper
method(event=event)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/commands/commanderFileCommands.py", line 214, in open
c2 = g.openWithFileName(fileName, old_c=c)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoGlobals.py", line 3682, in openWithFileName
return g.app.loadManager.loadLocalFile(fileName, gui, old_c)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoApp.py", line 3059, in loadLocalFile
previousSettings = lm.getPreviousSettings(fn)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoApp.py", line 1973, in getPreviousSettings
c = lm.openSettingsFile(fn)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoApp.py", line 2139, in openSettingsFile
readAtFileNodesFlag=False, silent=True)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoFileCommands.py", line 631, in openLeoFile
silent=silent,

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoFileCommands.py", line 494, in getLeoFile
v = FastRead(c, self.gnxDict).readFile(fileName)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoFileCommands.py", line 68, in readFile
return self.readWithElementTree(s)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/site-packages/leo/core/leoFileCommands.py", line 73, in readWithElementTree
xroot = ElementTree.fromstring(contents)

File "/home/matt/miniconda3/envs/leo/lib/python3.6/xml/etree/ElementTree.py", line 1314, in XML
parser.feed(text)

File "<string>", line None

xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 189, column 1

# Fixed code
def getPreviousSettings(self, fn):
    """
    Return the settings in effect for fn. Typically, this involves
    pre-reading fn.
    """
    lm = self
    settingsName = "settings dict for %s" % g.shortFileName(fn)
    shortcutsName = "shortcuts dict for %s" % g.shortFileName(fn)
    # A special case: settings in leoSettings.leo do *not* override
    # the global settings, that is, settings in myLeoSettings.leo.
    isLeoSettings = g.shortFileName(fn).lower() == "leosettings.leo"
    exists = g.os_path_exists(fn)
    if fn and exists and lm.isLeoFile(fn) and not isLeoSettings:
        # Open the file usinging a null gui.
        try:
            g.app.preReadFlag = True
            c = lm.openSettingsFile(fn)
        finally:
            g.app.preReadFlag = False
        # Merge the settings from c into *copies* of the global dicts.
        d1, d2 = lm.computeLocalSettings(
            c, lm.globalSettingsDict, lm.globalBindingsDict, localFlag=True
        )
        # d1 and d2 are copies.
        d1.setName(settingsName)
        d2.setName(shortcutsName)
        return PreviousSettings(d1, d2)
    #
    # The file does not exist, or is not valid.
    # Get the settings from the globals settings dicts.
    d1 = lm.globalSettingsDict.copy(settingsName)
    d2 = lm.globalBindingsDict.copy(shortcutsName)
    return PreviousSettings(d1, d2)