From 2e8ead08dc0f84230a3382723b6c68d818c1d481 Mon Sep 17 00:00:00 2001 From: benfry Date: Fri, 10 Nov 2006 17:32:38 +0000 Subject: [PATCH] improving indent/outdent and general format and key binding issues --- app/EditorListener.java | 36 +++++++++++++++++++++++++++++ app/Runner.java | 1 + app/syntax/JEditTextArea.java | 6 ++--- app/syntax/PdeTextAreaDefaults.java | 28 ++++++++++++++-------- build/shared/revisions.txt | 9 ++++++++ core/todo.txt | 22 ++++++++++-------- todo.txt | 29 +++++++++++++++++++++-- 7 files changed, 106 insertions(+), 25 deletions(-) diff --git a/app/EditorListener.java b/app/EditorListener.java index 57ab1ca9a..a146f1894 100644 --- a/app/EditorListener.java +++ b/app/EditorListener.java @@ -286,7 +286,14 @@ public class EditorListener { origIndex += offset; // ARGH!#(* WINDOWS#@($* */ + // if the previous thing is a brace (whether prev line or + // up farther) then the correct indent is the number of spaces + // on that line + 'indent'. + // if the previous line is not a brace, then just use the + // identical indentation to the previous line + // calculate the amount of indent on the previous line + // this will be used *only if the prev line is not an indent* int spaceCount = calcSpaceCount(origIndex, contents); // If the last character was a left curly brace, then indent. @@ -302,6 +309,9 @@ public class EditorListener { if (index2 != -1) { // still won't catch a case where prev stuff is a comment if (contents[index2] == '{') { + // intermediate lines be damned, + // use the indent for this line instead + spaceCount = calcSpaceCount(index2, contents); spaceCount += tabSize; } } @@ -318,6 +328,13 @@ public class EditorListener { extraCount++; index++; } + int braceCount = 0; + while ((index < contents.length) && (contents[index] != '\n')) { + if (contents[index] == '}') { + braceCount++; + } + index++; + } // hitting return on a line with spaces *after* the caret // can cause trouble. for 0099, was ignoring the case, but this is @@ -331,6 +348,12 @@ public class EditorListener { //if (spaceCount < 0) spaceCount = 0; //System.out.println("extraCount is " + extraCount); + // now, check to see if the current line contains a } and if so, + // outdent again by indent + //if (braceCount > 0) { + //spaceCount -= 2; + //} + if (spaceCount < 0) { // for rev 0122, actually delete extra space //textarea.setSelectionStart(origIndex + 1); @@ -341,6 +364,19 @@ public class EditorListener { textarea.setSelectedText(insertion); } + // not gonna bother handling more than one brace + if (braceCount > 0) { + int sel = textarea.getSelectionStart(); + textarea.select(sel - tabSize, sel); + String s = Editor.EMPTY.substring(0, tabSize); + // if these are spaces that we can delete + if (textarea.getSelectedText().equals(s)) { + textarea.setSelectedText(""); + } else { + textarea.select(sel, sel); + } + } + // mark this event as already handled event.consume(); return true; diff --git a/app/Runner.java b/app/Runner.java index 214c94645..73669c769 100644 --- a/app/Runner.java +++ b/app/Runner.java @@ -174,6 +174,7 @@ public class Runner implements MessageConsumer { //params.add("-Xint"); // interpreted mode //params.add("-Xprof"); // profiler + //params.add("-Xaprof"); // allocation profiler //params.add("-Xrunhprof:cpu=samples"); // old-style profiler String options = Preferences.get("run.options"); diff --git a/app/syntax/JEditTextArea.java b/app/syntax/JEditTextArea.java index c13415995..b54e9bf28 100644 --- a/app/syntax/JEditTextArea.java +++ b/app/syntax/JEditTextArea.java @@ -2154,8 +2154,7 @@ public class JEditTextArea extends JComponent // If the user clicked on a non-letter char, // we select the surrounding non-letters - boolean selectNoLetter = (!Character - .isLetterOrDigit(ch) + boolean selectNoLetter = (!Character.isLetterOrDigit(ch) && noWordSep.indexOf(ch) == -1); int wordStart = 0; @@ -2173,8 +2172,7 @@ public class JEditTextArea extends JComponent for(int i = offset; i < lineText.length(); i++) { ch = lineText.charAt(i); - if(selectNoLetter ^ (!Character - .isLetterOrDigit(ch) && + if(selectNoLetter ^ (!Character.isLetterOrDigit(ch) && noWordSep.indexOf(ch) == -1)) { wordEnd = i; diff --git a/app/syntax/PdeTextAreaDefaults.java b/app/syntax/PdeTextAreaDefaults.java index 673f87652..02dbc2b7a 100644 --- a/app/syntax/PdeTextAreaDefaults.java +++ b/app/syntax/PdeTextAreaDefaults.java @@ -32,25 +32,33 @@ public class PdeTextAreaDefaults extends TextAreaDefaults { public PdeTextAreaDefaults() { inputHandler = new DefaultInputHandler(); - inputHandler.addDefaultKeyBindings(); + //inputHandler.addDefaultKeyBindings(); // 0122 // use option on mac for things that are ctrl on windows/linux String mod = Base.isMacOS() ? "A" : "C"; - inputHandler.addKeyBinding("S+BACK_SPACE", InputHandler.BACKSPACE); - inputHandler.addKeyBinding("S+DELETE", InputHandler.DELETE); + // right now, ctrl-up/down is select up/down, but mod should be + // used instead, because the mac expects it to be option(alt) inputHandler.addKeyBinding("BACK_SPACE", InputHandler.BACKSPACE); inputHandler.addKeyBinding("DELETE", InputHandler.DELETE); + + //inputHandler.addKeyBinding("S+BACK_SPACE", InputHandler.BACKSPACE); + // for 0122, shift-backspace is delete + inputHandler.addKeyBinding("S+BACK_SPACE", InputHandler.DELETE); + inputHandler.addKeyBinding("S+DELETE", InputHandler.DELETE); + // the following two were changing for 0122 for better mac/pc compatability inputHandler.addKeyBinding(mod+"+BACK_SPACE", InputHandler.BACKSPACE_WORD); inputHandler.addKeyBinding(mod+"+DELETE", InputHandler.DELETE_WORD); - inputHandler.addKeyBinding("ENTER", InputHandler.INSERT_BREAK); - inputHandler.addKeyBinding("TAB", InputHandler.INSERT_TAB); + // handled by listener, don't bother here + //inputHandler.addKeyBinding("ENTER", InputHandler.INSERT_BREAK); + //inputHandler.addKeyBinding("TAB", InputHandler.INSERT_TAB); inputHandler.addKeyBinding("INSERT", InputHandler.OVERWRITE); - inputHandler.addKeyBinding("C+\\", InputHandler.TOGGLE_RECT); + // disabling for 0122, not sure what this does + //inputHandler.addKeyBinding("C+\\", InputHandler.TOGGLE_RECT); // beginning and ending of the current line /* @@ -70,13 +78,13 @@ public class PdeTextAreaDefaults extends TextAreaDefaults { if (Base.isMacOS()) { inputHandler.addKeyBinding("M+LEFT", InputHandler.HOME); inputHandler.addKeyBinding("M+RIGHT", InputHandler.END); - inputHandler.addKeyBinding("M+S+LEFT", InputHandler.SELECT_HOME); // 0122 - inputHandler.addKeyBinding("M+S+RIGHT", InputHandler.SELECT_END); // 0122 + inputHandler.addKeyBinding("MS+LEFT", InputHandler.SELECT_HOME); // 0122 + inputHandler.addKeyBinding("MS+RIGHT", InputHandler.SELECT_END); // 0122 } else { inputHandler.addKeyBinding("C+LEFT", InputHandler.HOME); // 0122 inputHandler.addKeyBinding("C+RIGHT", InputHandler.END); // 0122 - inputHandler.addKeyBinding("C+S+HOME", InputHandler.SELECT_HOME); // 0122 - inputHandler.addKeyBinding("C+S+END", InputHandler.SELECT_END); // 0122 + inputHandler.addKeyBinding("CS+HOME", InputHandler.SELECT_HOME); // 0122 + inputHandler.addKeyBinding("CS+END", InputHandler.SELECT_END); // 0122 } inputHandler.addKeyBinding("PAGE_UP", InputHandler.PREV_PAGE); diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 1ebbe77f3..a83b0e0e4 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -11,6 +11,15 @@ ABOUT REV 0122 - XX November 2006 [ bug fixes ] ++ Lots of work done to improve the formatting, and also make the + key combinations work more appropriately for the various platforms. + For instance, HOME and END keys now move to the beginning or end + of the document, while ctrl-left and right (cmd-left and right on mac) + moves to the beginning or the end of a line. Outdenting when a brace + is used and some other quirks have been ironed out more. + Shift-backspace now also produces 'delete', which is a useful thing + found in many programming text editors. + + Forgot to mention, there was a fix added in revision 0120 that prevented files dragged into a sketch from bouncing back to the desktop on Mac OS X. (It formerly gave the impression that the diff --git a/core/todo.txt b/core/todo.txt index 8f5018292..c89ab2d8c 100644 --- a/core/todo.txt +++ b/core/todo.txt @@ -7,7 +7,19 @@ _ test this out for a bit _ though that's awkward b/c colors always RGB _ http://processing.org/discourse/yabb_beta/YaBB.cgi?board=Suggestions;action=display;num=1160096087 -_ http://dev.processing.org/bugs/show_bug.cgi?id=428 +fixed earlier, bug cleaning +X gray background in pdf (using both gl and p3d) +X http://dev.processing.org/bugs/show_bug.cgi?id=324 +X verified as fixed in 0122 + +_ using gl, lines don't show up in pdf with record (they're ok with p3d) +_ http://dev.processing.org/bugs/show_bug.cgi?id=325 + +_ tint() and noTint() switching problem in P2D +_ this should be a quick fix +_ http://dev.processing.org/bugs/show_bug.cgi?id=222 +_ ARGB problems with createGraphics +_ http://dev.processing.org/bugs/show_bug.cgi?id=428 _ related to the fill bugs: when fill is identical, no fill applied _ actually tint() should take over for fill as per-vertex color _ when textured images are being used @@ -185,11 +197,6 @@ _ lines will occlude tris and vice versa _ will need to split each based on the other _ sort issues will affect both -_ gray background in pdf (using both gl and p3d) -_ http://dev.processing.org/bugs/show_bug.cgi?id=324 -_ using gl, lines don't show up in pdf with record (they're ok with p3d) -_ http://dev.processing.org/bugs/show_bug.cgi?id=325 - _ pixel operations are broken in opengl _ get(), set(), copy(), blend(), loadPixels, updatePixels() _ set(x, y, image) y reversed in openGL @@ -274,9 +281,6 @@ _ dataFolder() might be flawed b/c it's referring to contents of jar file _ for input, better to use openStream _ clear up the documentation on this -_ tint() and noTint() switching problem in P2D -_ http://dev.processing.org/bugs/show_bug.cgi?id=222 - _ add texture support to recordShapesRaw (this might be pretty obscure...) _ STROKE_WEIGHT field in PGraphics3 is a disaster, because it's an int diff --git a/todo.txt b/todo.txt index 5ccda5edd..548f4c00f 100644 --- a/todo.txt +++ b/todo.txt @@ -1,5 +1,27 @@ 0122 pde X improve editor listener to not add so many extraneous indents +X with text selected, hitting left or right arrow should move to beginning/end +X right now, it deselects the text and moves over one char +X http://dev.processing.org/bugs/show_bug.cgi?id=349 +X cmd-shift-left and cmd-shift right should select the entire line +X cmd-left and cmd-right move back and forth properly +o option for behavior of HOME and END +X right now goes to begin/end of line.. should be begin/end of file? +X change to begin/end of file, and use cmd or alt, based on platform +_ other quirks with handling of keyboard shortcuts? +_ http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGUserInput/chapter_11_section_3.html#//apple_ref/doc/uid/TP30000361-TP22 + +_ when running externally, set window frame title to the sketch name +_ is this only a problem on macosx? + +fixed earlier or wontfix +X double-click only selects part of underscored word +X http://dev.processing.org/bugs/show_bug.cgi?id=261 +X this is actually a feature + +_ when drawing large video, the two triangles for the rect are out of sync +_ only shows up in P3D + libraries _ add control for dependencies (i.e. svg needs xml), needed for export @@ -57,6 +79,8 @@ _ also something i forgot to add to the opengl faq stuff _ move the bugs section of the troubleshooting page to dev.processing.org/bugs _ search for ALL in the bugs db turns up: http://dev.processing.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED +http://dev.processing.org/bugs/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED +_ http://dev.processing.org/bugs/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&query_format=advanced&order=bugs.priority,bugs.priority%2Cbugs.resolution%2Cbugs.bug_id&query_based_on= _ add note to bugs db asking to please use archive sketch and attach _ make a web page that describes how to use the bugs db _ don't change the bug subject/summary text @@ -404,9 +428,10 @@ _ http://processing.org/bugs/show_bug.cgi?id=51 _ code coloring is imperfect because it's not based on a parser _ i.e. mousePressed() is red but mouseMoved() is brown _ http://dev.processing.org/bugs/show_bug.cgi?id=113 -_ quirks in selection and arrow keys +_ clicking i-- ) between -- and ) will select "-- )" +_ in eclipse, it looks to see which is closest and selects that +_ need to check behavior for word and bbedit _ http://dev.processing.org/bugs/show_bug.cgi?id=348 -_ http://dev.processing.org/bugs/show_bug.cgi?id=349 _ implement emacs keybindings (list is at the bug report) _ http://dev.processing.org/bugs/show_bug.cgi?id=401