Terminal-style command history in the Cocoa debugger
This commit is contained in:
parent
44b414d45f
commit
6b2a302393
@ -112,7 +112,7 @@
|
|||||||
<textField focusRingType="none" verticalHuggingPriority="750" mirrorLayoutDirectionWhenInternationalizing="never" allowsCharacterPickerTouchBarItem="NO" id="l22-S8-uji">
|
<textField focusRingType="none" verticalHuggingPriority="750" mirrorLayoutDirectionWhenInternationalizing="never" allowsCharacterPickerTouchBarItem="NO" id="l22-S8-uji">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="921" height="24"/>
|
<rect key="frame" x="0.0" y="0.0" width="921" height="24"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" focusRingType="none" id="p3j-nS-44f">
|
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" state="on" focusRingType="none" id="p3j-nS-44f" customClass="GBTerminalTextFieldCell">
|
||||||
<font key="font" metaFont="fixedUser" size="11"/>
|
<font key="font" metaFont="fixedUser" size="11"/>
|
||||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
<color key="backgroundColor" red="0.16470588235294117" green="0.16470588235294117" blue="0.16470588235294117" alpha="1" colorSpace="calibratedRGB"/>
|
<color key="backgroundColor" red="0.16470588235294117" green="0.16470588235294117" blue="0.16470588235294117" alpha="1" colorSpace="calibratedRGB"/>
|
||||||
|
5
Cocoa/GBTerminalTextFieldCell.h
Normal file
5
Cocoa/GBTerminalTextFieldCell.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#import <Cocoa/Cocoa.h>
|
||||||
|
|
||||||
|
@interface GBTerminalTextFieldCell : NSTextFieldCell
|
||||||
|
|
||||||
|
@end
|
73
Cocoa/GBTerminalTextFieldCell.m
Normal file
73
Cocoa/GBTerminalTextFieldCell.m
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
#import <Carbon/Carbon.h>
|
||||||
|
#import "GBTerminalTextFieldCell.h"
|
||||||
|
|
||||||
|
@interface GBTerminalTextView : NSTextView
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation GBTerminalTextFieldCell
|
||||||
|
{
|
||||||
|
GBTerminalTextView *field_editor;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSTextView *)fieldEditorForView:(NSView *)controlView
|
||||||
|
{
|
||||||
|
if (field_editor) {
|
||||||
|
return field_editor;
|
||||||
|
}
|
||||||
|
field_editor = [[GBTerminalTextView alloc] init];
|
||||||
|
[field_editor setFieldEditor:YES];
|
||||||
|
return field_editor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation GBTerminalTextView
|
||||||
|
{
|
||||||
|
NSMutableOrderedSet *lines;
|
||||||
|
NSUInteger current_line;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)init
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
if (!self) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
lines = [[NSMutableOrderedSet alloc] init];
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)moveUp:(id)sender
|
||||||
|
{
|
||||||
|
if (current_line != 0) {
|
||||||
|
current_line--;
|
||||||
|
[self setString:[lines objectAtIndex:current_line]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)moveDown:(id)sender
|
||||||
|
{
|
||||||
|
if (current_line == [lines count]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
current_line++;
|
||||||
|
if (current_line == [lines count]) {
|
||||||
|
[self setString:@""];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[self setString:[lines objectAtIndex:current_line]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-(void) insertNewline:(id)sender
|
||||||
|
{
|
||||||
|
if ([self.string length]) {
|
||||||
|
NSString *string = [self.string copy];
|
||||||
|
[lines removeObject:string];
|
||||||
|
[lines addObject:string];
|
||||||
|
}
|
||||||
|
[super insertNewline:sender];
|
||||||
|
current_line = [lines count];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
Loading…
Reference in New Issue
Block a user