{\r
if (this.View.LayoutLines.Count == 0 || this.View.Selections.Count == 0)\r
return null;\r
+ string str;\r
if (this.RectSelection)\r
- return GetTextFromRectangleSelectArea(this.View.Selections);\r
+ str = GetTextFromRectangleSelectArea(this.View.Selections);\r
else\r
- return GetTextFromLineSelectArea(this.View.Selections);\r
+ str = GetTextFromLineSelectArea(this.View.Selections);\r
+ return str.Replace(Document.NewLine.ToString(), Environment.NewLine);\r
}\r
set\r
{\r
if (this.Document.FireUpdateEvent == false)\r
throw new InvalidOperationException("");\r
- this.RepleaceSelectionArea(this.View.Selections, value);\r
+ if (value == null)\r
+ return;\r
+ this.RepleaceSelectionArea(this.View.Selections, value.Replace(Environment.NewLine,Document.NewLine.ToString()));\r
}\r
}\r
\r
}\r
\r
/// <summary>\r
+ /// 選択文字列のインデントを一つ増やす\r
+ /// </summary>\r
+ public void UpIndent()\r
+ {\r
+ if (this.RectSelection || this.SelectionLength == 0)\r
+ return;\r
+ int selectionStart = this.SelectionStart;\r
+ string text = this.InsertLineHead(GetTextFromLineSelectArea(this.View.Selections), "\t");\r
+ this.RepleaceSelectionArea(this.View.Selections,text);\r
+ this.Select(selectionStart, text.Length);\r
+ }\r
+\r
+ /// <summary>\r
+ /// 選択文字列のインデントを一つ減らす\r
+ /// </summary>\r
+ public void DownIndent()\r
+ {\r
+ if (this.RectSelection || this.SelectionLength == 0)\r
+ return;\r
+ int selectionStart = this.SelectionStart;\r
+ string text = this.RemoveLineHead(GetTextFromLineSelectArea(this.View.Selections), "\t");\r
+ this.RepleaceSelectionArea(this.View.Selections, text);\r
+ this.Select(selectionStart, text.Length);\r
+ }\r
+\r
+ string InsertLineHead(string s, string str)\r
+ {\r
+ string[] lines = s.Split(new string[] { Document.NewLine.ToString() }, StringSplitOptions.RemoveEmptyEntries);\r
+ StringBuilder output = new StringBuilder();\r
+ for (int i = 0; i < lines.Length; i++)\r
+ output.AppendLine(str + lines[i]);\r
+ return output.ToString();\r
+ }\r
+\r
+ public string RemoveLineHead(string s, string str)\r
+ {\r
+ string[] lines = s.Split(new string[] { Document.NewLine.ToString() }, StringSplitOptions.RemoveEmptyEntries);\r
+ StringBuilder output = new StringBuilder();\r
+ for (int i = 0; i < lines.Length; i++)\r
+ if (lines[i].StartsWith(str))\r
+ output.AppendLine(lines[i].Substring(1));\r
+ else\r
+ output.AppendLine(lines[i]);\r
+ return output.ToString();\r
+ }\r
+\r
+ /// <summary>\r
/// キャレットを一文字移動させる\r
/// </summary>\r
/// <param name="isMoveNext">真なら1文字すすめ、そうでなければ戻す</param>\r
\r
if (this.RectSelection == false)\r
{\r
- string str = value.Replace(Environment.NewLine, Document.NewLine.ToString());\r
-\r
Selection sel = Selection.Create(this.AnchorIndex, 0);\r
if (Selections.Count > 0)\r
sel = Util.NormalizeIMaker<Selection>(this.View.Selections.First());\r
\r
- this.Document.Replace(sel.start, sel.length, str);\r
+ this.Document.Replace(sel.start, sel.length, value);\r
return;\r
}\r
\r
\r
this.Document.FireUpdateEvent = false;\r
\r
- string[] line = value.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);\r
+ string[] line = value.Split(new string[] { Document.NewLine.ToString() }, StringSplitOptions.RemoveEmptyEntries);\r
\r
TextPoint Current = this.View.GetLayoutLineFromIndex(this.SelectionStart);\r
\r
{\r
Selection sel = Util.NormalizeIMaker<Selection>(Selections.First());\r
\r
- string str = this.Document.ToString(sel.start, sel.length).Replace(Document.NewLine.ToString(), Environment.NewLine);\r
+ string str = this.Document.ToString(sel.start, sel.length);\r
\r
return str;\r
}\r
{\r
Selection sel = Util.NormalizeIMaker<Selection>(Selections[i]);\r
\r
- string str = this.Document.ToString(sel.start, sel.length).Replace(Document.NewLine.ToString(), Environment.NewLine);\r
+ string str = this.Document.ToString(sel.start, sel.length);\r
if (str.IndexOf(Environment.NewLine) == -1)\r
temp.AppendLine(str);\r
else\r