;
@@ -61,16 +60,17 @@ var Growl = function() {//{{{
this.initialize.apply(this, arguments);
};
Growl.prototype = {
- initialize: function(node, options) {
+ initialize: function(node, options, message) {
this.defaults = {
life: 10,
sticky: false,
- sticky_keyword: [],
+ sticky_keywords: [],
hide: false
};
this.node = node;
this.created = new Date();
this.options = $U.extend(this.defaults, (options || {}));
+ this.message = message;
var div = node.getElementsByTagName('div');
div[0].addEventListener("click", $U.bind(this, this.remove), false);
},
@@ -149,7 +149,7 @@ notifier.observer.register(notifier.Observer, {
{new XMLList(message.message || '')}
;
node = $U.xmlToDom(html, doc);
- node.__data__ = new Growl(node, this.settings[message.title]);
+ node.__data__ = new Growl(node, this.settings[message.title], message);
return node;
},
checkStatus: function(force) {
@@ -163,23 +163,15 @@ notifier.observer.register(notifier.Observer, {
for (let i = 0, len = container.childNodes.length; i < len; i++) {
let item = container.childNodes[i];
let growl = item.__data__;
- if (force ||
- (growl &&
- !(growl.options.sticky ||
- growl.options.sticky_keyword.some(function(keyword) this.indexOf(keyword) > -1, item.childNodes[2].textContent)) &&
- growl.created &&
- growl.created.getTime() + (growl.options.life * 1000) < (new Date()).getTime()
- )
- ) {
- if (item.id != 'observer_growl_closer')
- removeNodes.push(item);
- }
- if (len == 1) {
- let elem = container.childNodes[0];
- if (elem.id == 'observer_growl_closer')
- elem.parentNode.removeChild(elem);
+ if (item.id == 'observer_growl_closer') {
+ if (len == 1)
+ item.parentNode.removeChild(item);
+ continue;
}
+
+ if (force || this.canRemove(growl))
+ removeNodes.push(item);
}
removeNodes.forEach(function(element) element.__data__.remove());
@@ -189,10 +181,26 @@ notifier.observer.register(notifier.Observer, {
}
},
+ canRemove: function(growl) {
+ var ret = false;
+
+ if (!growl || !growl.created) return ret;
+ if (growl.options.sticky) return ret;
+
+ var text = growl.message.title + ' ' + growl.message.message.replace(/<.*?>/g, '');
+ if (growl.options.sticky_keywords.some(function(k) text.indexOf(k) > -1)) return ret;
+
+ if (growl.created.getTime() + (growl.options.life * 1000) > (new Date()).getTime())
+ return ret;
+
+ ret = true;
+ return ret;
+ },
removeAll: function(a) {
this.checkStatus('EVENT_REMOVE_ALL');
var closer = window.content.document.getElementById("observer_growl_closer");
- closer.parentNode.removeChild(closer);
+ if (closer)
+ closer.parentNode.removeChild(closer);
},
shutdown: function() {
for (let [id, flg] in Iterator(this.intervalIDs)) {
diff --git a/notifier/subject_liberator_echomsg.js b/notifier/subject_liberator_echomsg.js
index c435474..5c963ef 100755
--- a/notifier/subject_liberator_echomsg.js
+++ b/notifier/subject_liberator_echomsg.js
@@ -11,11 +11,20 @@ var PLUGIN_INFO =
liberator.echomsg notice.
liberator.echomsg 通知。
suVene
- 0.1.0
+ 0.1.1
MIT
2.0pre
2.0pre
http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/notifier/subject_liberator_echomsg.js
+ ||
+liberator.globalVariables.subject_liberator_echomsg_filter = [
+ 'Auto commands for',
+ '^autocommand'
+];
+||<
+ ]]>
;
//}}}
(function() {
@@ -33,6 +42,7 @@ notifier.subject.register(notifier.Subject, {
this.original = liberator.echomsg;
this.__updating__ = false;
this.messages = [];
+ this.filter = liberator.globalVariables.subject_liberator_echomsg_filter || [];
var self = this;
@@ -40,7 +50,6 @@ notifier.subject.register(notifier.Subject, {
while (self.waiting)
liberator.sleep(100);
- logger.log('message: ' + message);
self.messages.push(message);
return self.original.apply(null, arguments);
};
@@ -48,6 +57,7 @@ notifier.subject.register(notifier.Subject, {
check: function() {
try {
this.__updating__ = true;
+ this.messages = this.messages.filter(function(m) !this.filter.some(function(f) (m.indexOf(f) > -1 || m.match(f))), this);
if (!this.messages.length) return;
var msg = '- ' + this.messages.join('
- ') + '
';
--
cgit v1.2.3