// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace ICSharpCode.Editor
{
/*
///
/// Interface for text editors.
///
public interface ITextEditor : IServiceProvider
{
///
/// Gets the document that is being edited.
///
IDocument Document { get; }
///
/// Gets an object that represents the caret inside this text editor.
///
ITextEditorCaret Caret { get; }
///
/// Sets the caret to the specified line/column and brings the caret into view.
///
void JumpTo(int line, int column);
///
/// Gets the start offset of the selection.
///
int SelectionStart { get; }
///
/// Gets the length of the selection.
///
int SelectionLength { get; }
///
/// Gets/Sets the selected text.
///
string SelectedText { get; set; }
///
/// Sets the selection.
///
/// Start offset of the selection
/// Length of the selection
void Select(int selectionStart, int selectionLength);
///
/// Shows the specified linked elements, and allows the user to edit them.
///
///
/// Returns true when the user has finished editing the elements and pressed Return;
/// or false when editing is aborted for any reason.
///
///
/// The user can also edit other parts of the document (or other documents) while in link mode.
/// In case of success (true return value), this method will update the offsets of the linked elements
/// to reflect the changes done by the user.
/// If the text editor does not support link mode, it will immediately return false.
///
// Task ShowLinkedElements(IEnumerable linkedElements);
}
*/
///
/// Represents the caret in a text editor.
///
public interface ITextEditorCaret
{
///
/// Gets/Sets the caret offset;
///
int Offset { get; set; }
///
/// Gets/Sets the caret line number.
/// Line numbers are counted starting from 1.
///
int Line { get; set; }
///
/// Gets/Sets the caret column number.
/// Column numbers are counted starting from 1.
///
int Column { get; set; }
///
/// Gets/sets the caret location.
///
TextLocation Location { get; set; }
///
/// Is raised whenever the location of the caret has changed.
///
event EventHandler LocationChanged;
}
}