public void Save(string postfix, bool rememberOpenedFiles) { SValue state = SValue.NewHash(); if (mainForm.WindowState == FormWindowState.Maximized) { state["width"] = SValue.NewInt(mainForm.RestoreBounds.Width); state["height"] = SValue.NewInt(mainForm.RestoreBounds.Height); state["x"] = SValue.NewInt(mainForm.RestoreBounds.X); state["y"] = SValue.NewInt(mainForm.RestoreBounds.Y); } else { state["width"] = SValue.NewInt(mainForm.Width); state["height"] = SValue.NewInt(mainForm.Height); state["x"] = SValue.NewInt(mainForm.Location.X); state["y"] = SValue.NewInt(mainForm.Location.Y); } state["maximized"] = SValue.NewBool(mainForm.WindowState == FormWindowState.Maximized); if (rememberOpenedFiles) { { SValue openedTabs = state.SetNewList("openedTabs"); foreach (Buffer buffer in mainForm.MainNest.buffers.list) { SValue valueI = SValue.NewHash().With("fullPath", SValue.NewString(buffer.FullPath)); openedTabs.Add(valueI); if (buffer == mainForm.MainNest.buffers.list.Selected) { state["selectedTab"] = valueI; } } } if (mainForm.MainNest2 != null) { SValue openedTabs = state.SetNewList("openedTabs2"); foreach (Buffer buffer in mainForm.MainNest2.buffers.list) { SValue valueI = SValue.NewHash().With("fullPath", SValue.NewString(buffer.FullPath)); openedTabs.Add(valueI); if (buffer == mainForm.MainNest2.buffers.list.Selected) { state["selectedTab2"] = valueI; } } } } state["storage"] = storage.Serialize(); state["recently"] = recently.Serialize(); state["recentlyDirs"] = recentlyDirs.Serialize(); state["bm"] = EncodeGlobalBookmakrs(); ValuesSerialize(state); state["commandHistory"] = commandHistory.Serialize(); state["findHistory"] = findHistory.Serialize(); state["findInFilesHistory"] = findInFilesHistory.Serialize(); state["findInFilesTempFilter"] = findInFilesTempFilter.Serialize(); state["findInFilesTempCurrentFilter"] = SValue.NewString(findInFilesTempCurrentFilter.value); state["moveHistory"] = moveHistory.Serialize(); state["replacePatternHistory"] = replacePatternHistory.Serialize(); state["replaceHistory"] = replaceHistory.Serialize(); state["goToLineHistory"] = goToLineHistory.Serialize(); state["findParams"] = findParams.Serialize(); if (!string.IsNullOrEmpty(NullableCurrentDir)) { state["currentDir"] = SValue.NewString(NullableCurrentDir); } state["showFileTree"] = SValue.NewBool(mainForm.FileTreeOpened); state["fileTreeExpanded"] = mainForm.FileTree.GetExpandedTemp(); state["helpPosition"] = SValue.NewInt(helpPosition); state["viHelpPosition"] = SValue.NewInt(viHelpPosition); SerializeSettings(ref state); File.WriteAllBytes(GetTempSettingsPath(postfix, AppPath.StartupDir), SValue.Serialize(state)); }