From: SourceForge.net <no...@so...> - 2007-09-25 12:57:57
|
Bugs item #1724940, was opened at 2007-05-24 18:02 Message generated for change (Comment added) made by shlomy You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=1724940&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: Accepted Priority: 5 Private: No Submitted By: Scott LeBaron (cheddarmakerman) Assigned to: Shlomy Reinstein (shlomy) Summary: typing in multiple select Initial Comment: If I highlight multiple selections of text in the text area and then begin typing, only the first character of what I type is inserted in the selected areas (except for where the cursor ended up after making the selection). For example if I have the text: <body> <p> Some Text </p> </body> and I highlight both p's in the <p> tags and then type "div" I end up with: <body> <d> Some Text </div> </body> I've attached a screenshot. ---------------------------------------------------------------------- >Comment By: Shlomy Reinstein (shlomy) Date: 2007-09-25 14:57 Message: Logged In: YES user_id=1477607 Originator: NO Regarding the last sentence: When you type in multiple selection, it doesn't matter where the caret is. The selection is replaced by what you type, the current caret position is not affected (unless the caret is on the same line as one of the selections, and it is moved by the selection length being changed). E.g. if you put the caret on a line without a selection and type something, whatever you typed will replace the selection but not affect the caret line. I'm not sure what you suggested is the desired behavior; it has its advantages and disadvantages. This use case is pretty rare, I think, so unless you're pretty confident that what you suggested is the desired behavior, I vote for keeping the implementation as-is for now until someone complains. What do you say? ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2007-07-02 02:28 Message: Logged In: YES user_id=935841 Originator: NO I think it should keep track of hte caretpos of the previously inserted character, and if it is not current caret - 1, it should clear the current selection, and just insert the character in its usual place. The act of moving the caret away from the selection should not cancel selection, because you might move it back there again afterwards. ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2007-07-01 15:56 Message: Logged In: YES user_id=1477607 Originator: NO Ok, thinking about it again, the answer is: Definitely not. It should be okay for a user to enter multiple selection mode, and use only the keyboard to make the selections. The user may scroll through the entire buffer with the keyboard for this, and the caret may end up in a position that is outside of any of the selections. Certainly, there's no reason for the user to take back the caret to one of the selections just in order to replace them (or otherwise typing will cancel them). What we can do, however, is that after typing one or more characters to replace the selections with, moving the caret cancels the selection. Does it make sense? ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2007-07-01 11:44 Message: Logged In: YES user_id=1477607 Originator: NO I don't know, it's a good question. What do others think of that? Maybe we should ask this on jedit-users? For me, it's enough that Esc cancels the selection. Another way to cancel the selection is exit multiple selection mode and then placing the caret somewhere outside the selection. ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2007-07-01 03:45 Message: Logged In: YES user_id=935841 Originator: NO There is another small bug I noticed. If I select 3 areas, start typing into one of them, it does replace the other 3 fine, but then, if I move my cursor to somewhere outside the selection, my keys typed still end up being inserted into the multiple selections. Perhaps typing outside a multiple selection should clear the selection, or something? ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2007-07-01 00:35 Message: Logged In: YES user_id=935841 Originator: NO Committed to 9888. Thanks, shlomy! ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2007-06-28 23:11 Message: Logged In: YES user_id=1477607 Originator: NO I've attached a patch that fixes this bug. It's a tiny fix (two line change), but please verify it before committing, as I'm not sure this is the right way to do it. It simply avoids removing the selection in BufferHandler.contentRemoved() if there's more than one. It works similar to rectangular selection - after the first character is typed, all the selections become 0-width selections, so as you continue to type, this 0-width selections just move forward. But you need to press <esc> in order to clear the selections when done replacing them with the text. File Added: patch ---------------------------------------------------------------------- Comment By: javacorner (javacorner) Date: 2007-06-27 23:36 Message: Logged In: YES user_id=1624782 Originator: NO I digged into the code.... The problem is that "Multiple Selections" are NOT handled by their own org.gjt.sp.jedit.textarea.Selection.something class (unlike "Rectangular Selections" which are handled by the Selection.Rect). Multiple Selections are simply array of Range selection, (IMO dirtily) managed by org.gjt.sp.jedit.textarea.TextArea class. They deselect themselves after typing. I tried some workarounds (including using Session.Rect arrays) to let the selection active, but without success. Maybe I'll try again in future, maybe implementing a Selection.Multi class (which should be more easy to mantain, IMO). What do the developers think about? Bye, ;Davide ---------------------------------------------------------------------- Comment By: javacorner (javacorner) Date: 2007-06-15 19:55 Message: Logged In: YES user_id=1624782 Originator: NO Yes, it happens always, also when the "multiple selection" is done in a way that the selection area is a rectangular one (in such a case, of course, if the same selection has been done in "rectangular mode", it works as expected). The fact is that in "multiple selection", after the first character is typed the entire selection disappear (unlike in rectangular mode, when a "somethig after" remains selected). Sound interesting, I'll look at how jEdit handle multiple selections ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=1724940&group_id=588 |