using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.Foundation;
namespace Monaco.Editor
{
#pragma warning disable CS1591
///
/// https://github.com/Microsoft/vscode/blob/master/src/vs/editor/common/editorCommon.ts#L228
///
public enum EndOfLinePreference
{
TextDefined = 0,
LF = 1,
CRLF = 2
}
///
/// https://github.com/Microsoft/vscode/blob/master/src/vs/editor/common/editorCommon.ts#L260
///
public enum EndOfLineSequence
{
LF = 0,
CRLF = 1
}
///
/// https://microsoft.github.io/monaco-editor/api/interfaces/monaco.editor.imodel.html
///
public interface IModel
{
// TODO: Events
string Id { get; }
Uri Uri { get; }
//IIdentifiedSingleEditOperation[] ApplyEditsAsync(IIdentifiedSingleEditOperation[] operations)
//DeltaDecorationsAsync
IAsyncAction DetectIndentationAsync(bool defaultInsertSpaces, bool defaultTabSize);
//FindMatchesAsync(string searchString, bool searchOnlyEditableRange, bool isRegex, ...)
//FindNextMatchAsync
//FindPreviousMatchAsync
//GetAllDecorationsAsync
IAsyncOperation GetAlternativeVersionIdAsync();
//GetDecorationOptionsAsync
//GetDecorationRangeAsync
//GetDecorationsInRangeAsync
IAsyncOperation GetEOLAsync();
IAsyncOperation GetFullModelRangeAsync();
IAsyncOperation GetLineContentAsync(uint lineNumber);
IAsyncOperation GetLineCountAsync();
//GetLineDecorationsAsync
IAsyncOperation GetLineFirstNonWhitespaceColumnAsync(uint lineNumber);
IAsyncOperation GetLineLastNonWhitespaceColumnAsync(uint lineNumber);
IAsyncOperation GetLineLengthAsync(uint lineNumber);
IAsyncOperation GetLineMaxColumnAsync(uint lineNumber);
IAsyncOperation GetLineMinColumnAsync(uint lineNumber);
IAsyncOperation> GetLinesContentAsync();
//GetLinesDecorationsAsync
IAsyncOperation GetModelIdAsync();
IAsyncOperation GetOffsetAtAsync(IPosition position);
IAsyncOperation GetOneIndentAsync();
//GetOptionsAsync
IAsyncOperation GetPositionAtAsync(uint offset);
IAsyncOperation GetValueAsync();
// TextDefined is default eol
IAsyncOperation GetValueAsync(EndOfLinePreference eol);
IAsyncOperation GetValueAsync(EndOfLinePreference eol, bool preserveBOM);
IAsyncOperation GetValueInRangeAsync(IRange range);
IAsyncOperation GetValueInRangeAsync(IRange range, EndOfLinePreference eol);
IAsyncOperation GetValueLengthAsync();
IAsyncOperation GetValueLengthAsync(EndOfLinePreference eol);
IAsyncOperation GetValueLengthAsync(EndOfLinePreference eol, bool preserveBOM);
IAsyncOperation GetValueLengthInRangeAsync(IRange range);
IAsyncOperation GetVersionIdAsync();
IAsyncOperation GetWordAtPositionAsync(IPosition position);
IAsyncOperation GetWordUntilPositionAsync(IPosition position);
IAsyncOperation ModifyPositionAsync(IPosition position, int number);
IAsyncOperation NormalizeIndentationAsync(string str);
//PushEditOperationsAsync
IAsyncAction PushStackElementAsync();
IAsyncAction SetEOLAsync(EndOfLineSequence eol);
IAsyncAction SetValue(string newValue);
//IAsyncAction UpdateOptions(ITextModelUpdateOptions newOpts);
IAsyncOperation ValidatePositionAsync(IPosition position);
IAsyncOperation ValidateRangeAsync(IRange range);
}
#pragma warning restore CS1591
}