Skip to content
Snippets Groups Projects
Commit 41b8de6d authored by George Nachman's avatar George Nachman
Browse files

Merge branch 'master' of https://github.com/gnachman/iTerm2

parents 6883ae37 32c35d69
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -12,99 +12,38 @@
 
@implementation NSFont(PTYFontInfo)
 
- (NSInteger)it_ligatureLevel {
// Returns the proper ligature level for this font. Defaults to 1.
static NSDictionary *fontNameToLigatureLevel;
- (BOOL)it_fontIsOnLigatureBlacklist {
static NSSet<NSString *> *blacklist;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
fontNameToLigatureLevel = @{ @"Iosevka": @2,
@"Iosevka-Bold": @2,
@"Iosevka-Bold-Italic": @2,
@"Iosevka-Bold-Oblique": @2,
@"Iosevka-Extralight": @2,
@"Iosevka-Extralight-Italic": @2,
@"Iosevka-Extralight-Oblique": @2,
@"Iosevka-Heavy": @2,
@"Iosevka-Heavy-Italic": @2,
@"Iosevka-Heavy-Oblique": @2,
@"Iosevka-Italic": @2,
@"Iosevka-Light": @2,
@"Iosevka-Light-Italic": @2,
@"Iosevka-Light-Oblique": @2,
@"Iosevka-Medium": @2,
@"Iosevka-Medium-Italic": @2,
@"Iosevka-Medium-Oblique": @2,
@"Iosevka-Oblique": @2,
@"Iosevka-Thin": @2,
@"Iosevka-Thin-Italic": @2,
@"Iosevka-Thin-Oblique": @2,
@"Iosevka-Slab": @2,
@"Iosevka-Slab-Bold": @2,
@"Iosevka-Slab-Bold-Italic": @2,
@"Iosevka-Slab-Bold-Oblique": @2,
@"Iosevka-Slab-Extralight": @2,
@"Iosevka-Slab-Extralight-Italic": @2,
@"Iosevka-Slab-Extralight-Oblique": @2,
@"Iosevka-Slab-Heavy": @2,
@"Iosevka-Slab-Heavy-Italic": @2,
@"Iosevka-Slab-Heavy-Oblique": @2,
@"Iosevka-Slab-Italic": @2,
@"Iosevka-Slab-Light": @2,
@"Iosevka-Slab-Light-Italic": @2,
@"Iosevka-Slab-Light-Oblique": @2,
@"Iosevka-Slab-Medium": @2,
@"Iosevka-Slab-Medium-Italic": @2,
@"Iosevka-Slab-Medium-Oblique": @2,
@"Iosevka-Slab-Oblique": @2,
@"Iosevka-Slab-Thin": @2,
@"Iosevka-Slab-Thin-Italic": @2,
@"Iosevka-Slab-Thin-Oblique": @2,
@"IosevkaCC": @2,
@"IosevkaCC-Bold": @2,
@"IosevkaCC-Bold-Italic": @2,
@"IosevkaCC-Bold-Oblique": @2,
@"IosevkaCC-Extralight": @2,
@"IosevkaCC-Extralight-Italic": @2,
@"IosevkaCC-Extralight-Oblique": @2,
@"IosevkaCC-Heavy": @2,
@"IosevkaCC-Heavy-Italic": @2,
@"IosevkaCC-Heavy-Oblique": @2,
@"IosevkaCC-Italic": @2,
@"IosevkaCC-Light": @2,
@"IosevkaCC-Light-Italic": @2,
@"IosevkaCC-Light-Oblique": @2,
@"IosevkaCC-Medium": @2,
@"IosevkaCC-Medium-Italic": @2,
@"IosevkaCC-Medium-Oblique": @2,
@"IosevkaCC-Oblique": @2,
@"IosevkaCC-Thin": @2,
@"IosevkaCC-Thin-Italic": @2,
@"IosevkaCC-Thin-Oblique": @2,
@"IosevkaCC-Slab": @2,
@"IosevkaCC-Slab-Bold": @2,
@"IosevkaCC-Slab-Bold-Italic": @2,
@"IosevkaCC-Slab-Bold-Oblique": @2,
@"IosevkaCC-Slab-Extralight": @2,
@"IosevkaCC-Slab-Extralight-Italic": @2,
@"IosevkaCC-Slab-Extralight-Oblique": @2,
@"IosevkaCC-Slab-Heavy": @2,
@"IosevkaCC-Slab-Heavy-Italic": @2,
@"IosevkaCC-Slab-Heavy-Oblique": @2,
@"IosevkaCC-Slab-Italic": @2,
@"IosevkaCC-Slab-Light": @2,
@"IosevkaCC-Slab-Light-Italic": @2,
@"IosevkaCC-Slab-Light-Oblique": @2,
@"IosevkaCC-Slab-Medium": @2,
@"IosevkaCC-Slab-Medium-Italic": @2,
@"IosevkaCC-Slab-Medium-Oblique": @2,
@"IosevkaCC-Slab-Oblique": @2,
@"IosevkaCC-Slab-Thin": @2,
@"IosevkaCC-Slab-Thin-Italic": @2,
@"IosevkaCC-Slab-Thin-Oblique": @2, };
[fontNameToLigatureLevel retain];
blacklist = [[NSSet setWithArray:@[ @"AndaleMono",
@"Courier",
@"LetterGothicStd",
@"Menlo",
@"Monaco",
@"OCRAStd",
@"OratorStd",
@"Osaka",
@"PTMono",
@"SFMono" ]] retain];
});
NSNumber *value = fontNameToLigatureLevel[self.fontName];
return value ? value.integerValue : 1;
NSString *myName = self.fontName;
for (NSString *blacklistedNamePrefix in blacklist) {
if ([myName hasPrefix:blacklistedNamePrefix]) {
return YES;
}
}
return NO;
}
- (NSInteger)it_ligatureLevel {
if ([self.fontName hasPrefix:@"Iosevka"]) {
return 2;
} else if ([self it_fontIsOnLigatureBlacklist]) {
return 0;
} else {
return 1;
}
}
 
