diff --git a/runtime/doc/gui_mac.txt b/runtime/doc/gui_mac.txt index ec1efe3256..869cec0f26 100644 --- a/runtime/doc/gui_mac.txt +++ b/runtime/doc/gui_mac.txt @@ -264,6 +264,10 @@ Vim options (see |macvim-options|). These settings are stored in the user defaults database and can be accessed via the "MacVim.Settings…" ("MacVim.Preferences…" in macOS 12 Monterey and older) menu item. +If you want to open MacVim with its default settings, you can open it by +passing `-IgnoreUserDefaults 1` to the launch arguments (see the man page on +the "open" for how to do so). + *macvim-user-defaults* Not all entries in the user defaults database are exposed via the settings panel, usually because they should not be changed by the user under normal diff --git a/runtime/lang/macvim_menu/menu_ja_jp.utf-8.custom.vim b/runtime/lang/macvim_menu/menu_ja_jp.utf-8.custom.vim index 49b9ed2cbe..ba87efcd8d 100644 --- a/runtime/lang/macvim_menu/menu_ja_jp.utf-8.custom.vim +++ b/runtime/lang/macvim_menu/menu_ja_jp.utf-8.custom.vim @@ -1,3 +1,5 @@ +menutrans New\ Clean\ Window 新規クリーンウインドウ +menutrans New\ Clean\ Window\ (No\ Defaults) 新規クリーンウインドウ\ (デフォルトなし) menutrans MacVim\ Help MacVim\ ヘルプ menutrans MacVim\ Website MacVim\ Webサイト menutrans Vim\ Tutor Vim\ 教本\ (チュートリアル) diff --git a/runtime/lang/macvim_menu/menu_zh_cn.utf-8.custom.vim b/runtime/lang/macvim_menu/menu_zh_cn.utf-8.custom.vim index dcca701a8f..a999c724e9 100644 --- a/runtime/lang/macvim_menu/menu_zh_cn.utf-8.custom.vim +++ b/runtime/lang/macvim_menu/menu_zh_cn.utf-8.custom.vim @@ -1,3 +1,5 @@ +menutrans New\ Clean\ Window 新建干净窗口 +menutrans New\ Clean\ Window\ (No\ Defaults) 新建干净窗口(不用\ Defaults) menutrans MacVim\ Help MacVim帮助 menutrans MacVim\ Website MacVim网站 menutrans Vim\ Tutor Vim教程 diff --git a/runtime/lang/macvim_menu/menu_zh_tw.utf-8.custom.vim b/runtime/lang/macvim_menu/menu_zh_tw.utf-8.custom.vim index 3b10abd73b..0ff7fd7339 100644 --- a/runtime/lang/macvim_menu/menu_zh_tw.utf-8.custom.vim +++ b/runtime/lang/macvim_menu/menu_zh_tw.utf-8.custom.vim @@ -1,3 +1,5 @@ +menutrans New\ Clean\ Window 新增乾淨視窗 +menutrans New\ Clean\ Window\ (No\ Defaults) 新增乾淨視窗(不用\ Defaults) menutrans MacVim\ Help MacVim輔助說明 menutrans MacVim\ Website MacVim網站 menutrans Vim\ Tutor Vim教程 diff --git a/runtime/menu.vim b/runtime/menu.vim index 0d5ee96b3e..00e9acfcd9 100644 --- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -160,7 +160,9 @@ enddef " File menu if has("gui_macvim") - an 10.290 &File.New\ Window + an 10.290 &File.New\ Window + an 10.291 &File.New\ Clean\ Window + an 10.292 &File.New\ Clean\ Window\ (No\ Defaults) an 10.295 &File.New\ Tab :tabnew tln 10.295 &File.New\ Tab :tabnew an 10.310 &File.Open… @@ -1267,6 +1269,8 @@ if has("gui_macvim") " action message is specified here via the :macmenu command. " macm File.New\ Window key= action=newWindow: + macm File.New\ Clean\ Window key= action=newWindowClean: + macm File.New\ Clean\ Window\ (No\ Defaults) key= action=newWindowCleanNoDefaults: alt=YES macm File.New\ Tab key= macm File.Open… key= action=fileOpen: macm File.Open\ Tab\.\.\.:tabnew key= @@ -1417,4 +1421,4 @@ if has("touchbar") endif endif -" vim: set sw=2 : +" vim: set sw=2 tabstop=8 : diff --git a/src/MacVim/Actions.plist b/src/MacVim/Actions.plist index ced98af89e..99d32b8def 100644 --- a/src/MacVim/Actions.plist +++ b/src/MacVim/Actions.plist @@ -36,6 +36,10 @@ newWindow: + newWindowClean: + + newWindowCleanNoDefaults: + openWebsite: showWhatsNew: @@ -86,11 +90,11 @@ stayLevelNormal: - _removeWindowFromStageManagerSet: - - joinAllStageManagerSets: - - unjoinAllStageManagerSets: - + _removeWindowFromStageManagerSet: + + joinAllStageManagerSets: + + unjoinAllStageManagerSets: + diff --git a/src/MacVim/Base.lproj/MainMenu.xib b/src/MacVim/Base.lproj/MainMenu.xib index f878ddc7e7..cc9f0eb65f 100644 --- a/src/MacVim/Base.lproj/MainMenu.xib +++ b/src/MacVim/Base.lproj/MainMenu.xib @@ -81,6 +81,17 @@ + + + + + + + + + + + @@ -205,6 +216,12 @@ + + + + + + diff --git a/src/MacVim/MMAppController.h b/src/MacVim/MMAppController.h index cbf1fb89e6..bc61377a53 100644 --- a/src/MacVim/MMAppController.h +++ b/src/MacVim/MMAppController.h @@ -32,6 +32,12 @@ , NSMenuItemValidation #endif > { + enum NewWindowMode { + NewWindowNormal = 0, + NewWindowClean, + NewWindowCleanNoDefaults, + }; + NSConnection *connection; NSMutableArray *vimControllers; NSString *openSelectionString; @@ -82,13 +88,22 @@ - (void)refreshAllResizeConstraints; - (void)refreshAllTextViews; +- (void)openNewWindow:(enum NewWindowMode)mode activate:(BOOL)activate; + // // NSMenuItemValidation // - (BOOL)validateMenuItem:(NSMenuItem *)item; +// +// Actions exposed to Vim +// - (IBAction)newWindow:(id)sender; +- (IBAction)newWindowClean:(id)sender; +- (IBAction)newWindowCleanNoDefaults:(id)sender; - (IBAction)newWindowAndActivate:(id)sender; +- (IBAction)newWindowCleanAndActivate:(id)sender; +- (IBAction)newWindowCleanNoDefaultsAndActivate:(id)sender; - (IBAction)fileOpen:(id)sender; - (IBAction)selectNextWindow:(id)sender; - (IBAction)selectPreviousWindow:(id)sender; @@ -105,6 +120,9 @@ - (IBAction)stayInBack:(id)sender; - (IBAction)stayLevelNormal:(id)sender; +// +// NSUserInterfaceItemSearching +// - (NSArray *)localizedTitlesForItem:(id)item; - (void)searchForItemsWithSearchString:(NSString *)searchString resultLimit:(NSInteger)resultLimit diff --git a/src/MacVim/MMAppController.m b/src/MacVim/MMAppController.m index f33fcaca19..79c4996b93 100644 --- a/src/MacVim/MMAppController.m +++ b/src/MacVim/MMAppController.m @@ -166,6 +166,95 @@ fsEventCallback(ConstFSEventStreamRef streamRef, @implementation MMAppController +/// Register the default settings for MacVim. Supports an optional +/// "-IgnoreUserDefaults 1" command-line argument, which will override +/// persisted user settings to have a clean environment. ++ (void)registerDefaults +{ + int tabMinWidthKey; + int tabMaxWidthKey; + int tabOptimumWidthKey; + if (shouldUseYosemiteTabBarStyle()) { + tabMinWidthKey = 120; + tabMaxWidthKey = 0; + tabOptimumWidthKey = 0; + } else { + tabMinWidthKey = 64; + tabMaxWidthKey = 6*64; + tabOptimumWidthKey = 132; + } + + NSUserDefaults *ud = NSUserDefaults.standardUserDefaults; + + NSDictionary *macvimDefaults = [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithBool:NO], MMNoWindowKey, + [NSNumber numberWithInt:tabMinWidthKey], + MMTabMinWidthKey, + [NSNumber numberWithInt:tabMaxWidthKey], + MMTabMaxWidthKey, + [NSNumber numberWithInt:tabOptimumWidthKey], + MMTabOptimumWidthKey, + [NSNumber numberWithBool:YES], MMShowAddTabButtonKey, + [NSNumber numberWithInt:2], MMTextInsetLeftKey, + [NSNumber numberWithInt:1], MMTextInsetRightKey, + [NSNumber numberWithInt:1], MMTextInsetTopKey, + [NSNumber numberWithInt:1], MMTextInsetBottomKey, + @"MMTypesetter", MMTypesetterKey, + [NSNumber numberWithFloat:1], MMCellWidthMultiplierKey, + [NSNumber numberWithFloat:-1], MMBaselineOffsetKey, + [NSNumber numberWithBool:YES], MMTranslateCtrlClickKey, + [NSNumber numberWithInt:0], MMOpenInCurrentWindowKey, + [NSNumber numberWithBool:NO], MMNoFontSubstitutionKey, + [NSNumber numberWithBool:YES], MMFontPreserveLineSpacingKey, + [NSNumber numberWithBool:YES], MMLoginShellKey, + [NSNumber numberWithInt:MMRendererCoreText], + MMRendererKey, + [NSNumber numberWithInt:MMUntitledWindowAlways], + MMUntitledWindowKey, + [NSNumber numberWithBool:NO], MMNoWindowShadowKey, + [NSNumber numberWithBool:NO], MMDisableLaunchAnimationKey, + [NSNumber numberWithInt:0], MMAppearanceModeSelectionKey, + [NSNumber numberWithBool:NO], MMNoTitleBarWindowKey, + [NSNumber numberWithBool:NO], MMTitlebarAppearsTransparentKey, + [NSNumber numberWithBool:NO], MMZoomBothKey, + @"", MMLoginShellCommandKey, + @"", MMLoginShellArgumentKey, + [NSNumber numberWithBool:YES], MMDialogsTrackPwdKey, + [NSNumber numberWithInt:3], MMOpenLayoutKey, + [NSNumber numberWithBool:NO], MMVerticalSplitKey, + [NSNumber numberWithInt:0], MMPreloadCacheSizeKey, + [NSNumber numberWithInt:0], MMLastWindowClosedBehaviorKey, +#ifdef INCLUDE_OLD_IM_CODE + [NSNumber numberWithBool:YES], MMUseInlineImKey, +#endif // INCLUDE_OLD_IM_CODE + [NSNumber numberWithBool:NO], MMSuppressTerminationAlertKey, + [NSNumber numberWithBool:YES], MMNativeFullScreenKey, + [NSNumber numberWithDouble:0.0], MMFullScreenFadeTimeKey, + [NSNumber numberWithBool:NO], MMNonNativeFullScreenShowMenuKey, + [NSNumber numberWithInt:0], MMNonNativeFullScreenSafeAreaBehaviorKey, + [NSNumber numberWithBool:YES], MMShareFindPboardKey, + [NSNumber numberWithBool:NO], MMSmoothResizeKey, + [NSNumber numberWithBool:NO], MMCmdLineAlignBottomKey, + [NSNumber numberWithBool:NO], MMRendererClipToRowKey, + [NSNumber numberWithBool:YES], MMAllowForceClickLookUpKey, + [NSNumber numberWithBool:NO], MMUpdaterPrereleaseChannelKey, + @"", MMLastUsedBundleVersionKey, + [NSNumber numberWithBool:YES], MMShowWhatsNewOnStartupKey, + [NSNumber numberWithBool:0], MMScrollOneDirectionOnlyKey, + nil]; + + [ud registerDefaults:macvimDefaults]; + + NSArray *arguments = NSProcessInfo.processInfo.arguments; + if ([arguments containsObject:@"-IgnoreUserDefaults"]) { + NSDictionary *argDefaults = [ud volatileDomainForName:NSArgumentDomain]; + NSMutableDictionary *combinedDefaults = [NSMutableDictionary dictionaryWithCapacity: macvimDefaults.count]; + [combinedDefaults setDictionary:macvimDefaults]; + [combinedDefaults addEntriesFromDictionary:argDefaults]; + [ud setVolatileDomain:combinedDefaults forName:NSArgumentDomain]; + } +} + + (void)initialize { static BOOL initDone = NO; @@ -176,7 +265,7 @@ fsEventCallback(ConstFSEventStreamRef streamRef, // HACK! The following user default must be reset, else Ctrl-q (or // whichever key is specified by the default) will be blocked by the input - // manager (interpretKeyEvents: swallows that key). (We can't use + // manager (interpreargumenttKeyEvents: swallows that key). (We can't use // NSUserDefaults since it only allows us to write to the registration // domain and this preference has "higher precedence" than that so such a // change would have no effect.) @@ -205,73 +294,7 @@ fsEventCallback(ConstFSEventStreamRef streamRef, [NSWindow setAllowsAutomaticWindowTabbing:NO]; } - int tabMinWidthKey; - int tabMaxWidthKey; - int tabOptimumWidthKey; - if (shouldUseYosemiteTabBarStyle()) { - tabMinWidthKey = 120; - tabMaxWidthKey = 0; - tabOptimumWidthKey = 0; - } else { - tabMinWidthKey = 64; - tabMaxWidthKey = 6*64; - tabOptimumWidthKey = 132; - } - - NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithBool:NO], MMNoWindowKey, - [NSNumber numberWithInt:tabMinWidthKey], - MMTabMinWidthKey, - [NSNumber numberWithInt:tabMaxWidthKey], - MMTabMaxWidthKey, - [NSNumber numberWithInt:tabOptimumWidthKey], - MMTabOptimumWidthKey, - [NSNumber numberWithBool:YES], MMShowAddTabButtonKey, - [NSNumber numberWithInt:2], MMTextInsetLeftKey, - [NSNumber numberWithInt:1], MMTextInsetRightKey, - [NSNumber numberWithInt:1], MMTextInsetTopKey, - [NSNumber numberWithInt:1], MMTextInsetBottomKey, - @"MMTypesetter", MMTypesetterKey, - [NSNumber numberWithFloat:1], MMCellWidthMultiplierKey, - [NSNumber numberWithFloat:-1], MMBaselineOffsetKey, - [NSNumber numberWithBool:YES], MMTranslateCtrlClickKey, - [NSNumber numberWithInt:0], MMOpenInCurrentWindowKey, - [NSNumber numberWithBool:NO], MMNoFontSubstitutionKey, - [NSNumber numberWithBool:YES], MMFontPreserveLineSpacingKey, - [NSNumber numberWithBool:YES], MMLoginShellKey, - [NSNumber numberWithInt:MMRendererCoreText], - MMRendererKey, - [NSNumber numberWithInt:MMUntitledWindowAlways], - MMUntitledWindowKey, - [NSNumber numberWithBool:NO], MMNoWindowShadowKey, - [NSNumber numberWithBool:NO], MMZoomBothKey, - @"", MMLoginShellCommandKey, - @"", MMLoginShellArgumentKey, - [NSNumber numberWithBool:YES], MMDialogsTrackPwdKey, - [NSNumber numberWithInt:3], MMOpenLayoutKey, - [NSNumber numberWithBool:NO], MMVerticalSplitKey, - [NSNumber numberWithInt:0], MMPreloadCacheSizeKey, - [NSNumber numberWithInt:0], MMLastWindowClosedBehaviorKey, -#ifdef INCLUDE_OLD_IM_CODE - [NSNumber numberWithBool:YES], MMUseInlineImKey, -#endif // INCLUDE_OLD_IM_CODE - [NSNumber numberWithBool:NO], MMSuppressTerminationAlertKey, - [NSNumber numberWithBool:YES], MMNativeFullScreenKey, - [NSNumber numberWithDouble:0.0], MMFullScreenFadeTimeKey, - [NSNumber numberWithBool:NO], MMNonNativeFullScreenShowMenuKey, - [NSNumber numberWithInt:0], MMNonNativeFullScreenSafeAreaBehaviorKey, - [NSNumber numberWithBool:YES], MMShareFindPboardKey, - [NSNumber numberWithBool:NO], MMSmoothResizeKey, - [NSNumber numberWithBool:NO], MMCmdLineAlignBottomKey, - [NSNumber numberWithBool:NO], MMRendererClipToRowKey, - [NSNumber numberWithBool:YES], MMAllowForceClickLookUpKey, - [NSNumber numberWithBool:NO], MMUpdaterPrereleaseChannelKey, - @"", MMLastUsedBundleVersionKey, - [NSNumber numberWithBool:YES], MMShowWhatsNewOnStartupKey, - [NSNumber numberWithBool:0], MMScrollOneDirectionOnlyKey, - nil]; - - [[NSUserDefaults standardUserDefaults] registerDefaults:dict]; + [MMAppController registerDefaults]; NSArray *types = [NSArray arrayWithObject:NSPasteboardTypeString]; [NSApp registerServicesMenuSendTypes:types returnTypes:types]; @@ -1296,25 +1319,60 @@ fsEventCallback(ConstFSEventStreamRef streamRef, return YES; } -- (IBAction)newWindow:(id)sender +/// Open a new Vim window, potentially taking from cached (if preload is used). +/// +/// @param mode Determine whether to use clean mode or not. Preload will only +/// be used if using normal mode. +/// +/// @param activate Activate the window after it's opened. +- (void)openNewWindow:(enum NewWindowMode)mode activate:(BOOL)activate { - ASLogDebug(@"Open new window"); + if (activate) + [self activateWhenNextWindowOpens]; // A cached controller requires no loading times and results in the new // window popping up instantaneously. If the cache is empty it may take // 1-2 seconds to start a new Vim process. - MMVimController *vc = [self takeVimControllerFromCache]; + MMVimController *vc = (mode == NewWindowNormal) ? [self takeVimControllerFromCache] : nil; if (vc) { [[vc backendProxy] acknowledgeConnection]; } else { - [self launchVimProcessWithArguments:nil workingDirectory:nil]; + NSArray *args = (mode == NewWindowNormal) ? nil + : (mode == NewWindowClean ? @[@"--clean"] + : @[@"--clean", @"-u", @"NONE"]); + [self launchVimProcessWithArguments:args workingDirectory:nil]; } } +- (IBAction)newWindow:(id)sender +{ + ASLogDebug(@"Open new window"); + [self openNewWindow:NewWindowNormal activate:NO]; +} + +- (IBAction)newWindowClean:(id)sender +{ + [self openNewWindow:NewWindowClean activate:NO]; +} + +- (IBAction)newWindowCleanNoDefaults:(id)sender +{ + [self openNewWindow:NewWindowCleanNoDefaults activate:NO]; +} + - (IBAction)newWindowAndActivate:(id)sender { - [self activateWhenNextWindowOpens]; - [self newWindow:sender]; + [self openNewWindow:NewWindowNormal activate:YES]; +} + +- (IBAction)newWindowCleanAndActivate:(id)sender +{ + [self openNewWindow:NewWindowClean activate:YES]; +} + +- (IBAction)newWindowCleanNoDefaultsAndActivate:(id)sender +{ + [self openNewWindow:NewWindowCleanNoDefaults activate:YES]; } - (IBAction)fileOpen:(id)sender diff --git a/src/MacVim/MMWindowController.m b/src/MacVim/MMWindowController.m index 9f7789fb74..52bedd708d 100644 --- a/src/MacVim/MMWindowController.m +++ b/src/MacVim/MMWindowController.m @@ -232,7 +232,7 @@ // This makes windows animate when opened if ([win respondsToSelector:@selector(setAnimationBehavior:)]) { if (![[NSUserDefaults standardUserDefaults] - boolForKey:MMDisableLaunchAnimation]) { + boolForKey:MMDisableLaunchAnimationKey]) { [win setAnimationBehavior:NSWindowAnimationBehaviorDocumentWindow]; } } diff --git a/src/MacVim/Miscellaneous.h b/src/MacVim/Miscellaneous.h index 0e00adf94f..e8b1607232 100644 --- a/src/MacVim/Miscellaneous.h +++ b/src/MacVim/Miscellaneous.h @@ -38,7 +38,7 @@ extern NSString *MMAppearanceModeSelectionKey; extern NSString *MMNoTitleBarWindowKey; extern NSString *MMTitlebarAppearsTransparentKey; extern NSString *MMNoWindowShadowKey; -extern NSString *MMDisableLaunchAnimation; +extern NSString *MMDisableLaunchAnimationKey; extern NSString *MMLoginShellKey; extern NSString *MMUntitledWindowKey; extern NSString *MMZoomBothKey; diff --git a/src/MacVim/Miscellaneous.m b/src/MacVim/Miscellaneous.m index f889fd74e8..acc5e0ab21 100644 --- a/src/MacVim/Miscellaneous.m +++ b/src/MacVim/Miscellaneous.m @@ -34,7 +34,7 @@ NSString *MMAppearanceModeSelectionKey = @"MMAppearanceModeSelection"; NSString *MMNoTitleBarWindowKey = @"MMNoTitleBarWindow"; NSString *MMTitlebarAppearsTransparentKey = @"MMTitlebarAppearsTransparent"; NSString *MMNoWindowShadowKey = @"MMNoWindowShadow"; -NSString *MMDisableLaunchAnimation = @"MMDisableLaunchAnimation"; +NSString *MMDisableLaunchAnimationKey = @"MMDisableLaunchAnimation"; NSString *MMLoginShellKey = @"MMLoginShell"; NSString *MMUntitledWindowKey = @"MMUntitledWindow"; NSString *MMZoomBothKey = @"MMZoomBoth"; diff --git a/src/MacVim/ja.lproj/MainMenu.strings b/src/MacVim/ja.lproj/MainMenu.strings index 5308de93d4..2ea81c3402 100644 --- a/src/MacVim/ja.lproj/MainMenu.strings +++ b/src/MacVim/ja.lproj/MainMenu.strings @@ -16,6 +16,15 @@ /* Class = "NSMenuItem"; title = "MacVim Help"; ObjectID = "275"; */ "275.title" = "MacVim ヘルプ"; +/* Class = "NSMenuItem"; title = "New Clean Window"; ObjectID = "6vC-1c-PzC"; */ +"6vC-1c-PzC.title" = "新規クリーンウインドウ"; + +/* Class = "NSMenuItem"; title = "New Clean Window (No Defaults)"; ObjectID = "I52-K0-dKN"; */ +"I52-K0-dKN.title" = "新規クリーンウインドウ (デフォルトなし)"; + +/* Class = "NSMenuItem"; title = "New Clean Window"; ObjectID = "pDQ-Dc-v9a"; */ +"pDQ-Dc-v9a.title" = "新規クリーンウインドウ"; + // The strings below are untranslated /* Class = "NSMenu"; title = "MainMenu"; ObjectID = "29"; */ diff --git a/src/MacVim/zh-Hans.lproj/MainMenu.strings b/src/MacVim/zh-Hans.lproj/MainMenu.strings index 2452bc2b0e..6487f4c126 100644 --- a/src/MacVim/zh-Hans.lproj/MainMenu.strings +++ b/src/MacVim/zh-Hans.lproj/MainMenu.strings @@ -16,6 +16,15 @@ /* Class = "NSMenuItem"; title = "MacVim Help"; ObjectID = "275"; */ "275.title" = "MacVim帮助"; +/* Class = "NSMenuItem"; title = "New Clean Window"; ObjectID = "6vC-1c-PzC"; */ +"6vC-1c-PzC.title" = "新建干净窗口"; + +/* Class = "NSMenuItem"; title = "New Clean Window (No Defaults)"; ObjectID = "I52-K0-dKN"; */ +"I52-K0-dKN.title" = "新建干净窗口(不用 Defaults)"; + +/* Class = "NSMenuItem"; title = "New Clean Window"; ObjectID = "pDQ-Dc-v9a"; */ +"pDQ-Dc-v9a.title" = "新建干净窗口"; + // The strings below are untranslated /* Class = "NSMenu"; title = "MainMenu"; ObjectID = "29"; */ diff --git a/src/MacVim/zh-Hant.lproj/MainMenu.strings b/src/MacVim/zh-Hant.lproj/MainMenu.strings index 71cf51633d..3d9021c71f 100644 --- a/src/MacVim/zh-Hant.lproj/MainMenu.strings +++ b/src/MacVim/zh-Hant.lproj/MainMenu.strings @@ -16,6 +16,15 @@ /* Class = "NSMenuItem"; title = "MacVim Help"; ObjectID = "275"; */ "275.title" = "MacVim輔助說明"; +/* Class = "NSMenuItem"; title = "New Clean Window"; ObjectID = "6vC-1c-PzC"; */ +"6vC-1c-PzC.title" = "新增乾淨視窗"; + +/* Class = "NSMenuItem"; title = "New Clean Window (No Defaults)"; ObjectID = "I52-K0-dKN"; */ +"I52-K0-dKN.title" = "新增乾淨視窗(不用 Defaults)"; + +/* Class = "NSMenuItem"; title = "New Clean Window"; ObjectID = "pDQ-Dc-v9a"; */ +"pDQ-Dc-v9a.title" = "新增乾淨視窗"; + // The strings below are untranslated /* Class = "NSMenu"; title = "MainMenu"; ObjectID = "29"; */