Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor/adapt to yosemite #45

Closed
wants to merge 30 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
f1da0db
Add @jasonlong's proposed icon
zenangst Aug 25, 2014
4e1c7f6
Add Yosemite tab style
zenangst Aug 25, 2014
97828f1
Copy PSMMetalTabStyle implementation & interface
zenangst Aug 25, 2014
8441d93
Enable Yosemite tab style on OS X 10.10
zenangst Aug 25, 2014
1976683
Tweak tab bar appearance
zenangst Aug 25, 2014
bacf495
More GUI tweaks
zenangst Aug 25, 2014
6fe3b1d
Fix offset on inactive tabs
zenangst Aug 25, 2014
64d770d
Remove log statement
zenangst Aug 25, 2014
2408320
Remove whitespace
zenangst Aug 25, 2014
1767280
Change tab size on Yosemite
zenangst Aug 25, 2014
74af43f
Remove +1 width on inactive tabs
zenangst Aug 25, 2014
1ea814f
Fix handling of window states when drawing tabs
zenangst Aug 27, 2014
172669f
Use Yosemite tab style for fullscreen on 10.10
zenangst Aug 27, 2014
d28d4ed
Change truncating to truncate on head instead of tail
zenangst Aug 31, 2014
ac5406f
Fix syntax error
zenangst Sep 1, 2014
7d141a8
Use screen width instead of hardcoded values in tab bar control
zenangst Sep 11, 2014
345607f
Remove text shadow on tabs
zenangst Sep 11, 2014
052847a
Simplify isKeyWindow declaration
zenangst Sep 11, 2014
dbb6f24
Add tab bar separator
zenangst Sep 11, 2014
14fe0d2
Correct color on tabs
zenangst Sep 11, 2014
847447c
Use Yosemite tab in fullscreen
zenangst Sep 11, 2014
678d37a
Revert "Add @jasonlong's proposed icon"
zenangst Sep 11, 2014
41bd4ce
Fix type error
zenangst Sep 12, 2014
67fb6e6
Set text color based on tab state and if window is key
zenangst Sep 12, 2014
75dd91b
Make borderColor less intrusive
zenangst Sep 14, 2014
fa6fcfd
Add more contrast to the active tab
zenangst Sep 14, 2014
013d781
Remove rollover effect on tabs
zenangst Sep 14, 2014
3c25dfd
Increase tab height
zenangst Sep 14, 2014
5d72ef7
Rename object names to be more generic
zenangst Sep 14, 2014
54e7051
Refactor Yosemite tab style
zenangst Sep 14, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 18 additions & 10 deletions src/MacVim/MMFullScreenWindow.m
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ - (void)resizeVimView;

@implementation MMFullScreenWindow

