From: SourceForge.net <no...@so...> - 2008-08-02 09:48:08
|
Patches item #1990960, was opened at 2008-06-11 23:46 Message generated for change (Comment added) made by k_satoda You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=300588&aid=1990960&group_id=588 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Iain Smith (wibbleboy) Assigned to: Matthieu Casanova (kpouer) Summary: "Invalid screen line error" when looping in macro Initial Comment: Back in JEdit v4.2 I wrote a script which loops through a file, searching for any newline characters which are preceded by certain characters (!?.") and followed by any Uppercase letter or a double quote ("). Once found these would be marked with '@@@' so they could later be picked up with an automated formatting tool. This works fine on v4.2, but in 4.3 Pre12 and 4.3 Pre14 it gives the following error: "java.lang.RuntimeException: Invalid screen line count: n" (where 'n' differs each time). After reinstalling 4.2 the macro runs fine again. The full error dump, macro and a test file is attached. ---------------------------------------------------------------------- >Comment By: Kazutoshi Satoda (k_satoda) Date: 2008-08-02 18:48 Message: Logged In: YES user_id=1483238 Originator: NO I have tested Matthieu's patch for a week and have no problems. But while final reviewing the patch to say "+1 to apply.", I found that DisplayManager has a method updateScreenLineCount(), which recalculates and validates the screen line count, and some caller of getScreenLineCount() use it before getting the count. How about calling updateScreenLineCount() in getScreenLineCount() before getting the count? The attached patch does it, and passes Iain's test case. It also resolves another bug #1999459 "Join Lines over a fold causes exception". I can't find any problems to throw an exception for an invalid scrren line count at getScreenLineCount(). File Added: DisplayManager_recaluculate_screen_line_count_on_demand.patch ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2008-07-24 05:27 Message: Logged In: YES user_id=935841 Originator: NO Moving to patches tracker... I should have tested this a while ago. I have been running into this problem from time to time. ---------------------------------------------------------------------- Comment By: kerik (kerik-sf) Date: 2008-06-15 17:51 Message: Logged In: YES user_id=1725856 Originator: NO Yes : the patch works for me. Thanks for it and for the explanation :-) Well, I got this error the first time I re-run my tests using the patched version of jEdit. Since then, I couldn't reproduce this behavior. (I don't use any extension painter, and had only ErrorList plugin loaded.) 18:17:20 [error] ExtensionManager: java.lang.NullPointerException 18:17:20 [error] ExtensionManager: at org.gjt.sp.jedit.textarea.ChunkCache.updateChunksUpTo(ChunkCache.java:709) 18:17:20 [error] ExtensionManager: at org.gjt.sp.jedit.textarea.ChunkCache.getLineInfo(ChunkCache.java:256) 18:17:20 [error] ExtensionManager: at org.gjt.sp.jedit.textarea.TextAreaPainter$PaintText.paintValidLine(TextAreaPainter.java:1112) 18:17:20 [error] ExtensionManager: at org.gjt.sp.jedit.textarea.TextAreaExtension.paintScreenLineRange(TextAreaExtension.java:70) 18:17:20 [error] ExtensionManager: at org.gjt.sp.jedit.textarea.ExtensionManager.paintScreenLineRange(ExtensionManager.java:155) 18:17:20 [error] ExtensionManager: at org.gjt.sp.jedit.textarea.ExtensionManager.paintScreenLineRange(ExtensionManager.java:115) 18:17:20 [error] ExtensionManager: at org.gjt.sp.jedit.textarea.TextAreaPainter.paint(TextAreaPainter.java:735) 18:17:20 [error] ExtensionManager: at javax.swing.JComponent.paintChildren(JComponent.java:843) 18:17:20 [error] ExtensionManager: at javax.swing.JComponent.paint(JComponent.java:1015) 18:17:20 [error] ExtensionManager: at javax.swing.JComponent.paintChildren(JComponent.java:843) 18:17:20 [error] ExtensionManager: at javax.swing.JComponent.paint(JComponent.java:1015) 18:17:20 [error] ExtensionManager: at javax.swing.JComponent._paintImmediately(JComponent.java:4890) 18:17:20 [error] ExtensionManager: at javax.swing.JComponent.paintImmediately(JComponent.java:4676) 18:17:20 [error] ExtensionManager: at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:477) 18:17:20 [error] ExtensionManager: at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:114) 18:17:20 [error] ExtensionManager: at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) 18:17:20 [error] ExtensionManager: at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) 18:17:20 [error] ExtensionManager: at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269) 18:17:20 [error] ExtensionManager: at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190) 18:17:20 [error] ExtensionManager: at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184) 18:17:20 [error] ExtensionManager: at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176) 18:17:20 [error] ExtensionManager: at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) ---------------------------------------------------------------------- Comment By: Matthieu Casanova (kpouer) Date: 2008-06-15 06:13 Message: Logged In: YES user_id=285591 Originator: NO Yes. To summarize, when you edit a buffer the lines of the buffer are marked as invalid (need to be recalculated). At the end of the edition if you are not in a compound edit, they are recalculated. But if you are in a compound edit, jEdit think that you are in a transaction and do not recalculate those lines because he prefers to wait the end of the edition. But if you try to scroll in this transaction, the lines are invalid so there is an exception like this bug. So if you reproduce the bug with your SpellCheck plugin, please tell me if the patch fixes it and if you have no unexpected problems with it ---------------------------------------------------------------------- Comment By: kerik (kerik-sf) Date: 2008-06-15 00:55 Message: Logged In: YES user_id=1725856 Originator: NO Hi, does this apply to scrolling between a "beginCompoundEdit()" and "endCompoundEdit()" ? I'm working on the UI for the old SpellCheck plugin, and I would like to move to the word currently checked, for easy reference. On the other hand, It's convenient to have a big compound edit with all changes done in a spell-checking session. I'll try the patch... ---------------------------------------------------------------------- Comment By: Matthieu Casanova (kpouer) Date: 2008-06-14 04:02 Message: Logged In: YES user_id=285591 Originator: NO Finally I found the reason of the bug and attached a patch. I'm not sure if it is the best method but it is better than the previous patch. The reason is that all Macros runs inside a transaction. In a transaction you update the text of the buffer, but the scroll computing code is only done when ending transaction. So it is impossible to change the content of a buffer and scroll in the same macro. What do my patch is to check if some scroll computing is pending, and doing it before trying to scroll, before the end of the transaction File Added: fix_for_bug_1990960.patch ---------------------------------------------------------------------- Comment By: Matthieu Casanova (kpouer) Date: 2008-06-13 07:29 Message: Logged In: YES user_id=285591 Originator: NO Hi, the problem is that when doing the search, if the found string is outside the screen it requires to scroll, and the screenLineCount is invalid. I did a fix in FirstLine class with the attached patch but I think it is not the good solution so I don't apply it now, I have to investigate more File Added: patch_1990960.patch ---------------------------------------------------------------------- Comment By: Matthieu Casanova (kpouer) Date: 2008-06-12 16:04 Message: Logged In: YES user_id=285591 Originator: NO Hi, that's a nice bug report, thanks it helps. I started some tests, in fact it happens when the test file is at least 2 lines longer than the screen line count ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=300588&aid=1990960&group_id=588 |