示例#1
0
        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");
                }
            }
        }
示例#2
0
        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();
            }
        }