Browse Source

save only changed snippets in the SharpDevelop options

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@6148 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 15 years ago
parent
commit
a245aa9cb9
  1. 3
      data/resources/StringResources.cz.resx
  2. 3
      data/resources/StringResources.de.resx
  3. 5
      data/resources/StringResources.es-mx.resx
  4. 5
      data/resources/StringResources.es.resx
  5. 7
      data/resources/StringResources.fr.resx
  6. 3
      data/resources/StringResources.hu.resx
  7. 3
      data/resources/StringResources.it.resx
  8. 3
      data/resources/StringResources.kr.resx
  9. 7
      data/resources/StringResources.nl.resx
  10. 3
      data/resources/StringResources.no.resx
  11. 3
      data/resources/StringResources.pl.resx
  12. 3
      data/resources/StringResources.pt-br.resx
  13. 3
      data/resources/StringResources.pt.resx
  14. 3
      data/resources/StringResources.resx
  15. 3
      data/resources/StringResources.ro.resx
  16. 3
      data/resources/StringResources.se.resx
  17. 3
      data/resources/StringResources.tr.resx
  18. 27
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/CodeSnippet.cs
  19. 108
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/SnippetManager.cs
  20. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/SnippetOptionPanel.xaml

3
data/resources/StringResources.cz.resx

@ -4021,9 +4021,6 @@ Povolena jsou písmena, číslice, mezery, tečky a podtržítka.</value> @@ -4021,9 +4021,6 @@ Povolena jsou písmena, číslice, mezery, tečky a podtržítka.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Soubor projektu ${projectLocation} již existuje, chcete ho přepsat?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Soubor ${fileName} již existuje, chcete ho přepsat?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Soubor již existuje</value>
</data>

3
data/resources/StringResources.de.resx

@ -4746,9 +4746,6 @@ Grund: Der Wert zu dem zurückgesetzt werden soll ist ungültig weil sich eine a @@ -4746,9 +4746,6 @@ Grund: Der Wert zu dem zurückgesetzt werden soll ist ungültig weil sich eine a
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Die Projektdatei ${projectLocation} existiert schon. Wollen Sie die vorhandene Datei überschreiben?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Die Datei ${fileName} existiert schon. Wollen Sie die vorhandene Datei überschreiben?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Die Datei existiert schon</value>
</data>

5
data/resources/StringResources.es-mx.resx

@ -4757,7 +4757,7 @@ Utilice solamente letras, dígitos, espacio, '.' ó '_'.</value> @@ -4757,7 +4757,7 @@ Utilice solamente letras, dígitos, espacio, '.' ó '_'.</value>
<value>El archivo de proyecto ${projectLocation} ya existe, ¿desea sobrescribir el archivo existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>El archivo ${fileName} ya existe, ¿desea sobrescribir el archivo existente?</value>
<value>El archivo ${fileNames} ya existe, ¿quiere sobrescribir el archivo existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>El archivo ya existe</value>
@ -4814,6 +4814,9 @@ Vaya a 'Opciones-&gt;Estilo Visual' y cambie el lenguaje del ambiente.</value> @@ -4814,6 +4814,9 @@ Vaya a 'Opciones-&gt;Estilo Visual' y cambie el lenguaje del ambiente.</value>
<data name="ICSharpCode.UnitTesting.RunWithDebugger" xml:space="preserve">
<value>Ejecutar con el depurador</value>
</data>
<data name="ICSharpCode.UnitTesting.StatusBarProgressLabel" xml:space="preserve">
<value>Probando ${Name}...</value>
</data>
<data name="ICSharpCode.UnitTesting.TestMenu" xml:space="preserve">
<value>&amp;Pruebas</value>
</data>

5
data/resources/StringResources.es.resx

@ -4760,7 +4760,7 @@ Solamente letras, dígitos, espacio, '.' o '_' son permitidos.</value> @@ -4760,7 +4760,7 @@ Solamente letras, dígitos, espacio, '.' o '_' son permitidos.</value>
<value>El archivo de proyecto ${projectLocation} ya existe, ¿desea sobrescribir el archivo existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>El archivo ${fileName} ya existe, ¿desea sobrescribir el archivo existente?</value>
<value>El archivo ${fileNames} ya existe, ¿quiere sobrescribir el archivo existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>El archivo ya existe</value>
@ -4817,6 +4817,9 @@ Vaya a 'Opciones-&gt;Estilo Visual' y cambie el lenguaje del ambiente.</value> @@ -4817,6 +4817,9 @@ Vaya a 'Opciones-&gt;Estilo Visual' y cambie el lenguaje del ambiente.</value>
<data name="ICSharpCode.UnitTesting.RunWithDebugger" xml:space="preserve">
<value>Ejecutar con depurador</value>
</data>
<data name="ICSharpCode.UnitTesting.StatusBarProgressLabel" xml:space="preserve">
<value>Probando ${Name}...</value>
</data>
<data name="ICSharpCode.UnitTesting.TestMenu" xml:space="preserve">
<value>&amp;Pruebas</value>
</data>

7
data/resources/StringResources.fr.resx

@ -4753,10 +4753,10 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value> @@ -4753,10 +4753,10 @@ Utilisez seulement des lettres, chiffres, espace, '.' ou '_'.</value>
<value>Le projet ${projectLocation} existe déjà, voulez-vous l'écraser ?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Le ficher ${fileName} existe déjà, voulez-vous l'écraser ?</value>
<value>Fichier(s) ${fileNames} existants, voulez-vous les écraser ?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Le fichier existe déjà</value>
<value>Fichier(s) existant</value>
</data>
<data name="ICSharpCode.SharpDevelop.LoadingFile" xml:space="preserve">
<value>Chargement de ${Filename}...</value>
@ -4810,6 +4810,9 @@ Allez dans 'Outils/Options-&gt;Style Visuel pour changer l'ambiance actuelle.</v @@ -4810,6 +4810,9 @@ Allez dans 'Outils/Options-&gt;Style Visuel pour changer l'ambiance actuelle.</v
<data name="ICSharpCode.UnitTesting.RunWithDebugger" xml:space="preserve">
<value>Exécuter avec le débogueur</value>
</data>
<data name="ICSharpCode.UnitTesting.StatusBarProgressLabel" xml:space="preserve">
<value>En cours de test ${Name}...</value>
</data>
<data name="ICSharpCode.UnitTesting.TestMenu" xml:space="preserve">
<value>&amp;Test</value>
</data>

3
data/resources/StringResources.hu.resx

@ -3494,9 +3494,6 @@ Csak betűk, számok, szóköz, '.' vagy '_' engedélyezett.</value> @@ -3494,9 +3494,6 @@ Csak betűk, számok, szóköz, '.' vagy '_' engedélyezett.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>A Projekt fájl ${projectLocation} már létezik. Akarja felülírni a meglévő fájlt?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>A fájl ${fileName} már létezik. Akarja felülírni a meglévő fájlt?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>A fájl már létezik</value>
</data>

3
data/resources/StringResources.it.resx

@ -3227,9 +3227,6 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'</value> @@ -3227,9 +3227,6 @@ Sono ammesse solo lettere, numeri, spazi, '.' o '_'</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Il file ${projectLocation} del progetto già esiste, si vuole sovrascriverlo?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Il file ${fileName} già esiste, si vuole sovrascriverlo?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>File già esistente</value>
</data>

3
data/resources/StringResources.kr.resx

@ -4172,9 +4172,6 @@ Windows Forms 구성 요소가 아무 것도 사용가능하지 않습니다. @@ -4172,9 +4172,6 @@ Windows Forms 구성 요소가 아무 것도 사용가능하지 않습니다.
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>${projectLocation} 프로젝트 파일이 이미 있습니다, 있는 파일에 덮어 쓰겠습니까?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>${fileName} 파일이 이미 있습니다. 기존 파일 위에 덮어쓰겠습니까?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>파일이 이미 있습니다</value>
</data>

7
data/resources/StringResources.nl.resx

@ -4754,10 +4754,10 @@ Alleen letters, getallen, spatie, '.' of '_' zijn toegestaan.</value> @@ -4754,10 +4754,10 @@ Alleen letters, getallen, spatie, '.' of '_' zijn toegestaan.</value>
<value>Project bestand ${projectLocation} bestaat reeds, wilt u het bestaande bestand overschrijven?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Bestand ${fileName} bestaat al, wilt u deze overschrijven?</value>
<value>Bestand(en) ${filenames} bestaan reeds. Wilt u deze overschrijven?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Bestand bestaat reeds.</value>
<value>Bestand(en) is/zijn reeds bestaand.</value>
</data>
<data name="ICSharpCode.SharpDevelop.LoadingFile" xml:space="preserve">
<value>Laden van ${Filename}...</value>
@ -4811,6 +4811,9 @@ Ga naar 'Opties-&gt;Vormgeving' en wijzig de momentele taal ambience.</value> @@ -4811,6 +4811,9 @@ Ga naar 'Opties-&gt;Vormgeving' en wijzig de momentele taal ambience.</value>
<data name="ICSharpCode.UnitTesting.RunWithDebugger" xml:space="preserve">
<value>Uitvoeren met foutopsporing</value>
</data>
<data name="ICSharpCode.UnitTesting.StatusBarProgressLabel" xml:space="preserve">
<value>Testen ${Name}...</value>
</data>
<data name="ICSharpCode.UnitTesting.TestMenu" xml:space="preserve">
<value>&amp;Testen</value>
</data>

3
data/resources/StringResources.no.resx

@ -4246,9 +4246,6 @@ Bare bokstaver, tall, mellomrom, '.' eller '_' er tillatt.</value> @@ -4246,9 +4246,6 @@ Bare bokstaver, tall, mellomrom, '.' eller '_' er tillatt.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Prosjektfilen ${projectLocation} finnes fra før. Vil du overskrive den eksisterende filen?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Filen ${fileName} finnes fra før. Vil du overskrive den eksisterende filen?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Filen finnes fra før</value>
</data>

3
data/resources/StringResources.pl.resx

@ -3774,9 +3774,6 @@ Można użyć tylko liter, cyfr, spacji, '.' lub '_'.</value> @@ -3774,9 +3774,6 @@ Można użyć tylko liter, cyfr, spacji, '.' lub '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Plik projektu ${projectLocation} już istnieje, czy chcesz nadpisać istniejący plik?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Plik ${fileName} już istnieje, czy chcesz nadpisać istniejący plik?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Plik już istnieje</value>
</data>

3
data/resources/StringResources.pt-br.resx

@ -4274,9 +4274,6 @@ Use somente letras, dígitos, espaço, "." ou "_" são permitidos.</value> @@ -4274,9 +4274,6 @@ Use somente letras, dígitos, espaço, "." ou "_" são permitidos.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>O arquivo ${projectLocation} do projeto já existe, você deseja sobrescrever o arquivo existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>O arquivo ${fileName} já existe, você deseja sobrescrever o arquivo existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>O arquivo já existe</value>
</data>

3
data/resources/StringResources.pt.resx

@ -3912,9 +3912,6 @@ Só poderá utilizar letras, algarismos, espaço, '.' ou '_'.</value> @@ -3912,9 +3912,6 @@ Só poderá utilizar letras, algarismos, espaço, '.' ou '_'.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Já existe o ficheiro de projecto ${projectLocation}, deseja substituir o ficheiro existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>O ficheiro ${fileName} já existe. Deseja substituir o ficheiro existente?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Ficheiro já existente.</value>
</data>

3
data/resources/StringResources.resx

@ -2131,6 +2131,9 @@ Do you want to add the new file to the project ${CurrentProjectName}?</value> @@ -2131,6 +2131,9 @@ Do you want to add the new file to the project ${CurrentProjectName}?</value>
<data name="Dialog.Options.CodeTemplate.ExtensionsLabel" xml:space="preserve">
<value>E&amp;xtensions</value>
</data>
<data name="Dialog.Options.CodeTemplate.Keyword" xml:space="preserve">
<value>Keyword mapping</value>
</data>
<data name="Dialog.Options.CodeTemplate.PressTabToInsertTemplate" xml:space="preserve">
<value>Press Tab to insert this code template.</value>
</data>

3
data/resources/StringResources.ro.resx

@ -2583,9 +2583,6 @@ Toate modificările se vor pierde.</value> @@ -2583,9 +2583,6 @@ Toate modificările se vor pierde.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Fişierul proiect ${projectLocation} există deja, doriţi să-l suprascrieţi ?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Fişierul ${fileName} deja există, doriţi să-l suprascrieţi ?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Fişierul există deja</value>
</data>

3
data/resources/StringResources.se.resx

@ -3161,9 +3161,6 @@ Endast bokstäver, siffror, mellanslag, '.' eller '_' får användas.</value> @@ -3161,9 +3161,6 @@ Endast bokstäver, siffror, mellanslag, '.' eller '_' får användas.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>Projektfilen ${projectLocation} finns redan, vill du ersätta den befintliga filen?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>Filen ${fileName} finns redan, vill du ersätta den befintliga filen?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Filen finns redan</value>
</data>

3
data/resources/StringResources.tr.resx

@ -3815,9 +3815,6 @@ Sadece harf,rakam, boşluk, '.' yada '_' kullanabilirsiniz.</value> @@ -3815,9 +3815,6 @@ Sadece harf,rakam, boşluk, '.' yada '_' kullanabilirsiniz.</value>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion" xml:space="preserve">
<value>${projectLocation} proje dosyası zaten var, var olanın üstüne yazılsın mı?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion" xml:space="preserve">
<value>${fileName} zaten var, varolan dosyanın üzerine yazmak ister misiniz?</value>
</data>
<data name="ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName" xml:space="preserve">
<value>Dosya zaten var</value>
</data>

27
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/CodeSnippet.cs

@ -26,12 +26,14 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -26,12 +26,14 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
/// </summary>
public class CodeSnippet : INotifyPropertyChanged
{
string name, description, text;
string name, description, text, keyword;
bool isUserModified;
public string Name {
get { return name; }
set {
if (name != value) {
isUserModified = true;
name = value;
OnPropertyChanged("Name");
}
@ -42,6 +44,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -42,6 +44,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
get { return text; }
set {
if (text != value) {
isUserModified = true;
text = value;
OnPropertyChanged("Text");
}
@ -52,6 +55,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -52,6 +55,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
get { return description; }
set {
if (description != value) {
isUserModified = true;
description = value;
OnPropertyChanged("Description");
}
@ -66,6 +70,27 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -66,6 +70,27 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
}
}
public string Keyword {
get { return keyword; }
set {
if (keyword != value) {
isUserModified = true;
keyword = value;
OnPropertyChanged("Keyword");
}
}
}
public bool IsUserModified {
get { return isUserModified; }
set {
if (isUserModified != value) {
isUserModified = value;
OnPropertyChanged("IsUserModified");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)

108
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/SnippetManager.cs

@ -10,8 +10,8 @@ using System.Collections.Generic; @@ -10,8 +10,8 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using ICSharpCode.AvalonEdit.Snippets;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor.AvalonEdit;
namespace ICSharpCode.AvalonEdit.AddIn.Snippets
@ -21,7 +21,6 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -21,7 +21,6 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
/// </summary>
public sealed class SnippetManager
{
public static readonly SnippetManager Instance = new SnippetManager();
readonly object lockObj = new object();
static readonly List<CodeSnippetGroup> defaultSnippets = new List<CodeSnippetGroup> {
new CodeSnippetGroup {
@ -30,42 +29,50 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -30,42 +29,50 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
new CodeSnippet {
Name = "for",
Description = "for loop",
Text = "for (int ${counter=i} = 0; ${counter} < ${end}; ${counter}++) {\n\t${Selection}\n}"
Text = "for (int ${counter=i} = 0; ${counter} < ${end}; ${counter}++) {\n\t${Selection}\n}",
Keyword = "for"
},
new CodeSnippet {
Name = "foreach",
Description = "foreach loop",
Text = "foreach (${var} ${element} in ${collection}) {\n\t${Selection}\n}"
Text = "foreach (${var} ${element} in ${collection}) {\n\t${Selection}\n}",
Keyword = "foreach"
},
new CodeSnippet {
Name = "if",
Description = "if statement",
Text = "if (${condition}) {\n\t${Selection}\n}"
Text = "if (${condition}) {\n\t${Selection}\n}",
Keyword = "if"
},
new CodeSnippet {
Name = "ifelse",
Description = "if-else statement",
Text = "if (${condition}) {\n\t${Selection}\n} else {\n\t${Caret}\n}"
Text = "if (${condition}) {\n\t${Selection}\n} else {\n\t${Caret}\n}",
Keyword = "if"
},
new CodeSnippet {
Name = "while",
Description = "while loop",
Text = "while (${condition}) {\n\t${Selection}\n}"
Text = "while (${condition}) {\n\t${Selection}\n}",
Keyword = "while"
},
new CodeSnippet {
Name = "prop",
Description = "Property",
Text = "public ${Type=object} ${Property=Property} { get; set; }${Caret}"
Text = "public ${Type=object} ${Property=Property} { get; set; }${Caret}",
Keyword = "event" // properties can be declared where events can be.
},
new CodeSnippet {
Name = "propg",
Description = "Property with private setter",
Text = "public ${Type=object} ${Property=Property} { get; private set; }${Caret}"
Text = "public ${Type=object} ${Property=Property} { get; private set; }${Caret}",
Keyword = "event"
},
new CodeSnippet {
Name = "propfull",
Description = "Property with backing field",
Text = "${type} ${toFieldName(name)};\n\npublic ${type=int} ${name=Property} {\n\tget { return ${toFieldName(name)}; }\n\tset { ${toFieldName(name)} = value; }\n}${Caret}"
Text = "${type} ${toFieldName(name)};\n\npublic ${type=int} ${name=Property} {\n\tget { return ${toFieldName(name)}; }\n\tset { ${toFieldName(name)} = value; }\n}${Caret}",
Keyword = "event"
},
new CodeSnippet {
Name = "propdp",
@ -77,38 +84,46 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -77,38 +84,46 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
+ "public ${type=int} ${name=Property} {" + Environment.NewLine
+ "\tget { return (${type})GetValue(${name}Property); }" + Environment.NewLine
+ "\tset { SetValue(${name}Property, value); }"
+ Environment.NewLine + "}${Caret}"
+ Environment.NewLine + "}${Caret}",
Keyword = "event"
},
new CodeSnippet {
Name = "ctor",
Description = "Constructor",
Text = "${refactoring:ctor}"
Text = "${refactoring:ctor}",
Keyword = "event"
},
new CodeSnippet {
Name = "switch",
Description = "Switch statement",
// dynamic switch snippet (inserts switch body dependent on condition)
Text = "switch (${condition}) {\n\t${refactoring:switchbody}\n}"
Text = "switch (${condition}) {\n\t${refactoring:switchbody}\n}",
Keyword = "switch"
},
new CodeSnippet {
Name = "try",
Description = "Try-catch statement",
Text = "try {\n\t${Selection}\n} catch (Exception) {\n\t${Caret}\n\tthrow;\n}"
Text = "try {\n\t${Selection}\n} catch (Exception) {\n\t${Caret}\n\tthrow;\n}",
Keyword = "try"
},
new CodeSnippet {
Name = "trycf",
Description = "Try-catch-finally statement",
Text = "try {\n\t${Selection}\n} catch (Exception) {\n\t${Caret}\n\tthrow;\n} finally {\n\t\n}"
Text = "try {\n\t${Selection}\n} catch (Exception) {\n\t${Caret}\n\tthrow;\n} finally {\n\t\n}",
Keyword = "try"
},
new CodeSnippet {
Name = "tryf",
Description = "Try-finally statement",
Text = "try {\n\t${Selection}\n} finally {\n\t${Caret}\n}"
Text = "try {\n\t${Selection}\n} finally {\n\t${Caret}\n}",
Keyword = "try"
},
}
}
};
public static readonly SnippetManager Instance = new SnippetManager();
readonly List<ISnippetElementProvider> snippetElementProviders;
public List<ISnippetElementProvider> SnippetElementProviders {
@ -118,6 +133,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -118,6 +133,7 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
private SnippetManager()
{
snippetElementProviders = AddInTree.BuildItems<ISnippetElementProvider>("/SharpDevelop/ViewContent/AvalonEdit/SnippetElementProviders", null, false);
defaultSnippets.ForEach(x => x.Snippets.ForEach(s => s.IsUserModified = false));
}
/// <summary>
@ -125,7 +141,52 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -125,7 +141,52 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
/// </summary>
public List<CodeSnippetGroup> LoadGroups()
{
return PropertyService.Get("CodeSnippets", defaultSnippets);
var savedSnippets = PropertyService.Get("CodeSnippets", new List<CodeSnippetGroup>());
foreach (var group in savedSnippets) {
var defaultGroup = defaultSnippets.FirstOrDefault(i => i.Extensions == group.Extensions);
if (defaultGroup != null) {
var merged = group.Snippets.Concat(
defaultGroup.Snippets.Except(
group.Snippets,
new PredicateComparer<CodeSnippet>((x, y) => x.Name == y.Name, x => x.Name.GetHashCode())
)
).OrderBy(s => s.Name).ToList();
group.Snippets.Clear();
group.Snippets.AddRange(merged);
}
}
foreach (var group in defaultSnippets.Except(savedSnippets, new PredicateComparer<CodeSnippetGroup>(
(x, y) => x.Extensions == y.Extensions,
x => x.Extensions.GetHashCode()
))) {
savedSnippets.Add(group);
}
return savedSnippets;
}
class PredicateComparer<T> : IEqualityComparer<T>
{
Func<T, T, bool> equalsFunc;
Func<T, int> getHashCodeFunc;
public PredicateComparer(Func<T, T, bool> equalsFunc, Func<T, int> getHashCodeFunc)
{
this.equalsFunc = equalsFunc;
this.getHashCodeFunc = getHashCodeFunc;
}
public bool Equals(T x, T y)
{
return equalsFunc(x, y);
}
public int GetHashCode(T obj)
{
return getHashCodeFunc(obj);
}
}
/// <summary>
@ -135,7 +196,18 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets @@ -135,7 +196,18 @@ namespace ICSharpCode.AvalonEdit.AddIn.Snippets
{
lock (lockObj) {
activeGroups = null;
PropertyService.Set("CodeSnippets", groups.ToList());
List<CodeSnippetGroup> modifiedGroups = new List<CodeSnippetGroup>();
foreach (var group in groups) {
// save all groups, even if they're empty
var copy = new CodeSnippetGroup() {
Extensions = group.Extensions
};
copy.Snippets.AddRange(group.Snippets.Where(s => s.IsUserModified));
modifiedGroups.Add(copy);
}
PropertyService.Set("CodeSnippets", modifiedGroups);
}
}

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Snippets/SnippetOptionPanel.xaml

@ -102,6 +102,9 @@ @@ -102,6 +102,9 @@
<DataGridTextColumn
Header="{core:Localize Dialog.Options.CodeTemplate.Template}"
Binding="{Binding Name}" />
<DataGridTextColumn
Header="{core:Localize Dialog.Options.CodeTemplate.Keyword}"
Binding="{Binding Keyword}" />
<DataGridTextColumn
Header="{core:Localize Dialog.Options.CodeTemplate.Description}"
Width="*"

Loading…
Cancel
Save