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 jsSnippets = require("ace/snippets/javascript");
|
||||
window.SnippetManager = SnippetManager
|
||||
saveSnippets()
|
||||
|
||||
function saveSnippets() {
|
||||
jsSnippets.snippets = SnippetManager.parseSnippetFile(jsSnippets.snippetText);
|
||||
SnippetManager.snipp
|
||||
SnippetManager.register(jsSnippets.snippets, "javascript")
|
||||
}
|
||||
|
||||
env.editSnippets = function() {
|
||||
var sp = env.split;
|
||||
if (sp.getSplits() == 2) {
|
||||
sp.setSplits(1);
|
||||
return;
|
||||
}
|
||||
sp.setSplits(1);
|
||||
sp.setSplits(2);
|
||||
sp.setOrientation(sp.BESIDE);
|
||||
|
|
|
|||
|
|
@ -404,6 +404,7 @@ var SnippetManager = function() {
|
|||
this.register = function(snippets, scope) {
|
||||
var snippetMap = this.snippetMap;
|
||||
var snippetNameMap = this.snippetNameMap;
|
||||
var self = this;
|
||||
function wrapRegexp(src) {
|
||||
if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src))
|
||||
src = "(?:" + src + ")"
|
||||
|
|
@ -433,9 +434,15 @@ var SnippetManager = function() {
|
|||
snippetMap[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);
|
||||
if (s.name)
|
||||
snippetNameMap[scope][s.name] = s;
|
||||
|
||||
if (s.tabTrigger && !s.trigger) {
|
||||
if (!s.guard && /^\w/.test(s.tabTrigger))
|
||||
|
|
@ -455,6 +462,25 @@ var SnippetManager = function() {
|
|||
else if (Array.isArray(snippets))
|
||||
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) {
|
||||
var list = [], snippet = {};
|
||||
var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm;
|
||||
|
|
|
|||
|
|
@ -163,13 +163,13 @@ snippet for-
|
|||
}
|
||||
# for (...) {...}
|
||||
snippet for
|
||||
for (var ${1:i} = 0; $1 < ${2:Things}.length; $1${3:++}) {
|
||||
${0:$2[$1]}
|
||||
for (var ${1:i} = 0; $1 < ${2:Things}.length; $1$++) {
|
||||
${3:$2[$1]}$0
|
||||
}
|
||||
# for (...) {...} (Improved Native For-Loop)
|
||||
snippet forr
|
||||
for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1${3:--}) {
|
||||
${0:$2[$1]}
|
||||
for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1$--) {
|
||||
${3:$2[$1]}$0
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue