From: SourceForge.net <no...@so...> - 2009-02-20 13:25:28
|
Bugs item #1593576, was opened at 2006-11-09 18:41 Message generated for change (Comment added) made by shlomy You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=1593576&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: editor core Group: normal bug Status: Open Resolution: None Priority: 7 Private: No Submitted By: Björn Kautler (vampire0) Assigned to: Nobody/Anonymous (nobody) Summary: Autoindenting should copy exact whitespaces Initial Comment: If autoindenting copies the indentation of last line the indentation should be done the same way it was copied from, e. g. currently if Soft tabs are enabled, always spaces are inserted, even if the previous line is indented with literally tabs or tabs and spaces mixed. The whitespaces should simply be copied from the line that the auto-indenting is taken from. Sorry if this is a dupe, but I have many bugs to post and am too lazy to check them all for dupes currently. :-) OS: Windows XP Java Version: Sun Java 1.5.0_09-b03 jEdit Version: 4.3pre8 ---------------------------------------------------------------------- >Comment By: Shlomy Reinstein (shlomy) Date: 2009-02-20 14:51 Message: I've attached a fixed patch for this bug. Can you check that it works for you? There is only a slight difference between the bug as specified and the patch - the bug indicates that if the indentation is COPIED from the previous line, so should the whitespace. My patch copies the whitespace from the previous line whenever the ideal indentation is the same as the previous line's indentation - but in theory it might be the same not due to copying it from the previous line but due to some other rules. ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2009-02-20 10:51 Message: I disagree. It also matters in other modes. For example, I only use jEdit for C++ and Perl, but I work with source files that are version-controlled, and are the production of other developers who do not use jEdit. Whenever I use the jEdit auto-indent on blocks of code, I often realize, when diff'ing against the base revision, that the indentation of my code is different from the rest of the code, although it should match exactly. So, I find this very useful also for C++. The question is really, whether to: 1. use a global / mode-specific option for that, 2. add something in the mode files to indicate that, or 3. always do that, unconditionally. ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2009-02-20 07:29 Message: Well, if this worked for the Python mode by itself, then I'd be happy. That's where it really matters. For the other modes, I'm not so concerned. ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2009-02-20 06:08 Message: Ok, I checked that patch (that was committed in 9402 and then reverted), and it has several bugs in it. While I can easily fix the bugs in that patch, I am pretty much declined to do it because of several reasons: 1. Although copying the whitespaces from the previous line is very practical (I find it very useful myself), jEdit has quite many features that define the way lines should be indented (global options and mode file rules), and this would break them. Do we always want the requested behavior, or maybe it should be controlled by a new option in Global Options -> Editing, or by something in the mode files? 2. I think the requested behavior, as practical as it is, is incomplete: It refers only to lines that copy the indentation from the previous line. Shouldn't something similar be done for lines with different indentation, that should have the same indentation as some preceding line in the file? e.g. the closing brace of a Java method - should it not indent according to the opening brace? The two lines may be far apart, but if the opening brace was using a non-default indentation, shouldn't the closing brace use the same? ---------------------------------------------------------------------- Comment By: Shlomy Reinstein (shlomy) Date: 2009-02-20 05:13 Message: Well, looking at the SVN history I can see that the patch for this item was committed in version 9402, but then reverted a day later, in 9405, because of a problem it created. So, there should be no change... ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2008-05-27 06:56 Message: Logged In: YES user_id=935841 Originator: NO It seems this autoindenting behavior can be overridden by certain edit modes? Which modes does it still exhibit this incorrect behavior in? ---------------------------------------------------------------------- Comment By: Björn Kautler (vampire0) Date: 2007-06-09 02:54 Message: Logged In: YES user_id=918212 Originator: YES Sorry, but I can see no change in the behaviour at all ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2007-04-02 20:20 Message: Logged In: YES user_id=935841 Originator: NO Transmitting file data .... Committed revision 9402. ---------------------------------------------------------------------- Comment By: Alan Ezust (ezust) Date: 2007-04-02 19:35 Message: Logged In: YES user_id=935841 Originator: NO Nyte7 Submitted a patch 1687138 for this. I'm testing it now. It seems to be an improvement over the previous behavior. ---------------------------------------------------------------------- Comment By: Björn Kautler (vampire0) Date: 2007-03-17 21:28 Message: Logged In: YES user_id=918212 Originator: YES And how should that solve the problem? This will still indent wrong, because then there are all spaces even if there are tabs in the whitespaces in the line above. ---------------------------------------------------------------------- Comment By: Nyte (nyte7) Date: 2007-03-17 21:24 Message: Logged In: YES user_id=1743088 Originator: NO Then can't we just enable Soft Tabs by default? ---------------------------------------------------------------------- Comment By: daniel hahler (blueyed) Date: 2007-02-27 20:50 Message: Logged In: YES user_id=663176 Originator: NO I have added the same issue before and now marked it as dupe, because here's already more info (http://sourceforge.net/tracker/index.php?aid=1587389). ---------------------------------------------------------------------- Comment By: Joseph Erickson (firstclown) Date: 2007-02-23 00:30 Message: Logged In: YES user_id=18174 Originator: NO Currently that indention is created by JEditBuffer#getIdealIndentForLine(int) which only returns the number of spaces to indent. That is then converted into an indent based on the user's preferences. So if the user has tab = 3 spaces and the previous line is indented 5 "spaces" (any combo of tabs and actual spaces) the auto indent on the next line would be one tab and 2 spaces. What's needed is for an autoindent to get the exact String of whitespace (new function in StandardUtilites?) and then use that as the indentation. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100588&aid=1593576&group_id=588 |