- (BOOL)it_defaultLigatures {
Loading
Loading
Loading
Loading
@@ -56,6 +56,7 @@ extern NSString *const kTerminalWindowStateRestorationWindowArrangementKey;
@property(nonatomic, readonly, getter=isTogglingLionFullScreen) BOOL togglingLionFullScreen;
// A unique identifier that does not get recycled during the program's lifetime.
@property(nonatomic, readonly) NSString *windowIdentifier;
@property(nonatomic, readonly) id<PTYWindowDelegateProtocol> ptyDelegate;
 
- (void)smartLayout;
- (void)setLayoutDone;
Loading
Loading
Loading
Loading
@@ -293,7 +293,7 @@ static NSInteger kNonAsciiFontButtonTag = 1;
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];
}
 
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
- (NSFontPanelModeMask)validModesForFontPanel:(NSFontPanel *)fontPanel {
return kValidModesForFontPanel;
}
 
Loading
Loading
Loading
Loading
@@ -7465,7 +7465,7 @@ ITERM_WEAKLY_REFERENCEABLE
userInfo:nil];
}
 
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel
- (NSFontPanelModeMask)validModesForFontPanel:(NSFontPanel *)fontPanel
{
return kValidModesForFontPanel;
}
Loading
Loading
Loading
Loading
@@ -15,7 +15,7 @@
[NSFontManager setFontPanelFactory:[iTermFontPanel class]];
}
 
- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel
- (NSFontPanelModeMask)validModesForFontPanel:(NSFontPanel *)fontPanel
{
return kValidModesForFontPanel;
}
Loading
Loading
Loading
Loading
@@ -56,14 +56,14 @@ ITERM_WEAKLY_REFERENCEABLE
- (BOOL)validateMenuItem:(NSMenuItem *)item {
if (item.action == @selector(performMiniaturize:)) {
// This makes borderless windows miniaturizable.
return ![_delegate anyFullScreen];
return ![self.ptyDelegate anyFullScreen];
} else {
return [super validateMenuItem:item];
}
}
 
