From df6a9a94286e446ef1bca5b478b4acf8aa6d4592 Mon Sep 17 00:00:00 2001 From: Martin Stubenschrott Date: Fri, 21 Nov 2008 00:14:14 +0000 Subject: [PATCH] fixed custom completion styling, now better than ever before, per-item based. Note that hold down after :bmarks results in a sluggish display, I don't think this commit causes this, it's proably a recent regression. --- content/completion.js | 40 +++++++++++++++++++++++++++++++++++++++- content/ui.js | 8 +++----- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/content/completion.js b/content/completion.js index 51148d60..4b54ee83 100644 --- a/content/completion.js +++ b/content/completion.js @@ -813,9 +813,47 @@ function Completion() //{{{ bookmark: function (filter) { + // TODO: move to template.js? + function createHtml(item) + { + var extra = []; + if (item.keyword) + extra.push(['keyword', item.keyword, "hl-Keyword"]); + if (item.tags.length > 0) + extra.push(["tags", item.tags.join(","), "hl-Tag"]); // no space, otherwise it looks strange, since we just have spaces to seperate tags from keywords + + return
    +
  • +
  • {util.clip(item.title || "", 50)}
  • +
  • + {item.url}  + { + !(extra.length) ? "" : + + ({ + template.map(extra, function (e) + <>{e[0]}: {e[1]}, + <> /* Non-breaking space */) + }) + + } +
  • +
+ } + return { start: 0, - get items() { return bookmarks.get(filter) }, + get items() { + return bookmarks.get(filter).map(function (bmark) { + // temporary, until we have moved all completions to objects + bmark[0] = bmark.url; + bmark[1] = bmark.title; + + bmark.text = bmark.url; + bmark.__defineGetter__("html", function () createHtml(bmark)); + return bmark; + }); + }, createRow: function (item)
  • diff --git a/content/ui.js b/content/ui.js index e345f232..24a9942d 100644 --- a/content/ui.js +++ b/content/ui.js @@ -1373,8 +1373,6 @@ function ItemList(id) //{{{ if (offset == null || offset - startIndex == 0 || offset < 0 || items.length && offset >= items.length) return; - //let createRow = ("createRow" in completionObject) ? completionObject.createRow : createDefaultRow; - let createRow = createDefaultRow; startIndex = offset; endIndex = Math.min(startIndex + maxItems, items.length); @@ -1385,14 +1383,14 @@ function ItemList(id) //{{{ if (diff == 1) /* Scroll down */ { let item = items[endIndex - 1]; - let row = createRow(item, true); + let row = "html" in item ? util.xmlToDom(item.html, doc) : createDefaultRow(item, true); tbody.removeChild(tbody.firstChild); tbody.appendChild(row); } else /* Scroll up */ { let item = items[offset]; - let row = createRow(item, true); + let row = "html" in item ? util.xmlToDom(item.html, doc) : createDefaultRow(item, true); tbody.removeChild(tbody.lastChild); tbody.insertBefore(row, tbody.firstChild); } @@ -1406,7 +1404,7 @@ function ItemList(id) //{{{
    { template.map(util.range(offset, endIndex), function (i) - createRow(items[i])) + "html" in items[i] ? items[i].html : createDefaultRow(items[i])) }