mirror of
https://github.com/qvacua/vimr.git
synced 2024-12-25 23:02:35 +03:00
Merge branch 'issue/309-open'
This commit is contained in:
commit
84aa528e11
@ -3,7 +3,7 @@
|
|||||||
* See LICENSE
|
* See LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
@import Foundation;
|
||||||
|
|
||||||
|
|
||||||
@interface NSObject (NeoVimServer)
|
@interface NSObject (NeoVimServer)
|
||||||
|
@ -3,19 +3,19 @@
|
|||||||
* See LICENSE
|
* See LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
@import Foundation;
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface NeoVimBuffer : NSObject <NSCoding>
|
@interface NeoVimBuffer : NSObject <NSCoding>
|
||||||
|
|
||||||
@property (nonatomic, readonly) NSUInteger handle;
|
@property (nonatomic, readonly) NSInteger handle;
|
||||||
@property (nonatomic, retain, nullable) NSString *fileName;
|
@property (nonatomic, retain, nullable) NSString *fileName;
|
||||||
@property (nonatomic, readonly, getter=isDirty) bool dirty;
|
@property (nonatomic, readonly) bool isDirty;
|
||||||
@property (nonatomic, readonly, getter=isCurrent) bool current;
|
@property (nonatomic, readonly) bool isCurrent;
|
||||||
@property (nonatomic, readonly, getter=isTransient) bool transient;
|
@property (nonatomic, readonly) bool isTransient;
|
||||||
|
|
||||||
- (instancetype)initWithHandle:(NSUInteger)handle
|
- (instancetype)initWithHandle:(NSInteger)handle
|
||||||
fileName:(NSString * _Nullable)fileName
|
fileName:(NSString * _Nullable)fileName
|
||||||
dirty:(bool)dirty
|
dirty:(bool)dirty
|
||||||
current:(bool)current;
|
current:(bool)current;
|
||||||
@ -28,3 +28,11 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
|
||||||
|
@interface NeoVimBuffer (Equality)
|
||||||
|
|
||||||
|
- (BOOL)isEqual:(id _Nullable)other;
|
||||||
|
- (BOOL)isEqualToBuffer:(NeoVimBuffer * _Nullable)buffer;
|
||||||
|
- (NSUInteger)hash;
|
||||||
|
|
||||||
|
@end
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
@implementation NeoVimBuffer
|
@implementation NeoVimBuffer
|
||||||
|
|
||||||
- (instancetype)initWithHandle:(NSUInteger)handle
|
- (instancetype)initWithHandle:(NSInteger)handle
|
||||||
fileName:(NSString *)fileName
|
fileName:(NSString *)fileName
|
||||||
dirty:(bool)dirty
|
dirty:(bool)dirty
|
||||||
current:(bool)current {
|
current:(bool)current {
|
||||||
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
_handle = handle;
|
_handle = handle;
|
||||||
_fileName = fileName;
|
_fileName = fileName;
|
||||||
_dirty = dirty;
|
_isDirty = dirty;
|
||||||
_current = current;
|
_isCurrent = current;
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@ -28,34 +28,57 @@
|
|||||||
self = [super init];
|
self = [super init];
|
||||||
if (self) {
|
if (self) {
|
||||||
NSNumber *objHandle = [coder decodeObjectForKey:@"handle"];
|
NSNumber *objHandle = [coder decodeObjectForKey:@"handle"];
|
||||||
_handle = objHandle.unsignedIntegerValue;
|
_handle = objHandle.integerValue;
|
||||||
_fileName = [coder decodeObjectForKey:@"fileName"];
|
_fileName = [coder decodeObjectForKey:@"fileName"];
|
||||||
_dirty = [coder decodeBoolForKey:@"dirty"];
|
_isDirty = [coder decodeBoolForKey:@"dirty"];
|
||||||
_current = [coder decodeBoolForKey:@"current"];
|
_isCurrent = [coder decodeBoolForKey:@"current"];
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)isEqual:(id)other {
|
||||||
|
if (other == self)
|
||||||
|
return YES;
|
||||||
|
if (!other || ![[other class] isEqual:[self class]])
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
return [self isEqualToBuffer:other];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isEqualToBuffer:(NeoVimBuffer *)buffer {
|
||||||
|
if (self == buffer)
|
||||||
|
return YES;
|
||||||
|
if (buffer == nil)
|
||||||
|
return NO;
|
||||||
|
if (self.handle != buffer.handle)
|
||||||
|
return NO;
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSUInteger)hash {
|
||||||
|
return (NSUInteger) self.handle;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)encodeWithCoder:(NSCoder *)coder {
|
- (void)encodeWithCoder:(NSCoder *)coder {
|
||||||
[coder encodeObject:@(self.handle) forKey:@"handle"];
|
[coder encodeObject:@(self.handle) forKey:@"handle"];
|
||||||
[coder encodeObject:self.fileName forKey:@"fileName"];
|
[coder encodeObject:self.fileName forKey:@"fileName"];
|
||||||
[coder encodeBool:self.dirty forKey:@"dirty"];
|
[coder encodeBool:self.isDirty forKey:@"dirty"];
|
||||||
[coder encodeBool:self.current forKey:@"current"];
|
[coder encodeBool:self.isCurrent forKey:@"current"];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)description {
|
- (NSString *)description {
|
||||||
NSMutableString *description = [NSMutableString stringWithFormat:@"<%@: ", NSStringFromClass([self class])];
|
NSMutableString *description = [NSMutableString stringWithFormat:@"<%@: ", NSStringFromClass([self class])];
|
||||||
[description appendFormat:@"self.handle=%lu", self.handle];
|
[description appendFormat:@"self.handle=%li", self.handle];
|
||||||
[description appendFormat:@", self.fileName=%@", self.fileName];
|
[description appendFormat:@", self.fileName=%@", self.fileName];
|
||||||
[description appendFormat:@", self.dirty=%d", self.dirty];
|
[description appendFormat:@", self.dirty=%d", self.isDirty];
|
||||||
[description appendFormat:@", self.current=%d", self.current];
|
[description appendFormat:@", self.current=%d", self.isCurrent];
|
||||||
[description appendString:@">"];
|
[description appendString:@">"];
|
||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (bool)isTransient {
|
- (bool)isTransient {
|
||||||
if (self.dirty) {
|
if (self.isDirty) {
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* See LICENSE
|
* See LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
@import Foundation;
|
||||||
|
|
||||||
|
|
||||||
typedef NS_ENUM(NSUInteger, NeoVimServerMsgId) {
|
typedef NS_ENUM(NSUInteger, NeoVimServerMsgId) {
|
||||||
@ -31,7 +31,6 @@ typedef NS_ENUM(NSUInteger, NeoVimServerMsgId) {
|
|||||||
NeoVimServerMsgIdSetForeground,
|
NeoVimServerMsgIdSetForeground,
|
||||||
NeoVimServerMsgIdSetBackground,
|
NeoVimServerMsgIdSetBackground,
|
||||||
NeoVimServerMsgIdSetSpecial,
|
NeoVimServerMsgIdSetSpecial,
|
||||||
NeoVimServerMsgIdSuspend,
|
|
||||||
NeoVimServerMsgIdSetTitle,
|
NeoVimServerMsgIdSetTitle,
|
||||||
NeoVimServerMsgIdSetIcon,
|
NeoVimServerMsgIdSetIcon,
|
||||||
NeoVimServerMsgIdDirtyStatusChanged,
|
NeoVimServerMsgIdDirtyStatusChanged,
|
||||||
@ -52,11 +51,13 @@ typedef NS_ENUM(NSUInteger, NeoVimAgentMsgId) {
|
|||||||
NeoVimAgentMsgIdInputMarked,
|
NeoVimAgentMsgIdInputMarked,
|
||||||
NeoVimAgentMsgIdDelete,
|
NeoVimAgentMsgIdDelete,
|
||||||
NeoVimAgentMsgIdResize,
|
NeoVimAgentMsgIdResize,
|
||||||
|
NeoVimAgentMsgIdSelectWindow,
|
||||||
NeoVimAgentMsgIdQuit,
|
NeoVimAgentMsgIdQuit,
|
||||||
|
|
||||||
NeoVimAgentMsgIdGetDirtyDocs,
|
NeoVimAgentMsgIdGetDirtyDocs,
|
||||||
NeoVimAgentMsgIdGetEscapeFileNames,
|
NeoVimAgentMsgIdGetEscapeFileNames,
|
||||||
NeoVimAgentMsgIdGetBuffers,
|
NeoVimAgentMsgIdGetBuffers,
|
||||||
|
NeoVimAgentMsgIdGetTabs,
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
NeoVimAgentDebug1,
|
NeoVimAgentDebug1,
|
||||||
|
@ -3,7 +3,8 @@
|
|||||||
* See LICENSE
|
* See LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
@import Foundation;
|
||||||
|
|
||||||
#import "NeoVimMsgIds.h"
|
#import "NeoVimMsgIds.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,6 +216,12 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
|||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NeoVimAgentMsgIdSelectWindow: {
|
||||||
|
int *values = data_to_int_array(data, 1);
|
||||||
|
server_select_win(values[0]);
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
case NeoVimAgentMsgIdQuit:
|
case NeoVimAgentMsgIdQuit:
|
||||||
// exit() after returning the response such that the agent can get the response and so does not log a warning.
|
// exit() after returning the response such that the agent can get the response and so does not log a warning.
|
||||||
[self performSelector:@selector(quit) onThread:_localServerThread withObject:nil waitUntilDone:NO];
|
[self performSelector:@selector(quit) onThread:_localServerThread withObject:nil waitUntilDone:NO];
|
||||||
@ -241,6 +247,10 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
|||||||
return [NSKeyedArchiver archivedDataWithRootObject:server_buffers()];
|
return [NSKeyedArchiver archivedDataWithRootObject:server_buffers()];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NeoVimAgentMsgIdGetTabs: {
|
||||||
|
return [NSKeyedArchiver archivedDataWithRootObject:server_tabs()];
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
25
NeoVimServer/NeoVimTab.h
Normal file
25
NeoVimServer/NeoVimTab.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/**
|
||||||
|
* Tae Won Ha - http://taewon.de - @hataewon
|
||||||
|
* See LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import Foundation;
|
||||||
|
|
||||||
|
|
||||||
|
@class NeoVimWindow;
|
||||||
|
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface NeoVimTab : NSObject <NSCoding>
|
||||||
|
|
||||||
|
@property (nonatomic, readonly) NSInteger handle;
|
||||||
|
@property (nonatomic, readonly) NSArray <NeoVimWindow *> *windows;
|
||||||
|
|
||||||
|
- (instancetype)initWithHandle:(NSInteger)handle windows:(NSArray <NeoVimWindow *> *)windows;
|
||||||
|
|
||||||
|
- (NSString *)description;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
48
NeoVimServer/NeoVimTab.m
Normal file
48
NeoVimServer/NeoVimTab.m
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/**
|
||||||
|
* Tae Won Ha - http://taewon.de - @hataewon
|
||||||
|
* See LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import "NeoVimTab.h"
|
||||||
|
#import "NeoVimWindow.h"
|
||||||
|
|
||||||
|
|
||||||
|
@implementation NeoVimTab
|
||||||
|
|
||||||
|
- (instancetype)initWithHandle:(NSInteger)handle windows:(NSArray <NeoVimWindow *> *)windows {
|
||||||
|
self = [super init];
|
||||||
|
if (self == nil) {
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
_handle = handle;
|
||||||
|
_windows = windows;
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)description {
|
||||||
|
NSMutableString *description = [NSMutableString stringWithFormat:@"<%@: ", NSStringFromClass([self class])];
|
||||||
|
[description appendFormat:@"self.handle=%li", self.handle];
|
||||||
|
[description appendFormat:@", self.windows=%@", self.windows];
|
||||||
|
[description appendString:@">"];
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)encodeWithCoder:(NSCoder *)coder {
|
||||||
|
[coder encodeObject:@(self.handle) forKey:@"handle"];
|
||||||
|
[coder encodeObject:self.windows forKey:@"windows"];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithCoder:(NSCoder *)coder {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
NSNumber *objHandle = [coder decodeObjectForKey:@"handle"];
|
||||||
|
_handle = objHandle.integerValue;
|
||||||
|
_windows = [coder decodeObjectForKey:@"windows"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
28
NeoVimServer/NeoVimWindow.h
Normal file
28
NeoVimServer/NeoVimWindow.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* Tae Won Ha - http://taewon.de - @hataewon
|
||||||
|
* See LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import Foundation;
|
||||||
|
|
||||||
|
|
||||||
|
@class NeoVimBuffer;
|
||||||
|
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
|
@interface NeoVimWindow : NSObject <NSCoding>
|
||||||
|
|
||||||
|
@property (nonatomic, readonly) NSInteger handle;
|
||||||
|
@property (nonatomic, readonly) NeoVimBuffer *buffer;
|
||||||
|
|
||||||
|
- (instancetype)initWithHandle:(NSInteger)handle buffer:(NeoVimBuffer *)buffer;
|
||||||
|
|
||||||
|
- (instancetype)initWithCoder:(NSCoder *)coder;
|
||||||
|
- (void)encodeWithCoder:(NSCoder *)coder;
|
||||||
|
|
||||||
|
- (NSString *)description;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
48
NeoVimServer/NeoVimWindow.m
Normal file
48
NeoVimServer/NeoVimWindow.m
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
//
|
||||||
|
// Created by Tae Won Ha on 22/10/16.
|
||||||
|
// Copyright (c) 2016 Tae Won Ha. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "NeoVimWindow.h"
|
||||||
|
#import "NeoVimBuffer.h"
|
||||||
|
|
||||||
|
|
||||||
|
@implementation NeoVimWindow
|
||||||
|
|
||||||
|
- (instancetype)initWithHandle:(NSInteger)handle buffer:(NeoVimBuffer *)buffer {
|
||||||
|
self = [super init];
|
||||||
|
if (self == nil) {
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
_handle = handle;
|
||||||
|
_buffer = buffer;
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *)description {
|
||||||
|
NSMutableString *description = [NSMutableString stringWithFormat:@"<%@: ", NSStringFromClass([self class])];
|
||||||
|
[description appendFormat:@"self.handle=%li", self.handle];
|
||||||
|
[description appendFormat:@", self.buffer=%@", self.buffer];
|
||||||
|
[description appendString:@">"];
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)encodeWithCoder:(NSCoder *)coder {
|
||||||
|
[coder encodeObject:@(self.handle) forKey:@"handle"];
|
||||||
|
[coder encodeObject:self.buffer forKey:@"buffer"];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithCoder:(NSCoder *)coder {
|
||||||
|
self = [super init];
|
||||||
|
if (self) {
|
||||||
|
NSNumber *objHandle = [coder decodeObjectForKey:@"handle"];
|
||||||
|
_handle = objHandle.integerValue;
|
||||||
|
_buffer = [coder decodeObjectForKey:@"buffer"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
@ -3,18 +3,20 @@
|
|||||||
* See LICENSE
|
* See LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
@import Foundation;
|
||||||
|
|
||||||
|
#import <sys/event.h>
|
||||||
|
#import <uv.h>
|
||||||
|
|
||||||
#import "NeoVimServer.h"
|
#import "NeoVimServer.h"
|
||||||
#import "server_globals.h"
|
#import "server_globals.h"
|
||||||
#import "Logging.h"
|
#import "Logging.h"
|
||||||
#import "CocoaCategories.h"
|
#import "CocoaCategories.h"
|
||||||
#import <sys/event.h>
|
|
||||||
#import <uv.h>
|
|
||||||
|
|
||||||
|
|
||||||
NeoVimServer *_neovim_server;
|
NeoVimServer *_neovim_server;
|
||||||
|
|
||||||
// Ensure no parent-less NeoVimServer processes are left when the main app crashes.
|
// Ensure that no parent-less NeoVimServer processes are left when the main app crashes.
|
||||||
// From http://mac-os-x.10953.n7.nabble.com/Ensure-NSTask-terminates-when-parent-application-does-td31477.html
|
// From http://mac-os-x.10953.n7.nabble.com/Ensure-NSTask-terminates-when-parent-application-does-td31477.html
|
||||||
static void observe_parent_termination(void *arg) {
|
static void observe_parent_termination(void *arg) {
|
||||||
pid_t ppid = getppid(); // get parent pid
|
pid_t ppid = getppid(); // get parent pid
|
||||||
@ -35,7 +37,7 @@ static void observe_parent_termination(void *arg) {
|
|||||||
kevent(kq, &procEvent, 1, &procEvent, 1, 0);
|
kevent(kq, &procEvent, 1, &procEvent, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
DLOG("Exiting NeoVimServer: Parent terminated.");
|
ILOG("Exiting NeoVimServer: Parent terminated.");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* See LICENSE
|
* See LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
@import Foundation;
|
||||||
|
|
||||||
|
|
||||||
@class NeoVimServer;
|
@class NeoVimServer;
|
||||||
@ -20,4 +20,6 @@ extern void server_vim_input_marked_text(NSString *markedText);
|
|||||||
extern bool server_has_dirty_docs();
|
extern bool server_has_dirty_docs();
|
||||||
extern NSString *server_escaped_filename(NSString *filename);
|
extern NSString *server_escaped_filename(NSString *filename);
|
||||||
extern NSArray *server_buffers();
|
extern NSArray *server_buffers();
|
||||||
|
extern NSArray *server_tabs();
|
||||||
|
extern void server_select_win(int window_handle);
|
||||||
extern void server_quit();
|
extern void server_quit();
|
||||||
|
@ -3,12 +3,15 @@
|
|||||||
* See LICENSE
|
* See LICENSE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
@import Foundation;
|
||||||
|
|
||||||
#import "Logging.h"
|
#import "Logging.h"
|
||||||
#import "server_globals.h"
|
#import "server_globals.h"
|
||||||
#import "NeoVimServer.h"
|
#import "NeoVimServer.h"
|
||||||
#import "NeoVimUiBridgeProtocol.h"
|
#import "NeoVimUiBridgeProtocol.h"
|
||||||
#import "NeoVimBuffer.h"
|
#import "NeoVimBuffer.h"
|
||||||
|
#import "NeoVimWindow.h"
|
||||||
|
#import "NeoVimTab.h"
|
||||||
#import "CocoaCategories.h"
|
#import "CocoaCategories.h"
|
||||||
|
|
||||||
// FileInfo and Boolean are #defined by Carbon and NeoVim: Since we don't need the Carbon versions of them, we rename
|
// FileInfo and Boolean are #defined by Carbon and NeoVim: Since we don't need the Carbon versions of them, we rename
|
||||||
@ -468,6 +471,18 @@ static void neovim_input(void **argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void neovim_select_window(void **argv) {
|
||||||
|
win_T *window = (win_T *) argv[0];
|
||||||
|
|
||||||
|
Error err;
|
||||||
|
nvim_set_current_win(window->handle, &err);
|
||||||
|
// TODO: handle error
|
||||||
|
WLOG("Error selecting window with handle %d: %s", window->handle, err.msg);
|
||||||
|
|
||||||
|
// nvim_set_current_win() does not seem to trigger a redraw.
|
||||||
|
ui_schedule_refresh();
|
||||||
|
}
|
||||||
|
|
||||||
static void send_dirty_status() {
|
static void send_dirty_status() {
|
||||||
bool new_dirty_status = server_has_dirty_docs();
|
bool new_dirty_status = server_has_dirty_docs();
|
||||||
DLOG("dirty status: %d vs. %d", _dirty, new_dirty_status);
|
DLOG("dirty status: %d vs. %d", _dirty, new_dirty_status);
|
||||||
@ -720,28 +735,73 @@ NSString *server_escaped_filename(NSString *filename) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static NeoVimBuffer *buffer_for(buf_T *buf) {
|
||||||
|
if (buf->b_p_bl == 0) {
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSString *fileName = nil;
|
||||||
|
if (buf->b_ffname != NULL) {
|
||||||
|
fileName = [NSString stringWithCString:(const char *) buf->b_ffname encoding:NSUTF8StringEncoding];
|
||||||
|
}
|
||||||
|
|
||||||
|
bool current = curbuf == buf;
|
||||||
|
|
||||||
|
NeoVimBuffer *buffer = [[NeoVimBuffer alloc] initWithHandle:buf->handle
|
||||||
|
fileName:fileName
|
||||||
|
dirty:buf->b_changed
|
||||||
|
current:current];
|
||||||
|
|
||||||
|
return [buffer autorelease];
|
||||||
|
}
|
||||||
|
|
||||||
NSArray *server_buffers() {
|
NSArray *server_buffers() {
|
||||||
NSMutableArray <NeoVimBuffer *> *result = [[NSMutableArray new] autorelease];
|
NSMutableArray <NeoVimBuffer *> *result = [[NSMutableArray new] autorelease];
|
||||||
FOR_ALL_BUFFERS(buf) {
|
FOR_ALL_BUFFERS(buf) {
|
||||||
if (buf->b_p_bl == 0) {
|
NeoVimBuffer *buffer = buffer_for(buf);
|
||||||
|
if (buffer == nil) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSString *fileName = nil;
|
|
||||||
if (buf->b_ffname != NULL) {
|
|
||||||
fileName = [NSString stringWithCString:(const char *) buf->b_ffname encoding:NSUTF8StringEncoding];
|
|
||||||
}
|
|
||||||
bool current = curbuf == buf;
|
|
||||||
NeoVimBuffer *buffer = [[NeoVimBuffer alloc] initWithHandle:(NSUInteger) buf->handle
|
|
||||||
fileName:fileName
|
|
||||||
dirty:buf->b_changed
|
|
||||||
current:current];
|
|
||||||
[result addObject:buffer];
|
[result addObject:buffer];
|
||||||
[buffer release];
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NSArray *server_tabs() {
|
||||||
|
NSMutableArray *tabs = [[NSMutableArray new] autorelease];
|
||||||
|
FOR_ALL_TABS(t) {
|
||||||
|
NSMutableArray *windows = [NSMutableArray new];
|
||||||
|
|
||||||
|
FOR_ALL_WINDOWS_IN_TAB(win, t) {
|
||||||
|
NeoVimBuffer *buffer = buffer_for(win->w_buffer);
|
||||||
|
if (buffer == nil) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
NeoVimWindow *window = [[NeoVimWindow alloc] initWithHandle:win->handle buffer:buffer];
|
||||||
|
[windows addObject:window];
|
||||||
|
[window release];
|
||||||
|
}
|
||||||
|
|
||||||
|
NeoVimTab *tab = [[NeoVimTab alloc] initWithHandle:t->handle windows:windows];
|
||||||
|
[windows release];
|
||||||
|
|
||||||
|
[tabs addObject:tab];
|
||||||
|
[tab release];
|
||||||
|
}
|
||||||
|
|
||||||
|
return tabs;
|
||||||
|
}
|
||||||
|
|
||||||
|
void server_select_win(int window_handle) {
|
||||||
|
FOR_ALL_TAB_WINDOWS(tab, win) {
|
||||||
|
if (win->handle == window_handle) {
|
||||||
|
loop_schedule(&main_loop, event_create(1, neovim_select_window, 1, win));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void server_quit() {
|
void server_quit() {
|
||||||
DLOG("NeoVimServer exiting...");
|
DLOG("NeoVimServer exiting...");
|
||||||
exit(0);
|
exit(0);
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
@protocol NeoVimUiBridgeProtocol;
|
@protocol NeoVimUiBridgeProtocol;
|
||||||
@class NeoVimBuffer;
|
@class NeoVimBuffer;
|
||||||
|
@class NeoVimTab;
|
||||||
|
@class NeoVimWindow;
|
||||||
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
@ -35,6 +37,8 @@ NS_ASSUME_NONNULL_BEGIN
|
|||||||
- (NSString *)escapedFileName:(NSString *)fileName;
|
- (NSString *)escapedFileName:(NSString *)fileName;
|
||||||
- (NSArray<NSString *> *)escapedFileNames:(NSArray<NSString *> *)fileNames;
|
- (NSArray<NSString *> *)escapedFileNames:(NSArray<NSString *> *)fileNames;
|
||||||
- (NSArray<NeoVimBuffer *> *)buffers;
|
- (NSArray<NeoVimBuffer *> *)buffers;
|
||||||
|
- (NSArray<NeoVimTab*> *)tabs;
|
||||||
|
- (void)selectWindow:(NeoVimWindow *)window;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#import "NeoVimUiBridgeProtocol.h"
|
#import "NeoVimUiBridgeProtocol.h"
|
||||||
#import "Logger.h"
|
#import "Logger.h"
|
||||||
#import "NeoVimBuffer.h"
|
#import "NeoVimBuffer.h"
|
||||||
|
#import "NeoVimWindow.h"
|
||||||
|
|
||||||
|
|
||||||
static const double qTimeout = 10;
|
static const double qTimeout = 10;
|
||||||
@ -224,6 +225,12 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
|||||||
return [self escapedFileNames:@[ fileName ]][0];
|
return [self escapedFileNames:@[ fileName ]][0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)selectWindow:(NeoVimWindow *)window {
|
||||||
|
int values[] = { (int) window.handle };
|
||||||
|
NSData *data = [[NSData alloc] initWithBytes:values length:sizeof(int)];
|
||||||
|
[self sendMessageWithId:NeoVimAgentMsgIdSelectWindow data:data expectsReply:NO];
|
||||||
|
}
|
||||||
|
|
||||||
- (NSArray <NSString *>*)escapedFileNames:(NSArray <NSString *>*)fileNames {
|
- (NSArray <NSString *>*)escapedFileNames:(NSArray <NSString *>*)fileNames {
|
||||||
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:fileNames];
|
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:fileNames];
|
||||||
NSData *response = [self sendMessageWithId:NeoVimAgentMsgIdGetEscapeFileNames data:data expectsReply:YES];
|
NSData *response = [self sendMessageWithId:NeoVimAgentMsgIdGetEscapeFileNames data:data expectsReply:YES];
|
||||||
@ -245,6 +252,16 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
|
|||||||
return [NSKeyedUnarchiver unarchiveObjectWithData:response];
|
return [NSKeyedUnarchiver unarchiveObjectWithData:response];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (NSArray<NeoVimWindow *> *)tabs {
|
||||||
|
NSData *response = [self sendMessageWithId:NeoVimAgentMsgIdGetTabs data:nil expectsReply:YES];
|
||||||
|
if (response == nil) {
|
||||||
|
log4Warn("The response for the msg %lu was nil.", NeoVimAgentMsgIdGetTabs);
|
||||||
|
return @[];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [NSKeyedUnarchiver unarchiveObjectWithData:response];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)runLocalServer {
|
- (void)runLocalServer {
|
||||||
@autoreleasepool {
|
@autoreleasepool {
|
||||||
CFMessagePortContext localContext = {
|
CFMessagePortContext localContext = {
|
||||||
|
14
SwiftNeoVim/NeoVimObjectsExtensions.swift
Normal file
14
SwiftNeoVim/NeoVimObjectsExtensions.swift
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Tae Won Ha - http://taewon.de - @hataewon
|
||||||
|
* See LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
|
||||||
|
extension NeoVimTab {
|
||||||
|
|
||||||
|
public func allBuffers() -> [NeoVimBuffer] {
|
||||||
|
return Array(Set(self.windows.map { $0.buffer }))
|
||||||
|
}
|
||||||
|
}
|
@ -181,7 +181,8 @@ public class NeoVimView: NSView, NSUserInterfaceValidations {
|
|||||||
|
|
||||||
@IBAction public func debug1(_ sender: AnyObject!) {
|
@IBAction public func debug1(_ sender: AnyObject!) {
|
||||||
NSLog("DEBUG 1 - Start")
|
NSLog("DEBUG 1 - Start")
|
||||||
NSLog("\(self.agent.buffers())")
|
let buffers = self.agent.tabs().map { $0.allBuffers() }.flatMap { $0 }
|
||||||
|
NSLog("\(Set(buffers))")
|
||||||
NSLog("DEBUG 1 - End")
|
NSLog("DEBUG 1 - End")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,7 +205,7 @@ extension NeoVimView {
|
|||||||
- returns: nil when for exampls a quickfix panel is open.
|
- returns: nil when for exampls a quickfix panel is open.
|
||||||
*/
|
*/
|
||||||
public func currentBuffer() -> NeoVimBuffer? {
|
public func currentBuffer() -> NeoVimBuffer? {
|
||||||
return self.agent.buffers().filter { $0.current }.first
|
return self.agent.buffers().filter { $0.isCurrent }.first
|
||||||
}
|
}
|
||||||
|
|
||||||
public func hasDirtyDocs() -> Bool {
|
public func hasDirtyDocs() -> Bool {
|
||||||
@ -213,7 +214,7 @@ extension NeoVimView {
|
|||||||
|
|
||||||
public func isCurrentBufferDirty() -> Bool {
|
public func isCurrentBufferDirty() -> Bool {
|
||||||
let curBuf = self.currentBuffer()
|
let curBuf = self.currentBuffer()
|
||||||
return curBuf?.dirty ?? true
|
return curBuf?.isDirty ?? true
|
||||||
}
|
}
|
||||||
|
|
||||||
public func newTab() {
|
public func newTab() {
|
||||||
@ -221,9 +222,23 @@ extension NeoVimView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func open(urls: [URL]) {
|
public func open(urls: [URL]) {
|
||||||
let currentBufferIsTransient = self.agent.buffers().filter { $0.current }.first?.transient ?? false
|
let tabs = self.agent.tabs()
|
||||||
|
let buffers = tabs.map { $0.allBuffers() }.flatMap { $0 }
|
||||||
|
let currentBufferIsTransient = buffers.filter { $0.isCurrent }.first?.isTransient ?? false
|
||||||
|
|
||||||
urls.enumerated().forEach { (idx, url) in
|
urls.enumerated().forEach { (idx, url) in
|
||||||
|
let path = url.path
|
||||||
|
if buffers.filter({ $0.fileName == path }).first != nil {
|
||||||
|
for window in tabs.map({ $0.windows }).flatMap({ $0 }) {
|
||||||
|
|
||||||
|
if window.buffer.fileName == path {
|
||||||
|
Swift.print(window)
|
||||||
|
self.agent.select(window)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if idx == 0 && currentBufferIsTransient {
|
if idx == 0 && currentBufferIsTransient {
|
||||||
self.open(url, cmd: "e")
|
self.open(url, cmd: "e")
|
||||||
} else {
|
} else {
|
||||||
|
@ -16,4 +16,6 @@ FOUNDATION_EXPORT const unsigned char SwiftNeoVimVersionString[];
|
|||||||
#import <SwiftNeoVim/TextDrawer.h>
|
#import <SwiftNeoVim/TextDrawer.h>
|
||||||
#import <SwiftNeoVim/NeoVimAgent.h>
|
#import <SwiftNeoVim/NeoVimAgent.h>
|
||||||
#import <SwiftNeoVim/NeoVimMsgIds.h>
|
#import <SwiftNeoVim/NeoVimMsgIds.h>
|
||||||
#import <SwiftNeoVim/NeoVimBuffer.h>
|
#import <SwiftNeoVim/NeoVimBuffer.h>
|
||||||
|
#import <SwiftNeoVim/NeoVimTab.h>
|
||||||
|
#import <SwiftNeoVim/NeoVimWindow.h>
|
||||||
|
@ -40,9 +40,6 @@
|
|||||||
4B0677431DA170D5001A2588 /* WorkspaceTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6423991D8EFE3000FC78C8 /* WorkspaceTool.swift */; };
|
4B0677431DA170D5001A2588 /* WorkspaceTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6423991D8EFE3000FC78C8 /* WorkspaceTool.swift */; };
|
||||||
4B0677441DA170D5001A2588 /* WorkspaceToolButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB489411D952CF6005BB0E8 /* WorkspaceToolButton.swift */; };
|
4B0677441DA170D5001A2588 /* WorkspaceToolButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BB489411D952CF6005BB0E8 /* WorkspaceToolButton.swift */; };
|
||||||
4B0BCC941D70320C00D3CE65 /* Logger.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B0BCC931D70320C00D3CE65 /* Logger.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
4B0BCC941D70320C00D3CE65 /* Logger.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B0BCC931D70320C00D3CE65 /* Logger.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||||
4B0C905B1D5DED69007753A3 /* NeoVimBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0C905A1D5DED69007753A3 /* NeoVimBuffer.m */; };
|
|
||||||
4B0E22581D5DEDC700C072E6 /* NeoVimBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B0C90591D5DED69007753A3 /* NeoVimBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
|
||||||
4B0E22591D5DF62E00C072E6 /* NeoVimBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B0C905A1D5DED69007753A3 /* NeoVimBuffer.m */; };
|
|
||||||
4B22F7F01D7C029400929B0E /* ScorerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B22F7EF1D7C029400929B0E /* ScorerTest.swift */; };
|
4B22F7F01D7C029400929B0E /* ScorerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B22F7EF1D7C029400929B0E /* ScorerTest.swift */; };
|
||||||
4B22F7F21D7C6B9000929B0E /* ImageAndTextTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B22F7F11D7C6B9000929B0E /* ImageAndTextTableCell.swift */; };
|
4B22F7F21D7C6B9000929B0E /* ImageAndTextTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B22F7F11D7C6B9000929B0E /* ImageAndTextTableCell.swift */; };
|
||||||
4B238BE11D3BF24200CBDD98 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B238BE01D3BF24200CBDD98 /* Application.swift */; };
|
4B238BE11D3BF24200CBDD98 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B238BE01D3BF24200CBDD98 /* Application.swift */; };
|
||||||
@ -88,6 +85,7 @@
|
|||||||
4B6A709C1D6507A000E12030 /* Nimble.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B56F29B1D29926600C1F92E /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
4B6A709C1D6507A000E12030 /* Nimble.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B56F29B1D29926600C1F92E /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
4B6B0A781DA2A1A500212D6D /* FileOutlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6B0A771DA2A1A500212D6D /* FileOutlineView.swift */; };
|
4B6B0A781DA2A1A500212D6D /* FileOutlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6B0A771DA2A1A500212D6D /* FileOutlineView.swift */; };
|
||||||
4B854A1D1D31447C00E08DE1 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B854A1C1D31447C00E08DE1 /* main.m */; };
|
4B854A1D1D31447C00E08DE1 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B854A1C1D31447C00E08DE1 /* main.m */; };
|
||||||
|
4B8AC0441DBCB3A2007CCC9B /* NeoVimObjectsExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8AC0431DBCB3A1007CCC9B /* NeoVimObjectsExtensions.swift */; };
|
||||||
4B97E2CC1D33F53D00FC0660 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B97E2CE1D33F53D00FC0660 /* MainWindow.xib */; };
|
4B97E2CC1D33F53D00FC0660 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B97E2CE1D33F53D00FC0660 /* MainWindow.xib */; };
|
||||||
4B9A15241D2993DA009F9F67 /* Nimble.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B56F29B1D29926600C1F92E /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
4B9A15241D2993DA009F9F67 /* Nimble.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B56F29B1D29926600C1F92E /* Nimble.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
4B9A15261D2993DF009F9F67 /* SwiftNeoVim.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B2A2BF71D0351810074CE9A /* SwiftNeoVim.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
4B9A15261D2993DF009F9F67 /* SwiftNeoVim.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B2A2BF71D0351810074CE9A /* SwiftNeoVim.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
@ -113,6 +111,15 @@
|
|||||||
4BDCFAEF1D315CF200F62670 /* NeoVimServer in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B854A1A1D31447C00E08DE1 /* NeoVimServer */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
4BDCFAEF1D315CF200F62670 /* NeoVimServer in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B854A1A1D31447C00E08DE1 /* NeoVimServer */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
|
||||||
4BDD056A1DB0CAB700D1B405 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDD05691DB0CAB700D1B405 /* Sparkle.framework */; };
|
4BDD056A1DB0CAB700D1B405 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDD05691DB0CAB700D1B405 /* Sparkle.framework */; };
|
||||||
4BDD056B1DB0CACB00D1B405 /* Sparkle.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDD05691DB0CAB700D1B405 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
4BDD056B1DB0CACB00D1B405 /* Sparkle.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDD05691DB0CAB700D1B405 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
|
4BDD05851DBBC50000D1B405 /* NeoVimBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDD057F1DBBC50000D1B405 /* NeoVimBuffer.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
4BDD05861DBBC50000D1B405 /* NeoVimBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BDD05801DBBC50000D1B405 /* NeoVimBuffer.m */; };
|
||||||
|
4BDD05871DBBC50000D1B405 /* NeoVimBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BDD05801DBBC50000D1B405 /* NeoVimBuffer.m */; };
|
||||||
|
4BDD05881DBBC50000D1B405 /* NeoVimTab.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDD05811DBBC50000D1B405 /* NeoVimTab.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
4BDD05891DBBC50000D1B405 /* NeoVimTab.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BDD05821DBBC50000D1B405 /* NeoVimTab.m */; };
|
||||||
|
4BDD058A1DBBC50000D1B405 /* NeoVimTab.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BDD05821DBBC50000D1B405 /* NeoVimTab.m */; };
|
||||||
|
4BDD058B1DBBC50000D1B405 /* NeoVimWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BDD05831DBBC50000D1B405 /* NeoVimWindow.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
4BDD058C1DBBC50000D1B405 /* NeoVimWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BDD05841DBBC50000D1B405 /* NeoVimWindow.m */; };
|
||||||
|
4BDD058D1DBBC50000D1B405 /* NeoVimWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BDD05841DBBC50000D1B405 /* NeoVimWindow.m */; };
|
||||||
4BDF50081D7607BF00D8FBC3 /* EonilFileSystemEvents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */; };
|
4BDF50081D7607BF00D8FBC3 /* EonilFileSystemEvents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */; };
|
||||||
4BDF50091D7607BF00D8FBC3 /* EonilFileSystemEvents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */; };
|
4BDF50091D7607BF00D8FBC3 /* EonilFileSystemEvents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */; };
|
||||||
4BDF500A1D7607C600D8FBC3 /* EonilFileSystemEvents.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
4BDF500A1D7607C600D8FBC3 /* EonilFileSystemEvents.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||||
@ -266,8 +273,6 @@
|
|||||||
4B029F1B1D45E349004EE0D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PrefWindow.xib; sourceTree = "<group>"; };
|
4B029F1B1D45E349004EE0D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PrefWindow.xib; sourceTree = "<group>"; };
|
||||||
4B0677361D99D9C3001A2588 /* FileBrowserComponent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileBrowserComponent.swift; sourceTree = "<group>"; };
|
4B0677361D99D9C3001A2588 /* FileBrowserComponent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileBrowserComponent.swift; sourceTree = "<group>"; };
|
||||||
4B0BCC931D70320C00D3CE65 /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logger.h; path = VimR/Logger.h; sourceTree = SOURCE_ROOT; };
|
4B0BCC931D70320C00D3CE65 /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logger.h; path = VimR/Logger.h; sourceTree = SOURCE_ROOT; };
|
||||||
4B0C90591D5DED69007753A3 /* NeoVimBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NeoVimBuffer.h; sourceTree = "<group>"; };
|
|
||||||
4B0C905A1D5DED69007753A3 /* NeoVimBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NeoVimBuffer.m; sourceTree = "<group>"; };
|
|
||||||
4B1BB3521D16C5E500CA4FEF /* InputTestView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputTestView.swift; sourceTree = "<group>"; };
|
4B1BB3521D16C5E500CA4FEF /* InputTestView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InputTestView.swift; sourceTree = "<group>"; };
|
||||||
4B22F7EF1D7C029400929B0E /* ScorerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScorerTest.swift; sourceTree = "<group>"; };
|
4B22F7EF1D7C029400929B0E /* ScorerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScorerTest.swift; sourceTree = "<group>"; };
|
||||||
4B22F7F11D7C6B9000929B0E /* ImageAndTextTableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageAndTextTableCell.swift; sourceTree = "<group>"; };
|
4B22F7F11D7C6B9000929B0E /* ImageAndTextTableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageAndTextTableCell.swift; sourceTree = "<group>"; };
|
||||||
@ -308,6 +313,7 @@
|
|||||||
4B6B0A771DA2A1A500212D6D /* FileOutlineView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileOutlineView.swift; sourceTree = "<group>"; };
|
4B6B0A771DA2A1A500212D6D /* FileOutlineView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileOutlineView.swift; sourceTree = "<group>"; };
|
||||||
4B854A1A1D31447C00E08DE1 /* NeoVimServer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = NeoVimServer; sourceTree = BUILT_PRODUCTS_DIR; };
|
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>"; };
|
4B854A1C1D31447C00E08DE1 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||||
|
4B8AC0431DBCB3A1007CCC9B /* NeoVimObjectsExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NeoVimObjectsExtensions.swift; sourceTree = "<group>"; };
|
||||||
4B97E2CD1D33F53D00FC0660 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = "<group>"; };
|
4B97E2CD1D33F53D00FC0660 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = "<group>"; };
|
||||||
4BAD81D41D80B5D8004F91AE /* OpenQuicklyFileViewRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyFileViewRow.swift; sourceTree = "<group>"; };
|
4BAD81D41D80B5D8004F91AE /* OpenQuicklyFileViewRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyFileViewRow.swift; sourceTree = "<group>"; };
|
||||||
4BAD84E71D7CA8FC00A79CC3 /* OpenQuicklyFilterOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyFilterOperation.swift; sourceTree = "<group>"; };
|
4BAD84E71D7CA8FC00A79CC3 /* OpenQuicklyFilterOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyFilterOperation.swift; sourceTree = "<group>"; };
|
||||||
@ -330,6 +336,12 @@
|
|||||||
4BDCFAD41D3145E500F62670 /* libvterm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvterm.a; path = neovim/.deps/usr/lib/libvterm.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; };
|
||||||
4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NeoVimMsgIds.h; sourceTree = "<group>"; };
|
4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NeoVimMsgIds.h; sourceTree = "<group>"; };
|
||||||
4BDD05691DB0CAB700D1B405 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = Carthage/Build/Mac/Sparkle.framework; sourceTree = SOURCE_ROOT; };
|
4BDD05691DB0CAB700D1B405 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = Carthage/Build/Mac/Sparkle.framework; sourceTree = SOURCE_ROOT; };
|
||||||
|
4BDD057F1DBBC50000D1B405 /* NeoVimBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NeoVimBuffer.h; path = NeoVimServer/NeoVimBuffer.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
4BDD05801DBBC50000D1B405 /* NeoVimBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NeoVimBuffer.m; path = NeoVimServer/NeoVimBuffer.m; sourceTree = SOURCE_ROOT; };
|
||||||
|
4BDD05811DBBC50000D1B405 /* NeoVimTab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NeoVimTab.h; path = NeoVimServer/NeoVimTab.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
4BDD05821DBBC50000D1B405 /* NeoVimTab.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NeoVimTab.m; path = NeoVimServer/NeoVimTab.m; sourceTree = SOURCE_ROOT; };
|
||||||
|
4BDD05831DBBC50000D1B405 /* NeoVimWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NeoVimWindow.h; path = NeoVimServer/NeoVimWindow.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
4BDD05841DBBC50000D1B405 /* NeoVimWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NeoVimWindow.m; path = NeoVimServer/NeoVimWindow.m; sourceTree = SOURCE_ROOT; };
|
||||||
4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EonilFileSystemEvents.framework; path = Carthage/Build/Mac/EonilFileSystemEvents.framework; sourceTree = SOURCE_ROOT; };
|
4BDF50071D7607BF00D8FBC3 /* EonilFileSystemEvents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EonilFileSystemEvents.framework; path = Carthage/Build/Mac/EonilFileSystemEvents.framework; sourceTree = SOURCE_ROOT; };
|
||||||
4BDF500B1D760A3500D8FBC3 /* FileUtilsTest */ = {isa = PBXFileReference; lastKnownFileType = folder; path = FileUtilsTest; sourceTree = "<group>"; };
|
4BDF500B1D760A3500D8FBC3 /* FileUtilsTest */ = {isa = PBXFileReference; lastKnownFileType = folder; path = FileUtilsTest; sourceTree = "<group>"; };
|
||||||
4BDF50131D7617EA00D8FBC3 /* OpenQuicklyWindowComponent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyWindowComponent.swift; sourceTree = "<group>"; };
|
4BDF50131D7617EA00D8FBC3 /* OpenQuicklyWindowComponent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyWindowComponent.swift; sourceTree = "<group>"; };
|
||||||
@ -429,6 +441,19 @@
|
|||||||
path = resources;
|
path = resources;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
1929BFC86BF38D341F2DDCBD /* NeoVim Objects */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4BDD057F1DBBC50000D1B405 /* NeoVimBuffer.h */,
|
||||||
|
4BDD05801DBBC50000D1B405 /* NeoVimBuffer.m */,
|
||||||
|
4BDD05811DBBC50000D1B405 /* NeoVimTab.h */,
|
||||||
|
4BDD05821DBBC50000D1B405 /* NeoVimTab.m */,
|
||||||
|
4BDD05831DBBC50000D1B405 /* NeoVimWindow.h */,
|
||||||
|
4BDD05841DBBC50000D1B405 /* NeoVimWindow.m */,
|
||||||
|
);
|
||||||
|
path = "NeoVim Objects";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
4B0677351D99D9A2001A2588 /* File Browser */ = {
|
4B0677351D99D9A2001A2588 /* File Browser */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -495,6 +520,7 @@
|
|||||||
4B1BB3521D16C5E500CA4FEF /* InputTestView.swift */,
|
4B1BB3521D16C5E500CA4FEF /* InputTestView.swift */,
|
||||||
4BEE79141D16D2100012EDAA /* DispatchUtils.swift */,
|
4BEE79141D16D2100012EDAA /* DispatchUtils.swift */,
|
||||||
4BF6E29B1D34153C0053FA76 /* KeyUtils.swift */,
|
4BF6E29B1D34153C0053FA76 /* KeyUtils.swift */,
|
||||||
|
4B8AC0431DBCB3A1007CCC9B /* NeoVimObjectsExtensions.swift */,
|
||||||
);
|
);
|
||||||
path = SwiftNeoVim;
|
path = SwiftNeoVim;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -545,8 +571,6 @@
|
|||||||
4BCF638F1D323CFD00F15CE4 /* nvim */,
|
4BCF638F1D323CFD00F15CE4 /* nvim */,
|
||||||
4BDCFADC1D3145EA00F62670 /* lib */,
|
4BDCFADC1D3145EA00F62670 /* lib */,
|
||||||
4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */,
|
4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */,
|
||||||
4B0C90591D5DED69007753A3 /* NeoVimBuffer.h */,
|
|
||||||
4B0C905A1D5DED69007753A3 /* NeoVimBuffer.m */,
|
|
||||||
4BDCFAC91D31449700F62670 /* NeoVimServer.h */,
|
4BDCFAC91D31449700F62670 /* NeoVimServer.h */,
|
||||||
4BDCFACA1D31449700F62670 /* NeoVimServer.m */,
|
4BDCFACA1D31449700F62670 /* NeoVimServer.m */,
|
||||||
4B854A1C1D31447C00E08DE1 /* main.m */,
|
4B854A1C1D31447C00E08DE1 /* main.m */,
|
||||||
@ -555,6 +579,7 @@
|
|||||||
1929B15B7EDC9B0F40E5E95C /* Logging.h */,
|
1929B15B7EDC9B0F40E5E95C /* Logging.h */,
|
||||||
1929B5C3F2F1CA4113DABFFD /* CocoaCategories.m */,
|
1929B5C3F2F1CA4113DABFFD /* CocoaCategories.m */,
|
||||||
1929BE69CF9AB1A10D0DD4F2 /* CocoaCategories.h */,
|
1929BE69CF9AB1A10D0DD4F2 /* CocoaCategories.h */,
|
||||||
|
1929BFC86BF38D341F2DDCBD /* NeoVim Objects */,
|
||||||
);
|
);
|
||||||
path = NeoVimServer;
|
path = NeoVimServer;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -716,7 +741,9 @@
|
|||||||
4B2A2C091D0352CB0074CE9A /* NeoVimUiBridgeProtocol.h in Headers */,
|
4B2A2C091D0352CB0074CE9A /* NeoVimUiBridgeProtocol.h in Headers */,
|
||||||
4B570DC21D303CAF006EDC21 /* NeoVimAgent.h in Headers */,
|
4B570DC21D303CAF006EDC21 /* NeoVimAgent.h in Headers */,
|
||||||
4BDF641C1D0887C100D47E1D /* TextDrawer.h in Headers */,
|
4BDF641C1D0887C100D47E1D /* TextDrawer.h in Headers */,
|
||||||
4B0E22581D5DEDC700C072E6 /* NeoVimBuffer.h in Headers */,
|
4BDD058B1DBBC50000D1B405 /* NeoVimWindow.h in Headers */,
|
||||||
|
4BDD05851DBBC50000D1B405 /* NeoVimBuffer.h in Headers */,
|
||||||
|
4BDD05881DBBC50000D1B405 /* NeoVimTab.h in Headers */,
|
||||||
4BDCFAEA1D31486E00F62670 /* NeoVimMsgIds.h in Headers */,
|
4BDCFAEA1D31486E00F62670 /* NeoVimMsgIds.h in Headers */,
|
||||||
4B2A2BFA1D0351810074CE9A /* SwiftNeoVim.h in Headers */,
|
4B2A2BFA1D0351810074CE9A /* SwiftNeoVim.h in Headers */,
|
||||||
4B0BCC941D70320C00D3CE65 /* Logger.h in Headers */,
|
4B0BCC941D70320C00D3CE65 /* Logger.h in Headers */,
|
||||||
@ -971,17 +998,20 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
4BDD05891DBBC50000D1B405 /* NeoVimTab.m in Sources */,
|
||||||
4BEE79171D16D3800012EDAA /* CellAttributes.swift in Sources */,
|
4BEE79171D16D3800012EDAA /* CellAttributes.swift in Sources */,
|
||||||
|
4BDD05861DBBC50000D1B405 /* NeoVimBuffer.m in Sources */,
|
||||||
4BF6E29C1D34153C0053FA76 /* KeyUtils.swift in Sources */,
|
4BF6E29C1D34153C0053FA76 /* KeyUtils.swift in Sources */,
|
||||||
4BCADE081D11ED12004DAD0F /* CocoaExtensions.swift in Sources */,
|
4BCADE081D11ED12004DAD0F /* CocoaExtensions.swift in Sources */,
|
||||||
4B401B1A1D046E0600D99EDC /* NeoVimViewDelegate.swift in Sources */,
|
4B401B1A1D046E0600D99EDC /* NeoVimViewDelegate.swift in Sources */,
|
||||||
1929B728262BAA14FC93F6AC /* NeoVimView.swift in Sources */,
|
1929B728262BAA14FC93F6AC /* NeoVimView.swift in Sources */,
|
||||||
4B0E22591D5DF62E00C072E6 /* NeoVimBuffer.m in Sources */,
|
|
||||||
4B570DC31D303CAF006EDC21 /* NeoVimAgent.m in Sources */,
|
4B570DC31D303CAF006EDC21 /* NeoVimAgent.m in Sources */,
|
||||||
4BEE79151D16D2100012EDAA /* DispatchUtils.swift in Sources */,
|
4BEE79151D16D2100012EDAA /* DispatchUtils.swift in Sources */,
|
||||||
4BDF641D1D0887C100D47E1D /* TextDrawer.m in Sources */,
|
4BDF641D1D0887C100D47E1D /* TextDrawer.m in Sources */,
|
||||||
4BDF64251D08CAB000D47E1D /* MMCoreTextView.m in Sources */,
|
4BDF64251D08CAB000D47E1D /* MMCoreTextView.m in Sources */,
|
||||||
|
4BDD058C1DBBC50000D1B405 /* NeoVimWindow.m in Sources */,
|
||||||
1929BEB90DCDAF7A2B68C886 /* ColorUtils.swift in Sources */,
|
1929BEB90DCDAF7A2B68C886 /* ColorUtils.swift in Sources */,
|
||||||
|
4B8AC0441DBCB3A2007CCC9B /* NeoVimObjectsExtensions.swift in Sources */,
|
||||||
4B4192181D0C52D700A0BEB2 /* Grid.swift in Sources */,
|
4B4192181D0C52D700A0BEB2 /* Grid.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -1012,9 +1042,11 @@
|
|||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
4BDCFACB1D31449700F62670 /* NeoVimServer.m in Sources */,
|
4BDCFACB1D31449700F62670 /* NeoVimServer.m in Sources */,
|
||||||
|
4BDD058A1DBBC50000D1B405 /* NeoVimTab.m in Sources */,
|
||||||
4B854A1D1D31447C00E08DE1 /* main.m in Sources */,
|
4B854A1D1D31447C00E08DE1 /* main.m in Sources */,
|
||||||
1929BF81A40B4154D3EA33CE /* server_ui.m in Sources */,
|
1929BF81A40B4154D3EA33CE /* server_ui.m in Sources */,
|
||||||
4B0C905B1D5DED69007753A3 /* NeoVimBuffer.m in Sources */,
|
4BDD058D1DBBC50000D1B405 /* NeoVimWindow.m in Sources */,
|
||||||
|
4BDD05871DBBC50000D1B405 /* NeoVimBuffer.m in Sources */,
|
||||||
1929B1E05C116514C1D3A384 /* CocoaCategories.m in Sources */,
|
1929B1E05C116514C1D3A384 /* CocoaCategories.m in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user