Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • karan_m/iterm2
  • zhaochangqing/iterm2
  • joykeeper/iterm2
  • nleroux/iterm2
  • kenji21/iterm2
  • gagasegsegsegeg/iterm2
  • stanhu/iterm2
  • ivyfan/iterm2
  • DAddYE/iterm2
  • trave801/iterm2
  • lordrings/iterm2
  • tweekmonster/iterm2
  • imardaras/iterm2
  • DabeDotCom/iterm2
  • sherifamin83/iterm2
  • aquarecif/iterm2
  • visualrobots/iterm2
  • xmarianox/iterm2
  • doomsayer13/iterm2
  • vikdutt/iterm2
  • me36/iterm2
  • DevGrohl/iterm2
  • manigandan-rajasekar/iterm2
  • DWoodiwiss/iterm2
  • vti/iterm2
  • DamonQin/iterm2
26 results
Show changes
Commits on Source (28)
Showing
with 121 additions and 118 deletions
Loading
@@ -3370,7 +3370,6 @@ DQ
Loading
@@ -3370,7 +3370,6 @@ DQ
<button misplaced="YES" id="Wi4-0H-Bb4"> <button misplaced="YES" id="Wi4-0H-Bb4">
<rect key="frame" x="21" y="18" width="162" height="18"/> <rect key="frame" x="21" y="18" width="162" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<string key="toolTip">If Shell Integration is enabled, this prevents command prompts from starting in the middle of a line when the previous command did not end with a newline.</string>
<buttonCell key="cell" type="check" title="Show mark indicators" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="uCi-Qa-X8t"> <buttonCell key="cell" type="check" title="Show mark indicators" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="uCi-Qa-X8t">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/> <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
Loading
Loading
Loading
@@ -34,7 +34,7 @@ Dep:
Loading
@@ -34,7 +34,7 @@ Dep:
Beta: Beta:
cp plists/release-iTerm2.plist plists/iTerm2.plist cp plists/release-iTerm2.plist plists/iTerm2.plist
xcodebuild -parallelizeTargets -target iTerm2 -configuration Beta && \ xcodebuild -parallelizeTargets -target iTerm2 -configuration Beta && \
chmod -R go+rX build/Deployment chmod -R go+rX build/Beta
   
