// Copyright (c) 2006-2008 by Martin Stubenschrott <stubenschrott@vimperator.org>
// Copyright (c) 2007-2011 by Doug Kearns <dougkearns@gmail.com>
-// Copyright (c) 2008-2012 Kris Maglione <maglione.k@gmail.com>
+// Copyright (c) 2008-2014 Kris Maglione <maglione.k@gmail.com>
//
// This work is licensed for reuse under an MIT license. Details are
// given in the LICENSE.txt file included with this file.
* @constructor
*/
var CompletionContext = Class("CompletionContext", {
- init: function cc_init(editor, name, offset) {
- if (!name)
- name = "";
-
+ init: function cc_init(editor, name="", offset=0) {
let self = this;
if (editor instanceof this.constructor) {
let parent = editor;
*/
self.parent = parent;
- ["filters", "keys", "process", "title", "quote"].forEach(function fe(key)
- self[key] = parent[key] && util.cloneObject(parent[key]));
- ["anchored", "compare", "editor", "_filter", "filterFunc", "forceAnchored", "top"].forEach(function (key)
- self[key] = parent[key]);
+ ["filters", "keys", "process", "title", "quote"]
+ .forEach(key => self[key] = parent[key] && util.cloneObject(parent[key]));
+ ["anchored", "compare", "editor", "_filter", "filterFunc", "forceAnchored", "top"]
+ .forEach(key => self[key] = parent[key]);
self.__defineGetter__("value", function get_value() this.top.value);
self.offset = parent.offset;
- self.advance(offset || 0);
+ self.advance(offset);
/**
* @property {boolean} Specifies that this context is not finished
* @property {number} This context's offset from the beginning of
* {@link #editor}'s value.
*/
- this.offset = offset || 0;
+ this.offset = offset;
/**
* @property {function} A function which is called when any subcontext
* changes its completion list. Only called when
*/
this.top = this;
this.__defineGetter__("incomplete", function get_incomplete() this._incomplete
- || this.contextList.some(function (c) c.parent && c.incomplete));
+ || this.contextList.some(c => c.parent && c.incomplete));
this.__defineGetter__("waitingForTab", function get_waitingForTab() this._waitingForTab
- || this.contextList.some(function (c) c.parent && c.waitingForTab));
+ || this.contextList.some(c => c.parent && c.waitingForTab));
this.__defineSetter__("incomplete", function get_incomplete(val) { this._incomplete = val; });
this.__defineSetter__("waitingForTab", function get_waitingForTab(val) { this._waitingForTab = val; });
this.reset();
return this;
},
- __title: Class.Memoize(function __title() this._title.map(function (s)
+ __title: Class.Memoize(function __title() this._title.map(s =>
typeof s == "string" ? messages.get("completion.title." + s, s)
: s)),
filtered.sort(this.compare);
if (!this.anchored) {
let filter = this.filter;
- filtered.sort(function s(a, b) (b.text.indexOf(filter) == 0) - (a.text.indexOf(filter) == 0));
+ filtered.sort(function s(a, b) b.text.startsWith(filter) - a.text.startsWith(filter));
}
}
var substrings = [text];
}
else {
- var compare = function compare(text, s) text.indexOf(s) >= 0;
+ var compare = function compare(text, s) text.contains(s);
var substrings = [];
let start = 0;
let idx;
let alias = (prop) => {
context.__defineGetter__(prop, () => this[prop]);
context.__defineSetter__(prop, (val) => this[prop] = val);
- }
+ };
alias("_cache");
alias("_completions");
alias("_generate");
}
this.waitingForTab = false;
this.runCount++;
- for each (let context in this.contextList)
+ for (let context of this.contextList)
context.lastActivated = this.runCount;
this.contextList = [];
},
context.generate = function generate_() {
return [[k.substr(services.ABOUT.length), ""]
for (k in Cc)
- if (k.indexOf(services.ABOUT) == 0)];
+ if (k.startsWith(services.ABOUT))];
};
});
let contains = String.indexOf;
if (context.ignoreCase) {
compare = util.compareIgnoreCase;
- contains = function contains_(a, b) a && a.toLowerCase().indexOf(b.toLowerCase()) > -1;
+ contains = function contains_(a, b) a && a.toLowerCase().contains(b.toLowerCase());
}
if (tags)
.concat([let (name = k.substr(services.AUTOCOMPLETE.length))
["native:" + name, _("autocomplete.description", name)]
for (k in Cc)
- if (k.indexOf(services.AUTOCOMPLETE) == 0)]),
+ if (k.startsWith(services.AUTOCOMPLETE))]),
setter: function setter(values) {
- if (values.length == 1 && !Set.has(values[0], this.values)
- && Array.every(values[0], Set.has(this.valueMap)))
- return Array.map(values[0], function m(v) this[v], this.valueMap);
+ if (values.length == 1 && !hasOwnProperty(values[0], this.values)
+ && Array.every(values[0], v => hasOwnProperty(this.valueMap, v)))
+ return Array.map(values[0], v => this.valueMap[v]);
+
return values;
},