add a way to unregister snippets
This commit is contained in:
parent
19ea0fe979
commit
f9ed205557
3 changed files with 38 additions and 6 deletions
|
|
@ -450,14 +450,20 @@ require("ace/placeholder").PlaceHolder;
|
||||||
var SnippetManager = require("ace/snippets").SnippetManager
|
var SnippetManager = require("ace/snippets").SnippetManager
|
||||||
var jsSnippets = require("ace/snippets/javascript");
|
var jsSnippets = require("ace/snippets/javascript");
|
||||||
window.SnippetManager = SnippetManager
|
window.SnippetManager = SnippetManager
|
||||||
|
saveSnippets()
|
||||||
|
|
||||||
function saveSnippets() {
|
function saveSnippets() {
|
||||||
jsSnippets.snippets = SnippetManager.parseSnippetFile(jsSnippets.snippetText);
|
jsSnippets.snippets = SnippetManager.parseSnippetFile(jsSnippets.snippetText);
|
||||||
|
SnippetManager.snipp
|
||||||
SnippetManager.register(jsSnippets.snippets, "javascript")
|
SnippetManager.register(jsSnippets.snippets, "javascript")
|
||||||
}
|
}
|
||||||
|
|
||||||
env.editSnippets = function() {
|
env.editSnippets = function() {
|
||||||
var sp = env.split;
|
var sp = env.split;
|
||||||
|
if (sp.getSplits() == 2) {
|
||||||
|
sp.setSplits(1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
sp.setSplits(1);
|
sp.setSplits(1);
|
||||||
sp.setSplits(2);
|
sp.setSplits(2);
|
||||||
sp.setOrientation(sp.BESIDE);
|
sp.setOrientation(sp.BESIDE);
|
||||||
|
|
|
||||||
|
|
@ -404,6 +404,7 @@ var SnippetManager = function() {
|
||||||
this.register = function(snippets, scope) {
|
this.register = function(snippets, scope) {
|
||||||
var snippetMap = this.snippetMap;
|
var snippetMap = this.snippetMap;
|
||||||
var snippetNameMap = this.snippetNameMap;
|
var snippetNameMap = this.snippetNameMap;
|
||||||
|
var self = this;
|
||||||
function wrapRegexp(src) {
|
function wrapRegexp(src) {
|
||||||
if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src))
|
if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src))
|
||||||
src = "(?:" + src + ")"
|
src = "(?:" + src + ")"
|
||||||
|
|
@ -433,9 +434,15 @@ var SnippetManager = function() {
|
||||||
snippetMap[scope] = [];
|
snippetMap[scope] = [];
|
||||||
snippetNameMap[scope] = {};
|
snippetNameMap[scope] = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var map = snippetNameMap[scope];
|
||||||
|
if (s.name) {
|
||||||
|
var old = map[s.name];
|
||||||
|
if (old)
|
||||||
|
self.unregister(old);
|
||||||
|
map[s.name] = s;
|
||||||
|
}
|
||||||
snippetMap[scope].push(s);
|
snippetMap[scope].push(s);
|
||||||
if (s.name)
|
|
||||||
snippetNameMap[scope][s.name] = s;
|
|
||||||
|
|
||||||
if (s.tabTrigger && !s.trigger) {
|
if (s.tabTrigger && !s.trigger) {
|
||||||
if (!s.guard && /^\w/.test(s.tabTrigger))
|
if (!s.guard && /^\w/.test(s.tabTrigger))
|
||||||
|
|
@ -455,6 +462,25 @@ var SnippetManager = function() {
|
||||||
else if (Array.isArray(snippets))
|
else if (Array.isArray(snippets))
|
||||||
snippets.forEach(addSnippet);
|
snippets.forEach(addSnippet);
|
||||||
};
|
};
|
||||||
|
this.unregister = function(snippets, scope) {
|
||||||
|
var snippetMap = this.snippetMap;
|
||||||
|
var snippetNameMap = this.snippetNameMap;
|
||||||
|
|
||||||
|
function removeSnippet(s) {
|
||||||
|
var map = snippetNameMap[scope];
|
||||||
|
if (map && map[s.name]) {
|
||||||
|
delete map[s.name];
|
||||||
|
map = snippetMap[scope];
|
||||||
|
var i = map && map.indexOf(s);
|
||||||
|
if (i >= 0)
|
||||||
|
map.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (snippets.content)
|
||||||
|
removeSnippet(snippets);
|
||||||
|
else if (Array.isArray(snippets))
|
||||||
|
snippets.forEach(removeSnippet);
|
||||||
|
};
|
||||||
this.parseSnippetFile = function(str) {
|
this.parseSnippetFile = function(str) {
|
||||||
var list = [], snippet = {};
|
var list = [], snippet = {};
|
||||||
var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;
|
var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;
|
||||||
|
|
|
||||||
|
|
@ -163,13 +163,13 @@ snippet for-
|
||||||
}
|
}
|
||||||
# for (...) {...}
|
# for (...) {...}
|
||||||
snippet for
|
snippet for
|
||||||
for (var ${1:i} = 0; $1 < ${2:Things}.length; $1${3:++}) {
|
for (var ${1:i} = 0; $1 < ${2:Things}.length; $1$++) {
|
||||||
${0:$2[$1]}
|
${3:$2[$1]}$0
|
||||||
}
|
}
|
||||||
# for (...) {...} (Improved Native For-Loop)
|
# for (...) {...} (Improved Native For-Loop)
|
||||||
snippet forr
|
snippet forr
|
||||||
for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1${3:--}) {
|
for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1$--) {
|
||||||
${0:$2[$1]}
|
${3:$2[$1]}$0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue