void PropertyChanged(object sender, PropertyEventArgs e)
 {
     if (e.Key == ambienceProperty) {
         OnAmbienceChanged(EventArgs.Empty);
     }
 }
 static void CheckFontChange(object sender, PropertyEventArgs e)
 {
     if (e.Key == "DefaultFont")
         FontContainer.DefaultFont = TextEditorProperties.Font;
 }
 void PropertiesChanged(object sender, PropertyEventArgs e)
 {
     switch (e.Key) {
         case "DefaultFont":
             se.View.ModifyFont (TextEditorProperties.Font);
             break;
         case "ShowLineNumbers":
             se.View.ShowLineNumbers = TextEditorProperties.ShowLineNumbers;
             break;
         case "ShowBracketHighlight":
             se.Buffer.CheckBrackets = TextEditorProperties.ShowMatchingBracket;
             break;
         case "ShowVRuler":
             se.View.ShowMargin = TextEditorProperties.ShowVerticalRuler;
             break;
         case "EnableCodeCompletion":
             se.View.EnableCodeCompletion = TextEditorProperties.EnableCodeCompletion;
             break;
         case "ConvertTabsToSpaces":
             se.View.InsertSpacesInsteadOfTabs = TextEditorProperties.ConvertTabsToSpaces;
             break;
         case "IndentStyle":
             se.View.AutoIndent = (TextEditorProperties.IndentStyle == IndentStyle.Auto);
             break;
         case "AutoInsertTemplates":
             se.View.AutoInsertTemplates = TextEditorProperties.AutoInsertTemplates;
             break;
         case "ShowErrors":
             se.Buffer.UnderlineErrors = TextEditorProperties.UnderlineErrors;
             break;
         case "SyntaxHighlight":
             se.Buffer.Highlight = TextEditorProperties.SyntaxHighlight;
             break;
         case "VRulerRow":
             if (TextEditorProperties.VerticalRulerRow > -1)
                 se.View.Margin = (uint) TextEditorProperties.VerticalRulerRow;
             else
                 se.View.Margin = (uint) 80;
             break;
         case "TabIndent":
             if (TextEditorProperties.TabIndent > -1)
                 se.View.TabsWidth = (uint) TextEditorProperties.TabIndent;
             else
                 se.View.TabsWidth = (uint) 4;
             break;
         case "EnableFolding":
             // TODO
             break;
         default:
             Console.WriteLine ("unhandled property change: {0}", e.Key);
             break;
     }
 }
 protected virtual void OnPropertyChanged(PropertyEventArgs e)
 {
     if (PropertyChanged != null) {
         PropertyChanged(this, e);
     }
 }