From 355d40ae76fb177abfb80a9e5000ca4841cca6dd Mon Sep 17 00:00:00 2001 From: "s17t.net" Date: Sun, 19 Aug 2012 23:34:40 +0200 Subject: [PATCH 1/7] Added build/{windows,linux}/work to ignore. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8a4a63efc..d5f0a9780 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ hardware/arduino/bootloaders/caterina_LUFA/Caterina.elf hardware/arduino/bootloaders/caterina_LUFA/Caterina.eep hardware/arduino/bootloaders/caterina_LUFA/.dep/ .gitignore -build/windows/work/ \ No newline at end of file +build/windows/work/ +build/linux/work/ From 8a1cf335ad9ffe3e2f2a2b2214f1aea465818808 Mon Sep 17 00:00:00 2001 From: "s17t.net" Date: Mon, 20 Aug 2012 00:05:02 +0200 Subject: [PATCH 2/7] Introduce ObjectUtils class --- app/src/processing/app/ObjectUtil.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 app/src/processing/app/ObjectUtil.java diff --git a/app/src/processing/app/ObjectUtil.java b/app/src/processing/app/ObjectUtil.java new file mode 100644 index 000000000..6dbeedbfb --- /dev/null +++ b/app/src/processing/app/ObjectUtil.java @@ -0,0 +1,13 @@ +package processing.app; + +public class ObjectUtil { + + public static boolean isNull(Object o) { + return o == null; + } + + public static T defaultIfEmpty(T obj, T defaultObj) { + if (isNull(obj)) return defaultObj; + return obj; + } +} From ab2d83fc80c4d2214cdf935dcfe21a0af962581b Mon Sep 17 00:00:00 2001 From: "s17t.net" Date: Mon, 20 Aug 2012 00:08:17 +0200 Subject: [PATCH 3/7] Index reference page is shown when no text selected if clicking 'Find in reference' command. --- app/src/processing/app/Editor.java | 38 ++++++++++++++---------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 30d05c73f..7fe460944 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -27,6 +27,7 @@ import processing.app.syntax.*; import processing.app.tools.*; import processing.core.*; import static processing.app.I18n._; +import static processing.app.ObjectUtil.defaultIfEmpty; import java.awt.*; import java.awt.datatransfer.*; @@ -1073,9 +1074,10 @@ public class Editor extends JFrame implements RunnerListener { item = newJMenuItemShift(_("Find in Reference"), 'F'); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - if (textarea.isSelectionActive()) { - handleFindReference(); - } +// if (textarea.isSelectionActive()) { +// handleFindReference(); +// } + handleFindReference(); } }); menu.add(item); @@ -1809,24 +1811,20 @@ public class Editor extends JFrame implements RunnerListener { } - protected void handleFindReference() { - String text = textarea.getSelectedText().trim(); + protected void handleFindReference() { + String text = defaultIfEmpty(textarea.getSelectedText(), "").trim(); - if (text.length() == 0) { - statusNotice(_("First select a word to find in the reference.")); - - } else { - String referenceFile = PdeKeywords.getReference(text); - //System.out.println("reference file is " + referenceFile); - if (referenceFile == null) { - statusNotice( - I18n.format(_("No reference available for \"{0}\""), text) - ); - } else { - Base.showReference(I18n.format(_("{0}.html"), referenceFile)); - } - } - } + if (text.length() == 0) { + Base.showReference(); + } else { + String referenceFile = PdeKeywords.getReference(text); + if (referenceFile == null) { + statusNotice(I18n.format(_("No reference available for \"{0}\""), text)); + } else { + Base.showReference(I18n.format(_("{0}.html"), referenceFile)); + } + } + } // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . From 1691367fd93133bdde15be71f73fb2a39b68b995 Mon Sep 17 00:00:00 2001 From: "s17t.net" Date: Mon, 20 Aug 2012 00:13:55 +0200 Subject: [PATCH 4/7] Remove unused status notice message. --- app/src/processing/app/Resources_en.properties | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/processing/app/Resources_en.properties b/app/src/processing/app/Resources_en.properties index fde0da4d6..119356cf9 100644 --- a/app/src/processing/app/Resources_en.properties +++ b/app/src/processing/app/Resources_en.properties @@ -178,9 +178,6 @@ #: Editor.java:1255 !Use\ Selection\ For\ Find= -#: Editor.java:1816 -!First\ select\ a\ word\ to\ find\ in\ the\ reference.= - #: Editor.java:1823 #, java-format !No\ reference\ available\ for\ "{0}"= From 4a09287c4555e90a3d0c0b7282ae193207d0c62e Mon Sep 17 00:00:00 2001 From: "s17t.net" Date: Thu, 23 Aug 2012 08:32:22 +0200 Subject: [PATCH 5/7] The 'find in reference' will look for current token and open respective doc page if exists. --- app/src/processing/app/Editor.java | 51 ++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 7fe460944..374872b08 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -1812,17 +1812,48 @@ public class Editor extends JFrame implements RunnerListener { protected void handleFindReference() { - String text = defaultIfEmpty(textarea.getSelectedText(), "").trim(); - - if (text.length() == 0) { - Base.showReference(); - } else { - String referenceFile = PdeKeywords.getReference(text); - if (referenceFile == null) { - statusNotice(I18n.format(_("No reference available for \"{0}\""), text)); - } else { - Base.showReference(I18n.format(_("{0}.html"), referenceFile)); + String text = ""; + if( textarea.getSelectedText() != null ) + text = textarea.getSelectedText().trim(); + + try { + int current = textarea.getCaretPosition(); + int startOffset = 0; + int endIndex = current; + String tmp = textarea.getDocument().getText(current,1); + // TODO probably a regexp that matches Arduino lang special chars already exists. + String regexp = "[\\s\\n();\\\\.!='\\[\\]{}]"; + + while(!tmp.matches(regexp)) { + endIndex++; + tmp = textarea.getDocument().getText(endIndex,1); } + // For some reason document index start at 2. + //if( current - start < 2 ) return; + + tmp = ""; + while(!tmp.matches(regexp)) { + startOffset++; + if( current - startOffset < 0) { + tmp = textarea.getDocument().getText(0, 1); + break; + } + else + tmp = textarea.getDocument().getText(current - startOffset, 1); + } + startOffset--; + + int length = endIndex - current + startOffset; + text = textarea.getDocument().getText(current - startOffset, length); + } catch (BadLocationException bl ) { + bl.printStackTrace(); + } + + String referenceFile = PdeKeywords.getReference(text); + if (referenceFile == null) { + statusNotice(I18n.format(_("No reference available for \"{0}\""), text)); + } else { + Base.showReference(I18n.format(_("{0}.html"), referenceFile)); } } From 36b643d79f9a235172f77b419f0eff96467d65d6 Mon Sep 17 00:00:00 2001 From: "s17t.net" Date: Thu, 23 Aug 2012 08:33:33 +0200 Subject: [PATCH 6/7] Removed objectutil. --- app/src/processing/app/ObjectUtil.java | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 app/src/processing/app/ObjectUtil.java diff --git a/app/src/processing/app/ObjectUtil.java b/app/src/processing/app/ObjectUtil.java deleted file mode 100644 index 6dbeedbfb..000000000 --- a/app/src/processing/app/ObjectUtil.java +++ /dev/null @@ -1,13 +0,0 @@ -package processing.app; - -public class ObjectUtil { - - public static boolean isNull(Object o) { - return o == null; - } - - public static T defaultIfEmpty(T obj, T defaultObj) { - if (isNull(obj)) return defaultObj; - return obj; - } -} From 0a0b573d7cc8e1a155ca8309aa9526a87628c3b1 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Thu, 23 Aug 2012 10:54:24 -0400 Subject: [PATCH 7/7] Removing import of deleted objectutil class. --- app/src/processing/app/Editor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 374872b08..dbd6f37db 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -27,7 +27,6 @@ import processing.app.syntax.*; import processing.app.tools.*; import processing.core.*; import static processing.app.I18n._; -import static processing.app.ObjectUtil.defaultIfEmpty; import java.awt.*; import java.awt.datatransfer.*;