From b16a6005ee8e8946639a2bd6f793ab44a7608d92 Mon Sep 17 00:00:00 2001 From: Alex Devlin Date: Mon, 14 Oct 2013 18:34:37 -0700 Subject: [PATCH 1/3] Modified 'Definitions' search to only return where actual definitions of functions/variables/macros/etc are found --- src/org/opensolaris/opengrok/search/Results.java | 3 ++- src/org/opensolaris/opengrok/search/context/Context.java | 6 ++++-- web/more.jsp | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/org/opensolaris/opengrok/search/Results.java b/src/org/opensolaris/opengrok/search/Results.java index c1545de4ffc..a1721a0dc56 100644 --- a/src/org/opensolaris/opengrok/search/Results.java +++ b/src/org/opensolaris/opengrok/search/Results.java @@ -202,8 +202,9 @@ public static void prettyPrint(Writer out, SearchHelper sh, int start, FileReader r = genre == Genre.PLAIN ? new FileReader(new File(sh.sourceRoot, rpath)) : null; + boolean isDefSearch = (sh.builder.getDefs() != null) ? true : false; sh.sourceContext.getContext(r, out, xrefPrefix, - morePrefix, rpath, tags, true, null); + morePrefix, rpath, tags, true, isDefSearch, null); } } if (sh.historyContext != null) { diff --git a/src/org/opensolaris/opengrok/search/context/Context.java b/src/org/opensolaris/opengrok/search/context/Context.java index 5dd24dc5318..158865d2c3c 100644 --- a/src/org/opensolaris/opengrok/search/context/Context.java +++ b/src/org/opensolaris/opengrok/search/context/Context.java @@ -127,7 +127,7 @@ private void buildQueryAsURI(Map subqueries) { */ public boolean getContext(Reader in, Writer out, String urlPrefix, String morePrefix, String path, Definitions tags, - boolean limit, List hits) { + boolean limit, boolean isDefSearch, List hits) { alt = !alt; if (m == null) { IOUtils.close(in); @@ -250,7 +250,9 @@ public boolean getContext(Reader in, Writer out, String urlPrefix, for (int i = 0; i < m.length; i++) { matchState = m[i].match(token); if (matchState == LineMatcher.MATCHED) { - tokens.printContext(); + if (!isDefSearch) { + tokens.printContext(); + } matchedLines++; //out.write("
Matched " + token + " maxlines = " + matchedLines + "
"); break; diff --git a/web/more.jsp b/web/more.jsp index cec7e646795..807e14ff80b 100644 --- a/web/more.jsp +++ b/web/more.jsp @@ -50,7 +50,7 @@ file="mast.jsp"
<%
             sourceContext.getContext(new FileReader(cfg.getResourceFile()), out,
                 request.getContextPath() + Prefix.XREF_P, null, cfg.getPath(),
-                null, false, null);
+                null, false, false, null);
     %>
<% } From 7987f705598ba04dbe7c9b67df70bd7ffc55164e Mon Sep 17 00:00:00 2001 From: Alex Devlin Date: Tue, 15 Oct 2013 15:38:48 -0700 Subject: [PATCH 2/3] Minor bugfix for definitions search change --- src/org/opensolaris/opengrok/search/SearchEngine.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/opensolaris/opengrok/search/SearchEngine.java b/src/org/opensolaris/opengrok/search/SearchEngine.java index f275781868d..921fb7be71c 100644 --- a/src/org/opensolaris/opengrok/search/SearchEngine.java +++ b/src/org/opensolaris/opengrok/search/SearchEngine.java @@ -354,7 +354,7 @@ public void results(int start, int end, List ret) { if (Genre.PLAIN == genre && (source != null)) { hasContext = sourceContext.getContext(new InputStreamReader(new FileInputStream(source + filename)), null, null, null, filename, - tags, nhits > 100, ret); + tags, nhits > 100, false, ret); } else if (Genre.XREFABLE == genre && data != null && summarizer != null) { int l = 0; try (Reader r = RuntimeEnvironment.getInstance().isCompressXref() ? @@ -377,11 +377,11 @@ public void results(int start, int end, List ret) { } } else { OpenGrokLogger.getLogger().log(Level.WARNING, "Unknown genre: {0} for {1}", new Object[]{genre, filename}); - hasContext |= sourceContext.getContext(null, null, null, null, filename, tags, false, ret); + hasContext |= sourceContext.getContext(null, null, null, null, filename, tags, false, false, ret); } } catch (FileNotFoundException exp) { OpenGrokLogger.getLogger().log(Level.WARNING, "Couldn''t read summary from {0} ({1})", new Object[]{filename, exp.getMessage()}); - hasContext |= sourceContext.getContext(null, null, null, null, filename, tags, false, ret); + hasContext |= sourceContext.getContext(null, null, null, null, filename, tags, false, false, ret); } } if (historyContext != null) { From d39e00d3320afd2240a383ce6b505f39936c7960 Mon Sep 17 00:00:00 2001 From: Alex Devlin Date: Thu, 5 Dec 2013 16:19:41 -0800 Subject: [PATCH 3/3] Small tweak to only use new defs search rules if ONLY the defs field is populated, as per tarzanek's concerns --- .../opensolaris/opengrok/search/QueryBuilder.java | 15 +++++++++++++++ src/org/opensolaris/opengrok/search/Results.java | 5 ++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/org/opensolaris/opengrok/search/QueryBuilder.java b/src/org/opensolaris/opengrok/search/QueryBuilder.java index 7cd25e4e134..625d3b48fc3 100644 --- a/src/org/opensolaris/opengrok/search/QueryBuilder.java +++ b/src/org/opensolaris/opengrok/search/QueryBuilder.java @@ -200,6 +200,21 @@ public int getSize() { return queries.size(); } + /** + * Used to tell if this search only has the "definitions" field filled in + * + * @return whether above statement is true or false + */ + public boolean isDefSearch() { + + return ((getQueryText(FULL) == null) && + (getQueryText(REFS) == null) && + (getQueryText(PATH) == null) && + (getQueryText(HIST) == null) && + (getQueryText(DEFS) != null)) + ? true : false; + } + /** * Build a new query based on the query text that has been passed in to this * builder. diff --git a/src/org/opensolaris/opengrok/search/Results.java b/src/org/opensolaris/opengrok/search/Results.java index a1721a0dc56..cb78d5390e0 100644 --- a/src/org/opensolaris/opengrok/search/Results.java +++ b/src/org/opensolaris/opengrok/search/Results.java @@ -202,9 +202,8 @@ public static void prettyPrint(Writer out, SearchHelper sh, int start, FileReader r = genre == Genre.PLAIN ? new FileReader(new File(sh.sourceRoot, rpath)) : null; - boolean isDefSearch = (sh.builder.getDefs() != null) ? true : false; - sh.sourceContext.getContext(r, out, xrefPrefix, - morePrefix, rpath, tags, true, isDefSearch, null); + sh.sourceContext.getContext(r, out, xrefPrefix, morePrefix, + rpath, tags, true, sh.builder.isDefSearch(), null); } } if (sh.historyContext != null) {