185 self.inFileRenamed = False # true if we are propagating a rename action |
185 self.inFileRenamed = False # true if we are propagating a rename action |
186 self.inLanguageChanged = False # true if we are propagating a language change |
186 self.inLanguageChanged = False # true if we are propagating a language change |
187 self.inEolChanged = False # true if we are propagating an eol change |
187 self.inEolChanged = False # true if we are propagating an eol change |
188 self.inEncodingChanged = False # true if we are propagating an encoding change |
188 self.inEncodingChanged = False # true if we are propagating an encoding change |
189 self.inDragDrop = False # true if we are in drop mode |
189 self.inDragDrop = False # true if we are in drop mode |
|
190 self.inLinesChanged = False # true if we are propagating a lines changed event |
190 self.__hasTaskMarkers = False # no task markers present |
191 self.__hasTaskMarkers = False # no task markers present |
191 |
192 |
192 self.macros = {} # list of defined macros |
193 self.macros = {} # list of defined macros |
193 self.curMacro = None |
194 self.curMacro = None |
194 self.recording = False |
195 self.recording = False |
1652 if self.filetype == "": |
1653 if self.filetype == "": |
1653 line0 = self.text(0) |
1654 line0 = self.text(0) |
1654 if line0.startswith("#!") and \ |
1655 if line0.startswith("#!") and \ |
1655 ("python2" in line0 or \ |
1656 ("python2" in line0 or \ |
1656 ("python" in line0 and not "python3" in line0)): |
1657 ("python" in line0 and not "python3" in line0)): |
|
1658 self.filetype = "Python2" |
1657 return True |
1659 return True |
1658 |
1660 |
1659 if self.fileName is not None: |
1661 if self.fileName is not None: |
1660 ext = os.path.splitext(self.fileName)[1] |
1662 ext = os.path.splitext(self.fileName)[1] |
1661 if ext in [".py", ".pyw"] and \ |
1663 if ext in [".py", ".pyw"] and \ |
1662 Preferences.getProject("DeterminePyFromProject") and \ |
1664 Preferences.getProject("DeterminePyFromProject") and \ |
1663 self.project.isOpen() and \ |
1665 self.project.isOpen() and \ |
1664 self.project.isProjectFile(self.fileName): |
1666 self.project.isProjectFile(self.fileName): |
1665 return self.project.getProjectLanguage() in ["Python", "Python2"] |
1667 isProjectPy2 = \ |
|
1668 self.project.getProjectLanguage() in ["Python", "Python2"] |
|
1669 if isProjectPy2: |
|
1670 self.filetype = "Python2" |
|
1671 return isProjectPy2 |
1666 |
1672 |
1667 if ext in self.dbs.getExtensions('Python2'): |
1673 if ext in self.dbs.getExtensions('Python2'): |
|
1674 self.filetype = "Python2" |
1668 return True |
1675 return True |
1669 |
1676 |
1670 return False |
1677 return False |
1671 |
1678 |
1672 def isPy3File(self): |
1679 def isPy3File(self): |
1680 |
1687 |
1681 if self.filetype == "": |
1688 if self.filetype == "": |
1682 line0 = self.text(0) |
1689 line0 = self.text(0) |
1683 if line0.startswith("#!") and \ |
1690 if line0.startswith("#!") and \ |
1684 "python3" in line0: |
1691 "python3" in line0: |
|
1692 self.filetype = "Python3" |
1685 return True |
1693 return True |
1686 |
1694 |
1687 if self.fileName is not None: |
1695 if self.fileName is not None: |
1688 ext = os.path.splitext(self.fileName)[1] |
1696 ext = os.path.splitext(self.fileName)[1] |
1689 if ext in [".py", ".pyw"] and \ |
1697 if ext in [".py", ".pyw"] and \ |
1690 Preferences.getProject("DeterminePyFromProject") and \ |
1698 Preferences.getProject("DeterminePyFromProject") and \ |
1691 self.project.isOpen() and \ |
1699 self.project.isOpen() and \ |
1692 self.project.isProjectFile(self.fileName): |
1700 self.project.isProjectFile(self.fileName): |
1693 return self.project.getProjectLanguage() in ["Python3"] |
1701 isProjectPy3 = self.project.getProjectLanguage() in ["Python3"] |
|
1702 if isProjectPy3: |
|
1703 self.filetype = "Python3" |
|
1704 return isProjectPy3 |
1694 |
1705 |
1695 if ext in self.dbs.getExtensions('Python3'): |
1706 if ext in self.dbs.getExtensions('Python3'): |
|
1707 self.filetype = "Python3" |
1696 return True |
1708 return True |
1697 |
1709 |
1698 return False |
1710 return False |
1699 |
1711 |
1700 def isRubyFile(self): |
1712 def isRubyFile(self): |
1708 |
1720 |
1709 if self.filetype == "": |
1721 if self.filetype == "": |
1710 line0 = self.text(0) |
1722 line0 = self.text(0) |
1711 if line0.startswith("#!") and \ |
1723 if line0.startswith("#!") and \ |
1712 "ruby" in line0: |
1724 "ruby" in line0: |
|
1725 self.filetype = "Ruby" |
1713 return True |
1726 return True |
1714 |
1727 |
1715 if self.fileName is not None and \ |
1728 if self.fileName is not None and \ |
1716 os.path.splitext(self.fileName)[1] in self.dbs.getExtensions('Ruby'): |
1729 os.path.splitext(self.fileName)[1] in self.dbs.getExtensions('Ruby'): |
|
1730 self.filetype = "Ruby" |
1717 return True |
1731 return True |
1718 |
1732 |
1719 return False |
1733 return False |
1720 |
1734 |
1721 def isPreviewable(self): |
1735 def isPreviewable(self): |
1798 for handle, (ln, cond, temp, enabled, ignorecount) in self.breaks.items(): |
1812 for handle, (ln, cond, temp, enabled, ignorecount) in self.breaks.items(): |
1799 line = self.markerLine(handle) + 1 |
1813 line = self.markerLine(handle) + 1 |
1800 bps.append((ln, line, (cond, temp, enabled, ignorecount))) |
1814 bps.append((ln, line, (cond, temp, enabled, ignorecount))) |
1801 self.markerDeleteHandle(handle) |
1815 self.markerDeleteHandle(handle) |
1802 self.breaks = {} |
1816 self.breaks = {} |
|
1817 self.inLinesChanged = True |
1803 for bp in bps: |
1818 for bp in bps: |
1804 index = self.breakpointModel.getBreakPointIndex(self.fileName, bp[0]) |
1819 index = self.breakpointModel.getBreakPointIndex(self.fileName, bp[0]) |
1805 self.breakpointModel.setBreakPointByIndex(index, |
1820 self.breakpointModel.setBreakPointByIndex(index, |
1806 self.fileName, bp[1], bp[2]) |
1821 self.fileName, bp[1], bp[2]) |
|
1822 self.inLinesChanged = False |
1807 |
1823 |
1808 def __restoreBreakpoints(self): |
1824 def __restoreBreakpoints(self): |
1809 """ |
1825 """ |
1810 Private method to restore the breakpoints. |
1826 Private method to restore the breakpoints. |
1811 """ |
1827 """ |
1866 Note: This doesn't clear the breakpoint in the debugger, |
1882 Note: This doesn't clear the breakpoint in the debugger, |
1867 it just deletes it from the editor internal list of breakpoints. |
1883 it just deletes it from the editor internal list of breakpoints. |
1868 |
1884 |
1869 @param line linenumber of the breakpoint (integer) |
1885 @param line linenumber of the breakpoint (integer) |
1870 """ |
1886 """ |
|
1887 if self.inLinesChanged: |
|
1888 return |
|
1889 |
1871 for handle, (ln, _, _, _, _) in list(self.breaks.items()): |
1890 for handle, (ln, _, _, _, _) in list(self.breaks.items()): |
1872 if self.markerLine(handle) == line - 1: |
1891 if self.markerLine(handle) == line - 1: |
1873 break |
1892 break |
1874 else: |
1893 else: |
1875 # not found, simply ignore it |
1894 # not found, simply ignore it |