488 editor.addClone(self) |
488 editor.addClone(self) |
489 |
489 |
490 self.gotoLine(1) |
490 self.gotoLine(1) |
491 |
491 |
492 # connect the mouse hover signals |
492 # connect the mouse hover signals |
|
493 # mouse hover for the editor margins |
|
494 self.SCN_DWELLSTART.connect(self.__marginHoverStart) |
|
495 self.SCN_DWELLEND.connect(self.__marginHoverEnd) |
|
496 |
|
497 # mouse hover help for the editor text |
493 self.SCN_DWELLSTART.connect(self.__showMouseHoverHelp) |
498 self.SCN_DWELLSTART.connect(self.__showMouseHoverHelp) |
494 self.SCN_DWELLEND.connect(self.__cancelMouseHoverHelp) |
499 self.SCN_DWELLEND.connect(self.__cancelMouseHoverHelp) |
495 self.__mouseHoverHelp = None |
500 self.__mouseHoverHelp = None |
496 self.__showingMouseHoverHelp = False |
501 self.__showingMouseHoverHelp = False |
497 |
502 |
3956 elif margin == self.__indicMargin: |
3961 elif margin == self.__indicMargin: |
3957 if self.markersAtLine(line) & (1 << self.syntaxerror): |
3962 if self.markersAtLine(line) & (1 << self.syntaxerror): |
3958 self.__showSyntaxError(line) |
3963 self.__showSyntaxError(line) |
3959 elif self.markersAtLine(line) & (1 << self.warning): |
3964 elif self.markersAtLine(line) & (1 << self.warning): |
3960 self.__showWarning(line) |
3965 self.__showWarning(line) |
|
3966 |
|
3967 @pyqtSlot(int, int, int) |
|
3968 def __marginHoverStart(self, pos, x, y): |
|
3969 """ |
|
3970 Private slot showing the text of a syntax error or a warning marker. |
|
3971 |
|
3972 @param pos mouse position into the document |
|
3973 @type int |
|
3974 @param x x-value of mouse screen position |
|
3975 @type int |
|
3976 @param y y-value of mouse screen position |
|
3977 @type int |
|
3978 """ |
|
3979 from PyQt6.QtGui import QCursor |
|
3980 from PyQt6.QtWidgets import QToolTip |
|
3981 margin = self.__marginNumber(x) |
|
3982 if margin == self.__indicMargin: |
|
3983 # determine width of all margins; needed to calculate document line |
|
3984 width = 0 |
|
3985 for margin in range(5): |
|
3986 width += self.marginWidth(margin) |
|
3987 |
|
3988 message = "" |
|
3989 line = self.lineIndexFromPoint(QPoint(width + 1, y))[0] |
|
3990 if self.markersAtLine(line) & (1 << self.syntaxerror): |
|
3991 for handle in self.syntaxerrors: |
|
3992 if self.markerLine(handle) == line: |
|
3993 message = "\n".join([e[0] for e in self.syntaxerrors[handle]]) |
|
3994 break |
|
3995 elif self.markersAtLine(line) & (1 << self.warning): |
|
3996 for handle in self._warnings: |
|
3997 if self.markerLine(handle) == line: |
|
3998 message = "\n".join([w[0] for w in self._warnings[handle]]) |
|
3999 break |
|
4000 |
|
4001 if message: |
|
4002 QToolTip.showText(QCursor.pos(), message) |
|
4003 |
|
4004 @pyqtSlot() |
|
4005 def __marginHoverEnd(self): |
|
4006 """ |
|
4007 Private slot cancelling the display of syntax error or a warning marker text. |
|
4008 """ |
|
4009 from PyQt6.QtWidgets import QToolTip |
|
4010 QToolTip.hideText() |
3961 |
4011 |
3962 @pyqtSlot() |
4012 @pyqtSlot() |
3963 def handleMonospacedEnable(self): |
4013 def handleMonospacedEnable(self): |
3964 """ |
4014 """ |
3965 Public slot to handle the Use Monospaced Font context menu entry. |
4015 Public slot to handle the Use Monospaced Font context menu entry. |
6695 self.syntaxCheckService is None |
6745 self.syntaxCheckService is None |
6696 or fileType not in self.syntaxCheckService.getLanguages() |
6746 or fileType not in self.syntaxCheckService.getLanguages() |
6697 ): |
6747 ): |
6698 return |
6748 return |
6699 |
6749 |
6700 if Preferences.getEditor("AutoCheckSyntax") and Preferences.getEditor( |
6750 if Preferences.getEditor("OnlineSyntaxCheck"): |
6701 "OnlineSyntaxCheck" |
|
6702 ): |
|
6703 self.__onlineSyntaxCheckTimer.stop() |
6751 self.__onlineSyntaxCheckTimer.stop() |
6704 |
6752 |
6705 if self.isPy3File(): |
6753 if self.isPy3File(): |
6706 additionalBuiltins = ( |
6754 additionalBuiltins = ( |
6707 self.project.getData("CHECKERSPARMS", "SyntaxChecker", {}).get( |
6755 self.project.getData("CHECKERSPARMS", "SyntaxChecker", {}).get( |