Deployment: Deployment:
xcodebuild -parallelizeTargets -target iTerm2 -configuration Deployment && \ xcodebuild -parallelizeTargets -target iTerm2 -configuration Deployment && \
Loading
Loading
Loading
@@ -1267,8 +1267,6 @@
Loading
@@ -1267,8 +1267,6 @@
A61D16FC1AAFD5530013FCCA /* iTermBackgroundColorRun.h in Headers */ = {isa = PBXBuildFile; fileRef = A61D16FA1AAFD5530013FCCA /* iTermBackgroundColorRun.h */; }; A61D16FC1AAFD5530013FCCA /* iTermBackgroundColorRun.h in Headers */ = {isa = PBXBuildFile; fileRef = A61D16FA1AAFD5530013FCCA /* iTermBackgroundColorRun.h */; };
A61D16FD1AAFD5530013FCCA /* iTermBackgroundColorRun.h in Headers */ = {isa = PBXBuildFile; fileRef = A61D16FA1AAFD5530013FCCA /* iTermBackgroundColorRun.h */; }; A61D16FD1AAFD5530013FCCA /* iTermBackgroundColorRun.h in Headers */ = {isa = PBXBuildFile; fileRef = A61D16FA1AAFD5530013FCCA /* iTermBackgroundColorRun.h */; };
A61F8E301E62591800D315D0 /* iTermFakeUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = A61F8E2F1E62591800D315D0 /* iTermFakeUserDefaults.m */; }; A61F8E301E62591800D315D0 /* iTermFakeUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = A61F8E2F1E62591800D315D0 /* iTermFakeUserDefaults.m */; };
A623D9471F8972750011F8C3 /* iTermCallWithTimeout.h in Headers */ = {isa = PBXBuildFile; fileRef = A623D9451F8972750011F8C3 /* iTermCallWithTimeout.h */; };
A623D9481F8972750011F8C3 /* iTermCallWithTimeout.m in Sources */ = {isa = PBXBuildFile; fileRef = A623D9461F8972750011F8C3 /* iTermCallWithTimeout.m */; };
A623D94B1F8984690011F8C3 /* key.png in Resources */ = {isa = PBXBuildFile; fileRef = A623D9491F8983D70011F8C3 /* key.png */; }; A623D94B1F8984690011F8C3 /* key.png in Resources */ = {isa = PBXBuildFile; fileRef = A623D9491F8983D70011F8C3 /* key.png */; };
A623D94C1F8984690011F8C3 /* key.png in Resources */ = {isa = PBXBuildFile; fileRef = A623D9491F8983D70011F8C3 /* key.png */; }; A623D94C1F8984690011F8C3 /* key.png in Resources */ = {isa = PBXBuildFile; fileRef = A623D9491F8983D70011F8C3 /* key.png */; };
A623D94D1F89846A0011F8C3 /* key.png in Resources */ = {isa = PBXBuildFile; fileRef = A623D9491F8983D70011F8C3 /* key.png */; }; A623D94D1F89846A0011F8C3 /* key.png in Resources */ = {isa = PBXBuildFile; fileRef = A623D9491F8983D70011F8C3 /* key.png */; };
Loading
@@ -3251,8 +3249,6 @@
Loading
@@ -3251,8 +3249,6 @@
A61D16FB1AAFD5530013FCCA /* iTermBackgroundColorRun.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTermBackgroundColorRun.m; sourceTree = "<group>"; }; A61D16FB1AAFD5530013FCCA /* iTermBackgroundColorRun.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTermBackgroundColorRun.m; sourceTree = "<group>"; };
A61F8E2E1E62591800D315D0 /* iTermFakeUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTermFakeUserDefaults.h; sourceTree = "<group>"; }; A61F8E2E1E62591800D315D0 /* iTermFakeUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iTermFakeUserDefaults.h; sourceTree = "<group>"; };
A61F8E2F1E62591800D315D0 /* iTermFakeUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTermFakeUserDefaults.m; sourceTree = "<group>"; }; A61F8E2F1E62591800D315D0 /* iTermFakeUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iTermFakeUserDefaults.m; sourceTree = "<group>"; };
A623D9451F8972750011F8C3 /* iTermCallWithTimeout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = iTermCallWithTimeout.h; sourceTree = "<group>"; };
A623D9461F8972750011F8C3 /* iTermCallWithTimeout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iTermCallWithTimeout.m; sourceTree = "<group>"; };
A623D9491F8983D70011F8C3 /* key.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = key.png; path = images/key.png; sourceTree = "<group>"; }; A623D9491F8983D70011F8C3 /* key.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = key.png; path = images/key.png; sourceTree = "<group>"; };
A623D94A1F8983D80011F8C3 /* key@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "key@2x.png"; path = "images/key@2x.png"; sourceTree = "<group>"; }; A623D94A1F8983D80011F8C3 /* key@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "key@2x.png"; path = "images/key@2x.png"; sourceTree = "<group>"; };
A624230F19CF6B0C00182C08 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = ThirdParty/Sparkle.framework; sourceTree = "<group>"; }; A624230F19CF6B0C00182C08 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = ThirdParty/Sparkle.framework; sourceTree = "<group>"; };
Loading
@@ -5738,8 +5734,6 @@
Loading
@@ -5738,8 +5734,6 @@
A65EC02E1F31800300AC0A6B /* iTermUpdateCadenceController.m */, A65EC02E1F31800300AC0A6B /* iTermUpdateCadenceController.m */,
A65EC0311F3181E700AC0A6B /* NSTimer+iTerm.h */, A65EC0311F3181E700AC0A6B /* NSTimer+iTerm.h */,
A65EC0321F3181E700AC0A6B /* NSTimer+iTerm.m */, A65EC0321F3181E700AC0A6B /* NSTimer+iTerm.m */,
A623D9451F8972750011F8C3 /* iTermCallWithTimeout.h */,
A623D9461F8972750011F8C3 /* iTermCallWithTimeout.m */,
); );
name = Helpers; name = Helpers;
sourceTree = "<group>"; sourceTree = "<group>";
Loading
@@ -6885,7 +6879,6 @@
Loading
@@ -6885,7 +6879,6 @@
A667193D1DCE36C3000CE608 /* iTermHotkeyPreferencesModel.h in Headers */, A667193D1DCE36C3000CE608 /* iTermHotkeyPreferencesModel.h in Headers */,
A667193E1DCE36C3000CE608 /* NSLocale+iTerm.h in Headers */, A667193E1DCE36C3000CE608 /* NSLocale+iTerm.h in Headers */,
A667193F1DCE36C3000CE608 /* iTermDirectoryTree.h in Headers */, A667193F1DCE36C3000CE608 /* iTermDirectoryTree.h in Headers */,
A623D9471F8972750011F8C3 /* iTermCallWithTimeout.h in Headers */,
A66719401DCE36C3000CE608 /* iTermOpenQuicklyCommands.h in Headers */, A66719401DCE36C3000CE608 /* iTermOpenQuicklyCommands.h in Headers */,
A62A1F761E711BC000363EE9 /* iTermHelpMessageViewController.h in Headers */, A62A1F761E711BC000363EE9 /* iTermHelpMessageViewController.h in Headers */,
A66719411DCE36C3000CE608 /* iTermSystemVersion.h in Headers */, A66719411DCE36C3000CE608 /* iTermSystemVersion.h in Headers */,
Loading
@@ -7221,8 +7214,7 @@
Loading
@@ -7221,8 +7214,7 @@
DevelopmentTeam = H7V7XYVQ7D; DevelopmentTeam = H7V7XYVQ7D;
}; };
874206460564169600CFC3F1 = { 874206460564169600CFC3F1 = {
DevelopmentTeam = H7V7XYVQ7D; ProvisioningStyle = Manual;
ProvisioningStyle = Automatic;
}; };
A66717851DCE36C3000CE608 = { A66717851DCE36C3000CE608 = {
DevelopmentTeam = H7V7XYVQ7D; DevelopmentTeam = H7V7XYVQ7D;
Loading
@@ -8428,7 +8420,6 @@
Loading
@@ -8428,7 +8420,6 @@
A65EC0301F31800300AC0A6B /* iTermUpdateCadenceController.m in Sources */, A65EC0301F31800300AC0A6B /* iTermUpdateCadenceController.m in Sources */,
A66719661DCE3772000CE608 /* iTermWebSocketFrame.m in Sources */, A66719661DCE3772000CE608 /* iTermWebSocketFrame.m in Sources */,
A65EC0341F3181E700AC0A6B /* NSTimer+iTerm.m in Sources */, A65EC0341F3181E700AC0A6B /* NSTimer+iTerm.m in Sources */,
A623D9481F8972750011F8C3 /* iTermCallWithTimeout.m in Sources */,
A66EF82D1EF59CFC0005891A /* iTermRateLimitedUpdate.m in Sources */, A66EF82D1EF59CFC0005891A /* iTermRateLimitedUpdate.m in Sources */,
A66719601DCE3772000CE608 /* iTermAPIServer.m in Sources */, A66719601DCE3772000CE608 /* iTermAPIServer.m in Sources */,
A60BB38F1EB6A08A00D76C09 /* iTermProcessCollection.m in Sources */, A60BB38F1EB6A08A00D76C09 /* iTermProcessCollection.m in Sources */,
Loading
@@ -9013,11 +9004,11 @@
Loading
@@ -9013,11 +9004,11 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
DEVELOPMENT_TEAM = H7V7XYVQ7D; DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(SRCROOT)", "$(SRCROOT)",
Loading
@@ -9646,11 +9637,11 @@
Loading
@@ -9646,11 +9637,11 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
DEVELOPMENT_TEAM = H7V7XYVQ7D; DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(SRCROOT)", "$(SRCROOT)",
Loading
@@ -10673,12 +10664,12 @@
Loading
@@ -10673,12 +10664,12 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = H7V7XYVQ7D; DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(SRCROOT)", "$(SRCROOT)",
Loading
@@ -10748,11 +10739,11 @@
Loading
@@ -10748,11 +10739,11 @@
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CODE_SIGN_IDENTITY = "Mac Developer"; CODE_SIGN_IDENTITY = "Developer ID Application: GEORGE NACHMAN (H7V7XYVQ7D)";
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
DEVELOPMENT_TEAM = H7V7XYVQ7D; DEVELOPMENT_TEAM = "";
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"$(SRCROOT)", "$(SRCROOT)",
Loading
@@ -63,6 +63,7 @@
Loading
@@ -63,6 +63,7 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
enableAddressSanitizer = "YES" enableAddressSanitizer = "YES"
disableMainThreadChecker = "YES"
language = "" language = ""
launchStyle = "0" launchStyle = "0"
useCustomWorkingDirectory = "NO" useCustomWorkingDirectory = "NO"
Loading
@@ -81,11 +82,6 @@
Loading
@@ -81,11 +82,6 @@
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
<AdditionalOptions> <AdditionalOptions>
<AdditionalOption
key = "NSZombieEnabled"
value = "YES"
isEnabled = "YES">
</AdditionalOption>
</AdditionalOptions> </AdditionalOptions>
</LaunchAction> </LaunchAction>
<ProfileAction <ProfileAction
Loading
Loading
Loading
@@ -185,6 +185,7 @@
Loading
@@ -185,6 +185,7 @@
// ` not supported (Character Position Absolute [column] (default = [row,1]) (HPA)) // ` not supported (Character Position Absolute [column] (default = [row,1]) (HPA))
// a not supported (Character Position Relative [columns] (default = [row,col+1]) (HPR)) // a not supported (Character Position Relative [columns] (default = [row,col+1]) (HPR))
// b not supported (Repeat the preceding graphic character P s times (REP)) // b not supported (Repeat the preceding graphic character P s times (REP))
{ 0, 0, 'b', VT100CSI_REP, 1, -1, -1 },
{ 0, 0, 'c', VT100CSI_DA, 0, -1, -1 }, { 0, 0, 'c', VT100CSI_DA, 0, -1, -1 },
{ '>', 0, 'c', VT100CSI_DA2, 0, -1, -1 }, { '>', 0, 'c', VT100CSI_DA2, 0, -1, -1 },
{ 0, 0, 'd', ANSICSI_VPA, 1, -1, -1 }, { 0, 0, 'd', ANSICSI_VPA, 1, -1, -1 },
Loading
@@ -281,7 +282,6 @@
Loading
@@ -281,7 +282,6 @@
"1;1;1;1;1T", "1;1;1;1;1T",
"`", "`",
"a", "a",
"1b",
"?1i", "?1i",
">0p", ">0p",
"1$p", "1$p",
Loading
Loading
Loading
@@ -40,13 +40,6 @@
Loading
@@ -40,13 +40,6 @@
} }
   
- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory { - (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory {
BOOL timedOut;
return [self fileExistsAtPath:path isDirectory:isDirectory timedOut:&timedOut];
}
- (BOOL)fileExistsAtPath:(NSString *)path isDirectory:(BOOL *)isDirectory timedOut:(BOOL *)timedOut {
*timedOut = NO;
if ([_files containsObject:path]) { if ([_files containsObject:path]) {
if (isDirectory) { if (isDirectory) {
*isDirectory = NO; *isDirectory = NO;
Loading
@@ -65,8 +58,7 @@
Loading
@@ -65,8 +58,7 @@
} }
   
- (BOOL)fileExistsAtPathLocally:(NSString *)filename - (BOOL)fileExistsAtPathLocally:(NSString *)filename
additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkPaths additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkPaths {
timedOut:(BOOL *)timedOutPtr {
NSMutableArray *networkPaths = [[_networkMountPoints mutableCopy] autorelease]; NSMutableArray *networkPaths = [[_networkMountPoints mutableCopy] autorelease];
[networkPaths addObjectsFromArray:additionalNetworkPaths]; [networkPaths addObjectsFromArray:additionalNetworkPaths];
for (NSString *networkPath in networkPaths) { for (NSString *networkPath in networkPaths) {
Loading
@@ -79,8 +71,7 @@
Loading
@@ -79,8 +71,7 @@
} }
   
- (BOOL)fileExistsAtPath:(NSString *)path { - (BOOL)fileExistsAtPath:(NSString *)path {
BOOL timedOut; return [self fileExistsAtPath:path isDirectory:NULL];
return [self fileExistsAtPath:path isDirectory:NULL timedOut:&timedOut];
} }
   
@end @end
Loading
@@ -178,21 +169,17 @@
Loading
@@ -178,21 +169,17 @@
#pragma mark - Get Full Path #pragma mark - Get Full Path
   
- (void)testGetFullPathFailsOnNil { - (void)testGetFullPathFailsOnNil {
BOOL timedOut;
XCTAssert([_semanticHistoryController getFullPath:nil XCTAssert([_semanticHistoryController getFullPath:nil
workingDirectory:@"/" workingDirectory:@"/"
lineNumber:NULL lineNumber:NULL
columnNumber:NULL columnNumber:NULL] == nil);
timedOut:&timedOut] == nil);
} }
   
- (void)testGetFullPathFailsOnEmpty { - (void)testGetFullPathFailsOnEmpty {
BOOL timedOut;
XCTAssert([_semanticHistoryController getFullPath:@"" XCTAssert([_semanticHistoryController getFullPath:@""
workingDirectory:@"/" workingDirectory:@"/"
lineNumber:NULL lineNumber:NULL
columnNumber:NULL columnNumber:NULL] == nil);
timedOut:&timedOut] == nil);
} }
   
- (void)testGetFullPathFindsExistingFileAtAbsolutePath { - (void)testGetFullPathFindsExistingFileAtAbsolutePath {
Loading
@@ -201,12 +188,10 @@
Loading
@@ -201,12 +188,10 @@
static NSString *const kFilename = @"/path/to/file"; static NSString *const kFilename = @"/path/to/file";
static NSString *const kWorkingDirectory = @"/working/directory"; static NSString *const kWorkingDirectory = @"/working/directory";
[_semanticHistoryController.fakeFileManager.files addObject:kFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kFilename NSString *actual = [_semanticHistoryController getFullPath:kFilename
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kFilename; NSString *expected = kFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.length == 0); XCTAssert(lineNumber.length == 0);
Loading
@@ -220,12 +205,10 @@
Loading
@@ -220,12 +205,10 @@
NSString *kAbsoluteFilename = NSString *kAbsoluteFilename =
[kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename]; [kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename];
[_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kAbsoluteFilename; NSString *expected = kAbsoluteFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.length == 0); XCTAssert(lineNumber.length == 0);
Loading
@@ -239,12 +222,10 @@
Loading
@@ -239,12 +222,10 @@
NSString *kFilenameWithParens = [NSString stringWithFormat:@"%C%@%C", [delimiters characterAtIndex:0], kFilename, [delimiters characterAtIndex:1]]; NSString *kFilenameWithParens = [NSString stringWithFormat:@"%C%@%C", [delimiters characterAtIndex:0], kFilename, [delimiters characterAtIndex:1]];
static NSString *const kWorkingDirectory = @"/working/directory"; static NSString *const kWorkingDirectory = @"/working/directory";
[_semanticHistoryController.fakeFileManager.files addObject:kFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithParens NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithParens
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kFilename; NSString *expected = kFilename;
assert([expected isEqualToString:actual]); assert([expected isEqualToString:actual]);
assert(lineNumber.length == 0); assert(lineNumber.length == 0);
Loading
@@ -259,12 +240,10 @@
Loading
@@ -259,12 +240,10 @@
NSString *kFilenameWithParens = [kFilename stringByAppendingString:punctuation]; NSString *kFilenameWithParens = [kFilename stringByAppendingString:punctuation];
static NSString *const kWorkingDirectory = @"/working/directory"; static NSString *const kWorkingDirectory = @"/working/directory";
[_semanticHistoryController.fakeFileManager.files addObject:kFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithParens NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithParens
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kFilename; NSString *expected = kFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.length == 0); XCTAssert(lineNumber.length == 0);
Loading
@@ -278,12 +257,10 @@
Loading
@@ -278,12 +257,10 @@
static NSString *const kWorkingDirectory = @"/working/directory"; static NSString *const kWorkingDirectory = @"/working/directory";
NSString *kFilenameWithLineNumber = [kFilename stringByAppendingString:@":123"]; NSString *kFilenameWithLineNumber = [kFilename stringByAppendingString:@":123"];
[_semanticHistoryController.fakeFileManager.files addObject:kFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithLineNumber NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithLineNumber
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kFilename; NSString *expected = kFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.integerValue == 123); XCTAssert(lineNumber.integerValue == 123);
Loading
@@ -296,12 +273,10 @@
Loading
@@ -296,12 +273,10 @@
static NSString *const kWorkingDirectory = @"/working/directory"; static NSString *const kWorkingDirectory = @"/working/directory";
NSString *kFilenameWithLineNumber = [kFilename stringByAppendingString:@":123:456"]; NSString *kFilenameWithLineNumber = [kFilename stringByAppendingString:@":123:456"];
[_semanticHistoryController.fakeFileManager.files addObject:kFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithLineNumber NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithLineNumber
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kFilename; NSString *expected = kFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.integerValue == 123); XCTAssert(lineNumber.integerValue == 123);
Loading
@@ -314,12 +289,10 @@
Loading
@@ -314,12 +289,10 @@
static NSString *const kWorkingDirectory = @"/working/directory"; static NSString *const kWorkingDirectory = @"/working/directory";
NSString *kFilenameWithLineNumber = [NSString stringWithFormat:@"(%@:123.)", kFilename]; NSString *kFilenameWithLineNumber = [NSString stringWithFormat:@"(%@:123.)", kFilename];
[_semanticHistoryController.fakeFileManager.files addObject:kFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithLineNumber NSString *actual = [_semanticHistoryController getFullPath:kFilenameWithLineNumber
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kFilename; NSString *expected = kFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.integerValue == 123); XCTAssert(lineNumber.integerValue == 123);
Loading
@@ -330,12 +303,10 @@
Loading
@@ -330,12 +303,10 @@
NSString *columnNumber = nil; NSString *columnNumber = nil;
static NSString *const kWorkingDirectory = @"/working/directory"; static NSString *const kWorkingDirectory = @"/working/directory";
static NSString *const kFilename = @"(:123.)"; static NSString *const kFilename = @"(:123.)";
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kFilename NSString *actual = [_semanticHistoryController getFullPath:kFilename
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
XCTAssert(actual == nil); XCTAssert(actual == nil);
} }
   
Loading
@@ -347,12 +318,10 @@
Loading
@@ -347,12 +318,10 @@
NSString *kAbsoluteFilename = @"/working/directory/path/to/file"; NSString *kAbsoluteFilename = @"/working/directory/path/to/file";
[_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename];
[_semanticHistoryController.fakeFileManager.files addObject:@"/working/directory/./path/to/file"]; [_semanticHistoryController.fakeFileManager.files addObject:@"/working/directory/./path/to/file"];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kAbsoluteFilename; NSString *expected = kAbsoluteFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.length == 0); XCTAssert(lineNumber.length == 0);
Loading
@@ -366,12 +335,10 @@
Loading
@@ -366,12 +335,10 @@
NSString *kAbsoluteFilename = @"/working/directory/path/to/file"; NSString *kAbsoluteFilename = @"/working/directory/path/to/file";
[_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename];
[_semanticHistoryController.fakeFileManager.files addObject:@"/working/directory/blah/../path/to/file"]; [_semanticHistoryController.fakeFileManager.files addObject:@"/working/directory/blah/../path/to/file"];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kAbsoluteFilename; NSString *expected = kAbsoluteFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.length == 0); XCTAssert(lineNumber.length == 0);
Loading
@@ -385,12 +352,10 @@
Loading
@@ -385,12 +352,10 @@
NSString *kAbsoluteFilename = NSString *kAbsoluteFilename =
[kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename]; [kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename];
[_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:[@"a/" stringByAppendingString:kRelativeFilename] NSString *actual = [_semanticHistoryController getFullPath:[@"a/" stringByAppendingString:kRelativeFilename]
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kAbsoluteFilename; NSString *expected = kAbsoluteFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.length == 0); XCTAssert(lineNumber.length == 0);
Loading
@@ -404,12 +369,10 @@
Loading
@@ -404,12 +369,10 @@
NSString *kAbsoluteFilename = NSString *kAbsoluteFilename =
[kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename]; [kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename];
[_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:[@"b/" stringByAppendingString:kRelativeFilename] NSString *actual = [_semanticHistoryController getFullPath:[@"b/" stringByAppendingString:kRelativeFilename]
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kAbsoluteFilename; NSString *expected = kAbsoluteFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
XCTAssert(lineNumber.length == 0); XCTAssert(lineNumber.length == 0);
Loading
@@ -423,12 +386,10 @@
Loading
@@ -423,12 +386,10 @@
NSString *kAbsoluteFilename = NSString *kAbsoluteFilename =
[kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename]; [kWorkingDirectory stringByAppendingPathComponent:kRelativeFilename];
[_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename]; [_semanticHistoryController.fakeFileManager.files addObject:kAbsoluteFilename];
BOOL timedOut;
NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename NSString *actual = [_semanticHistoryController getFullPath:kRelativeFilename
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
NSString *expected = kAbsoluteFilename; NSString *expected = kAbsoluteFilename;
XCTAssert([expected isEqualToString:actual]); XCTAssert([expected isEqualToString:actual]);
   
Loading
@@ -436,8 +397,7 @@
Loading
@@ -436,8 +397,7 @@
actual = [_semanticHistoryController getFullPath:kRelativeFilename actual = [_semanticHistoryController getFullPath:kRelativeFilename
workingDirectory:kWorkingDirectory workingDirectory:kWorkingDirectory
lineNumber:&lineNumber lineNumber:&lineNumber
columnNumber:&columnNumber columnNumber:&columnNumber];
timedOut:&timedOut];
XCTAssert(actual == nil); XCTAssert(actual == nil);
} }
   
Loading
Loading
images/Add Mark Touch Bar Icon.png

754 B | W: 64px | H: 64px

images/Add Mark Touch Bar Icon.png

959 B | W: 64px | H: 64px

images/Add Mark Touch Bar Icon.png
images/Add Mark Touch Bar Icon.png
images/Add Mark Touch Bar Icon.png
images/Add Mark Touch Bar Icon.png
  • 2-up
  • Swipe
  • Onion skin
images/Add Mark Touch Bar Icon@2x.png

1.44 KiB | W: 128px | H: 128px

images/Add Mark Touch Bar Icon@2x.png

1.68 KiB | W: 128px | H: 128px

images/Add Mark Touch Bar Icon@2x.png
images/Add Mark Touch Bar Icon@2x.png
images/Add Mark Touch Bar Icon@2x.png
images/Add Mark Touch Bar Icon@2x.png
  • 2-up
  • Swipe
  • Onion skin
Loading
@@ -818,6 +818,13 @@
Loading
@@ -818,6 +818,13 @@
</dict> </dict>
<key>Natural Text Editing</key> <key>Natural Text Editing</key>
<dict> <dict>
<key>0xf728-0x80000</key>
<dict>
<key>Action</key>
<integer>10</integer>
<key>Text</key>
<string>d</string>
</dict>
<key>0x7f-0x100000</key> <key>0x7f-0x100000</key>
<dict> <dict>
<key>Action</key> <key>Action</key>
Loading
Loading
Loading
@@ -162,8 +162,7 @@ enum {
Loading
@@ -162,8 +162,7 @@ enum {
while (rootMenu.supermenu) { while (rootMenu.supermenu) {
rootMenu = rootMenu.supermenu; rootMenu = rootMenu.supermenu;
} }
if (rootMenu == [NSApp mainMenu] && if ([self darkTheme]) {
[[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"] isEqualToString:@"Dark"]) {
attributes[NSForegroundColorAttributeName] = [NSColor whiteColor]; attributes[NSForegroundColorAttributeName] = [NSColor whiteColor];
} }
   
Loading
@@ -172,6 +171,10 @@ enum {
Loading
@@ -172,6 +171,10 @@ enum {
[NSBezierPath setDefaultLineWidth:savedWidth]; [NSBezierPath setDefaultLineWidth:savedWidth];
} }
   
- (BOOL)darkTheme {
return [self.window.appearance.name isEqual:NSAppearanceNameVibrantDark];
}
- (void)mouseUp:(NSEvent*) event { - (void)mouseUp:(NSEvent*) event {
NSPoint mousePoint = [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] fromView:nil]; NSPoint mousePoint = [self convertPoint:[[self window] mouseLocationOutsideOfEventStream] fromView:nil];
NSMenuItem* mitem = [self enclosingMenuItem]; NSMenuItem* mitem = [self enclosingMenuItem];
Loading
Loading
Loading
@@ -645,8 +645,9 @@ int OffsetOfWrappedLine(screen_char_t* p, int n, int length, int width, BOOL may
Loading
@@ -645,8 +645,9 @@ int OffsetOfWrappedLine(screen_char_t* p, int n, int length, int width, BOOL may
return NULL; return NULL;
} }
   
- (int) getNumLinesWithWrapWidth: (int) width - (int)getNumLinesWithWrapWidth:(int)width {
{ ITBetaAssert(width > 0, @"Bogus value of width: %d", width);
if (width == cached_numlines_width) { if (width == cached_numlines_width) {
return cached_numlines; return cached_numlines;
} }
Loading
Loading
Loading
@@ -912,7 +912,7 @@ static int RawNumLines(LineBuffer* buffer, int width) {
Loading
@@ -912,7 +912,7 @@ static int RawNumLines(LineBuffer* buffer, int width) {
// trailing empty lines. They all have the same position because they // trailing empty lines. They all have the same position because they
// are empty. We need to back up by the number of empty lines and then // are empty. We need to back up by the number of empty lines and then
// use position.yOffset to disambiguate. // use position.yOffset to disambiguate.
result.y = [self numLinesWithWidth:width] - 1 - [blocks.lastObject numberOfTrailingEmptyLines]; result.y = MAX(0, [self numLinesWithWidth:width] - 1 - [blocks.lastObject numberOfTrailingEmptyLines]);
ScreenCharArray *lastLine = [self wrappedLineAtIndex:result.y ScreenCharArray *lastLine = [self wrappedLineAtIndex:result.y
width:width width:width
continuation:NULL]; continuation:NULL];
Loading
Loading
Loading
@@ -37,8 +37,7 @@
Loading
@@ -37,8 +37,7 @@
   
// Returns YES if the file exists on a local (non-network) filesystem. // Returns YES if the file exists on a local (non-network) filesystem.
- (BOOL)fileExistsAtPathLocally:(NSString *)filename - (BOOL)fileExistsAtPathLocally:(NSString *)filename
additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkpaths additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkpaths;
timedOut:(BOOL *)timedOut;
   
- (BOOL)fileHasForbiddenPrefix:(NSString *)filename - (BOOL)fileHasForbiddenPrefix:(NSString *)filename
additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkpaths; additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkpaths;
Loading
Loading
Loading
@@ -25,7 +25,6 @@
Loading
@@ -25,7 +25,6 @@
#import "NSFileManager+iTerm.h" #import "NSFileManager+iTerm.h"
   
#import "iTermAdvancedSettingsModel.h" #import "iTermAdvancedSettingsModel.h"
#import "iTermCallWithTimeout.h"
#import "DebugLogging.h" #import "DebugLogging.h"
#import "iTermAdvancedSettingsModel.h" #import "iTermAdvancedSettingsModel.h"
#import "iTermAutoMasterParser.h" #import "iTermAutoMasterParser.h"
Loading
@@ -228,32 +227,20 @@ NSString * const DirectoryLocationDomain = @"DirectoryLocationDomain";
Loading
@@ -228,32 +227,20 @@ NSString * const DirectoryLocationDomain = @"DirectoryLocationDomain";
} }
   
- (BOOL)fileExistsAtPathLocally:(NSString *)filename - (BOOL)fileExistsAtPathLocally:(NSString *)filename
additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkPaths additionalNetworkPaths:(NSArray<NSString *> *)additionalNetworkPaths {
timedOut:(BOOL *)timedOutPtr {
if ([self fileHasForbiddenPrefix:filename additionalNetworkPaths:additionalNetworkPaths]) { if ([self fileHasForbiddenPrefix:filename additionalNetworkPaths:additionalNetworkPaths]) {
return NO; return NO;
} }
   
__block BOOL ok = NO; BOOL ok;
[filename retain]; struct statfs buf;
BOOL timedOut = int rc = statfs([filename UTF8String], &buf);
[[iTermCallWithTimeout instanceForIdentifier:@"statfs"] executeWithTimeout:0.5 block:^{ if (rc != 0 || (buf.f_flags & MNT_LOCAL)) {
struct statfs buf; ok = [self fileExistsAtPath:filename];
int rc = statfs([filename UTF8String], &buf); } else {
if (rc != 0 || (buf.f_flags & MNT_LOCAL)) { ok = NO;
ok = [self fileExistsAtPath:filename];
} else {
ok = NO;
}
[filename release];
}];
if (timedOutPtr) {
*timedOutPtr = timedOut;
} }
if (timedOut) { return ok;
DLog(@"Timed out doing statfs on %@", filename);
}
return timedOut ? NO : ok;
} }
   
@end @end
Loading
Loading
Loading
@@ -1490,6 +1490,14 @@ ITERM_WEAKLY_REFERENCEABLE
Loading
@@ -1490,6 +1490,14 @@ ITERM_WEAKLY_REFERENCEABLE
} }
   
- (void)setSize:(VT100GridSize)size { - (void)setSize:(VT100GridSize)size {
ITBetaAssert(size.width > 0, @"Nonpositive width %d", size.width);
ITBetaAssert(size.height > 0, @"Nonpositive height %d", size.height);
if (size.width <= 0) {
size.width = 1;
}
if (size.height <= 0) {
size.height = 1;
}
self.lastResize = [NSDate timeIntervalSinceReferenceDate]; self.lastResize = [NSDate timeIntervalSinceReferenceDate];
DLog(@"Set session %@ to %@", self, VT100GridSizeDescription(size)); DLog(@"Set session %@ to %@", self, VT100GridSizeDescription(size));
[_screen setSize:size]; [_screen setSize:size];
Loading
@@ -8456,6 +8464,7 @@ ITERM_WEAKLY_REFERENCEABLE
Loading
@@ -8456,6 +8464,7 @@ ITERM_WEAKLY_REFERENCEABLE
   
- (NSString *)currentLocalWorkingDirectory { - (NSString *)currentLocalWorkingDirectory {
if (_lastDirectoryIsUnsuitableForOldPWD || _lastDirectory == nil) { if (_lastDirectoryIsUnsuitableForOldPWD || _lastDirectory == nil) {
DLog(@"Last directory is unsuitable or nil");
// Ask the kernel what the child's process's working directory is. // Ask the kernel what the child's process's working directory is.
return [_shell getWorkingDirectory]; return [_shell getWorkingDirectory];
} else { } else {
Loading
@@ -8465,6 +8474,7 @@ ITERM_WEAKLY_REFERENCEABLE
Loading
@@ -8465,6 +8474,7 @@ ITERM_WEAKLY_REFERENCEABLE
// to expand symlinks on _lastDirectory and use it if it matches what the kernel reports. // to expand symlinks on _lastDirectory and use it if it matches what the kernel reports.
// That was a bad idea because expanding symlinks is slow on network file systems (Issue 4901). // That was a bad idea because expanding symlinks is slow on network file systems (Issue 4901).
// Instead, we'll use _lastDirectory if we believe it's on localhost. // Instead, we'll use _lastDirectory if we believe it's on localhost.
DLog(@"Using last directory from shell integration: %@", _lastDirectory);
return _lastDirectory; return _lastDirectory;
} }
} }
Loading
Loading
Loading
@@ -5063,7 +5063,7 @@ ITERM_WEAKLY_REFERENCEABLE
Loading
@@ -5063,7 +5063,7 @@ ITERM_WEAKLY_REFERENCEABLE
iTermSubSelection *sub = [selection.allSubSelections lastObject]; iTermSubSelection *sub = [selection.allSubSelections lastObject];
if (sub) { if (sub) {
[self showRangeOfLines:NSMakeRange(sub.range.coordRange.start.y, [self showRangeOfLines:NSMakeRange(sub.range.coordRange.start.y,
sub.range.coordRange.end.y - sub.range.coordRange.start.y) sub.range.coordRange.end.y - sub.range.coordRange.start.y + 1)
inSession:session]; inSession:session];
} }
} }
Loading
@@ -7594,6 +7594,7 @@ ITERM_WEAKLY_REFERENCEABLE
Loading
@@ -7594,6 +7594,7 @@ ITERM_WEAKLY_REFERENCEABLE
currentSession = currentSession.tmuxGatewaySession; currentSession = currentSession.tmuxGatewaySession;
} }
if (currentSession) { if (currentSession) {
DLog(@"Getting current local working directory");
previousDirectory = [currentSession currentLocalWorkingDirectory]; previousDirectory = [currentSession currentLocalWorkingDirectory];
} }
   
Loading
Loading
Loading
@@ -394,6 +394,11 @@ static void SetCSITypeAndDefaultParameters(CSIParam *param, VT100Token *result)
Loading
@@ -394,6 +394,11 @@ static void SetCSITypeAndDefaultParameters(CSIParam *param, VT100Token *result)
iTermParserSetCSIParameterIfDefault(param, 0, 1); iTermParserSetCSIParameterIfDefault(param, 0, 1);
break; break;
   
case 'b': // Repeat
result->type = VT100CSI_REP;
iTermParserSetCSIParameterIfDefault(param, 0, 1);
break;
case 'B': // Cursor Down case 'B': // Cursor Down
result->type = VT100CSI_CUD; result->type = VT100CSI_CUD;
iTermParserSetCSIParameterIfDefault(param, 0, 1); iTermParserSetCSIParameterIfDefault(param, 0, 1);
Loading
Loading
Loading
@@ -17,6 +17,7 @@
Loading
@@ -17,6 +17,7 @@
#import "iTermPreferences.h" #import "iTermPreferences.h"
#import "iTermSelection.h" #import "iTermSelection.h"
#import "iTermShellHistoryController.h" #import "iTermShellHistoryController.h"
#import "iTermTextExtractor.h"
#import "iTermTemporaryDoubleBufferedGridController.h" #import "iTermTemporaryDoubleBufferedGridController.h"
#import "NSArray+iTerm.h" #import "NSArray+iTerm.h"
#import "NSColor+iTerm.h" #import "NSColor+iTerm.h"
Loading
@@ -159,6 +160,10 @@ static const double kInterBellQuietPeriod = 0.1;
Loading
@@ -159,6 +160,10 @@ static const double kInterBellQuietPeriod = 0.1;
// Valid while at the command prompt only. GIves the range of the current prompt. Meaningful // Valid while at the command prompt only. GIves the range of the current prompt. Meaningful
// only if the end is not equal to the start. // only if the end is not equal to the start.
VT100GridAbsCoordRange _currentPromptRange; VT100GridAbsCoordRange _currentPromptRange;
// For REP
screen_char_t _lastCharacter;
BOOL _lastCharacterIsDoubleWidth;
} }
   
static NSString *const kInlineFileName = @"name"; // NSString static NSString *const kInlineFileName = @"name"; // NSString
Loading
@@ -1090,6 +1095,18 @@ static NSString *const kInilineFileInset = @"inset"; // NSValue of NSEdgeInsets
Loading
@@ -1090,6 +1095,18 @@ static NSString *const kInilineFileInset = @"inset"; // NSValue of NSEdgeInsets
length:(int)len length:(int)len
shouldFree:(BOOL)shouldFree { shouldFree:(BOOL)shouldFree {
if (len >= 1) { if (len >= 1) {
screen_char_t lastCharacter = buffer[len - 1];
if (lastCharacter.code == DWC_RIGHT && !lastCharacter.complexChar) {
// Last character is the right half of a double-width character. Use the penultimate character instead.
if (len >= 2) {
_lastCharacter = buffer[len - 2];
_lastCharacterIsDoubleWidth = YES;
}
} else {
// Record the last character.
_lastCharacter = buffer[len - 1];
_lastCharacterIsDoubleWidth = NO;
}
LineBuffer *lineBuffer = nil; LineBuffer *lineBuffer = nil;
if (currentGrid_ != altGrid_ || saveToScrollbackInAlternateScreen_) { if (currentGrid_ != altGrid_ || saveToScrollbackInAlternateScreen_) {
// Not in alt screen or it's ok to scroll into line buffer while in alt screen.k // Not in alt screen or it's ok to scroll into line buffer while in alt screen.k
Loading
@@ -4113,6 +4130,27 @@ static NSString *const kInilineFileInset = @"inset"; // NSValue of NSEdgeInsets
Loading
@@ -4113,6 +4130,27 @@ static NSString *const kInilineFileInset = @"inset"; // NSValue of NSEdgeInsets
payload:payload]; payload:payload];
} }
   
- (void)terminalRepeatPreviousCharacter:(int)times {
if (![iTermAdvancedSettingsModel supportREPCode]) {
return;
}
if (_lastCharacter.code) {
int length = 1;
screen_char_t chars[2];
chars[0] = _lastCharacter;
if (_lastCharacterIsDoubleWidth) {
length++;
chars[1] = _lastCharacter;
chars[1].code = DWC_RIGHT;
chars[1].complexChar = NO;
}
for (int i = 0; i < times; i++) {
[self appendScreenCharArrayAtCursor:chars length:length shouldFree:NO];
}
}
}
#pragma mark - Private #pragma mark - Private
   
- (VT100GridCoordRange)commandRange { - (VT100GridCoordRange)commandRange {
Loading
Loading
Loading
@@ -1633,6 +1633,10 @@ static const int kMaxScreenRows = 4096;
Loading
@@ -1633,6 +1633,10 @@ static const int kMaxScreenRows = 4096;
[self executeDecSetReset:token]; [self executeDecSetReset:token];
break; break;
   
case VT100CSI_REP:
[delegate_ terminalRepeatPreviousCharacter:token.csi->p[0]];
break;
// ANSI CSI // ANSI CSI
case ANSICSI_CBT: case ANSICSI_CBT:
[delegate_ terminalBackTab:token.csi->p[0]]; [delegate_ terminalBackTab:token.csi->p[0]];
Loading
Loading
Loading
@@ -404,4 +404,6 @@ typedef NS_ENUM(NSUInteger, VT100AttentionRequestType) {
Loading
@@ -404,4 +404,6 @@ typedef NS_ENUM(NSUInteger, VT100AttentionRequestType) {
- (void)terminalCustomEscapeSequenceWithParameters:(NSDictionary<NSString *, NSString *> *)parameters - (void)terminalCustomEscapeSequenceWithParameters:(NSDictionary<NSString *, NSString *> *)parameters
payload:(NSString *)payload; payload:(NSString *)payload;
   
- (void)terminalRepeatPreviousCharacter:(int)times;
@end @end