本文整理汇总了C#中ScintillaNet.EndUndoAction方法的典型用法代码示例。如果您正苦于以下问题:C# ScintillaNet.EndUndoAction方法的具体用法?C# ScintillaNet.EndUndoAction怎么用?C# ScintillaNet.EndUndoAction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ScintillaNet
的用法示例。
在下文中一共展示了ScintillaNet.EndUndoAction方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateDelegateMethods
//.........这里部分代码省略.........
if (m.Parameters != null && m.Parameters.Count > 0)
{
MemberModel mm = m.Parameters[m.Parameters.Count - 1];
if (mm.Name.StartsWith("..."))
isVararg = true;
}
string callMethodTemplate = TemplateUtils.GetTemplate("CallFunction");
if (!isVararg)
{
callMethodTemplate = TemplateUtils.ReplaceTemplateVariable(callMethodTemplate, "Name", member.Name + "." + m.Name);
callMethodTemplate = TemplateUtils.ReplaceTemplateVariable(callMethodTemplate, "Arguments",
TemplateUtils.CallParametersString(m));
callMethodTemplate += ";";
}
else
{
List<MemberModel> pseudoParamsList = new List<MemberModel>();
pseudoParamsList.Add(new MemberModel("null", null, FlagType.ParameterVar, 0));
pseudoParamsList.Add(new MemberModel("[$(Subarguments)].concat($(Lastsubargument))", null, FlagType.ParameterVar, 0));
MemberModel pseudoParamsOwner = new MemberModel();
pseudoParamsOwner.Parameters = pseudoParamsList;
callMethodTemplate = TemplateUtils.ReplaceTemplateVariable(callMethodTemplate, "Name",
member.Name + "." + m.Name + ".apply");
callMethodTemplate = TemplateUtils.ReplaceTemplateVariable(callMethodTemplate, "Arguments",
TemplateUtils.CallParametersString(pseudoParamsOwner));
callMethodTemplate += ";";
List<MemberModel> arrayParamsList = new List<MemberModel>();
for (int i = 0; i < m.Parameters.Count - 1; i++)
{
MemberModel param = m.Parameters[i];
arrayParamsList.Add(param);
}
pseudoParamsOwner.Parameters = arrayParamsList;
callMethodTemplate = TemplateUtils.ReplaceTemplateVariable(callMethodTemplate, "Subarguments",
TemplateUtils.CallParametersString(pseudoParamsOwner));
callMethodTemplate = TemplateUtils.ReplaceTemplateVariable(callMethodTemplate, "Lastsubargument",
m.Parameters[m.Parameters.Count - 1].Name.TrimStart(new char[] { '.', ' '}));
}
methodTemplate = TemplateUtils.ReplaceTemplateVariable(methodTemplate, "Body", callMethodTemplate);
}
methodTemplate = TemplateUtils.ReplaceTemplateVariable(methodTemplate, "BlankLine", NewLine);
result += methodTemplate;
if (m.Parameters != null)
{
for (int i = 0; i < m.Parameters.Count; i++)
{
MemberModel param = m.Parameters[i];
if (param.Type != null)
{
type = ASContext.Context.ResolveType(param.Type, selectedMembers[m].InFile);
importsList.Add(type.QualifiedName);
}
}
}
if (position < 0)
{
MemberModel latest = GetLatestMemberForFunction(inClass, mCopy.Access, mCopy);
if (latest == null)
{
position = Sci.WordStartPosition(Sci.CurrentPos, true);
Sci.SetSel(position, Sci.WordEndPosition(position, true));
}
else
{
position = Sci.PositionFromLine(latest.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
Sci.SetSel(position, position);
}
}
else
{
position = Sci.CurrentPos;
}
if (m.Type != null)
{
type = ASContext.Context.ResolveType(m.Type, selectedMembers[m].InFile);
importsList.Add(type.QualifiedName);
}
}
if (importsList.Count > 0 && position > -1)
{
int o = AddImportsByName(importsList, Sci.LineFromPosition(position));
position += o;
Sci.SetSel(position, position);
}
InsertCode(position, result);
}
finally { Sci.EndUndoAction(); }
}
示例2: GenerateOverride
//.........这里部分代码省略.........
if (isStatic) acc = features.staticKey + " " + acc;
if (!isAS2Event && !isObjectMethod)
acc = features.overrideKey + " " + acc;
acc = Regex.Replace(acc, "[ ]+", " ").Trim();
if ((flags & (FlagType.Getter | FlagType.Setter)) > 0)
{
string type = member.Type;
string name = member.Name;
if (member.Parameters != null && member.Parameters.Count == 1)
type = member.Parameters[0].Type;
type = FormatType(type);
if (type == null && !features.hasInference) type = features.objectKey;
bool genGetter = ofClass.Members.Search(name, FlagType.Getter, 0) != null;
bool genSetter = ofClass.Members.Search(name, FlagType.Setter, 0) != null;
if (isHaxe)
{
// property is public but not the methods
acc = features.overrideKey;
}
if (genGetter)
{
string tpl = TemplateUtils.GetTemplate("OverrideGetter", "Getter");
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Modifiers", acc);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Name", name);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Type", type);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Member", "super." + name);
decl += tpl;
}
if (genSetter)
{
string tpl = TemplateUtils.GetTemplate("OverrideSetter", "Setter");
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Modifiers", acc);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Name", name);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Type", type);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Member", "super." + name);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Void", ASContext.Context.Features.voidKey ?? "void");
if (decl.Length > 0)
{
tpl = "\n\n" + tpl.Replace("$(EntryPoint)", "");
}
decl += tpl;
}
decl = TemplateUtils.ReplaceTemplateVariable(decl, "BlankLine", "");
}
else
{
string type = FormatType(member.Type);
//if (type == null) type = features.objectKey;
decl = acc + features.functionKey + " ";
bool noRet = type == null || type.Equals("void", StringComparison.OrdinalIgnoreCase);
type = (noRet && type != null) ? ASContext.Context.Features.voidKey : type;
if (!noRet)
{
string qType = getQualifiedType(type, ofClass);
typesUsed.Add(qType);
if (qType == type)
{
ClassModel rType = ASContext.Context.ResolveType(type, ofClass.InFile);
if (!rType.IsVoid()) type = rType.Name;
}
}
string action = (isProxy || isAS2Event) ? "" : GetSuperCall(member, typesUsed, ofClass);
string template = TemplateUtils.GetTemplate("MethodOverride");
// fix parameters if needed
if (member.Parameters != null)
foreach (MemberModel para in member.Parameters)
if (para.Type == "any") para.Type = "*";
template = TemplateUtils.ReplaceTemplateVariable(template, "Modifiers", acc);
template = TemplateUtils.ReplaceTemplateVariable(template, "Name", member.Name);
template = TemplateUtils.ReplaceTemplateVariable(template, "Arguments", TemplateUtils.ParametersString(member, true));
template = TemplateUtils.ReplaceTemplateVariable(template, "Type", type);
template = TemplateUtils.ReplaceTemplateVariable(template, "Method", action);
decl = template;
}
Sci.BeginUndoAction();
try
{
if (ASContext.Context.Settings.GenerateImports && typesUsed.Count > 0)
{
int offset = AddImportsByName(typesUsed, line);
position += offset;
startPos += offset;
}
Sci.SetSel(startPos, position + member.Name.Length);
InsertCode(startPos, decl);
}
finally { Sci.EndUndoAction(); }
}
示例3: GenerateProperty
private static void GenerateProperty(GeneratorJobType job, MemberModel member, ClassModel inClass, ScintillaNet.ScintillaControl Sci)
{
MemberModel latest;
string name = GetPropertyNameFor(member);
PropertiesGenerationLocations location = ASContext.CommonSettings.PropertiesGenerationLocation;
latest = TemplateUtils.GetTemplateBlockMember(Sci, TemplateUtils.GetBoundary("AccessorsMethods"));
if (latest != null)
{
location = PropertiesGenerationLocations.AfterLastPropertyDeclaration;
}
else
{
if (location == PropertiesGenerationLocations.AfterLastPropertyDeclaration)
{
latest = FindLatest(FlagType.Getter | FlagType.Setter, 0, inClass, false, false);
}
else latest = member;
}
if (latest == null) return;
Sci.BeginUndoAction();
try
{
if (isHaxe)
{
if (name == null) name = member.Name;
string args = "(default, default)";
if (job == GeneratorJobType.GetterSetter) args = "(get, set)";
else if (job == GeneratorJobType.Getter) args = "(get, null)";
else if (job == GeneratorJobType.Setter) args = "(default, set)";
MakeHaxeProperty(Sci, member, args);
}
else
{
if ((member.Access & Visibility.Public) > 0) // hide member
{
MakePrivate(Sci, member);
}
if (name == null) // rename var with starting underscore
{
name = member.Name;
string newName = GetNewPropertyNameFor(member);
if (RenameMember(Sci, member, newName)) member.Name = newName;
}
}
int atLine = latest.LineTo + 1;
if (location == PropertiesGenerationLocations.BeforeVariableDeclaration)
atLine = latest.LineTo;
int position = Sci.PositionFromLine(atLine) - ((Sci.EOLMode == 0) ? 2 : 1);
if (job == GeneratorJobType.GetterSetter)
{
Sci.SetSel(position, position);
GenerateGetterSetter(name, member, position);
}
else
{
if (job != GeneratorJobType.Getter)
{
Sci.SetSel(position, position);
GenerateSetter(name, member, position);
}
if (job != GeneratorJobType.Setter)
{
Sci.SetSel(position, position);
GenerateGetter(name, member, position);
}
}
}
finally
{
Sci.EndUndoAction();
}
}
示例4: GenerateDelegateMethods
//.........这里部分代码省略.........
.Append(".")
.Append(m.Name)
.Append("(");
if (methodParams != null)
{
for (int i = 0; i < methodParams.Count; i++)
{
MemberModel param = methodParams[i];
sb.Append(param.Name);
if (i + 1 < methodParams.Count)
{
sb.Append(", ");
}
}
}
sb.Append(");");
}
else
{
sb.Append(member.Name)
.Append(".")
.Append(m.Name)
.Append(".apply(null, [");
for (int i = 0; i < methodParams.Count; i++)
{
MemberModel param = methodParams[i];
if (i + 1 < methodParams.Count)
{
sb.Append(param.Name);
if (i + 2 < methodParams.Count)
{
sb.Append(", ");
}
}
else
{
sb.Append("].concat(")
.Append(param.Name.Substring(3))
.Append(")");
}
}
sb.Append(");");
}
sb.Append("\n}");
if (methodParams != null)
{
for (int i = 0; i < methodParams.Count; i++)
{
MemberModel param = methodParams[i];
if (param.Type != null)
{
type = ASContext.Context.ResolveType(param.Type, selectedMembers[m].InFile);
importsList.Add(type.QualifiedName);
}
}
}
if (position < 0)
{
latest = FindLatest(FlagType.Function, inClass);
if (latest == null)
{
position = Sci.WordStartPosition(Sci.CurrentPos, true);
Sci.SetSel(position, Sci.WordEndPosition(position, true));
}
else
{
position = Sci.PositionFromLine(latest.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
Sci.SetSel(position, position);
}
}
else
{
position = Sci.CurrentPos;
}
if (m.Type != null)
{
type = ASContext.Context.ResolveType(m.Type, selectedMembers[m].InFile);
importsList.Add(type.QualifiedName);
}
}
if (importsList.Count > 0 && position > -1)
{
int o = AddImportsByName(importsList, Sci.LineFromPosition(position));
position += o;
Sci.SetSel(position, position);
}
InsertCode(position, sb.ToString());
}
finally { Sci.EndUndoAction(); }
}
示例5: GenerateOverride
//.........这里部分代码省略.........
ContextFeatures features = ASContext.Context.Features;
List<string> typesUsed = new List<string>();
bool isProxy = (member.Namespace == "flash_proxy");
if (isProxy) typesUsed.Add("flash.utils.flash_proxy");
bool isAS2Event = ASContext.Context.Settings.LanguageId == "AS2" && member.Name.StartsWith("on");
bool isObjectMethod = ofClass.QualifiedName == "Object";
int line = Sci.LineFromPosition(position);
string currentText = Sci.GetLine(line);
int startPos = currentText.Length;
GetStartPos(currentText, ref startPos, features.privateKey);
GetStartPos(currentText, ref startPos, features.protectedKey);
GetStartPos(currentText, ref startPos, features.internalKey);
GetStartPos(currentText, ref startPos, features.publicKey);
GetStartPos(currentText, ref startPos, features.staticKey);
GetStartPos(currentText, ref startPos, features.overrideKey);
startPos += Sci.PositionFromLine(line);
FlagType flags = member.Flags;
string acc = "";
string decl = "";
if (features.hasNamespaces && member.Namespace != null
&& member.Namespace.Length > 0 && member.Namespace != "internal")
acc = member.Namespace;
else if ((member.Access & Visibility.Public) > 0) acc = features.publicKey;
else if ((member.Access & Visibility.Internal) > 0) acc = features.internalKey;
else if ((member.Access & Visibility.Protected) > 0) acc = features.protectedKey;
else if ((member.Access & Visibility.Private) > 0) acc = features.privateKey;
bool isStatic = (flags & FlagType.Static) > 0;
if (isStatic) acc = features.staticKey + " " + acc;
if (!isAS2Event && !isObjectMethod)
acc = features.overrideKey + " " + acc;
if ((flags & (FlagType.Getter | FlagType.Setter)) > 0)
{
string type = member.Type;
string name = member.Name;
if (member.Parameters != null && member.Parameters.Count > 0)
type = member.Parameters[0].Type;
type = FormatType(type);
if (type == null)
{
string message = String.Format(TextHelper.GetString("Info.TypeDeclMissing"), member.Name);
ErrorManager.ShowInfo(message);
return;
}
if (ofClass.Members.Search(name, FlagType.Getter, 0) != null)
{
decl += String.Format(GetTemplate("Getter"),
acc, name, type, "super." + name);
}
if (ofClass.Members.Search(name, FlagType.Setter, 0) != null)
{
string tpl = GetTemplate("Setter");
if (decl.Length > 0)
{
decl += "\n\n";
tpl = tpl.Replace("$(EntryPoint)", "");
}
decl += String.Format(tpl,
acc, name, type, "super." + name, ASContext.Context.Features.voidKey ?? "void");
}
}
else
{
string type = FormatType(member.Type);
if (type == null)
{
string message = String.Format(TextHelper.GetString("Info.TypeDeclMissing"), member.Name);
ErrorManager.ShowInfo(message);
return;
}
if (acc.Length > 0) acc += " ";
decl = acc + features.functionKey + " ";
bool noRet = type.Equals("void", StringComparison.OrdinalIgnoreCase);
type = (noRet) ? ASContext.Context.Features.voidKey : type;
if (!noRet) typesUsed.Add(getQualifiedType(type, ofClass));
string action = (isProxy || isAS2Event) ? "" : GetSuperCall(member, typesUsed, ofClass);
decl += member.Name
+ String.Format(GetTemplate("MethodOverride"), member.ParametersString(true), type, action);
}
Sci.BeginUndoAction();
try
{
if (ASContext.Context.Settings.GenerateImports && typesUsed.Count > 0)
{
int offset = AddImportsByName(typesUsed, line);
position += offset;
startPos += offset;
}
Sci.SetSel(startPos, position + member.Name.Length);
InsertCode(startPos, decl);
}
finally { Sci.EndUndoAction(); }
}
示例6: InsertSnippetText
/// <summary>
/// Inserts the specified snippet to the document
/// </summary>
public static Int32 InsertSnippetText(ScintillaNet.ScintillaControl sci, Int32 currentPosition, String snippet)
{
sci.BeginUndoAction();
try
{
Int32 newIndent;
String text = snippet;
if (sci.SelTextSize > 0)
currentPosition -= sci.MBSafeTextLength(sci.SelText);
Int32 line = sci.LineFromPosition(currentPosition);
Int32 indent = sci.GetLineIndentation(line);
sci.ReplaceSel("");
Int32 lineMarker = LineEndDetector.DetectNewLineMarker(text, sci.EOLMode);
String newline = LineEndDetector.GetNewLineMarker(lineMarker);
if (newline != "\n") text = text.Replace(newline, "\n");
newline = LineEndDetector.GetNewLineMarker((Int32)PluginBase.MainForm.Settings.EOLMode);
text = PluginBase.MainForm.ProcessArgString(text).Replace(newline, "\n");
newline = LineEndDetector.GetNewLineMarker(sci.EOLMode);
String[] splitted = text.Trim().Split('\n');
for (Int32 j = 0; j < splitted.Length; j++)
{
if (j != splitted.Length - 1) sci.InsertText(sci.CurrentPos, splitted[j] + newline);
else sci.InsertText(sci.CurrentPos, splitted[j]);
sci.CurrentPos += sci.MBSafeTextLength(splitted[j]) + newline.Length;
if (j > 0)
{
line = sci.LineFromPosition(sci.CurrentPos - newline.Length);
newIndent = sci.GetLineIndentation(line) + indent;
sci.SetLineIndentation(line, newIndent);
}
}
Int32 length = sci.CurrentPos - currentPosition - newline.Length;
Int32 delta = PostProcessSnippets(sci, currentPosition);
return length + delta;
}
finally
{
sci.EndUndoAction();
}
}