void newBtn_Click(object sender, EventArgs e) { using (var input = new ScripNameInput()) { if (input.ShowDialog() != DialogResult.OK) { return; } string scriptName = NormalizeScriptName(input.ScriptName ?? "New Script"); int index = Directory.GetFiles(CSScriptHelper.ScriptsDir, scriptName + "*.cs").Length; string newScript = Path.Combine(CSScriptHelper.ScriptsDir, scriptName + ".cs"); if (index != 0) { int count = 0; do { count++; index++; newScript = Path.Combine(CSScriptHelper.ScriptsDir, string.Format("{0}{1}.cs", scriptName, index)); if (count > 10) { MessageBox.Show("Too many script files with the similar name already exists.\nPlease specify a different file name or clean up some existing scripts.", "CS-Script"); } }while (File.Exists(newScript)); } string scriptCode = (Config.Instance.ClasslessScriptByDefault ? defaultClasslessScriptCode : defaultScriptCode); if (!File.Exists(newScript)) { File.WriteAllText(newScript, scriptCode); PluginBase.Editor.Open(newScript); PluginBase.GetCurrentDocument().GrabFocus(); loadBtn.PerformClick(); } else { PluginBase.Editor.FileNew(); var document = PluginBase.GetCurrentDocument(); document.GrabFocus(); document.AddText(scriptCode); // Win32.SendMessage(Npp.NppHandle, (uint)NppMsg.NPPM_MENUCOMMAND, 0, NppMenuCmd.IDM_FILE_NEW); // Win32.SendMessage(Npp.CurrentScintilla, SciMsg.SCI_GRABFOCUS, 0, 0); // Win32.SendMessage(Npp.CurrentScintilla, SciMsg.SCI_ADDTEXT, scriptCode.GetByteCount(), scriptCode); //for some reason setting the lexer does not work int SCLEX_CPP = 3; Win32.SendMessage(Npp.GetCurrentDocument().Handle, SciMsg.SCI_SETLEXER, SCLEX_CPP, 0); Win32.SendMessage(Npp.GetCurrentDocument().Handle, SciMsg.SCI_SETLEXERLANGUAGE, 0, "cpp"); } } }
void newBtn_Click(object sender, EventArgs e) { using (var input = new ScripNameInput()) { if (input.ShowDialog() != DialogResult.OK) { return; } string scriptName = NormalizeScriptName(input.ScriptName ?? "New Script"); int index = Directory.GetFiles(CSScriptHelper.ScriptsDir, scriptName + "*.cs").Length; string newScript = Path.Combine(CSScriptHelper.ScriptsDir, scriptName + ".cs"); if (index != 0) { int count = 0; do { count++; index++; newScript = Path.Combine(CSScriptHelper.ScriptsDir, string.Format("{0}{1}.cs", scriptName, index)); if (count > 10) { MessageBox.Show("Too many script files with the similar name already exists.\nPlease specify a different file name or clean up some existing scripts.", "CS-Script"); } }while (File.Exists(newScript)); } var p = new Process(); p.StartInfo.FileName = "dotnet"; p.StartInfo.Arguments = Config.Instance.ClasslessScriptByDefault ? $"\"{Runtime.cscs_asm}\" -new:toplevel \"{newScript}\"" : $"\"{Runtime.cscs_asm}\" -new:console \"{newScript}\""; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.Start(); p.WaitForExit(); try { PluginBase.Editor.Open(newScript); } catch { } PluginBase.GetCurrentDocument().GrabFocus(); loadBtn.PerformClick(); } }