Compare commits
6 Commits
42b0b0acf9
...
0.4.2
| Author | SHA1 | Date | |
|---|---|---|---|
| 9b8900d7a7 | |||
|
792bba4875
|
|||
|
1c39e146fb
|
|||
|
47bcd0be34
|
|||
|
445f731170
|
|||
|
c7aa30581d
|
@@ -14,7 +14,7 @@ public class SlangFormatter : ICodeFormatter
|
|||||||
private CancellationTokenSource? _lspCancellationToken;
|
private CancellationTokenSource? _lspCancellationToken;
|
||||||
private object _tokenLock = new();
|
private object _tokenLock = new();
|
||||||
|
|
||||||
protected static Editor? Ic10Editor = null;
|
protected Editor? Ic10Editor = null;
|
||||||
private IC10CodeFormatter iC10CodeFormatter = new IC10CodeFormatter();
|
private IC10CodeFormatter iC10CodeFormatter = new IC10CodeFormatter();
|
||||||
private string ic10CompilationResult = "";
|
private string ic10CompilationResult = "";
|
||||||
private List<SourceMapEntry> ic10SourceMap = new();
|
private List<SourceMapEntry> ic10SourceMap = new();
|
||||||
@@ -193,14 +193,18 @@ public class SlangFormatter : ICodeFormatter
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateIc10Formatter()
|
private void UpdateIc10Formatter()
|
||||||
{
|
|
||||||
if (Ic10Editor is null)
|
|
||||||
{
|
{
|
||||||
var tab = Editor.ParentTab;
|
var tab = Editor.ParentTab;
|
||||||
|
if (Ic10Editor == null)
|
||||||
|
{
|
||||||
iC10CodeFormatter = new IC10CodeFormatter();
|
iC10CodeFormatter = new IC10CodeFormatter();
|
||||||
Ic10Editor = new Editor(Editor.KeyHandler);
|
Ic10Editor = new Editor(Editor.KeyHandler);
|
||||||
Ic10Editor.IsReadOnly = true;
|
Ic10Editor.IsReadOnly = true;
|
||||||
iC10CodeFormatter.Editor = Ic10Editor;
|
iC10CodeFormatter.Editor = Ic10Editor;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tab.Editors.Count < 2)
|
||||||
|
{
|
||||||
tab.AddEditor(Ic10Editor);
|
tab.AddEditor(Ic10Editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,33 +223,26 @@ public class SlangFormatter : ICodeFormatter
|
|||||||
|
|
||||||
if (lines.Count() < 1)
|
if (lines.Count() < 1)
|
||||||
{
|
{
|
||||||
|
Ic10Editor.Selection = new TextRange
|
||||||
|
{
|
||||||
|
End = new TextPosition { Col = 0, Line = 0 },
|
||||||
|
Start = new TextPosition { Col = 0, Line = 0 },
|
||||||
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// get the total range of the IC10 source for the selected Slang line
|
// get the total range of the IC10 source for the selected Slang line
|
||||||
var max = lines.Max(line => line.Ic10Line);
|
var max = lines.Max(line => line.Ic10Line);
|
||||||
var min = lines.Min(line => line.Ic10Line);
|
var min = lines.Min(line => line.Ic10Line);
|
||||||
|
|
||||||
|
Ic10Editor.CaretPos = new TextPosition { Col = 0, Line = (int)max };
|
||||||
|
|
||||||
// highlight all the IC10 lines that are within the specified range
|
// highlight all the IC10 lines that are within the specified range
|
||||||
foreach (var index in Enumerable.Range((int)min, (int)(max - min) + 1))
|
Ic10Editor.Selection.Start = new TextPosition { Col = 0, Line = (int)min };
|
||||||
|
Ic10Editor.Selection.End = new TextPosition
|
||||||
{
|
{
|
||||||
var lineText = Ic10Editor.Lines[index].Text;
|
Col = Ic10Editor.Lines[(int)max].Text.Length,
|
||||||
|
Line = (int)max,
|
||||||
var newLine = new StyledLine(
|
};
|
||||||
lineText,
|
|
||||||
[
|
|
||||||
new SemanticToken
|
|
||||||
{
|
|
||||||
Column = 0,
|
|
||||||
Length = lineText.Length,
|
|
||||||
Line = index,
|
|
||||||
Background = ColorIdentifier,
|
|
||||||
Color = ColorFromHTML("black"),
|
|
||||||
},
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
Ic10Editor.Lines[index] = newLine;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This runs on the Main Thread
|
// This runs on the Main Thread
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
|
||||||
using System.IO.Compression;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace Slang;
|
namespace Slang;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use crate::compile;
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use crate::compile;
|
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use crate::compile;
|
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use crate::compile;
|
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use crate::compile;
|
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use crate::compile;
|
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
use crate::compile;
|
|
||||||
use indoc::indoc;
|
use indoc::indoc;
|
||||||
use pretty_assertions::assert_eq;
|
use pretty_assertions::assert_eq;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user