Author: mkrueger
Date: 2008-01-25 07:14:05 -0500 (Fri, 25 Jan 2008)
New Revision: 93892

Modified:
   trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
   
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
   
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorOptions.cs
Log:
* MonoDevelop.SourceEditor/ExtendibleTextEditor.cs,
  MonoDevelop.SourceEditor/SourceEditorOptions.cs: AutoInsert
  template option now works.

Modified: trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog       
2008-01-25 12:14:03 UTC (rev 93891)
+++ trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/ChangeLog       
2008-01-25 12:14:05 UTC (rev 93892)
@@ -1,3 +1,15 @@
+2008-01-25  Mike Krüger <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.SourceEditor/ExtendibleTextEditor.cs,
+         MonoDevelop.SourceEditor/SourceEditorOptions.cs: AutoInsert template
+         option now works.
+
+2008-01-25  Mike Krüger <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.SourceEditor/ExtendibleTextEditor.cs,
+         MonoDevelop.SourceEditor/SourceEditorOptions.cs: AutoInsert template
+         option now works.
+
 2008-01-25  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
 
        * MonoDevelop.SourceEditor.addin.xml: Update MD version.
@@ -5,6 +17,12 @@
 2008-01-25  Mike Krüger <[EMAIL PROTECTED]> 
 
        * MonoDevelop.SourceEditor/ExtendibleTextEditor.cs,
+         MonoDevelop.SourceEditor/SourceEditorOptions.cs: AutoInsert template
+         option now works.
+
+2008-01-25  Mike Krüger <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.SourceEditor/ExtendibleTextEditor.cs,
          MonoDevelop.SourceEditor/SourceEditorView.cs,
          MonoDevelop.SourceEditor/SourceEditorOptions.cs: Added auto insert
          bracket option.

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
        2008-01-25 12:14:03 UTC (rev 93891)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtendibleTextEditor.cs
        2008-01-25 12:14:05 UTC (rev 93892)
@@ -99,6 +99,7 @@
                protected override bool OnKeyPressEvent (Gdk.EventKey evnt)
                {
                        bool result = true;
+                       char ch = (char)evnt.Key;
                        if (extension != null) {
                                if (!extension.KeyPress (evnt.Key, evnt.State)) 
{
                                        result = base.OnKeyPressEvent (evnt);
@@ -106,7 +107,8 @@
                        } else {
                                result = base.OnKeyPressEvent (evnt);           
                
                        }
-                       char ch = (char)evnt.Key;
+                       if (SourceEditorOptions.Options.AutoInsertTemplates && 
IsTemplateKnown ())
+                               DoInsertTemplate ();
                        if 
(SourceEditorOptions.Options.AutoInsertMatchingBracket) {
                                switch (ch) {
                                case '{':
@@ -323,15 +325,34 @@
                        return start;
                }
 
-               public string GetLeadingWhiteSpace (int line)
+               public string GetLeadingWhiteSpace (int lineNr)
                {
-                       string lineText = Buffer.GetTextAt (Document.GetLine 
(line));
+                       LineSegment line = Document.GetLine (lineNr);
                        int index = 0;
-                       while (index < lineText.Length && Char.IsWhiteSpace 
(lineText[index]))
+                       while (index < line.EditableLength && Char.IsWhiteSpace 
(Buffer.GetCharAt (line.Offset + index)))
                                index++;
-                       return index > 0 ? lineText.Substring (0, index) : "";
+                       return index > 0 ? Buffer.GetTextAt (line.Offset, 
index) : "";
                }
 
+               public bool IsTemplateKnown ()
+               {
+                       string word = GetWordBeforeCaret ();
+                       CodeTemplateGroup templateGroup = 
CodeTemplateService.GetTemplateGroupPerFilename (this.view.ContentName);
+                       if (String.IsNullOrEmpty (word) || templateGroup == 
null) 
+                               return false;
+                       
+                       bool result = false;
+                       foreach (CodeTemplate template in 
templateGroup.Templates) {
+                               if (template.Shortcut == word) {
+                                       result = true;
+                               } else if (template.Shortcut.StartsWith (word)) 
{
+                                       result = false;
+                                       break;
+                               }
+                       }
+                       return result;
+               }
+               
                public bool DoInsertTemplate ()
                {
                        string word = GetWordBeforeCaret ();
@@ -355,7 +376,7 @@
                        if (word.Length > 0)
                                offset = DeleteWordBeforeCaret ();
                        
-//                     string leadingWhiteSpace = GetLeadingWhiteSpace 
(Caret.Line);
+                       string leadingWhiteSpace = GetLeadingWhiteSpace 
(Caret.Line);
 
                        int finalCaretOffset = offset + template.Text.Length;
                        StringBuilder builder = new StringBuilder ();
@@ -364,6 +385,12 @@
                                case '|':
                                        finalCaretOffset = i + offset;
                                        break;
+                               case '\r':
+                                       break;
+                               case '\n':
+                                       builder.Append (Environment.NewLine);
+                                       builder.Append (leadingWhiteSpace);
+                                       break;
                                default:
                                        builder.Append (template.Text[i]);
                                        break;

Modified: 
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorOptions.cs
===================================================================
--- 
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorOptions.cs
 2008-01-25 12:14:03 UTC (rev 93891)
+++ 
trunk/monodevelop/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorOptions.cs
 2008-01-25 12:14:05 UTC (rev 93892)
@@ -208,7 +208,7 @@
                
                public bool AutoInsertTemplates {
                        get {
-                               return PropertyService.Get 
("AutoInsertTemplates", true);
+                               return PropertyService.Get 
("AutoInsertTemplates", false);
                        }
                        set {
                                if (value != AutoInsertTemplates) {

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to