From 8891134fd5bd70a65beb9fce81e3f44dbc062447 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 31 May 2015 13:53:11 +0100 Subject: Completion page; initial version. --- pages/completion_engines.coffee | 2 ++ pages/completion_engines.html | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 pages/completion_engines.coffee create mode 100644 pages/completion_engines.html (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee new file mode 100644 index 00000000..38487200 --- /dev/null +++ b/pages/completion_engines.coffee @@ -0,0 +1,2 @@ + +console.log "hello" diff --git a/pages/completion_engines.html b/pages/completion_engines.html new file mode 100644 index 00000000..42c60e31 --- /dev/null +++ b/pages/completion_engines.html @@ -0,0 +1,30 @@ + + + Vimium Search Completion + + + + + + + + +
+
Vimium Search Completion
+

+ Search completion is available for custom search engines whose search URL matches one of Vimium's + built-in completion engines. Search completion is not available for the default search engine. +

+

+ Custom search engines are configured on the options page. +

+
Available Completion Engines
+

+ The following completion engines are available. +

+ {{{ENGINES}}} +
+

+
+ + -- cgit v1.2.3 From 01a6df1f155b8b068925cc813d663457edc860e8 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 31 May 2015 14:04:28 +0100 Subject: Re-write class with inheritence. --- pages/completion_engines.coffee | 1 - 1 file changed, 1 deletion(-) (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index 38487200..8b137891 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -1,2 +1 @@ -console.log "hello" -- cgit v1.2.3 From 4ce5022da5b79fe038f4c34dc27675b219d9f979 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 31 May 2015 15:02:37 +0100 Subject: Completion page; functional version. --- pages/completion_engines.coffee | 19 +++++++++++++++++++ pages/completion_engines.css | 15 +++++++++++++++ pages/completion_engines.html | 14 ++++++++------ pages/options.css | 2 +- pages/options.html | 5 +++-- 5 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 pages/completion_engines.css (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index 8b137891..aa8bb6cc 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -1 +1,20 @@ +DomUtils.documentReady -> + html = "" + for engine in CompletionEngines[0...CompletionEngines.length-1] + engine = new engine + html += "

#{engine.constructor.name}

\n" + html += "
" + if engine.regexps + html += "
"
+      for re in engine.regexps
+        re = re.toString().replace(/^\//, '').replace /\/$/, ''
+        html += "#{re}\n"
+      html += "
" + if engine.prefix + html += "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" + html += "
" + + document.getElementById("engineList").innerHTML = html + + diff --git a/pages/completion_engines.css b/pages/completion_engines.css new file mode 100644 index 00000000..3e3aab1f --- /dev/null +++ b/pages/completion_engines.css @@ -0,0 +1,15 @@ + +div#wrapper +{ + width: 730px; +} + +h4, h5 +{ + color: #777; +} + +div.engine +{ + margin-left: 20px; +} diff --git a/pages/completion_engines.html b/pages/completion_engines.html index 42c60e31..69158c78 100644 --- a/pages/completion_engines.html +++ b/pages/completion_engines.html @@ -3,8 +3,10 @@ Vimium Search Completion + + @@ -13,17 +15,17 @@
Vimium Search Completion

Search completion is available for custom search engines whose search URL matches one of Vimium's - built-in completion engines. Search completion is not available for the default search engine. + built-in completion engines; that is, the search URL matches one of the regular expressions below. + Search completion is not available for the default search engine.

- Custom search engines are configured on the options page. + Custom search engines can be configured on the options + page.
+ Further information is available on the wiki.

Available Completion Engines

- The following completion engines are available. -

- {{{ENGINES}}} -
+

diff --git a/pages/options.css b/pages/options.css index ffb348c6..282a523b 100644 --- a/pages/options.css +++ b/pages/options.css @@ -114,7 +114,7 @@ input#scrollStepSize, input#omniSearchWeight { } textarea#userDefinedLinkHintCss, textarea#keyMappings, textarea#searchEngines { width: 100%;; - min-height: 130px; + min-height: 140px; white-space: nowrap; } input#previousPatterns, input#nextPatterns { diff --git a/pages/options.html b/pages/options.html index b14c454f..7b66efde 100644 --- a/pages/options.html +++ b/pages/options.html @@ -44,7 +44,7 @@ unmap j unmapAll " this is a comment # this is also a comment - Show available commands. + Show available commands. @@ -61,7 +61,8 @@ a: http://a.com/?q=%s b: http://b.com/?q=%s description " this is a comment # this is also a comment - %s is replaced with the search terms. + %s is replaced with the search terms.
+ For search completion, see here. -- cgit v1.2.3 From eabf8f9df81a511c971c2b3cb7ab1cedf476aff9 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sun, 31 May 2015 15:26:50 +0100 Subject: Completion page; tidy up regular expressions. --- pages/completion_engines.coffee | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index aa8bb6cc..dfd94de6 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -1,4 +1,10 @@ +cleanUpRegexp = (re) -> + re.toString() + .replace /^\//, '' + .replace /\/$/, '' + .replace /\\\//g, "/" + DomUtils.documentReady -> html = "" for engine in CompletionEngines[0...CompletionEngines.length-1] @@ -7,9 +13,7 @@ DomUtils.documentReady -> html += "
" if engine.regexps html += "
"
-      for re in engine.regexps
-        re = re.toString().replace(/^\//, '').replace /\/$/, ''
-        html += "#{re}\n"
+      html += "#{cleanUpRegexp re}\n" for re in engine.regexps
       html += "
" if engine.prefix html += "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" -- cgit v1.2.3 From 11967b0bbd4842777ec881673766c8fbc24016e0 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Wed, 3 Jun 2015 06:36:34 +0100 Subject: Completion page; add example URLs to page. This allows the user to copy and paste search URLs from this page into the options page. --- pages/completion_engines.coffee | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index dfd94de6..ecc55a4f 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -17,6 +17,10 @@ DomUtils.documentReady -> html += "" if engine.prefix html += "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" + if engine.example + html += "

" + html += "Example search URL: \"#{engine.example}\"." + html += "

" html += "
" document.getElementById("engineList").innerHTML = html -- cgit v1.2.3 From 3dfa2776fac56536f85e8ed196db6995468f368c Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Wed, 3 Jun 2015 06:54:37 +0100 Subject: Completion page; add example DECLARATIONS to page. Instead of just giving an example search URL, we can give the actual declaration (which the user can copy, paste and tweak). --- pages/completion_engines.coffee | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index ecc55a4f..9fd5bbe0 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -17,9 +17,13 @@ DomUtils.documentReady -> html += "" if engine.prefix html += "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" - if engine.example + if engine.exampleSearchUrl and engine.exampleKeyword + engine.exampleDescription ||= engine.constructor.name html += "

" - html += "Example search URL: \"#{engine.example}\"." + html += "Example:" + html += "

"
+      html += "#{engine.exampleKeyword}: #{engine.exampleSearchUrl} #{engine.exampleDescription}"
+      html += "
" html += "

" html += "" -- cgit v1.2.3 From 97e5da6cbdcf1b5cf4f80cf550fc26c1ce194a3e Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Thu, 4 Jun 2015 05:30:13 +0100 Subject: Completion page; avoid building many separate strings. --- pages/completion_engines.coffee | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index 9fd5bbe0..94381fb5 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -6,27 +6,27 @@ cleanUpRegexp = (re) -> .replace /\\\//g, "/" DomUtils.documentReady -> - html = "" + html = [] for engine in CompletionEngines[0...CompletionEngines.length-1] engine = new engine - html += "

#{engine.constructor.name}

\n" - html += "
" + html.push "

#{engine.constructor.name}

\n" + html.push "
" if engine.regexps - html += "
"
-      html += "#{cleanUpRegexp re}\n" for re in engine.regexps
-      html += "
" + html.push "
"
+      html.push "#{cleanUpRegexp re}\n" for re in engine.regexps
+      html.push "
" if engine.prefix - html += "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" + html.push "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" if engine.exampleSearchUrl and engine.exampleKeyword engine.exampleDescription ||= engine.constructor.name - html += "

" - html += "Example:" - html += "

"
-      html += "#{engine.exampleKeyword}: #{engine.exampleSearchUrl} #{engine.exampleDescription}"
-      html += "
" - html += "

" - html += "
" + html.push "

" + html.push "Example:" + html.push "

"
+      html.push "#{engine.exampleKeyword}: #{engine.exampleSearchUrl} #{engine.exampleDescription}"
+      html.push "
" + html.push "

" + html.push "
" - document.getElementById("engineList").innerHTML = html + document.getElementById("engineList").innerHTML = html.join "" -- cgit v1.2.3 From f5db9ea1dc8d23dff732dd3345bf85798d64f1e9 Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sat, 6 Jun 2015 06:18:35 +0100 Subject: Re-work completions: initial refactor. The original completion-engine interface was based on three functions. With some experience, it seems there is a pattern involving explicit regular expressions which is used by all actual engine implementations. This is a refactoring to make those regular expressions explicit (and required), and is a first step towards adding additional fucntionality. This also simplifies the completion cache key (use JSON instead of some weird hash). --- pages/completion_engines.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index 94381fb5..d744b3b3 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -17,12 +17,12 @@ DomUtils.documentReady -> html.push "" if engine.prefix html.push "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" - if engine.exampleSearchUrl and engine.exampleKeyword - engine.exampleDescription ||= engine.constructor.name + if engine.example.searchUrl and engine.example.keyword + engine.example.description ||= engine.constructor.name html.push "

" html.push "Example:" html.push "

"
-      html.push "#{engine.exampleKeyword}: #{engine.exampleSearchUrl} #{engine.exampleDescription}"
+      html.push "#{engine.example.keyword}: #{engine.example.searchUrl} #{engine.example.description}"
       html.push "
" html.push "

" html.push "" -- cgit v1.2.3 From 4eda19de339212f86a9b008a4f3142a61d62829e Mon Sep 17 00:00:00 2001 From: Stephen Blott Date: Sat, 6 Jun 2015 12:01:23 +0100 Subject: Re-work completions: extend engine wrapper to handle prefixes. This commit contains the bulk og the material changes for which the previous commits established the basis. 1) Add a general framework for detecting query prefixes in search URLs, adding them to query sent to the completion engine, and stripping them from the resulting suggestions. This allows the user to have a search engine... j: http://www.google.com/search?q=javascript+%s Javascript and have the prefix "javascript" included (automatically) in queries sent to completion engines, which results in substantially better suggestions. 2) Re-work completion for Google Maps in a simpler form. --- pages/completion_engines.coffee | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'pages') diff --git a/pages/completion_engines.coffee b/pages/completion_engines.coffee index d744b3b3..790f2968 100644 --- a/pages/completion_engines.coffee +++ b/pages/completion_engines.coffee @@ -11,12 +11,15 @@ DomUtils.documentReady -> engine = new engine html.push "

#{engine.constructor.name}

\n" html.push "
" + if engine.example.explanation + html.push "

#{engine.example.explanation}

" if engine.regexps + html.push "

" + html.push "Regular expression#{if 1 < engine.regexps.length then 's' else ''}:" html.push "

"
       html.push "#{cleanUpRegexp re}\n" for re in engine.regexps
       html.push "
" - if engine.prefix - html.push "

This uses the general Google completion engine, but adds the prefix \"#{engine.prefix.trim()}\" to the query.

" + html.push "

" if engine.example.searchUrl and engine.example.keyword engine.example.description ||= engine.constructor.name html.push "

" -- cgit v1.2.3