mirror of
https://github.com/qvacua/vimr.git
synced 2024-11-24 03:25:03 +03:00
Make NeoVimServer work
This commit is contained in:
parent
2623b351c6
commit
4f0a20d2ba
@ -42,7 +42,7 @@ typedef NS_ENUM(NSUInteger, NeoVimServerMsgId) {
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, NeoVimAgentMsgId) {
|
||||
NeoVimAgendMsgIdAgentReady = 0,
|
||||
NeoVimAgentMsgIdAgentReady = 0,
|
||||
NeoVimAgentMsgIdInput,
|
||||
NeoVimAgentMsgIdInputMarked,
|
||||
NeoVimAgentMsgIdDelete,
|
@ -5,7 +5,7 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "NeoVimUiBridgeProtocol.h"
|
||||
#import "NeoVimServerMsgIds.h"
|
||||
#import "NeoVimMsgIds.h"
|
||||
|
||||
|
||||
@interface NeoVimServer : NSObject
|
||||
@ -14,7 +14,6 @@
|
||||
localServerName:(NSString *)localServerName
|
||||
remoteServerName:(NSString *)remoteServerName;
|
||||
|
||||
- (NSData *)handleMessageWithId:(SInt32)msgid data:(NSData *)data;
|
||||
- (void)sendMessageWithId:(NeoVimServerMsgId)msgid;
|
||||
- (void)sendMessageWithId:(NeoVimServerMsgId)msgid data:(NSData *)data;
|
||||
- (void)notifyReadiness;
|
||||
|
@ -4,21 +4,35 @@
|
||||
*/
|
||||
|
||||
#import "NeoVimServer.h"
|
||||
#import "NeoVimServerMsgIds.h"
|
||||
#import "NeoVimMsgIds.h"
|
||||
#import "server_globals.h"
|
||||
|
||||
|
||||
static const double qTimeout = 10.0;
|
||||
|
||||
#define data_to_array(type) \
|
||||
static type *data_to_ ## type ## _array(NSData *data, NSUInteger count) { \
|
||||
NSUInteger length = count * sizeof( type ); \
|
||||
if (data.length != length) { \
|
||||
return NULL; \
|
||||
} \
|
||||
return ( type *) data.bytes; \
|
||||
}
|
||||
|
||||
data_to_array(int)
|
||||
data_to_array(NSInteger)
|
||||
|
||||
@interface NeoVimServer ()
|
||||
|
||||
- (void)handleMessageWithId:(SInt32)msgid data:(NSData *)data;
|
||||
|
||||
@end
|
||||
|
||||
static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFDataRef data, void *info) {
|
||||
@autoreleasepool {
|
||||
NeoVimServer *neoVimServer = (NeoVimServer *) info;
|
||||
NSData *responseData = [neoVimServer handleMessageWithId:msgid data:(NSData *) data];
|
||||
if (responseData == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return CFDataCreate(kCFAllocatorDefault, responseData.bytes, responseData.length);
|
||||
[neoVimServer handleMessageWithId:msgid data:(NSData *) data];
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,35 +86,6 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (NSData *)handleMessageWithId:(SInt32)msgid data:(NSData *)data {
|
||||
NSLog(@"msg received: %d -> %@", msgid, data);
|
||||
|
||||
switch (msgid) {
|
||||
|
||||
case NeoVimAgendMsgIdAgentReady:
|
||||
start_neovim();
|
||||
return nil;
|
||||
|
||||
case NeoVimAgentMsgIdInput:
|
||||
return nil;
|
||||
|
||||
case NeoVimAgentMsgIdInputMarked:
|
||||
return nil;
|
||||
|
||||
case NeoVimAgentMsgIdDelete:
|
||||
return nil;
|
||||
|
||||
case NeoVimAgentMsgIdResize:
|
||||
return nil;
|
||||
|
||||
case NeoVimAgentMsgIdRedraw:
|
||||
return nil;
|
||||
|
||||
default:
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)runLocalServer {
|
||||
@autoreleasepool {
|
||||
unsigned char shouldFree = false;
|
||||
@ -135,6 +120,11 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
}
|
||||
|
||||
- (void)sendMessageWithId:(NeoVimServerMsgId)msgid data:(NSData *)data {
|
||||
if (_remoteServerPort == NULL) {
|
||||
NSLog(@"WARNING: remote server is null");
|
||||
return;
|
||||
}
|
||||
|
||||
SInt32 responseCode = CFMessagePortSendRequest(
|
||||
_remoteServerPort, msgid, (CFDataRef) data, qTimeout, qTimeout, NULL, NULL
|
||||
);
|
||||
@ -150,4 +140,51 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
[self sendMessageWithId:NeoVimServerMsgIdServerReady data:nil];
|
||||
}
|
||||
|
||||
- (void)handleMessageWithId:(SInt32)msgid data:(NSData *)data {
|
||||
// NSLog(@"msg received: %d -> %@", msgid, data);
|
||||
|
||||
switch (msgid) {
|
||||
|
||||
case NeoVimAgentMsgIdAgentReady:
|
||||
start_neovim();
|
||||
return;
|
||||
|
||||
case NeoVimAgentMsgIdInput: {
|
||||
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
do_vim_input(string);
|
||||
[string release];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimAgentMsgIdInputMarked: {
|
||||
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
do_vim_input_marked_text(string);
|
||||
[string release];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimAgentMsgIdDelete: {
|
||||
NSInteger *values = data_to_NSInteger_array(data, 1);
|
||||
do_delete(values[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimAgentMsgIdResize: {
|
||||
int *values = data_to_int_array(data, 2);
|
||||
NSLog(@"!!! server rcv resize: %d:%d", values[0], values[1]);
|
||||
do_resize(values[0], values[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimAgentMsgIdRedraw:
|
||||
do_force_redraw();
|
||||
return;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -10,7 +10,6 @@
|
||||
|
||||
NeoVimServer *_neovim_server;
|
||||
|
||||
|
||||
int main(int argc, const char *argv[]) {
|
||||
@autoreleasepool {
|
||||
NSArray<NSString *> *arguments = [NSProcessInfo processInfo].arguments;
|
||||
@ -23,9 +22,7 @@ int main(int argc, const char *argv[]) {
|
||||
remoteServerName:remoteServerName];
|
||||
[_neovim_server notifyReadiness];
|
||||
|
||||
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
|
||||
[runLoop addPort:[NSPort new] forMode:NSRunLoopCommonModes];
|
||||
[runLoop run];
|
||||
CFRunLoopRun();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -11,3 +11,9 @@
|
||||
extern NeoVimServer *_neovim_server;
|
||||
|
||||
extern void start_neovim();
|
||||
extern void do_vim_input(NSString *input);
|
||||
extern void do_delete(NSInteger count);
|
||||
extern void do_force_redraw();
|
||||
extern void do_resize(int width, int height);
|
||||
extern void do_vim_input_marked_text(NSString *markedText);
|
||||
extern void do_insert_marked_text(NSString *markedText);
|
||||
|
@ -237,6 +237,7 @@ static void xpc_ui_set_scroll_region(UI *ui __unused, int top, int bot, int left
|
||||
static void xpc_ui_scroll(UI *ui __unused, int count) {
|
||||
queue(^{
|
||||
int value = count;
|
||||
NSLog(@"ui_scroll: %d", count);
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[data release];
|
||||
@ -321,7 +322,7 @@ static void xpc_ui_update_fg(UI *ui __unused, int fg) {
|
||||
if (fg == -1) {
|
||||
value = _default_foreground;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetForeground data:data];
|
||||
[data release];
|
||||
|
||||
return;
|
||||
@ -331,7 +332,7 @@ static void xpc_ui_update_fg(UI *ui __unused, int fg) {
|
||||
|
||||
value = fg;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetForeground data:data];
|
||||
[data release];
|
||||
});
|
||||
}
|
||||
@ -343,7 +344,7 @@ static void xpc_ui_update_bg(UI *ui __unused, int bg) {
|
||||
if (bg == -1) {
|
||||
value = _default_background;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetBackground data:data];
|
||||
[data release];
|
||||
|
||||
return;
|
||||
@ -352,7 +353,7 @@ static void xpc_ui_update_bg(UI *ui __unused, int bg) {
|
||||
_default_background = pun_type(unsigned int, bg);
|
||||
value = bg;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetBackground data:data];
|
||||
[data release];
|
||||
});
|
||||
}
|
||||
@ -364,7 +365,7 @@ static void xpc_ui_update_sp(UI *ui __unused, int sp) {
|
||||
if (sp == -1) {
|
||||
value = _default_special;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetSpecial data:data];
|
||||
[data release];
|
||||
|
||||
return;
|
||||
@ -373,7 +374,7 @@ static void xpc_ui_update_sp(UI *ui __unused, int sp) {
|
||||
_default_special = pun_type(unsigned int, sp);
|
||||
value = sp;
|
||||
NSData *data = [[NSData alloc] initWithBytes:&value length:(1 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdScroll data:data];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdSetSpecial data:data];
|
||||
[data release];
|
||||
});
|
||||
}
|
||||
@ -510,3 +511,103 @@ void start_neovim() {
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdNeoVimReady];
|
||||
}
|
||||
|
||||
void do_delete_marked_text() {
|
||||
NSUInteger length = [_marked_text lengthOfBytesUsingEncoding:NSUTF32StringEncoding] / 4;
|
||||
|
||||
[_marked_text release];
|
||||
_marked_text = nil;
|
||||
|
||||
for (int i = 0; i < length; i++) {
|
||||
loop_schedule(&main_loop, event_create(1, neovim_input, 1, [_backspace retain])); // release in neovim_input
|
||||
}
|
||||
}
|
||||
|
||||
void do_delete(NSInteger count) {
|
||||
queue(^{
|
||||
_marked_delta = 0;
|
||||
|
||||
// Very ugly: When we want to have the Hanja for 하, Cocoa first finalizes 하, then sets the Hanja as marked text.
|
||||
// The main app will call this method when this happens, thus compute how many cell we have to go backward to
|
||||
// correctly mark the will-be-soon-inserted Hanja... See also docs/notes-on-cocoa-text-input.md
|
||||
int emptyCounter = 0;
|
||||
for (int i = 0; i < count; i++) {
|
||||
_marked_delta -= 1;
|
||||
|
||||
// TODO: -1 because we assume that the cursor is one cell ahead, probably not always correct...
|
||||
schar_T character = ScreenLines[_put_row * screen_Rows + _put_column - i - emptyCounter - 1];
|
||||
if (character == 0x00 || character == ' ') {
|
||||
// FIXME: dunno yet, why we have to also match ' '...
|
||||
_marked_delta -= 1;
|
||||
emptyCounter += 1;
|
||||
}
|
||||
}
|
||||
|
||||
// log4Debug("put cursor: %d:%d, count: %li, delta: %d", _put_row, _put_column, count, _marked_delta);
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
loop_schedule(&main_loop, event_create(1, neovim_input, 1, [_backspace retain])); // release in neovim_input
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void do_force_redraw() {
|
||||
loop_schedule(&main_loop, event_create(1, force_redraw, 0));
|
||||
}
|
||||
|
||||
void do_resize(int width, int height) {
|
||||
queue(^{
|
||||
NSLog(@"!!! do_resize: %d:%d", width, height);
|
||||
set_ui_size(_xpc_ui_data->bridge, width, height);
|
||||
loop_schedule(&main_loop, event_create(1, refresh_ui, 0));
|
||||
});
|
||||
}
|
||||
|
||||
void do_vim_input(NSString *input) {
|
||||
queue(^{
|
||||
if (_marked_text == nil) {
|
||||
loop_schedule(&main_loop, event_create(1, neovim_input, 1, [input retain])); // release in neovim_input
|
||||
return;
|
||||
}
|
||||
|
||||
// Handle cases like ㅎ -> arrow key: The previously marked text is the same as the finalized text which should
|
||||
// inserted. Neovim's drawing code is optimized such that it does not call put in this case again, thus, we have
|
||||
// to manually unmark the cells in the main app.
|
||||
if ([_marked_text isEqualToString:input]) {
|
||||
// log4Debug("unmarking text: '%@'\t now at %d:%d", input, _put_row, _put_column);
|
||||
const char *str = [_marked_text cStringUsingEncoding:NSUTF8StringEncoding];
|
||||
size_t cellCount = mb_string2cells((const char_u *) str);
|
||||
for (int i = 1; i <= cellCount; i++) {
|
||||
// log4Debug("unmarking at %d:%d", _put_row, _put_column - i);
|
||||
int values[] = { _put_row, MAX(_put_column - i, 0) };
|
||||
NSData *data = [[NSData alloc] initWithBytes:values length:(2 * sizeof(int))];
|
||||
[_neovim_server sendMessageWithId:NeoVimServerMsgIdUnmark data:data];
|
||||
[data release];
|
||||
}
|
||||
}
|
||||
|
||||
do_delete_marked_text();
|
||||
loop_schedule(&main_loop, event_create(1, neovim_input, 1, [input retain])); // release in neovim_input
|
||||
});
|
||||
}
|
||||
|
||||
void do_vim_input_marked_text(NSString *markedText) {
|
||||
queue(^{
|
||||
if (_marked_text == nil) {
|
||||
_marked_row = _put_row;
|
||||
_marked_column = _put_column + _marked_delta;
|
||||
// log4Debug("marking position: %d:%d(%d + %d)", _put_row, _marked_column, _put_column, _marked_delta);
|
||||
_marked_delta = 0;
|
||||
} else {
|
||||
do_delete_marked_text();
|
||||
}
|
||||
|
||||
// log4Debug("inserting marked text '%@' at %d:%d", markedText, _put_row, _put_column);
|
||||
do_insert_marked_text(markedText);
|
||||
});
|
||||
}
|
||||
|
||||
void do_insert_marked_text(NSString *markedText) {
|
||||
_marked_text = [markedText retain]; // release when the final text is input in -vimInput
|
||||
|
||||
loop_schedule(&main_loop, event_create(1, neovim_input, 1, [_marked_text retain])); // release in neovim_input
|
||||
}
|
||||
|
@ -1 +0,0 @@
|
||||
../SwiftNeoVim/NeoVimUiBridgeProtocol.h
|
@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Tae Won Ha - http://taewon.de - @hataewon
|
||||
* See LICENSE
|
||||
*/
|
||||
|
||||
@import Foundation;
|
||||
|
||||
@protocol NeoVimXpc <NSObject>
|
||||
|
||||
/**
|
||||
* It seems that the XPC service does not get instantiated as long as no actual calls are made. However, we want neovim
|
||||
* run as soon as we establish the connection. To achieve this, the client can call -probe which does not call anything
|
||||
* on neovim.
|
||||
*/
|
||||
- (void)probe;
|
||||
|
||||
- (void)startServerWithUuid:(NSString * _Nonnull)uuid;
|
||||
|
||||
- (void)vimInput:(NSString * _Nonnull)input;
|
||||
- (void)vimInputMarkedText:(NSString *_Nonnull)markedText;
|
||||
- (void)deleteCharacters:(NSInteger)count;
|
||||
|
||||
- (void)resizeToWidth:(int)width height:(int)height;
|
||||
- (void)forceRedraw;
|
||||
|
||||
- (void)debug1;
|
||||
|
||||
@end
|
@ -1,26 +0,0 @@
|
||||
/**
|
||||
* Tae Won Ha - http://taewon.de - @hataewon
|
||||
* See LICENSE
|
||||
*/
|
||||
|
||||
@import Foundation;
|
||||
|
||||
#import "NeoVimXpc.h"
|
||||
|
||||
@protocol NeoVimUiBridgeProtocol;
|
||||
|
||||
@interface NeoVimXpcImpl : NSObject <NeoVimXpc>
|
||||
|
||||
- (instancetype _Nonnull)initWithNeoVimUi:(id<NeoVimUiBridgeProtocol> _Nonnull)ui;
|
||||
|
||||
- (void)probe;
|
||||
|
||||
- (void)vimInput:(NSString *_Nonnull)input;
|
||||
- (void)vimInputMarkedText:(NSString *_Nonnull)markedText;
|
||||
- (NSData *)handleMessageWithId:(SInt32)msgid data:(NSData *)data;
|
||||
- (void)deleteCharacters:(NSInteger)count;
|
||||
- (void)forceRedraw;
|
||||
|
||||
- (void)resizeToWidth:(int)width height:(int)height;
|
||||
|
||||
@end
|
@ -7,10 +7,10 @@ import Foundation
|
||||
|
||||
public class NeoVim {
|
||||
|
||||
private let agent: NeoVimAgent
|
||||
// private let agent: NeoVimAgent
|
||||
|
||||
public init() {
|
||||
let uuid = NSUUID().UUIDString
|
||||
self.agent = NeoVimAgent(uuid: uuid)
|
||||
// let uuid = NSUUID().UUIDString
|
||||
// self.agent = NeoVimAgent(uuid: uuid, uiBridge: nil)
|
||||
}
|
||||
}
|
||||
|
@ -6,11 +6,24 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
@protocol NeoVimUiBridgeProtocol;
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NeoVimAgent : NSObject
|
||||
|
||||
@property (nonatomic, weak) id <NeoVimUiBridgeProtocol> bridge;
|
||||
|
||||
- (instancetype)initWithUuid:(NSString *)uuid;
|
||||
- (void)cleanUp;
|
||||
- (void)establishLocalServer;
|
||||
|
||||
- (void)vimInput:(NSString *)string;
|
||||
- (void)vimInputMarkedText:(NSString *_Nonnull)markedText;
|
||||
- (void)deleteCharacters:(NSInteger)count;
|
||||
- (void)forceRedraw;
|
||||
- (void)resizeToWidth:(int)width height:(int)height;
|
||||
|
||||
@end
|
||||
|
||||
|
@ -4,14 +4,27 @@
|
||||
*/
|
||||
|
||||
#import "NeoVimAgent.h"
|
||||
#import "NeoVimServerMsgIds.h"
|
||||
#import "NeoVimMsgIds.h"
|
||||
#import "NeoVimUiBridgeProtocol.h"
|
||||
|
||||
|
||||
static const int qTimeout = 10;
|
||||
|
||||
#define data_to_array(type) \
|
||||
static type *data_to_ ## type ## _array(NSData *data, NSUInteger count) { \
|
||||
NSUInteger length = count * sizeof( type ); \
|
||||
if (data.length != length) { \
|
||||
return NULL; \
|
||||
} \
|
||||
return ( type *) data.bytes; \
|
||||
}
|
||||
|
||||
data_to_array(int)
|
||||
data_to_array(CellAttributes)
|
||||
|
||||
@interface NeoVimAgent ()
|
||||
|
||||
- (NSData *)handleMessageWithId:(SInt32)msgid data:(NSData *)data;
|
||||
- (void)handleMessageWithId:(SInt32)msgid data:(NSData *)data;
|
||||
|
||||
@end
|
||||
|
||||
@ -19,12 +32,8 @@ static const int qTimeout = 10;
|
||||
static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFDataRef data, void *info) {
|
||||
@autoreleasepool {
|
||||
NeoVimAgent *agent = (__bridge NeoVimAgent *) info;
|
||||
NSData *responseData = [agent handleMessageWithId:msgid data:(__bridge NSData *) (data)];
|
||||
if (responseData == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return CFDataCreate(kCFAllocatorDefault, responseData.bytes, responseData.length);
|
||||
[agent handleMessageWithId:msgid data:(__bridge NSData *) (data)];
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,6 +55,25 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
}
|
||||
|
||||
_uuid = uuid;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
// -dealloc would have been ideal for this, but if you quit the app, -dealloc does not necessarily get called...
|
||||
- (void)cleanUp {
|
||||
CFMessagePortInvalidate(_remoteServerPort);
|
||||
CFRelease(_remoteServerPort);
|
||||
|
||||
CFMessagePortInvalidate(_localServerPort);
|
||||
CFRelease(_localServerPort);
|
||||
|
||||
[_localServerThread cancel];
|
||||
[_neoVimServerTask interrupt];
|
||||
[_neoVimServerTask terminate];
|
||||
NSLog(@"terminated...");
|
||||
}
|
||||
|
||||
- (void)establishLocalServer {
|
||||
_localServerThread = [[NSThread alloc] initWithTarget:self selector:@selector(runLocalServer) object:nil];
|
||||
[_localServerThread start];
|
||||
|
||||
@ -55,23 +83,32 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
|
||||
_neoVimServerTask.arguments = @[ _uuid, [self localServerName], [self remoteServerName] ];
|
||||
[_neoVimServerTask launch];
|
||||
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (NSString *)neoVimServerExecutablePath {
|
||||
return [[[NSBundle bundleForClass:[self class]] builtInPlugInsPath] stringByAppendingPathComponent:@"NeoVimServer"];
|
||||
- (void)vimInput:(NSString *)string {
|
||||
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
|
||||
[self sendMessageWithId:NeoVimAgentMsgIdInput data:data];
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
CFMessagePortInvalidate(_localServerPort);
|
||||
CFRelease(_localServerPort);
|
||||
- (void)vimInputMarkedText:(NSString *_Nonnull)markedText {
|
||||
NSData *data = [markedText dataUsingEncoding:NSUTF8StringEncoding];
|
||||
[self sendMessageWithId:NeoVimAgentMsgIdInputMarked data:data];
|
||||
}
|
||||
|
||||
[_localServerThread cancel];
|
||||
- (void)deleteCharacters:(NSInteger)count {
|
||||
NSData *data = [[NSData alloc] initWithBytes:&count length:sizeof(NSInteger)];
|
||||
[self sendMessageWithId:NeoVimAgentMsgIdDelete data:data];
|
||||
}
|
||||
|
||||
[_neoVimServerTask terminate];
|
||||
NSLog(@"terminated...");
|
||||
- (void)forceRedraw {
|
||||
[self sendMessageWithId:NeoVimAgentMsgIdRedraw data:nil];
|
||||
}
|
||||
|
||||
- (void)resizeToWidth:(int)width height:(int)height {
|
||||
NSLog(@"!!! agent resize: %d:%d", width, height);
|
||||
int values[] = { width, height };
|
||||
NSData *data = [[NSData alloc] initWithBytes:values length:(2 * sizeof(int))];
|
||||
[self sendMessageWithId:NeoVimAgentMsgIdResize data:data];
|
||||
}
|
||||
|
||||
- (void)runLocalServer {
|
||||
@ -103,108 +140,34 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
}
|
||||
}
|
||||
|
||||
- (NSData *)handleMessageWithId:(SInt32)msgid data:(NSData *)data {
|
||||
NSLog(@"msg received: %d -> %@", msgid, data);
|
||||
|
||||
switch (msgid) {
|
||||
|
||||
case NeoVimServerMsgIdServerReady:
|
||||
return [self setupNeoVimServer];
|
||||
|
||||
case NeoVimServerMsgIdNeoVimReady:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdResize:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdClear:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdEolClear:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetPosition:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetMenu:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdBusyStart:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdBusyStop:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdMouseOn:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdMouseOff:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdModeChange:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetScrollRegion:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdScroll:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetHighlightAttributes:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdPut:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdPutMarked:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdUnmark:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdBell:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdFlush:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetForeground:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetBackground:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetSpecial:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetTitle:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdSetIcon:
|
||||
return nil;
|
||||
|
||||
case NeoVimServerMsgIdStop:
|
||||
return nil;
|
||||
|
||||
default:
|
||||
return nil;
|
||||
}
|
||||
}
|
||||
|
||||
- (NSData *)setupNeoVimServer {
|
||||
- (void)establishNeoVimConnection {
|
||||
_remoteServerPort = CFMessagePortCreateRemote(
|
||||
kCFAllocatorDefault,
|
||||
(__bridge CFStringRef) [self remoteServerName]
|
||||
);
|
||||
|
||||
SInt32 responseCode = CFMessagePortSendRequest(
|
||||
_remoteServerPort, NeoVimAgendMsgIdAgentReady, nil, qTimeout, qTimeout, NULL, NULL
|
||||
);
|
||||
if (responseCode == kCFMessagePortSuccess) {
|
||||
NSLog(@"!!!!!!!! SUCCESS!!!!");
|
||||
[self sendMessageWithId:NeoVimAgentMsgIdAgentReady data:nil];
|
||||
}
|
||||
|
||||
- (void)sendMessageWithId:(NeoVimAgentMsgId)msgid data:(NSData *)data {
|
||||
if (_remoteServerPort == NULL) {
|
||||
NSLog(@"WARNING: remote server is null");
|
||||
return;
|
||||
}
|
||||
|
||||
return nil;
|
||||
SInt32 responseCode = CFMessagePortSendRequest(
|
||||
_remoteServerPort, msgid, (__bridge CFDataRef) data, qTimeout, qTimeout, NULL, NULL
|
||||
);
|
||||
|
||||
if (responseCode == kCFMessagePortSuccess) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSLog(@"WARNING: (%d:%@) could not be sent!", (int) msgid, data);
|
||||
}
|
||||
|
||||
- (NSString *)neoVimServerExecutablePath {
|
||||
return [[[NSBundle bundleForClass:[self class]] builtInPlugInsPath] stringByAppendingPathComponent:@"NeoVimServer"];
|
||||
}
|
||||
|
||||
- (NSString *)localServerName {
|
||||
@ -215,4 +178,155 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
||||
return [NSString stringWithFormat:@"com.qvacua.nvox.neovim-server.%@", _uuid];
|
||||
}
|
||||
|
||||
- (void)handleMessageWithId:(SInt32)msgid data:(NSData *)data {
|
||||
// NSLog(@"msg received: %d -> %@", msgid, data);
|
||||
|
||||
switch (msgid) {
|
||||
|
||||
case NeoVimServerMsgIdServerReady:
|
||||
[self establishNeoVimConnection];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdNeoVimReady:
|
||||
[_bridge neoVimUiIsReady];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdResize: {
|
||||
int *values = data_to_int_array(data, 2);
|
||||
if (values == nil) {
|
||||
return;
|
||||
}
|
||||
[_bridge resizeToWidth:values[0] height:values[1]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdClear:
|
||||
[_bridge clear];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdEolClear:
|
||||
[_bridge eolClear];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdSetPosition: {
|
||||
int *values = data_to_int_array(data, 4);
|
||||
[_bridge gotoPosition:(Position) { .row = values[0], .column = values[1] }
|
||||
screenCursor:(Position) { .row = values[2], .column = values[3] }];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdSetMenu:
|
||||
[_bridge updateMenu];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdBusyStart:
|
||||
[_bridge busyStart];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdBusyStop:
|
||||
[_bridge busyStop];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdMouseOn:
|
||||
[_bridge mouseOn];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdMouseOff:
|
||||
[_bridge mouseOff];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdModeChange: {
|
||||
int *values = data_to_int_array(data, 1);
|
||||
[_bridge modeChange:values[0]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdSetScrollRegion: {
|
||||
int *values = data_to_int_array(data, 4);
|
||||
[_bridge setScrollRegionToTop:values[0] bottom:values[1] left:values[2] right:values[3]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdScroll: {
|
||||
int *values = data_to_int_array(data, 1);
|
||||
NSLog(@"msg rcv scroll: %d", values[0]);
|
||||
[_bridge scroll:values[0]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdSetHighlightAttributes: {
|
||||
CellAttributes *values = data_to_CellAttributes_array(data, 1);
|
||||
[_bridge highlightSet:values[0]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdPut: {
|
||||
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
[_bridge put:string];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdPutMarked: {
|
||||
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
[_bridge putMarkedText:string];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdUnmark: {
|
||||
int *values = data_to_int_array(data, 2);
|
||||
[_bridge unmarkRow:values[0] column:values[1]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdBell:
|
||||
[_bridge bell];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdVisualBell:
|
||||
[_bridge visualBell];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdFlush:
|
||||
[_bridge flush];
|
||||
return;
|
||||
|
||||
case NeoVimServerMsgIdSetForeground: {
|
||||
int *values = data_to_int_array(data, 1);
|
||||
[_bridge updateForeground:values[0]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdSetBackground: {
|
||||
int *values = data_to_int_array(data, 1);
|
||||
[_bridge updateBackground:values[0]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdSetSpecial: {
|
||||
int *values = data_to_int_array(data, 1);
|
||||
[_bridge updateSpecial:values[0]];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdSetTitle: {
|
||||
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
[_bridge setTitle:string];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdSetIcon: {
|
||||
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
[_bridge setIcon:string];
|
||||
return;
|
||||
}
|
||||
|
||||
case NeoVimServerMsgIdStop:
|
||||
[_bridge stop];
|
||||
return;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -4,6 +4,8 @@
|
||||
*/
|
||||
|
||||
@import Foundation;
|
||||
#import "NeoVimMsgIds.h"
|
||||
|
||||
|
||||
typedef NS_ENUM(NSUInteger, FontTrait) {
|
||||
FontTraitNone = 0,
|
||||
@ -30,6 +32,8 @@ typedef struct {
|
||||
#define qDefaultBackground 0xFFFFFFFF
|
||||
#define qDefaultSpecial 0xFFFF0000
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol NeoVimUiBridgeProtocol <NSObject>
|
||||
|
||||
- (void)neoVimUiIsReady;
|
||||
@ -56,7 +60,7 @@ typedef struct {
|
||||
* 2. NeoVim wants to put the cursor at (row, column).
|
||||
* In case of 1. NeoVim will put in subsequent call. In case of 2. NeoVim seems to flush twice in a row.
|
||||
*/
|
||||
- (void)gotoPosition:(Position)position screenCursor:(Position)screenCursor bufferCursor:(Position)bufferCursor;
|
||||
- (void)gotoPosition:(Position)position screenCursor:(Position)screenCursor;
|
||||
|
||||
- (void)updateMenu;
|
||||
- (void)busyStart;
|
||||
@ -76,9 +80,9 @@ typedef struct {
|
||||
/**
|
||||
* Draw string at the current cursor which was set by a previous cursorGotoRow:column callback.
|
||||
*/
|
||||
- (void)put:(NSString *_Nonnull)string;
|
||||
- (void)put:(NSString *)string;
|
||||
|
||||
- (void)putMarkedText:(NSString *_Nonnull)markedText;
|
||||
- (void)putMarkedText:(NSString *)markedText;
|
||||
- (void)unmarkRow:(int)row column:(int)column;
|
||||
|
||||
- (void)bell;
|
||||
@ -100,8 +104,8 @@ typedef struct {
|
||||
*/
|
||||
- (void)updateSpecial:(int)sp;
|
||||
- (void)suspend;
|
||||
- (void)setTitle:(NSString *_Nonnull)title;
|
||||
- (void)setIcon:(NSString *_Nonnull)icon;
|
||||
- (void)setTitle:(NSString *)title;
|
||||
- (void)setIcon:(NSString *)icon;
|
||||
|
||||
/**
|
||||
* NeoVim has been stopped.
|
||||
@ -109,3 +113,5 @@ typedef struct {
|
||||
- (void)stop;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@ -72,8 +72,8 @@ public class NeoVimView: NSView {
|
||||
var yOffset = CGFloat(0)
|
||||
|
||||
private let drawer: TextDrawer
|
||||
|
||||
let xpc: NeoVimXpc
|
||||
|
||||
let agent = NeoVimAgent(uuid: NSUUID().UUIDString)
|
||||
|
||||
var markedText: String?
|
||||
|
||||
@ -91,9 +91,7 @@ public class NeoVimView: NSView {
|
||||
|
||||
let grid = Grid()
|
||||
|
||||
init(frame rect: NSRect = CGRect.zero, xpc: NeoVimXpc) {
|
||||
self.xpc = xpc
|
||||
|
||||
override init(frame rect: NSRect = CGRect.zero) {
|
||||
self.font = NSFont(name: "Menlo", size: 16)!
|
||||
self.drawer = TextDrawer(font: font)
|
||||
|
||||
@ -103,6 +101,15 @@ public class NeoVimView: NSView {
|
||||
self.cellSize = self.drawer.cellSize
|
||||
self.descent = self.drawer.descent
|
||||
self.leading = self.drawer.leading
|
||||
|
||||
// We cannot set bridge in init since self is not available before super.init()...
|
||||
self.agent.bridge = self
|
||||
self.agent.establishLocalServer()
|
||||
}
|
||||
|
||||
// deinit would have been ideal for this, but if you quit the app, deinit does not necessarily get called...
|
||||
public func cleanUp() {
|
||||
self.agent.cleanUp()
|
||||
}
|
||||
|
||||
public func debugInfo() {
|
||||
@ -150,7 +157,7 @@ public class NeoVimView: NSView {
|
||||
self.xOffset = floor((size.width - self.cellSize.width * CGFloat(discreteSize.width)) / 2)
|
||||
self.yOffset = floor((size.height - self.cellSize.height * CGFloat(discreteSize.height)) / 2)
|
||||
|
||||
self.xpc.resizeToWidth(Int32(discreteSize.width), height: Int32(discreteSize.height))
|
||||
self.agent.resizeToWidth(Int32(discreteSize.width), height: Int32(discreteSize.height))
|
||||
}
|
||||
|
||||
override public func drawRect(dirtyUnionRect: NSRect) {
|
||||
|
@ -25,9 +25,9 @@ extension NeoVimView: NSTextInputClient {
|
||||
|
||||
let vimModifiers = self.vimModifierFlags(modifierFlags)
|
||||
if vimModifiers.characters.count > 0 {
|
||||
self.xpc.vimInput(self.vimNamedKeys(vimModifiers + charsIgnoringModifiers))
|
||||
self.agent.vimInput(self.vimNamedKeys(vimModifiers + charsIgnoringModifiers))
|
||||
} else {
|
||||
self.xpc.vimInput(self.vimPlainString(chars))
|
||||
self.agent.vimInput(self.vimPlainString(chars))
|
||||
}
|
||||
|
||||
self.keyDownDone = true
|
||||
@ -38,9 +38,9 @@ extension NeoVimView: NSTextInputClient {
|
||||
|
||||
switch aString {
|
||||
case let string as String:
|
||||
self.xpc.vimInput(self.vimPlainString(string))
|
||||
self.agent.vimInput(self.vimPlainString(string))
|
||||
case let attributedString as NSAttributedString:
|
||||
self.xpc.vimInput(self.vimPlainString(attributedString.string))
|
||||
self.agent.vimInput(self.vimPlainString(attributedString.string))
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -78,7 +78,7 @@ extension NeoVimView: NSTextInputClient {
|
||||
|
||||
// eg 하 -> hanja popup, cf comment for self.lastMarkedText
|
||||
if replacementRange.length > 0 {
|
||||
self.xpc.deleteCharacters(replacementRange.length)
|
||||
self.agent.deleteCharacters(replacementRange.length)
|
||||
}
|
||||
|
||||
switch aString {
|
||||
@ -92,7 +92,7 @@ extension NeoVimView: NSTextInputClient {
|
||||
|
||||
// NSLog("\(#function): \(self.markedText), \(selectedRange), \(replacementRange)")
|
||||
|
||||
self.xpc.vimInputMarkedText(self.markedText!)
|
||||
self.agent.vimInputMarkedText(self.markedText!)
|
||||
self.keyDownDone = true
|
||||
}
|
||||
|
||||
|
@ -9,50 +9,50 @@ import Cocoa
|
||||
extension NeoVimView {
|
||||
|
||||
public override func moveForward(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("C-f"))
|
||||
self.agent.vimInput(self.vimNamedKeys("C-f"))
|
||||
}
|
||||
|
||||
public override func moveBackward(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("C-b"))
|
||||
self.agent.vimInput(self.vimNamedKeys("C-b"))
|
||||
}
|
||||
|
||||
public override func moveRight(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("Right"))
|
||||
self.agent.vimInput(self.vimNamedKeys("Right"))
|
||||
}
|
||||
|
||||
public override func moveLeft(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("Left"))
|
||||
self.agent.vimInput(self.vimNamedKeys("Left"))
|
||||
}
|
||||
|
||||
public override func moveUp(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("Up"))
|
||||
self.agent.vimInput(self.vimNamedKeys("Up"))
|
||||
}
|
||||
|
||||
public override func moveDown(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("Down"))
|
||||
self.agent.vimInput(self.vimNamedKeys("Down"))
|
||||
}
|
||||
|
||||
public override func deleteForward(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("DEL"))
|
||||
self.agent.vimInput(self.vimNamedKeys("DEL"))
|
||||
}
|
||||
|
||||
public override func deleteBackward(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("BS"))
|
||||
self.agent.vimInput(self.vimNamedKeys("BS"))
|
||||
}
|
||||
|
||||
public override func scrollPageUp(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("PageUp"))
|
||||
self.agent.vimInput(self.vimNamedKeys("PageUp"))
|
||||
}
|
||||
|
||||
public override func scrollPageDown(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("PageDown"))
|
||||
self.agent.vimInput(self.vimNamedKeys("PageDown"))
|
||||
}
|
||||
|
||||
public override func scrollToBeginningOfDocument(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("Home"))
|
||||
self.agent.vimInput(self.vimNamedKeys("Home"))
|
||||
}
|
||||
|
||||
public override func scrollToEndOfDocument(sender: AnyObject?) {
|
||||
self.xpc.vimInput(self.vimNamedKeys("End"))
|
||||
self.agent.vimInput(self.vimNamedKeys("End"))
|
||||
}
|
||||
}
|
@ -45,10 +45,10 @@ extension NeoVimView: NeoVimUiBridgeProtocol {
|
||||
}
|
||||
}
|
||||
|
||||
public func gotoPosition(position: Position, screenCursor: Position, bufferCursor: Position) {
|
||||
public func gotoPosition(position: Position, screenCursor: Position) {
|
||||
//if self.inLiveResize { return }
|
||||
DispatchUtils.gui {
|
||||
// NSLog("\(#function): \(position), \(screenCursor), \(bufferCursor)")
|
||||
// NSLog("\(#function): \(position), \(screenCursor)")
|
||||
|
||||
self.setNeedsDisplay(cellPosition: self.grid.screenCursor) // redraw where the cursor was till now
|
||||
self.setNeedsDisplay(screenCursor: screenCursor) // draw the new cursor
|
||||
@ -88,6 +88,7 @@ extension NeoVimView: NeoVimUiBridgeProtocol {
|
||||
public func scroll(count: Int32) {
|
||||
//if self.inLiveResize { return }
|
||||
DispatchUtils.gui {
|
||||
NSLog("bridge scroll: \(count)")
|
||||
self.grid.scroll(Int(count))
|
||||
self.setNeedsDisplay(region: self.grid.region)
|
||||
}
|
||||
|
@ -13,6 +13,6 @@ FOUNDATION_EXPORT const unsigned char SwiftNeoVimVersionString[];
|
||||
|
||||
#import <SwiftNeoVim/NeoVimUiBridgeProtocol.h>
|
||||
// TODO: this header should not be public, but we cannot use a bridging header in a framework.
|
||||
#import <SwiftNeoVim/NeoVimXpc.h>
|
||||
#import <SwiftNeoVim/TextDrawer.h>
|
||||
#import <SwiftNeoVim/NeoVimAgent.h>
|
||||
#import <SwiftNeoVim/NeoVimMsgIds.h>
|
||||
|
@ -18,11 +18,8 @@
|
||||
4B2A2BFA1D0351810074CE9A /* SwiftNeoVim.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2A2BF91D0351810074CE9A /* SwiftNeoVim.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4B2A2BFE1D0351810074CE9A /* SwiftNeoVim.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B2A2BF71D0351810074CE9A /* SwiftNeoVim.framework */; };
|
||||
4B2A2BFF1D0351810074CE9A /* SwiftNeoVim.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B2A2BF71D0351810074CE9A /* SwiftNeoVim.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4B2A2C041D03528D0074CE9A /* NeoVimXpc.xpc in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BEBA5271CFF3DFF00673FDF /* NeoVimXpc.xpc */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
4B2A2C091D0352CB0074CE9A /* NeoVimUiBridgeProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2A2C061D0352CB0074CE9A /* NeoVimUiBridgeProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4B2A2C0F1D0353E30074CE9A /* NeoVim.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A2C0E1D0353E30074CE9A /* NeoVim.swift */; };
|
||||
4B2A2C251D0359650074CE9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A2C201D0359650074CE9A /* main.m */; };
|
||||
4B2A2C261D0359650074CE9A /* NeoVimXpcImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A2C231D0359650074CE9A /* NeoVimXpcImpl.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
4B401B141D0454DC00D99EDC /* PureLayout.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B401B131D0454DC00D99EDC /* PureLayout.framework */; };
|
||||
4B401B161D0454E900D99EDC /* PureLayout.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4B401B131D0454DC00D99EDC /* PureLayout.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4B401B1A1D046E0600D99EDC /* NeoVimViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B401B191D046E0600D99EDC /* NeoVimViewDelegate.swift */; };
|
||||
@ -37,7 +34,6 @@
|
||||
4B9A15241D2993DA009F9F67 /* Nimble.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B56F29B1D29926600C1F92E /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4B9A15251D2993DA009F9F67 /* Quick.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B56F29C1D29926600C1F92E /* Quick.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4B9A15261D2993DF009F9F67 /* SwiftNeoVim.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B2A2BF71D0351810074CE9A /* SwiftNeoVim.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
4BB202DC1D0359B0001D130D /* NeoVimXpc.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B2A2C211D0359650074CE9A /* NeoVimXpc.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4BCADE081D11ED12004DAD0F /* CocoaExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BCADE071D11ED12004DAD0F /* CocoaExtensions.swift */; };
|
||||
4BDCFACB1D31449700F62670 /* NeoVimServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BDCFACA1D31449700F62670 /* NeoVimServer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
4BDCFACD1D3145AC00F62670 /* libnvim.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFACC1D3145AC00F62670 /* libnvim.a */; };
|
||||
@ -48,16 +44,7 @@
|
||||
4BDCFAD91D3145E500F62670 /* libmsgpack.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD21D3145E500F62670 /* libmsgpack.a */; };
|
||||
4BDCFADA1D3145E500F62670 /* libuv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD31D3145E500F62670 /* libuv.a */; };
|
||||
4BDCFADB1D3145E500F62670 /* libvterm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD41D3145E500F62670 /* libvterm.a */; };
|
||||
4BDCFAE11D31475000F62670 /* libjemalloc_pic.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFACE1D3145E500F62670 /* libjemalloc_pic.a */; };
|
||||
4BDCFAE21D31475100F62670 /* libjemalloc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFACF1D3145E500F62670 /* libjemalloc.a */; };
|
||||
4BDCFAE31D31475300F62670 /* libluajit-5.1.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD01D3145E500F62670 /* libluajit-5.1.a */; };
|
||||
4BDCFAE41D31475500F62670 /* libluv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD11D3145E500F62670 /* libluv.a */; };
|
||||
4BDCFAE51D31475700F62670 /* libmsgpack.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD21D3145E500F62670 /* libmsgpack.a */; };
|
||||
4BDCFAE61D31475900F62670 /* libuv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD31D3145E500F62670 /* libuv.a */; };
|
||||
4BDCFAE71D31475B00F62670 /* libvterm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFAD41D3145E500F62670 /* libvterm.a */; };
|
||||
4BDCFAE81D31475D00F62670 /* libnvim.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDCFACC1D3145AC00F62670 /* libnvim.a */; };
|
||||
4BDCFAEA1D31486E00F62670 /* NeoVimServerMsgIds.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDCFAE91D3147A300F62670 /* NeoVimServerMsgIds.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
4BDCFAEB1D3148A100F62670 /* NeoVimServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDCFAC91D31449700F62670 /* NeoVimServer.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
4BDCFAEA1D31486E00F62670 /* NeoVimMsgIds.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
4BDCFAED1D315CB800F62670 /* runtime in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBA6621D00157A00673FDF /* runtime */; };
|
||||
4BDCFAEF1D315CF200F62670 /* NeoVimServer in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B854A1A1D31447C00E08DE1 /* NeoVimServer */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||
4BDF641C1D0887C100D47E1D /* TextDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDF641A1D0887C100D47E1D /* TextDrawer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@ -68,7 +55,6 @@
|
||||
4BEBA50B1CFF374B00673FDF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBA50A1CFF374B00673FDF /* Assets.xcassets */; };
|
||||
4BEBA50E1CFF374B00673FDF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBA50C1CFF374B00673FDF /* MainMenu.xib */; };
|
||||
4BEBA5191CFF374B00673FDF /* nvoxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEBA5181CFF374B00673FDF /* nvoxTests.swift */; };
|
||||
4BEBA6631D00157A00673FDF /* runtime in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBA6621D00157A00673FDF /* runtime */; };
|
||||
4BEE79121D16D0AC0012EDAA /* NeoVimViewUiBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEE79111D16D0AC0012EDAA /* NeoVimViewUiBridge.swift */; };
|
||||
4BEE79151D16D2100012EDAA /* DispatchUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEE79141D16D2100012EDAA /* DispatchUtils.swift */; };
|
||||
4BEE79171D16D3800012EDAA /* CellAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEE79161D16D3800012EDAA /* CellAttributes.swift */; };
|
||||
@ -91,13 +77,6 @@
|
||||
remoteGlobalIDString = 4B2A2BF61D0351810074CE9A;
|
||||
remoteInfo = SwiftNeoVim;
|
||||
};
|
||||
4B854A041D3137B000E08DE1 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4BEBA4FD1CFF374B00673FDF /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 4BEBA5261CFF3DFF00673FDF;
|
||||
remoteInfo = NeoVimXpc;
|
||||
};
|
||||
4BDCFADD1D31465100F62670 /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 4BEBA4FD1CFF374B00673FDF /* Project object */;
|
||||
@ -135,7 +114,6 @@
|
||||
dstPath = "$(CONTENTS_FOLDER_PATH)/XPCServices";
|
||||
dstSubfolderSpec = 16;
|
||||
files = (
|
||||
4B2A2C041D03528D0074CE9A /* NeoVimXpc.xpc in CopyFiles */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -190,8 +168,6 @@
|
||||
4B2A2C0E1D0353E30074CE9A /* NeoVim.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeoVim.swift; sourceTree = "<group>"; };
|
||||
4B2A2C1F1D0359650074CE9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4B2A2C201D0359650074CE9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
4B2A2C211D0359650074CE9A /* NeoVimXpc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NeoVimXpc.h; sourceTree = "<group>"; };
|
||||
4B2A2C221D0359650074CE9A /* NeoVimXpcImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NeoVimXpcImpl.h; sourceTree = "<group>"; };
|
||||
4B2A2C231D0359650074CE9A /* NeoVimXpcImpl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NeoVimXpcImpl.m; sourceTree = "<group>"; };
|
||||
4B401B131D0454DC00D99EDC /* PureLayout.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PureLayout.framework; path = Carthage/Build/Mac/PureLayout.framework; sourceTree = SOURCE_ROOT; };
|
||||
4B401B191D046E0600D99EDC /* NeoVimViewDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeoVimViewDelegate.swift; sourceTree = "<group>"; };
|
||||
@ -206,6 +182,7 @@
|
||||
4B854A1A1D31447C00E08DE1 /* NeoVimServer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = NeoVimServer; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4B854A1C1D31447C00E08DE1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
4BCADE071D11ED12004DAD0F /* CocoaExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CocoaExtensions.swift; sourceTree = "<group>"; };
|
||||
4BCF638F1D323CFD00F15CE4 /* nvim */ = {isa = PBXFileReference; lastKnownFileType = folder; name = nvim; path = neovim/src/nvim; sourceTree = SOURCE_ROOT; };
|
||||
4BDCFAC91D31449700F62670 /* NeoVimServer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NeoVimServer.h; sourceTree = "<group>"; };
|
||||
4BDCFACA1D31449700F62670 /* NeoVimServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NeoVimServer.m; sourceTree = "<group>"; };
|
||||
4BDCFACC1D3145AC00F62670 /* libnvim.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libnvim.a; path = neovim/build/lib/libnvim.a; sourceTree = SOURCE_ROOT; };
|
||||
@ -216,8 +193,7 @@
|
||||
4BDCFAD21D3145E500F62670 /* libmsgpack.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsgpack.a; path = neovim/.deps/usr/lib/libmsgpack.a; sourceTree = SOURCE_ROOT; };
|
||||
4BDCFAD31D3145E500F62670 /* libuv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libuv.a; path = neovim/.deps/usr/lib/libuv.a; sourceTree = SOURCE_ROOT; };
|
||||
4BDCFAD41D3145E500F62670 /* libvterm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvterm.a; path = neovim/.deps/usr/lib/libvterm.a; sourceTree = SOURCE_ROOT; };
|
||||
4BDCFAE01D31471500F62670 /* nvim */ = {isa = PBXFileReference; lastKnownFileType = folder; name = nvim; path = neovim/src/nvim; sourceTree = SOURCE_ROOT; };
|
||||
4BDCFAE91D3147A300F62670 /* NeoVimServerMsgIds.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NeoVimServerMsgIds.h; sourceTree = "<group>"; };
|
||||
4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NeoVimMsgIds.h; sourceTree = "<group>"; };
|
||||
4BDF641A1D0887C100D47E1D /* TextDrawer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextDrawer.h; sourceTree = "<group>"; };
|
||||
4BDF641B1D0887C100D47E1D /* TextDrawer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextDrawer.m; sourceTree = "<group>"; };
|
||||
4BDF64221D08CAB000D47E1D /* MMCoreTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MMCoreTextView.h; sourceTree = "<group>"; };
|
||||
@ -230,7 +206,6 @@
|
||||
4BEBA5141CFF374B00673FDF /* nvoxTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = nvoxTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4BEBA5181CFF374B00673FDF /* nvoxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = nvoxTests.swift; sourceTree = "<group>"; };
|
||||
4BEBA51A1CFF374B00673FDF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
4BEBA5271CFF3DFF00673FDF /* NeoVimXpc.xpc */ = {isa = PBXFileReference; explicitFileType = "wrapper.xpc-service"; includeInIndex = 0; path = NeoVimXpc.xpc; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4BEBA6621D00157A00673FDF /* runtime */ = {isa = PBXFileReference; lastKnownFileType = folder; name = runtime; path = neovim/runtime; sourceTree = SOURCE_ROOT; };
|
||||
4BEE79111D16D0AC0012EDAA /* NeoVimViewUiBridge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeoVimViewUiBridge.swift; sourceTree = "<group>"; };
|
||||
4BEE79141D16D2100012EDAA /* DispatchUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DispatchUtils.swift; sourceTree = "<group>"; };
|
||||
@ -290,21 +265,6 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4BEBA5241CFF3DFF00673FDF /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4BDCFAE31D31475300F62670 /* libluajit-5.1.a in Frameworks */,
|
||||
4BDCFAE51D31475700F62670 /* libmsgpack.a in Frameworks */,
|
||||
4BDCFAE71D31475B00F62670 /* libvterm.a in Frameworks */,
|
||||
4BDCFAE61D31475900F62670 /* libuv.a in Frameworks */,
|
||||
4BDCFAE11D31475000F62670 /* libjemalloc_pic.a in Frameworks */,
|
||||
4BDCFAE81D31475D00F62670 /* libnvim.a in Frameworks */,
|
||||
4BDCFAE41D31475500F62670 /* libluv.a in Frameworks */,
|
||||
4BDCFAE21D31475100F62670 /* libjemalloc.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
@ -364,9 +324,9 @@
|
||||
4B854A1B1D31447C00E08DE1 /* NeoVimServer */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4BCF638F1D323CFD00F15CE4 /* nvim */,
|
||||
4BDCFADC1D3145EA00F62670 /* lib */,
|
||||
4BDCFAE01D31471500F62670 /* nvim */,
|
||||
4BDCFAE91D3147A300F62670 /* NeoVimServerMsgIds.h */,
|
||||
4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */,
|
||||
4BDCFAC91D31449700F62670 /* NeoVimServer.h */,
|
||||
4BDCFACA1D31449700F62670 /* NeoVimServer.m */,
|
||||
4B854A1C1D31447C00E08DE1 /* main.m */,
|
||||
@ -411,7 +371,6 @@
|
||||
children = (
|
||||
4BEBA5051CFF374B00673FDF /* nvox.app */,
|
||||
4BEBA5141CFF374B00673FDF /* nvoxTests.xctest */,
|
||||
4BEBA5271CFF3DFF00673FDF /* NeoVimXpc.xpc */,
|
||||
4B2A2BF71D0351810074CE9A /* SwiftNeoVim.framework */,
|
||||
4B56F2901D29903F00C1F92E /* SwiftNeoVimTests.xctest */,
|
||||
4B854A1A1D31447C00E08DE1 /* NeoVimServer */,
|
||||
@ -443,8 +402,6 @@
|
||||
4BEBA5281CFF3DFF00673FDF /* NeoVimXpc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
4B2A2C211D0359650074CE9A /* NeoVimXpc.h */,
|
||||
4B2A2C221D0359650074CE9A /* NeoVimXpcImpl.h */,
|
||||
4B2A2C231D0359650074CE9A /* NeoVimXpcImpl.m */,
|
||||
4B2A2C201D0359650074CE9A /* main.m */,
|
||||
4B2A2C1F1D0359650074CE9A /* Info.plist */,
|
||||
@ -477,11 +434,9 @@
|
||||
4B2A2C091D0352CB0074CE9A /* NeoVimUiBridgeProtocol.h in Headers */,
|
||||
4B570DC21D303CAF006EDC21 /* NeoVimAgent.h in Headers */,
|
||||
4BDF641C1D0887C100D47E1D /* TextDrawer.h in Headers */,
|
||||
4BDCFAEA1D31486E00F62670 /* NeoVimMsgIds.h in Headers */,
|
||||
4B2A2BFA1D0351810074CE9A /* SwiftNeoVim.h in Headers */,
|
||||
4BB202DC1D0359B0001D130D /* NeoVimXpc.h in Headers */,
|
||||
4BDCFAEB1D3148A100F62670 /* NeoVimServer.h in Headers */,
|
||||
4BDF64241D08CAB000D47E1D /* MMCoreTextView.h in Headers */,
|
||||
4BDCFAEA1D31486E00F62670 /* NeoVimServerMsgIds.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -503,7 +458,6 @@
|
||||
);
|
||||
dependencies = (
|
||||
4BDCFADE1D31465100F62670 /* PBXTargetDependency */,
|
||||
4B854A051D3137B000E08DE1 /* PBXTargetDependency */,
|
||||
);
|
||||
name = SwiftNeoVim;
|
||||
productName = SwiftNeoVim;
|
||||
@ -533,6 +487,7 @@
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4B854A1E1D31447C00E08DE1 /* Build configuration list for PBXNativeTarget "NeoVimServer" */;
|
||||
buildPhases = (
|
||||
4BBA71F11D319E0900E16612 /* ShellScript */,
|
||||
4B854A161D31447C00E08DE1 /* Sources */,
|
||||
4B854A171D31447C00E08DE1 /* Frameworks */,
|
||||
4B854A181D31447C00E08DE1 /* CopyFiles */,
|
||||
@ -583,24 +538,6 @@
|
||||
productReference = 4BEBA5141CFF374B00673FDF /* nvoxTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
4BEBA5261CFF3DFF00673FDF /* NeoVimXpc */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 4BEBA5331CFF3DFF00673FDF /* Build configuration list for PBXNativeTarget "NeoVimXpc" */;
|
||||
buildPhases = (
|
||||
4B2A2BBA1D00C7200074CE9A /* ShellScript */,
|
||||
4BEBA5231CFF3DFF00673FDF /* Sources */,
|
||||
4BEBA5241CFF3DFF00673FDF /* Frameworks */,
|
||||
4BEBA5251CFF3DFF00673FDF /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = NeoVimXpc;
|
||||
productName = NeoVimXpc;
|
||||
productReference = 4BEBA5271CFF3DFF00673FDF /* NeoVimXpc.xpc */;
|
||||
productType = "com.apple.product-type.xpc-service";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
@ -627,9 +564,6 @@
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
TestTargetID = 4BEBA5041CFF374B00673FDF;
|
||||
};
|
||||
4BEBA5261CFF3DFF00673FDF = {
|
||||
CreatedOnToolsVersion = 7.3.1;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 4BEBA5001CFF374B00673FDF /* Build configuration list for PBXProject "nvox" */;
|
||||
@ -647,7 +581,6 @@
|
||||
targets = (
|
||||
4BEBA5041CFF374B00673FDF /* nvox */,
|
||||
4BEBA5131CFF374B00673FDF /* nvoxTests */,
|
||||
4BEBA5261CFF3DFF00673FDF /* NeoVimXpc */,
|
||||
4B2A2BF61D0351810074CE9A /* SwiftNeoVim */,
|
||||
4B56F28F1D29903F00C1F92E /* SwiftNeoVimTests */,
|
||||
4B854A191D31447C00E08DE1 /* NeoVimServer */,
|
||||
@ -687,18 +620,10 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4BEBA5251CFF3DFF00673FDF /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4BEBA6631D00157A00673FDF /* runtime in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
4B2A2BBA1D00C7200074CE9A /* ShellScript */ = {
|
||||
4BBA71F11D319E0900E16612 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
@ -770,15 +695,6 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4BEBA5231CFF3DFF00673FDF /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4B2A2C251D0359650074CE9A /* main.m in Sources */,
|
||||
4B2A2C261D0359650074CE9A /* NeoVimXpcImpl.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
@ -792,11 +708,6 @@
|
||||
target = 4B2A2BF61D0351810074CE9A /* SwiftNeoVim */;
|
||||
targetProxy = 4B56F2961D29903F00C1F92E /* PBXContainerItemProxy */;
|
||||
};
|
||||
4B854A051D3137B000E08DE1 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 4BEBA5261CFF3DFF00673FDF /* NeoVimXpc */;
|
||||
targetProxy = 4B854A041D3137B000E08DE1 /* PBXContainerItemProxy */;
|
||||
};
|
||||
4BDCFADE1D31465100F62670 /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 4B854A191D31447C00E08DE1 /* NeoVimServer */;
|
||||
@ -927,6 +838,10 @@
|
||||
4B854A201D31447C00E08DE1 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"INCLUDE_GENERATED_DECLARATIONS=1",
|
||||
"CUSTOM_UI=1",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
"$(PROJECT_DIR)/neovim/build/include",
|
||||
"$(PROJECT_DIR)/neovim/src",
|
||||
@ -1088,66 +1003,6 @@
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
4BEBA5341CFF3DFF00673FDF /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
"INCLUDE_GENERATED_DECLARATIONS=1",
|
||||
"CUSTOM_UI=1",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
neovim/build/include,
|
||||
neovim/src,
|
||||
neovim/.deps/usr/include,
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/NeoVimXpc/Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/neovim/build/lib",
|
||||
"$(PROJECT_DIR)/neovim/.deps/usr/lib",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
/usr/local/opt/gettext/lib/libintl.a,
|
||||
"-liconv",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.nvox.xpc;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
4BEBA5351CFF3DFF00673FDF /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"INCLUDE_GENERATED_DECLARATIONS=1",
|
||||
"CUSTOM_UI=1",
|
||||
);
|
||||
HEADER_SEARCH_PATHS = (
|
||||
neovim/build/include,
|
||||
neovim/src,
|
||||
neovim/.deps/usr/include,
|
||||
);
|
||||
INFOPLIST_FILE = "$(SRCROOT)/NeoVimXpc/Info.plist";
|
||||
LIBRARY_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"$(PROJECT_DIR)/neovim/build/lib",
|
||||
"$(PROJECT_DIR)/neovim/.deps/usr/lib",
|
||||
);
|
||||
OTHER_LDFLAGS = (
|
||||
/usr/local/opt/gettext/lib/libintl.a,
|
||||
"-liconv",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.nvox.xpc;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SKIP_INSTALL = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
@ -1205,15 +1060,6 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
4BEBA5331CFF3DFF00673FDF /* Build configuration list for PBXNativeTarget "NeoVimXpc" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
4BEBA5341CFF3DFF00673FDF /* Debug */,
|
||||
4BEBA5351CFF3DFF00673FDF /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 4BEBA4FD1CFF374B00673FDF /* Project object */;
|
||||
|
@ -12,6 +12,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NeoVimViewDelegate {
|
||||
@IBOutlet weak var window: NSWindow!
|
||||
|
||||
var neoVim: NeoVim!
|
||||
let view = NeoVimView(forAutoLayout: ())
|
||||
|
||||
@IBAction func debugSomething(sender: AnyObject!) {
|
||||
// let font = NSFont(name: "Courier", size: 14)!
|
||||
@ -23,7 +24,13 @@ class AppDelegate: NSObject, NSApplicationDelegate, NeoVimViewDelegate {
|
||||
// self.window.contentView?.addSubview(testView)
|
||||
// self.window.makeFirstResponder(testView)
|
||||
|
||||
self.neoVim = NeoVim()
|
||||
self.window.contentView?.addSubview(self.view)
|
||||
self.view.autoPinEdgesToSuperviewEdges()
|
||||
self.window.makeFirstResponder(self.view)
|
||||
}
|
||||
|
||||
func applicationWillTerminate(notification: NSNotification) {
|
||||
self.view.cleanUp()
|
||||
}
|
||||
|
||||
func setTitle(title: String) {
|
||||
|
Loading…
Reference in New Issue
Block a user