From fa83ca5cb1dd14f5b7b0dc88f779d11e86e2fa8c Mon Sep 17 00:00:00 2001 From: Yee Cheng Chin Date: Thu, 26 Oct 2023 09:44:38 -0700 Subject: [PATCH] Allow launching MacVim in clean defaults, add menu to open clean Vim Now support a `-IgnoreUserDefaults 1` flag that can be passed to MacVim at launch, which would cause MacVim to open with the default settings instead of whatever the user has previously set. This only works by overriding the MacVim-specific application defaults, and won't affect Sparkle settings and other macOS native ones. Also add a new menu item / macaction to open a new Vim window in clean mode (which would prevent loading in vimrc and plugins). It works by launching Vim using a `--clean` flag. The alt menu would open a clean Vim window without using defaults.vim as well for the most vanilla Vim. Currently only added Chinese/Japanese translations for the menu items. Users who want other languages to be localized will need to file a pull request themselves. This feature is useful for users, but the main reason is to serve as a pre-requisite for adding XCTest test cases to MacVim and needing a way to launch it in a clean and predictable way. --- runtime/doc/gui_mac.txt | 4 + .../macvim_menu/menu_ja_jp.utf-8.custom.vim | 2 + .../macvim_menu/menu_zh_cn.utf-8.custom.vim | 2 + .../macvim_menu/menu_zh_tw.utf-8.custom.vim | 2 + runtime/menu.vim | 8 +- src/MacVim/Actions.plist | 16 +- src/MacVim/Base.lproj/MainMenu.xib | 17 ++ src/MacVim/MMAppController.h | 18 ++ src/MacVim/MMAppController.m | 206 +++++++++++------- src/MacVim/MMWindowController.m | 2 +- src/MacVim/Miscellaneous.h | 2 +- src/MacVim/Miscellaneous.m | 2 +- src/MacVim/ja.lproj/MainMenu.strings | 9 + src/MacVim/zh-Hans.lproj/MainMenu.strings | 9 + src/MacVim/zh-Hant.lproj/MainMenu.strings | 9 + 15 files changed, 223 insertions(+), 85 deletions(-) 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"; */