本文整理汇总了C#中ScintillaNet.ScintillaControl.StyleAt方法的典型用法代码示例。如果您正苦于以下问题:C# ScintillaControl.StyleAt方法的具体用法?C# ScintillaControl.StyleAt怎么用?C# ScintillaControl.StyleAt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ScintillaNet.ScintillaControl
的用法示例。
在下文中一共展示了ScintillaControl.StyleAt方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PositionInfos
public PositionInfos(ScintillaControl sci, Int32 position, String argString)
{
// Variables
String[] vars = argString.Split('¤');
this.ArgCurWord = vars[0];
this.ArgPackageName = vars[1];
this.ArgClassName = vars[2];
this.ArgClassType = vars[3];
this.ArgMemberName = vars[4];
this.ArgMemberType = vars[5];
// Selection
Int32 ss = sci.SelectionStart;
Int32 se = sci.SelectionEnd;
if (se != ss)
{
this.SelectionStart = ss;
this.SelectionEnd = se;
this.HasSelection = true;
if (sci.LineFromPosition(ss) != sci.LineFromPosition(se))
this.SelectionIsMultiline = true;
else SelectedText = sci.SelText;
}
// Current
this.CurrentPosition = position;
this.CurrentCharCode = sci.CharAt(position);
this.CurrentIsWhiteChar = (HelpTools.IsWhiteChar(this.CurrentCharCode));
this.CurrentIsDotChar = (this.CurrentCharCode == 46);
this.CurrentIsActionScriptChar = HelpTools.IsActionScriptChar(this.CurrentCharCode);
this.CurrentIsWordChar = HelpTools.IsWordChar((byte)this.CurrentCharCode);
Int32 s = sci.StyleAt(position);
this.CurrentIsInsideComment = (s == 1 || s == 2 || s == 3 || s == 17);
// Next
Int32 np = sci.PositionAfter(position);
if (np != position)
this.NextPosition = np;
else
this.CaretIsAtEndOfDocument = true;
// Word
this.CodePage = sci.CodePage; // (UTF-8|Big Endian|Little Endian : 65001) (8 Bits|UTF-7 : 0)
if (this.CurrentIsInsideComment == false && this.SelectionIsMultiline == false)
{
Int32 wsp = sci.WordStartPosition(position, true);
// Attention (WordEndPosition n'est pas estimé comme par defaut)
Int32 wep = sci.PositionBefore(sci.WordEndPosition(position, true));
if (this.CodePage != 65001)
{
wsp = HelpTools.GetWordStartPositionByWordChar(sci, position);
// Attention (WordEndPosition n'est pas estimé comme par defaut)
wep = sci.PositionBefore(HelpTools.GetWordEndPositionByWordChar(sci, position));
}
this.WordStartPosition = wsp;
this.WordEndPosition = wep;
if (this.CodePage == 65001)
this.WordFromPosition = this.ArgCurWord;
else
this.WordFromPosition = HelpTools.GetText(sci, wsp, sci.PositionAfter(wep));
if (position > wep)
this.CaretIsAfterLastLetter = true;
}
// Previous
if (this.CurrentPosition > 0)
{
this.PreviousPosition = sci.PositionBefore(position);
this.PreviousCharCode = sci.CharAt(this.PreviousPosition);
this.PreviousIsWhiteChar = HelpTools.IsWhiteChar(this.PreviousCharCode);
this.PreviousIsDotChar = (this.PreviousCharCode == 46);
this.PreviousIsActionScriptChar = HelpTools.IsActionScriptChar(this.PreviousCharCode);
}
// Line
this.CurrentLineIdx = sci.LineFromPosition(position);
if (this.CurrentPosition > 0)
this.PreviousLineIdx = sci.LineFromPosition(this.PreviousPosition);
this.LineIdxMax = sci.LineCount - 1;
this.LineStartPosition = HelpTools.LineStartPosition(sci, this.CurrentLineIdx);
this.LineEndPosition = sci.LineEndPosition(this.CurrentLineIdx);
this.NewLineMarker = LineEndDetector.GetNewLineMarker(sci.EOLMode);
// Previous / Next
if (this.WordStartPosition != -1)
{
this.PreviousNonWhiteCharPosition = HelpTools.PreviousNonWhiteCharPosition(sci, this.WordStartPosition);
this.PreviousWordIsFunction = (sci.GetWordFromPosition(this.PreviousNonWhiteCharPosition) == "function");
this.NextNonWhiteCharPosition = HelpTools.NextNonWhiteCharPosition(sci, this.WordEndPosition);
}
// Function
if (this.PreviousWordIsFunction)
{
//.........这里部分代码省略.........
示例2: GenerateExtractVariable
public static void GenerateExtractVariable(ScintillaControl Sci, string NewName)
{
FileModel cFile;
string expression = Sci.SelText.Trim(new char[] { '=', ' ', '\t', '\n', '\r', ';', '.' });
expression = expression.TrimEnd(new char[] { '(', '[', '{', '<' });
expression = expression.TrimStart(new char[] { ')', ']', '}', '>' });
cFile = ASContext.Context.CurrentModel;
ASFileParser parser = new ASFileParser();
parser.ParseSrc(cFile, Sci.Text);
MemberModel current = cFile.Context.CurrentMember;
string characterClass = ScintillaControl.Configuration.GetLanguage(Sci.ConfigurationLanguage).characterclass.Characters;
int funcBodyStart = GetBodyStart(current.LineFrom, current.LineTo, Sci);
Sci.SetSel(funcBodyStart, Sci.LineEndPosition(current.LineTo));
string currentMethodBody = Sci.SelText;
bool isExprInSingleQuotes = (expression.StartsWith('\'') && expression.EndsWith('\''));
bool isExprInDoubleQuotes = (expression.StartsWith('\"') && expression.EndsWith('\"'));
int stylemask = (1 << Sci.StyleBits) - 1;
int lastPos = -1;
char prevOrNextChar;
Sci.Colourise(0, -1);
while (true)
{
lastPos = currentMethodBody.IndexOfOrdinal(expression, lastPos + 1);
if (lastPos > -1)
{
if (lastPos > 0)
{
prevOrNextChar = currentMethodBody[lastPos - 1];
if (characterClass.IndexOf(prevOrNextChar) > -1)
{
continue;
}
}
if (lastPos + expression.Length < currentMethodBody.Length)
{
prevOrNextChar = currentMethodBody[lastPos + expression.Length];
if (characterClass.IndexOf(prevOrNextChar) > -1)
{
continue;
}
}
int style = Sci.StyleAt(funcBodyStart + lastPos) & stylemask;
if (ASComplete.IsCommentStyle(style))
{
continue;
}
else if ((isExprInDoubleQuotes && currentMethodBody[lastPos] == '"' && currentMethodBody[lastPos + expression.Length - 1] == '"')
|| (isExprInSingleQuotes && currentMethodBody[lastPos] == '\'' && currentMethodBody[lastPos + expression.Length - 1] == '\''))
{
}
else if (!ASComplete.IsTextStyle(style))
{
continue;
}
Sci.SetSel(funcBodyStart + lastPos, funcBodyStart + lastPos + expression.Length);
Sci.ReplaceSel(NewName);
currentMethodBody = currentMethodBody.Substring(0, lastPos) + NewName + currentMethodBody.Substring(lastPos + expression.Length);
lastPos += NewName.Length;
}
else
{
break;
}
}
Sci.CurrentPos = funcBodyStart;
Sci.SetSel(Sci.CurrentPos, Sci.CurrentPos);
MemberModel m = new MemberModel(NewName, "", FlagType.LocalVar, 0);
m.Value = expression;
string snippet = TemplateUtils.GetTemplate("Variable");
snippet = TemplateUtils.ReplaceTemplateVariable(snippet, "Modifiers", null);
snippet = TemplateUtils.ToDeclarationString(m, snippet);
snippet += NewLine + "$(Boundary)";
SnippetHelper.InsertSnippetText(Sci, Sci.CurrentPos, snippet);
}
示例3: GetContext
private LocalContext GetContext(ScintillaControl sci, int position)
{
var ctx = new LocalContext(sci);
int i = position - 1;
int style = sci.StyleAt(i-1);
if (style == (int)CSS.COMMENT) // inside comments
{
ctx.InComments = true;
return ctx;
}
int inString = 0;
if (style == 14) inString = 1;
if (style == 13) inString = 2;
bool inWord = true;
bool inComment = false;
bool inPar = false;
string word = "";
int lastCharPos = i;
while (i > 1)
{
char c = (char)sci.CharAt(i--);
if (wordChars.IndexOf(c) >= 0)
{
lastCharPos = i + 1;
if (inWord) word = c + word;
}
else inWord = false;
if (inString > 0)
{
if (inString == 1 && c == '\'') inString = 0;
else if (inString == 2 && c == '"') inString = 0;
continue;
}
if (inComment)
{
if (c == '*' && i > 0 && (char)sci.CharAt(i) == '/') inComment = false;
continue;
}
if (c == '/' && i > 0 && (char)sci.CharAt(i) == '*') // entering comment
inComment = true;
if (c == '\'') inString = 1; // entering line
else if (c == '"') inString = 2;
else if (c == ')') inPar = true;
else if (inPar)
{
if (c == '(') inPar = false;
continue;
}
else if (c == ':')
{
ctx.Separator = c;
ctx.Position = lastCharPos;
string attr = ReadAttribute(sci, i);
if (attr.Length > 1)
{
if (attr[0] == features.Trigger || IsVarDecl(sci, i))
ctx.IsVar = true;
else if (!IsTag(attr))
{
ctx.InValue = true;
ctx.Property = attr;
}
}
break;
}
else if (c == ';' || c == '{')
{
ctx.Separator = c;
ctx.Position = lastCharPos;
ctx.InBlock = !IsVarDecl(sci, i);
break;
}
else if (c == '}' || c == ',' || c == '.' || c == '#')
{
ctx.Separator = c;
ctx.Position = lastCharPos;
break;
}
else if (c == '(')
{
string tok = ReadWordLeft(sci, i);
if (tok == "url")
{
ctx.Separator = '(';
ctx.InUrl = true;
ctx.Position = i + 1;
word = "";
for (int j = i + 2; j < position; j++)
word += (char)sci.CharAt(j);
break;
}
}
//.........这里部分代码省略.........
示例4: SciControl_CharAdded
unsafe void SciControl_CharAdded(ScintillaControl sender, int ch)
{
if (ch == bracketOpen)
{
insert = arrBracketClose;
}
else if (ch == quote)
{
insert = arrQuote;
}
else if (ch == squareBracketOpen)
{
insert = arrSquareBracketClose;
}
else if (ch == bracketClose)
{
if (sender.CharAt(sender.CurrentPos) == bracketClose)
{
// temporary disable
sender.ModEventMask ^= (Int32)ScintillaNet.Enums.ModificationFlags.BeforeDelete;
sender.CharRight();
sender.DeleteBack();
sender.ModEventMask ^= (Int32)ScintillaNet.Enums.ModificationFlags.BeforeDelete;
return;
}
return;
}
else if (ch == squareBracketClose)
{
if (sender.CharAt(sender.CurrentPos) == squareBracketClose)
{
// temporary disable
sender.ModEventMask ^= (Int32)ScintillaNet.Enums.ModificationFlags.BeforeDelete;
sender.CharRight();
sender.DeleteBack();
sender.ModEventMask ^= (Int32)ScintillaNet.Enums.ModificationFlags.BeforeDelete;
return;
}
return;
}
else
{
return;
}
int pos = sender.CurrentPos;
uint actPos = (uint)pos;
char character;
do
{
character =(char) sender.CharAt(pos);
if (character == '\n') break;
if (!Char.IsWhiteSpace(character)) break;
pos++;
} while (true);
// if (Char.IsLetterOrDigit(character) || character == ch || character == insert[0]) return;
if (Char.IsLetterOrDigit(character) || character == ch ) return;
int stylemask = (1 << sender.StyleBits) - 1;
bool isTextStyle = ASComplete.IsTextStyle(sender.StyleAt(sender.CurrentPos) & stylemask);
int style = sender.StyleAt(sender.CurrentPos - 1) & stylemask;
if (ch == quote)
{
if (!isTextStyle)
{
fixed (byte* b = System.Text.Encoding.GetEncoding(sender.CodePage).GetBytes(insert))
{
sender.SPerform(2003, actPos, (uint)b);
}
}
return;
}
if (!ASComplete.IsTextStyle(style) && !isTextStyle)
{
return;
}
fixed (byte* b = System.Text.Encoding.GetEncoding(sender.CodePage).GetBytes(insert))
{
sender.SPerform(2003, actPos, (uint)b);
}
}
示例5: IsFunctionParameter
private static bool IsFunctionParameter(ScintillaControl sender, int position)
{
char c;
int openBrace = 0;
int commasCount = 0;
ASResult result = null;
do
{
c = (char)sender.CharAt(position);
if (c == ';' || c == '{' || c == '}') break;
if (c == '(')
{
openBrace--;
if (openBrace == -1)
{
result = ASComplete.GetExpressionType(sender, position);
break;
}
}
else if (c == ')')
{
openBrace++;
}
else if (c == ',')
{
int stylemask = (1 << sender.StyleBits) - 1;
bool isTextStyle = ASComplete.IsTextStyle(sender.StyleAt(position) & stylemask);
//int style = sender.StyleAt(position - 1) & stylemask;
if (isTextStyle)
if (openBrace == 0) commasCount++;
}
position--;
}
while (true);
//while (c != ';' && c != '{' && c != '}');
if (result == null) return false;
if (result.Member == null) return false;
MemberModel md = result.Member;
if (md.Parameters.Count <= commasCount) return false;
if (md.Parameters==null || md.Parameters.Count == 0) return false;
if (md.Parameters[commasCount].Type=="Function")
{
return true;
}
return false;
}
示例6: GetConversion
/// <summary>
/// Converts a string to RTF based on scintilla configuration
/// </summary>
public static String GetConversion(Language lang, ScintillaControl sci, int start, int end)
{
UseStyle[] useStyles = lang.usestyles;
Dictionary<uint, ColorData> StyleColors = new Dictionary<uint, ColorData>(MAX_COLORDEF);
Dictionary<string, FontData> StyleFonts = new Dictionary<string, FontData>(MAX_FONTDEF);
String text = sci.Text.Clone().ToString();
StringBuilder rtfHeader = new StringBuilder(RTF_HEADEROPEN);
StringBuilder rtfFont = new StringBuilder(RTF_FONTDEFOPEN);
StringBuilder rtfColor = new StringBuilder(RTF_COLORDEFOPEN);
StringBuilder rtf = new StringBuilder();
char[] chars = text.ToCharArray();
int lengthDoc = text.Length;
int lastStyleByte = -1;
string lastFontName = "";
int lastFontSize = -1;
bool lastBold = false;
bool lastItalic = false;
uint lastBack = 0;
uint lastFore = 0;
if (end < 0 || end > lengthDoc)
{
end = lengthDoc;
}
int totalColors = 1;
int totalFonts = 0;
//----------------------------------------------------
// Grab all styles used based on the Style Byte.
// Then store the basic properties in a Dictionary.
//----------------------------------------------------
for (int istyle = start; istyle < end; istyle++)
{
// Store Byte
int styleByte = sci.StyleAt(istyle);
// Check Difference
if (styleByte != lastStyleByte)
{
// Store Style
UseStyle sty = useStyles[styleByte];
// Grab Properties
string fontName = sty.FontName;
int fontSize = sty.FontSize * 2;
bool bold = sty.IsBold;
bool italic = sty.IsItalics;
uint back = (uint)sty.BackgroundColor;
uint fore = (uint)(sty.fore != null && sty.fore.Length > 0 ? int.Parse(sty.fore.Substring(2, sty.fore.Length - 2), System.Globalization.NumberStyles.HexNumber) : 0);
if (lastFontName != fontName || lastFontSize != fontSize || lastBold != bold || lastItalic != italic || lastBack != back || lastFore != fore)
{
// Check Colors
ColorData backColorTest;
ColorData foreColorTest;
if (!StyleColors.TryGetValue(back, out backColorTest))
{
Color newColor = Color.FromArgb((int)back);
backColorTest = new ColorData(totalColors++, newColor);
StyleColors.Add(back, backColorTest);
rtfColor.AppendFormat(RTF_SET_COLOR, newColor.R, newColor.G, newColor.B);
Console.WriteLine(Color.FromArgb((int)back));
}
if (!StyleColors.TryGetValue(fore, out foreColorTest))
{
Color newColor = Color.FromArgb((int)fore);
foreColorTest = new ColorData(totalColors++, newColor);
StyleColors.Add(fore, foreColorTest);
rtfColor.AppendFormat(RTF_SET_COLOR, newColor.R, newColor.G, newColor.B);
Console.WriteLine(Color.FromArgb((int)fore));
}
// Check Fonts
FontData fontTest;
if (!StyleFonts.TryGetValue(fontName, out fontTest))
{
fontTest = new FontData(totalFonts, fontName);
StyleFonts.Add(fontName, fontTest);
rtfFont.Append(@"{" + RTF_SETFONTFACE + totalFonts + " " + fontName + ";}");
totalFonts++;
Console.WriteLine(fontName);
}
rtf.Append((lastStyleByte == -1 ? "{\\pard\\plain" : "}{\\pard\\plain"));
// Write out RTF
rtf.AppendFormat(RTF_SET_FORMAT, fontTest.FontIndex, fontSize, backColorTest.ColorIndex, foreColorTest.ColorIndex, (bold ? "" : "0"), (italic ? "" : "0"));
}
lastFontName = fontName;
lastFontSize = fontSize;
lastBold = bold;
lastItalic = italic;
lastBack = back;
lastFore = fore;
}
lastStyleByte = styleByte;
char ch = chars[istyle];
String curr = "";
if (ch == '{') curr = "\\{";
else if (ch == '}') curr = "\\}";
else if (ch == '\\') curr = "\\\\";
else if (ch == '\t')
{
if (sci.IsUseTabs) curr = RTF_TAB;
else curr = "".PadRight(sci.Indent, ' ');
//.........这里部分代码省略.........
示例7: Execute
public void Execute()
{
Sci = PluginBase.MainForm.CurrentDocument.SciControl;
Sci.BeginUndoAction();
try
{
IASContext context = ASContext.Context;
Int32 pos = Sci.CurrentPos;
string expression = Sci.SelText.Trim(new char[] { '=', ' ', '\t', '\n', '\r', ';', '.' });
expression = expression.TrimEnd(new char[] { '(', '[', '{', '<' });
expression = expression.TrimStart(new char[] { ')', ']', '}', '>' });
cFile = ASContext.Context.CurrentModel;
ASFileParser parser = new ASFileParser();
parser.ParseSrc(cFile, Sci.Text);
MemberModel current = cFile.Context.CurrentMember;
string characterClass = ScintillaControl.Configuration.GetLanguage(Sci.ConfigurationLanguage).characterclass.Characters;
int funcBodyStart = ASGenerator.GetBodyStart(current.LineFrom, current.LineTo, Sci);
Sci.SetSel(funcBodyStart, Sci.LineEndPosition(current.LineTo));
string currentMethodBody = Sci.SelText;
bool isExprInSingleQuotes = (expression.StartsWith("'") && expression.EndsWith("'"));
bool isExprInDoubleQuotes = (expression.StartsWith("\"") && expression.EndsWith("\""));
int stylemask = (1 << Sci.StyleBits) - 1;
int lastPos = -1;
char prevOrNextChar;
Sci.Colourise(0, -1);
while (true)
{
lastPos = currentMethodBody.IndexOf(expression, lastPos + 1);
if (lastPos > -1)
{
if (lastPos > 0)
{
prevOrNextChar = currentMethodBody[lastPos - 1];
if (characterClass.IndexOf(prevOrNextChar) > -1)
{
continue;
}
}
if (lastPos + expression.Length < currentMethodBody.Length)
{
prevOrNextChar = currentMethodBody[lastPos + expression.Length];
if (characterClass.IndexOf(prevOrNextChar) > -1)
{
continue;
}
}
int style = Sci.StyleAt(funcBodyStart + lastPos) & stylemask;
if (ASComplete.IsCommentStyle(style))
{
continue;
}
else if ((isExprInDoubleQuotes && currentMethodBody[lastPos] == '"' && currentMethodBody[lastPos + expression.Length - 1] == '"')
|| (isExprInSingleQuotes && currentMethodBody[lastPos] == '\'' && currentMethodBody[lastPos + expression.Length - 1] == '\''))
{
}
else if (!ASComplete.IsTextStyle(style))
{
continue;
}
Sci.SetSel(funcBodyStart + lastPos, funcBodyStart + lastPos + expression.Length);
Sci.ReplaceSel(NewName);
currentMethodBody = currentMethodBody.Substring(0, lastPos) + NewName + currentMethodBody.Substring(lastPos + expression.Length);
lastPos += NewName.Length;
}
else
{
break;
}
}
Sci.CurrentPos = funcBodyStart;
Sci.SetSel(Sci.CurrentPos, Sci.CurrentPos);
string snippet = "var " + NewName + ":$(EntryPoint) = " + expression + ";\n$(Boundary)";
SnippetHelper.InsertSnippetText(Sci, Sci.CurrentPos, snippet);
}
finally
{
Sci.EndUndoAction();
}
}