public void AddRegisterDirective(RegisterDirective directive, TextEditorData editor, bool preserveCaretPosition)
        {
            var node = GetRegisterInsertionPointNode();

            if (node == null)
            {
                return;
            }

            Doc.Info.RegisteredTags.Add(directive);

            var line = Math.Max(node.Location.EndLine, node.Location.BeginLine);
            var pos  = editor.Document.LocationToOffset(line, editor.Document.GetLine(line - 1).Length);

            if (pos < 0)
            {
                return;
            }

            using (var undo = editor.OpenUndoGroup())
            {
                var oldCaret = editor.Caret.Offset;

                var inserted = editor.Insert(pos, editor.EolMarker + directive.ToString());
                if (preserveCaretPosition)
                {
                    editor.Caret.Offset = (pos < oldCaret)? oldCaret + inserted : oldCaret;
                }
            }
        }
コード例 #2
0
        public void AddRegisterDirective(RegisterDirective directive, TextEditor editor, bool preserveCaretPosition)
        {
            var node = GetRegisterInsertionPointNode();

            if (node == null)
            {
                return;
            }

            Doc.Info.RegisteredTags.Add(directive);

            var line = Math.Max(node.Location.EndLine, node.Location.BeginLine);
            var pos  = editor.GetPositionFromLineColumn(line, editor.GetLineLength(line) + 1);

            if (pos < 0)
            {
                return;
            }

            editor.BeginAtomicUndo();
            var oldCaret = editor.CursorPosition;

            var inserted = editor.InsertText(pos, editor.NewLine + directive.ToString());

            if (preserveCaretPosition)
            {
                editor.CursorPosition = (pos < oldCaret)? oldCaret + inserted : oldCaret;
            }
            editor.EndAtomicUndo();
        }
コード例 #3
0
		public void AddRegisterDirective (RegisterDirective directive, TextEditorData editor, bool preserveCaretPosition)
		{
			var node = GetRegisterInsertionPointNode ();
			if (node == null)
				return;
			
			Doc.Info.RegisteredTags.Add (directive);
			
			var line = Math.Max (node.Region.EndLine, node.Region.BeginLine);
			var pos = editor.Document.LocationToOffset (line, editor.Document.GetLine (line - 1).Length);
			if (pos < 0)
				return;
			
			using (var undo = editor.OpenUndoGroup ()) {
				var oldCaret = editor.Caret.Offset;
				
				var inserted = editor.Insert (pos, editor.EolMarker + directive.ToString ());
				if (preserveCaretPosition) {
					editor.Caret.Offset = (pos < oldCaret)? oldCaret + inserted : oldCaret;
				}
			}
		}
		public void AddRegisterDirective (RegisterDirective directive, TextEditor editor, bool preserveCaretPosition)
		{
			var node = GetRegisterInsertionPointNode ();
			if (node == null)
				return;
			
			Doc.Info.RegisteredTags.Add (directive);
			
			var line = Math.Max (node.Location.EndLine, node.Location.BeginLine);
			var pos = editor.GetPositionFromLineColumn (line, editor.GetLineLength (line) + 1);
			if (pos < 0)
				return;
			
			editor.BeginAtomicUndo ();
			var oldCaret = editor.CursorPosition;
			
			var inserted = editor.InsertText (pos, editor.NewLine + directive.ToString ());
			if (preserveCaretPosition) {
				editor.CursorPosition = (pos < oldCaret)? oldCaret + inserted : oldCaret;
			}
			editor.EndAtomicUndo ();
		}