- (MMFullScreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
- (MMFullScreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
backgroundColor:(NSColor *)back
{
NSScreen* screen = [t screen];
Expand All @@ -65,7 +65,7 @@ - (MMFullScreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
// you can't change the style of an existing window in cocoa. create a new
// window and move the MMTextView into it.
// (another way would be to make the existing window large enough that the
// title bar is off screen. but that doesn't work with multiple screens).
// title bar is off screen. but that doesn't work with multiple screens).
self = [super initWithContentRect:[screen frame]
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
Expand All @@ -74,7 +74,7 @@ - (MMFullScreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
// we want the content rect to be relative to
// the main screen (ie, pass nil for screen).
screen:nil];

if (self == nil)
return nil;

Expand Down Expand Up @@ -150,20 +150,28 @@ - (void)enterFullScreen
// fool delegate
id delegate = [target delegate];
[target setDelegate:nil];

// make target's window controller believe that it's now controlling us
[[target windowController] setWindow:self];

NSString *style;

#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
style = @"Yosemite";
#else
style = @"Unified";
#endif

oldTabBarStyle = [[view tabBarControl] styleName];
[[view tabBarControl] setStyleNamed:@"Unified"];
[[view tabBarControl] setStyleNamed:style];

// add text view
oldPosition = [view frame].origin;

[view removeFromSuperviewWithoutNeedingDisplay];
[[self contentView] addSubview:view];
[self setInitialFirstResponder:[view textView]];

// NOTE: Calling setTitle:nil causes an exception to be raised (and it is
// possible that 'target' has no title when we get here).
if ([target title]) {
Expand All @@ -177,7 +185,7 @@ - (void)enterFullScreen
[self setOpaque:[target isOpaque]];

// don't set this sooner, so we don't get an additional
// focus gained message
// focus gained message
[self setDelegate:delegate];

// Store view dimension used before entering full-screen, then resize the
Expand Down Expand Up @@ -265,7 +273,7 @@ - (void)leaveFullScreen
// fix delegate
id delegate = [self delegate];
[self setDelegate:nil];

// move text view back to original window, hide fullScreen window,
// show original window
// do this _after_ resetting delegate and window controller, so the
Expand Down Expand Up @@ -317,13 +325,13 @@ - (void)leaveFullScreen
// sooner
[target setDelegate:delegate];

// fade back in
// fade back in
if (didBlend) {
CGDisplayFade(token, .25, kCGDisplayBlendSolidColor,
kCGDisplayBlendNormal, .0, .0, .0, false);
CGReleaseDisplayFadeReservation(token);
}

[self autorelease]; // Balance the above retain

state = LeftFullScreen;
Expand Down
29 changes: 22 additions & 7 deletions src/MacVim/MMVimView.m
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ - (MMVimView *)initWithFrame:(NSRect)frame
{
if (!(self = [super initWithFrame:frame]))
return nil;

vimController = controller;
scrollbars = [[NSMutableArray alloc] init];

Expand Down Expand Up @@ -122,15 +122,23 @@ - (MMVimView *)initWithFrame:(NSRect)frame

[textView setAutoresizingMask:NSViewNotSizable];
[self addSubview:textView];

// Create the tab view (which is never visible, but the tab bar control
// needs it to function).
tabView = [[NSTabView alloc] initWithFrame:NSZeroRect];

// Create the tab bar control (which is responsible for actually
// drawing the tabline and tabs).
NSRect tabFrame = { { 0, frame.size.height - 22 },
{ frame.size.width, 22 } };

CGFloat tabBarHeight;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
tabBarHeight = 25;
#else
tabBarHeight = 22;
#endif

NSRect tabFrame = { { 0, frame.size.height - tabBarHeight },
{ frame.size.width, tabBarHeight } };
tabBarControl = [[PSMTabBarControl alloc] initWithFrame:tabFrame];

[tabView setDelegate:tabBarControl];
Expand All @@ -139,10 +147,17 @@ - (MMVimView *)initWithFrame:(NSRect)frame
[tabBarControl setDelegate:self];
[tabBarControl setHidden:YES];

#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
[tabBarControl setStyleNamed:@"Yosemite"];
[tabBarControl setCellMinWidth:120];
[tabBarControl setCellMaxWidth:[[NSScreen mainScreen] frame].size.width];
[tabBarControl setCellOptimumWidth:[[NSScreen mainScreen] frame].size.width];
#else
[tabBarControl setCellMinWidth:[ud integerForKey:MMTabMinWidthKey]];
[tabBarControl setCellMaxWidth:[ud integerForKey:MMTabMaxWidthKey]];
[tabBarControl setCellOptimumWidth:
[ud integerForKey:MMTabOptimumWidthKey]];
#endif

[tabBarControl setShowAddTabButton:[ud boolForKey:MMShowAddTabButtonKey]];
[[tabBarControl addTabButton] setTarget:self];
Expand All @@ -152,9 +167,9 @@ - (MMVimView *)initWithFrame:(NSRect)frame
[NSArray arrayWithObject:NSFilenamesPboardType]];

[tabBarControl setAutoresizingMask:NSViewWidthSizable|NSViewMinYMargin];

//[tabBarControl setPartnerView:textView];

// tab bar resizing only works if awakeFromNib is called (that's where
// the NSViewFrameDidChangeNotification callback is installed). Sounds like
// a PSMTabBarControl bug, let's live with it for now.
Expand Down Expand Up @@ -247,7 +262,7 @@ - (PSMTabBarControl *)tabBarControl
- (void)cleanup
{
vimController = nil;

// NOTE! There is a bug in PSMTabBarControl in that it retains the delegate
// so reset the delegate here, otherwise the delegate may never get
// released.
Expand Down
46 changes: 37 additions & 9 deletions src/MacVim/MMWindowController.m
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
*
* The window is always kept centered and resizing works more or less the same
* way as in windowed mode.
*
*
*/

#import "MMAppController.h"
Expand Down Expand Up @@ -170,7 +170,7 @@ - (id)initWithVimController:(MMVimController *)controller

[win setDelegate:self];
[win setInitialFirstResponder:[vimView textView]];

if ([win styleMask] & NSTexturedBackgroundWindowMask) {
// On Leopard, we want to have a textured window to have nice
// looking tabs. But the textured window look implies rounded
Expand Down Expand Up @@ -479,7 +479,7 @@ - (void)createScrollbarWithIdentifier:(int32_t)ident type:(int)type

- (BOOL)destroyScrollbarWithIdentifier:(int32_t)ident
{
BOOL scrollbarHidden = [vimView destroyScrollbarWithIdentifier:ident];
BOOL scrollbarHidden = [vimView destroyScrollbarWithIdentifier:ident];
shouldResizeVimView = shouldResizeVimView || scrollbarHidden;
shouldMaximizeWindow = shouldMaximizeWindow || scrollbarHidden;

Expand Down Expand Up @@ -1135,7 +1135,14 @@ - (void)window:(NSWindow *)window
[[window animator] setAlphaValue:0];
} completionHandler:^{
[window setStyleMask:([window styleMask] | NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Unified"];
NSString *style;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
style = @"Yosemite";
#else
style = @"Unified";
#endif

[[vimView tabBarControl] setStyleNamed:style];
[self updateTablineSeparator];
[self maximizeWindow:fullScreenOptions];

Expand Down Expand Up @@ -1179,7 +1186,15 @@ - (void)windowDidFailToEnterFullScreen:(NSWindow *)window
fullScreenEnabled = NO;
[window setAlphaValue:1];
[window setStyleMask:([window styleMask] & ~NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Metal"];

NSString *tabStyle;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
tabStyle = @"Yosemite";
#else
tabStyle = @"Metal";
#endif

[[vimView tabBarControl] setStyleNamed:tabStyle];
[self updateTablineSeparator];
[window setFrame:preFullScreenFrame display:YES];
}
Expand Down Expand Up @@ -1208,8 +1223,15 @@ - (void)window:(NSWindow *)window
[context setDuration:0.5*duration];
[[window animator] setAlphaValue:0];
} completionHandler:^{
NSString *tabStyle;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
tabStyle = @"Yosemite";
#else
tabStyle = @"Metal";
#endif
NSLog(@"tabStyle: %@", tabStyle);
[window setStyleMask:([window styleMask] & ~NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Metal"];
[[vimView tabBarControl] setStyleNamed:tabStyle];
[self updateTablineSeparator];
[window setFrame:preFullScreenFrame display:YES];

Expand Down Expand Up @@ -1245,7 +1267,13 @@ - (void)windowDidFailToExitFullScreen:(NSWindow *)window
fullScreenEnabled = YES;
[window setAlphaValue:1];
[window setStyleMask:([window styleMask] | NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Unified"];
NSString *style;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
style = @"Yosemite";
#else
style = @"Unified";
#endif
[[vimView tabBarControl] setStyleNamed:style];
[self updateTablineSeparator];
[self maximizeWindow:fullScreenOptions];
}
Expand Down Expand Up @@ -1397,7 +1425,7 @@ - (NSTabViewItem *)addNewTabViewItem
}

- (BOOL)askBackendForStarRegister:(NSPasteboard *)pb
{
{
// TODO: Can this be done with evaluateExpression: instead?
BOOL reply = NO;
id backendProxy = [vimController backendProxy];
Expand Down Expand Up @@ -1479,7 +1507,7 @@ - (void)doFindNext:(BOOL)next
input = [NSString stringWithFormat:@"<C-\\><C-N>:let @/='%@'<CR>%c",
query, next ? 'n' : 'N'];
} else {
input = next ? @"<C-\\><C-N>n" : @"<C-\\><C-N>N";
input = next ? @"<C-\\><C-N>n" : @"<C-\\><C-N>N";
}

[vimController addVimInput:input];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@
A2D98B0B0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */; };
A2D98B120A2B43FA0064C6F8 /* NSBezierPath_AMShading.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */; };
A2D98B130A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */; };
BD13A64219AB98E900C641C3 /* PSMYosemiteTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BD13A64019AB98E900C641C3 /* PSMYosemiteTabStyle.h */; };
BD13A64319AB98E900C641C3 /* PSMYosemiteTabStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = BD13A64119AB98E900C641C3 /* PSMYosemiteTabStyle.m */; };
BD4C36AB19ABC9E600B38C9D /* TabNewYosemite.png in Resources */ = {isa = PBXBuildFile; fileRef = BD4C36A919ABC9E600B38C9D /* TabNewYosemite.png */; };
BD4C36AC19ABC9E600B38C9D /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = BD4C36AA19ABC9E600B38C9D /* [email protected] */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -172,6 +176,10 @@
A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PSMUnifiedTabStyle.m; path = source/PSMUnifiedTabStyle.m; sourceTree = "<group>"; };
A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NSBezierPath_AMShading.h; path = source/NSBezierPath_AMShading.h; sourceTree = "<group>"; };
A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = NSBezierPath_AMShading.m; path = source/NSBezierPath_AMShading.m; sourceTree = "<group>"; };
BD13A64019AB98E900C641C3 /* PSMYosemiteTabStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PSMYosemiteTabStyle.h; path = source/PSMYosemiteTabStyle.h; sourceTree = "<group>"; };
BD13A64119AB98E900C641C3 /* PSMYosemiteTabStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PSMYosemiteTabStyle.m; path = source/PSMYosemiteTabStyle.m; sourceTree = "<group>"; };
BD4C36A919ABC9E600B38C9D /* TabNewYosemite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = TabNewYosemite.png; path = images/TabNewYosemite.png; sourceTree = "<group>"; };
BD4C36AA19ABC9E600B38C9D /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "[email protected]"; path = "images/[email protected]"; sourceTree = "<group>"; };
DD92D38A0106425D02CA0E72 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
/* End PBXFileReference section */

Expand Down Expand Up @@ -304,27 +312,29 @@
54D33B2C06778E4400C9C163 /* Framework */ = {
isa = PBXGroup;
children = (
0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */,
0259C576FE90428111CA0C5A /* PSMTabBarControl.m */,
A251BE830959A1B90058BC7F /* PSMTabBarCell.h */,
A251BE840959A1B90058BC7F /* PSMTabBarCell.m */,
A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */,
A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */,
A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */,
A2D32EE609A6399300EC8662 /* PSMAquaTabStyle.h */,
A2D32EE709A6399300EC8662 /* PSMAquaTabStyle.m */,
A2D32EFE09A63D7A00EC8662 /* PSMMetalTabStyle.h */,
A2D32EFF09A63D7A00EC8662 /* PSMMetalTabStyle.m */,
A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */,
A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */,
A268EA5F09A9831800E082AA /* PSMRolloverButton.h */,
A268EA6009A9831800E082AA /* PSMRolloverButton.m */,
A251BE810959A1B90058BC7F /* PSMOverflowPopUpButton.h */,
A251BE820959A1B90058BC7F /* PSMOverflowPopUpButton.m */,
A2129BAF09AEB58F00724E6C /* PSMProgressIndicator.h */,
A2129BB009AEB58F00724E6C /* PSMProgressIndicator.m */,
A268EA5F09A9831800E082AA /* PSMRolloverButton.h */,
A268EA6009A9831800E082AA /* PSMRolloverButton.m */,
A251BE830959A1B90058BC7F /* PSMTabBarCell.h */,
A251BE840959A1B90058BC7F /* PSMTabBarCell.m */,
0259C57AFE90428111CA0C5A /* PSMTabBarControl.h */,
0259C576FE90428111CA0C5A /* PSMTabBarControl.m */,
A2082A8D09EAEB33009AC8BE /* PSMTabDragAssistant.h */,
A2082A8E09EAEB33009AC8BE /* PSMTabDragAssistant.m */,
A2D98B0F0A2B43FA0064C6F8 /* NSBezierPath_AMShading.h */,
A2D98B100A2B43FA0064C6F8 /* NSBezierPath_AMShading.m */,
A2D32EDA09A634C900EC8662 /* PSMTabStyle.h */,
A2D98B070A2B432C0064C6F8 /* PSMUnifiedTabStyle.h */,
A2D98B080A2B432C0064C6F8 /* PSMUnifiedTabStyle.m */,
BD13A64019AB98E900C641C3 /* PSMYosemiteTabStyle.h */,
BD13A64119AB98E900C641C3 /* PSMYosemiteTabStyle.m */,
);
name = Framework;
sourceTree = "<group>";
Expand Down Expand Up @@ -354,6 +364,8 @@
A251BE8E0959A21A0058BC7F /* Images */ = {
isa = PBXGroup;
children = (
BD4C36A919ABC9E600B38C9D /* TabNewYosemite.png */,
BD4C36AA19ABC9E600B38C9D /* [email protected] */,
A2C0D99309AF870000ED379C /* pi.png */,
A2072B5C09AC1FA500304BCB /* Warning.png */,
A2072A2409ABD88600304BCB /* Folder.tif */,
Expand Down Expand Up @@ -401,6 +413,7 @@
files = (
546DEAF2067F630E0098DCC4 /* PSMTabBarControl.h in Headers */,
A251BE850959A1B90058BC7F /* PSMOverflowPopUpButton.h in Headers */,
BD13A64219AB98E900C641C3 /* PSMYosemiteTabStyle.h in Headers */,
A251BE870959A1B90058BC7F /* PSMTabBarCell.h in Headers */,
A2D32EDC09A634C900EC8662 /* PSMTabStyle.h in Headers */,
A2D32EE809A6399300EC8662 /* PSMAquaTabStyle.h in Headers */,
Expand Down Expand Up @@ -439,6 +452,8 @@
/* Begin PBXProject section */
0259C573FE90428111CA0C5A /* Project object */ = {
isa = PBXProject;
attributes = {
};
buildConfigurationList = C056398B08A954F8003078D8 /* Build configuration list for PBXProject "PSMTabBarControl" */;
compatibilityVersion = "Xcode 2.4";
developmentRegion = English;
Expand Down Expand Up @@ -482,8 +497,10 @@
52A57C0F15BBA230003EC59C /* TabClose_Front.png in Resources */,
52A57C1015BBA230003EC59C /* TabClose_Front_Pressed.png in Resources */,
52A57C1115BBA230003EC59C /* TabClose_Front_Rollover.png in Resources */,
BD4C36AB19ABC9E600B38C9D /* TabNewYosemite.png in Resources */,
523897F415BDA9AC00498A53 /* [email protected] in Resources */,
523897F515BDA9AC00498A53 /* [email protected] in Resources */,
BD4C36AC19ABC9E600B38C9D /* [email protected] in Resources */,
523897F615BDA9AC00498A53 /* [email protected] in Resources */,
523897F715BDA9AC00498A53 /* [email protected] in Resources */,
523897F815BDA9AC00498A53 /* [email protected] in Resources */,
Expand All @@ -509,6 +526,7 @@
A2D32F0109A63D7A00EC8662 /* PSMMetalTabStyle.m in Sources */,
A268EA6309A9831800E082AA /* PSMRolloverButton.m in Sources */,
A2129BB309AEB58F00724E6C /* PSMProgressIndicator.m in Sources */,
BD13A64319AB98E900C641C3 /* PSMYosemiteTabStyle.m in Sources */,
A2082A9109EAEB34009AC8BE /* PSMTabDragAssistant.m in Sources */,
A2D98B0B0A2B432C0064C6F8 /* PSMUnifiedTabStyle.m in Sources */,
A2D98B130A2B43FA0064C6F8 /* NSBezierPath_AMShading.m in Sources */,
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading