kopia lustrzana https://github.com/c9/core
77 wiersze
2.0 KiB
JavaScript
77 wiersze
2.0 KiB
JavaScript
define(function(require, exports, module) {
|
|
main.consumes = [
|
|
"Plugin", "tabManager"
|
|
];
|
|
main.provides = ["mergetool"];
|
|
return main;
|
|
|
|
function main(options, imports, register) {
|
|
var Plugin = imports.Plugin;
|
|
var tabManager = imports.tabManager;
|
|
|
|
var addConflictMarker = require("./diff/conflictmarker");
|
|
|
|
/***** Initialization *****/
|
|
|
|
var plugin = new Plugin("Ajax.org", main.consumes);
|
|
// var emit = plugin.getEmitter();
|
|
|
|
function load() {
|
|
tabManager.on("open", onNewValue, plugin);
|
|
tabManager.on("reload", onNewValue, plugin);
|
|
tabManager.on("switchEditor", onNewValue, plugin);
|
|
}
|
|
|
|
/***** Methods *****/
|
|
|
|
function onNewValue(e) {
|
|
var tab = e.tab;
|
|
var value = tab.document.recentValue;
|
|
if (!value || typeof value != "string") return;
|
|
|
|
if (hasMergeState(value))
|
|
decorateTab(tab);
|
|
}
|
|
|
|
function hasMergeState(value) {
|
|
return /^<{7} /gm.test(value)
|
|
&& /^={7}/gm.test(value)
|
|
&& /^>{7} /gm.test(value);
|
|
}
|
|
|
|
function decorateTab(tab) {
|
|
if (tab.editor.ace)
|
|
addConflictMarker(tab.editor.ace);
|
|
}
|
|
|
|
/***** Lifecycle *****/
|
|
|
|
plugin.on("load", function() {
|
|
load();
|
|
});
|
|
plugin.on("unload", function() {
|
|
|
|
});
|
|
|
|
/***** Register and define API *****/
|
|
|
|
/**
|
|
* This is an example of an implementation of a plugin. Check out [the source](source/template.html)
|
|
* for more information.
|
|
*
|
|
* @class Template
|
|
* @extends Plugin
|
|
* @singleton
|
|
*/
|
|
plugin.freezePublicAPI({
|
|
/**
|
|
*
|
|
*/
|
|
decorateTab: decorateTab
|
|
});
|
|
|
|
register(null, {
|
|
mergetool: plugin
|
|
});
|
|
}
|
|
}); |