QScintilla/Editor.py

changeset 1758
e18f96b1714b
parent 1754
4e2f87d03546
child 1762
307393ebe9c6
equal deleted inserted replaced
1755:976457c61226 1758:e18f96b1714b
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

eric ide

mercurial