- (void)performMiniaturize:(nullable id)sender {
if ([_delegate anyFullScreen]) {
if ([self.ptyDelegate anyFullScreen]) {
[super performMiniaturize:sender];
} else {
// NSWindow's performMiniaturize gates miniaturization on the presence of a miniaturize button.
Loading
Loading
@@ -368,7 +368,7 @@ ITERM_WEAKLY_REFERENCEABLE
}
 
- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(nullable NSScreen *)screen {
if ([_delegate terminalWindowShouldConstrainFrameToScreen]) {
if ([self.ptyDelegate terminalWindowShouldConstrainFrameToScreen]) {
return [super constrainFrameRect:frameRect toScreen:screen];
} else {
return frameRect;
Loading
Loading
Loading
Loading
@@ -25,7 +25,7 @@
#pragma mark - Handlers for commands
 
- (id)handleSelectCommand:(NSScriptCommand *)command {
[[iTermController sharedInstance] setCurrentTerminal:_delegate];
[[iTermController sharedInstance] setCurrentTerminal:(PseudoTerminal *)self.ptyDelegate];
return nil;
}
 
Loading
Loading
@@ -40,14 +40,14 @@
Profile *profile = [[ProfileModel sharedInstance] defaultBookmark];
PTYSession *session =
[[iTermController sharedInstance] launchBookmark:profile
inTerminal:_delegate
inTerminal:(PseudoTerminal *)self.ptyDelegate
withURL:nil
hotkeyWindowType:iTermHotkeyWindowTypeNone
makeKey:YES
canActivate:NO
command:command
block:nil];
return [_delegate tabForSession:session];
return [self.ptyDelegate tabForSession:session];
}
 
- (id)handleCreateTabCommand:(NSScriptCommand *)scriptCommand {
Loading
Loading
@@ -63,35 +63,35 @@
}
PTYSession *session =
[[iTermController sharedInstance] launchBookmark:profile
inTerminal:_delegate
inTerminal:(PseudoTerminal *)self.ptyDelegate
withURL:nil
hotkeyWindowType:iTermHotkeyWindowTypeNone
makeKey:YES
canActivate:NO
command:command
block:nil];
return [_delegate tabForSession:session];
return [self.ptyDelegate tabForSession:session];
}
 
- (id)handleRevealHotkeyWindowCommand:(NSScriptCommand *)scriptCommand {
[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:_delegate] revealForScripting];
[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:(PseudoTerminal *)self.ptyDelegate] revealForScripting];
return nil;
}
 
- (id)handleHideHotkeyWindowCommand:(NSScriptCommand *)scriptCommand {
[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:_delegate] hideForScripting];
[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:(PseudoTerminal *)self.ptyDelegate] hideForScripting];
return nil;
}
 
- (id)handleToggleHotkeyWindowCommand:(NSScriptCommand *)scriptCommand {
[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:_delegate] toggleForScripting];
[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:(PseudoTerminal *)self.ptyDelegate] toggleForScripting];
return nil;
}
 
#pragma mark - Accessors
 
- (NSArray *)tabs {
return [_delegate tabs];
return [(PseudoTerminal *)self.ptyDelegate tabs];
}
 
- (void)setTabs:(NSArray *)tabs {
Loading
Loading
@@ -105,43 +105,43 @@
}
 
- (NSUInteger)countOfTabs {
return [[_delegate tabs] count];
return [[(PseudoTerminal *)self.ptyDelegate tabs] count];
}
 
- (id)valueInTabsAtIndex:(unsigned)anIndex {
return [_delegate tabs][anIndex];
return [(PseudoTerminal *)self.ptyDelegate tabs][anIndex];
}
 
- (void)replaceInTabs:(PTYTab *)replacementTab atIndex:(unsigned)anIndex {
[_delegate insertInTabs:replacementTab atIndex:anIndex];
[_delegate closeTab:[_delegate tabs][anIndex + 1]];
[self insertInTabs:replacementTab atIndex:anIndex];
[(PseudoTerminal *)self.ptyDelegate closeTab:[(PseudoTerminal *)self.ptyDelegate tabs][anIndex + 1]];
}
 
- (void)insertInTabs:(PTYTab *)tab atIndex:(unsigned)anIndex {
[_delegate insertTab:tab atIndex:anIndex];
[(PseudoTerminal *)self.ptyDelegate insertTab:tab atIndex:anIndex];
}
 
- (void)removeFromTabsAtIndex:(unsigned)anIndex {
NSArray *tabs = [_delegate tabs];
[_delegate closeTab:tabs[anIndex]];
NSArray *tabs = [(PseudoTerminal *)self.ptyDelegate tabs];
[(PseudoTerminal *)self.ptyDelegate closeTab:tabs[anIndex]];
}
 
 
- (PTYTab *)currentTab {
return [_delegate currentTab];
return [(PseudoTerminal *)self.ptyDelegate currentTab];
}
 
- (PTYSession *)currentSession {
return [_delegate currentSession];
return [(PseudoTerminal *)self.ptyDelegate currentSession];
}
 
- (BOOL)isHotkeyWindow {
return [_delegate isHotKeyWindow];
return [(PseudoTerminal *)self.ptyDelegate isHotKeyWindow];
}
 
- (NSString *)hotkeyWindowProfile {
if ([_delegate isHotKeyWindow]) {
return [[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:_delegate] profile] objectForKey:KEY_NAME];
if ([(PseudoTerminal *)self.ptyDelegate isHotKeyWindow]) {
return [[[[iTermHotKeyController sharedInstance] profileHotKeyForWindowController:(PseudoTerminal *)self.ptyDelegate] profile] objectForKey:KEY_NAME];
} else {
return nil;
}
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment