1
1
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:
Tae Won Ha 2016-10-23 19:50:58 +02:00
commit 84aa528e11
No known key found for this signature in database
GPG Key ID: E40743465B5B8B44
19 changed files with 395 additions and 55 deletions

View File

@ -3,7 +3,7 @@
* See LICENSE
*/
#import <Foundation/Foundation.h>
@import Foundation;
@interface NSObject (NeoVimServer)

View File

@ -3,19 +3,19 @@
* See LICENSE
*/
#import <Foundation/Foundation.h>
@import Foundation;
NS_ASSUME_NONNULL_BEGIN
@interface NeoVimBuffer : NSObject <NSCoding>
@property (nonatomic, readonly) NSUInteger handle;
@property (nonatomic, readonly) NSInteger handle;
@property (nonatomic, retain, nullable) NSString *fileName;
@property (nonatomic, readonly, getter=isDirty) bool dirty;
@property (nonatomic, readonly, getter=isCurrent) bool current;
@property (nonatomic, readonly, getter=isTransient) bool transient;
@property (nonatomic, readonly) bool isDirty;
@property (nonatomic, readonly) bool isCurrent;
@property (nonatomic, readonly) bool isTransient;
- (instancetype)initWithHandle:(NSUInteger)handle
- (instancetype)initWithHandle:(NSInteger)handle
fileName:(NSString * _Nullable)fileName
dirty:(bool)dirty
current:(bool)current;
@ -28,3 +28,11 @@ NS_ASSUME_NONNULL_BEGIN
@end
NS_ASSUME_NONNULL_END
@interface NeoVimBuffer (Equality)
- (BOOL)isEqual:(id _Nullable)other;
- (BOOL)isEqualToBuffer:(NeoVimBuffer * _Nullable)buffer;
- (NSUInteger)hash;
@end

View File

@ -7,7 +7,7 @@
@implementation NeoVimBuffer
- (instancetype)initWithHandle:(NSUInteger)handle
- (instancetype)initWithHandle:(NSInteger)handle
fileName:(NSString *)fileName
dirty:(bool)dirty
current:(bool)current {
@ -18,8 +18,8 @@
_handle = handle;
_fileName = fileName;
_dirty = dirty;
_current = current;
_isDirty = dirty;
_isCurrent = current;
return self;
}
@ -28,34 +28,57 @@
self = [super init];
if (self) {
NSNumber *objHandle = [coder decodeObjectForKey:@"handle"];
_handle = objHandle.unsignedIntegerValue;
_handle = objHandle.integerValue;
_fileName = [coder decodeObjectForKey:@"fileName"];
_dirty = [coder decodeBoolForKey:@"dirty"];
_current = [coder decodeBoolForKey:@"current"];
_isDirty = [coder decodeBoolForKey:@"dirty"];
_isCurrent = [coder decodeBoolForKey:@"current"];
}
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 {
[coder encodeObject:@(self.handle) forKey:@"handle"];
[coder encodeObject:self.fileName forKey:@"fileName"];
[coder encodeBool:self.dirty forKey:@"dirty"];
[coder encodeBool:self.current forKey:@"current"];
[coder encodeBool:self.isDirty forKey:@"dirty"];
[coder encodeBool:self.isCurrent forKey:@"current"];
}
- (NSString *)description {
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.dirty=%d", self.dirty];
[description appendFormat:@", self.current=%d", self.current];
[description appendFormat:@", self.dirty=%d", self.isDirty];
[description appendFormat:@", self.current=%d", self.isCurrent];
[description appendString:@">"];
return description;
}
- (bool)isTransient {
if (self.dirty) {
if (self.isDirty) {
return NO;
}

View File

@ -3,7 +3,7 @@
* See LICENSE
*/
#import <Foundation/Foundation.h>
@import Foundation;
typedef NS_ENUM(NSUInteger, NeoVimServerMsgId) {
@ -31,7 +31,6 @@ typedef NS_ENUM(NSUInteger, NeoVimServerMsgId) {
NeoVimServerMsgIdSetForeground,
NeoVimServerMsgIdSetBackground,
NeoVimServerMsgIdSetSpecial,
NeoVimServerMsgIdSuspend,
NeoVimServerMsgIdSetTitle,
NeoVimServerMsgIdSetIcon,
NeoVimServerMsgIdDirtyStatusChanged,
@ -52,11 +51,13 @@ typedef NS_ENUM(NSUInteger, NeoVimAgentMsgId) {
NeoVimAgentMsgIdInputMarked,
NeoVimAgentMsgIdDelete,
NeoVimAgentMsgIdResize,
NeoVimAgentMsgIdSelectWindow,
NeoVimAgentMsgIdQuit,
NeoVimAgentMsgIdGetDirtyDocs,
NeoVimAgentMsgIdGetEscapeFileNames,
NeoVimAgentMsgIdGetBuffers,
NeoVimAgentMsgIdGetTabs,
#ifdef DEBUG
NeoVimAgentDebug1,

View File

@ -3,7 +3,8 @@
* See LICENSE
*/
#import <Foundation/Foundation.h>
@import Foundation;
#import "NeoVimMsgIds.h"

View File

@ -216,6 +216,12 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
return nil;
}
case NeoVimAgentMsgIdSelectWindow: {
int *values = data_to_int_array(data, 1);
server_select_win(values[0]);
return nil;
}
case NeoVimAgentMsgIdQuit:
// 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];
@ -241,6 +247,10 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
return [NSKeyedArchiver archivedDataWithRootObject:server_buffers()];
}
case NeoVimAgentMsgIdGetTabs: {
return [NSKeyedArchiver archivedDataWithRootObject:server_tabs()];
}
default:
return nil;
}

25
NeoVimServer/NeoVimTab.h Normal file
View 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
View 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

View 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

View 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

View File

@ -3,18 +3,20 @@
* See LICENSE
*/
#import <Foundation/Foundation.h>
@import Foundation;
#import <sys/event.h>
#import <uv.h>
#import "NeoVimServer.h"
#import "server_globals.h"
#import "Logging.h"
#import "CocoaCategories.h"
#import <sys/event.h>
#import <uv.h>
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
static void observe_parent_termination(void *arg) {
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);
}
DLOG("Exiting NeoVimServer: Parent terminated.");
ILOG("Exiting NeoVimServer: Parent terminated.");
exit(0);
}

View File

@ -3,7 +3,7 @@
* See LICENSE
*/
#import <Foundation/Foundation.h>
@import Foundation;
@class NeoVimServer;
@ -20,4 +20,6 @@ extern void server_vim_input_marked_text(NSString *markedText);
extern bool server_has_dirty_docs();
extern NSString *server_escaped_filename(NSString *filename);
extern NSArray *server_buffers();
extern NSArray *server_tabs();
extern void server_select_win(int window_handle);
extern void server_quit();

View File

@ -3,12 +3,15 @@
* See LICENSE
*/
#import <Foundation/Foundation.h>
@import Foundation;
#import "Logging.h"
#import "server_globals.h"
#import "NeoVimServer.h"
#import "NeoVimUiBridgeProtocol.h"
#import "NeoVimBuffer.h"
#import "NeoVimWindow.h"
#import "NeoVimTab.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
@ -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() {
bool new_dirty_status = server_has_dirty_docs();
DLOG("dirty status: %d vs. %d", _dirty, new_dirty_status);
@ -720,28 +735,73 @@ NSString *server_escaped_filename(NSString *filename) {
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() {
NSMutableArray <NeoVimBuffer *> *result = [[NSMutableArray new] autorelease];
FOR_ALL_BUFFERS(buf) {
if (buf->b_p_bl == 0) {
NeoVimBuffer *buffer = buffer_for(buf);
if (buffer == nil) {
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];
[buffer release];
}
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() {
DLOG("NeoVimServer exiting...");
exit(0);

View File

@ -8,6 +8,8 @@
@protocol NeoVimUiBridgeProtocol;
@class NeoVimBuffer;
@class NeoVimTab;
@class NeoVimWindow;
NS_ASSUME_NONNULL_BEGIN
@ -35,6 +37,8 @@ NS_ASSUME_NONNULL_BEGIN
- (NSString *)escapedFileName:(NSString *)fileName;
- (NSArray<NSString *> *)escapedFileNames:(NSArray<NSString *> *)fileNames;
- (NSArray<NeoVimBuffer *> *)buffers;
- (NSArray<NeoVimTab*> *)tabs;
- (void)selectWindow:(NeoVimWindow *)window;
@end

View File

@ -8,6 +8,7 @@
#import "NeoVimUiBridgeProtocol.h"
#import "Logger.h"
#import "NeoVimBuffer.h"
#import "NeoVimWindow.h"
static const double qTimeout = 10;
@ -224,6 +225,12 @@ static CFDataRef local_server_callback(CFMessagePortRef local, SInt32 msgid, CFD
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 {
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:fileNames];
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];
}
- (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 {
@autoreleasepool {
CFMessagePortContext localContext = {

View 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 }))
}
}

View File

@ -181,7 +181,8 @@ public class NeoVimView: NSView, NSUserInterfaceValidations {
@IBAction public func debug1(_ sender: AnyObject!) {
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")
}
}
@ -204,7 +205,7 @@ extension NeoVimView {
- returns: nil when for exampls a quickfix panel is open.
*/
public func currentBuffer() -> NeoVimBuffer? {
return self.agent.buffers().filter { $0.current }.first
return self.agent.buffers().filter { $0.isCurrent }.first
}
public func hasDirtyDocs() -> Bool {
@ -213,7 +214,7 @@ extension NeoVimView {
public func isCurrentBufferDirty() -> Bool {
let curBuf = self.currentBuffer()
return curBuf?.dirty ?? true
return curBuf?.isDirty ?? true
}
public func newTab() {
@ -221,9 +222,23 @@ extension NeoVimView {
}
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
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 {
self.open(url, cmd: "e")
} else {

View File

@ -17,3 +17,5 @@ FOUNDATION_EXPORT const unsigned char SwiftNeoVimVersionString[];
#import <SwiftNeoVim/NeoVimAgent.h>
#import <SwiftNeoVim/NeoVimMsgIds.h>
#import <SwiftNeoVim/NeoVimBuffer.h>
#import <SwiftNeoVim/NeoVimTab.h>
#import <SwiftNeoVim/NeoVimWindow.h>

View File

@ -40,9 +40,6 @@
4B0677431DA170D5001A2588 /* WorkspaceTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6423991D8EFE3000FC78C8 /* WorkspaceTool.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, ); }; };
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 */; };
4B22F7F21D7C6B9000929B0E /* ImageAndTextTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B22F7F11D7C6B9000929B0E /* ImageAndTextTableCell.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, ); }; };
4B6B0A781DA2A1A500212D6D /* FileOutlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6B0A771DA2A1A500212D6D /* FileOutlineView.swift */; };
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 */; };
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, ); }; };
@ -113,6 +111,15 @@
4BDCFAEF1D315CF200F62670 /* NeoVimServer in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4B854A1A1D31447C00E08DE1 /* NeoVimServer */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
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, ); }; };
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 */; };
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, ); }; };
@ -266,8 +273,6 @@
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>"; };
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>"; };
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>"; };
@ -308,6 +313,7 @@
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; };
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>"; };
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>"; };
@ -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; };
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; };
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; };
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>"; };
@ -429,6 +441,19 @@
path = resources;
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 */ = {
isa = PBXGroup;
children = (
@ -495,6 +520,7 @@
4B1BB3521D16C5E500CA4FEF /* InputTestView.swift */,
4BEE79141D16D2100012EDAA /* DispatchUtils.swift */,
4BF6E29B1D34153C0053FA76 /* KeyUtils.swift */,
4B8AC0431DBCB3A1007CCC9B /* NeoVimObjectsExtensions.swift */,
);
path = SwiftNeoVim;
sourceTree = "<group>";
@ -545,8 +571,6 @@
4BCF638F1D323CFD00F15CE4 /* nvim */,
4BDCFADC1D3145EA00F62670 /* lib */,
4BDCFAE91D3147A300F62670 /* NeoVimMsgIds.h */,
4B0C90591D5DED69007753A3 /* NeoVimBuffer.h */,
4B0C905A1D5DED69007753A3 /* NeoVimBuffer.m */,
4BDCFAC91D31449700F62670 /* NeoVimServer.h */,
4BDCFACA1D31449700F62670 /* NeoVimServer.m */,
4B854A1C1D31447C00E08DE1 /* main.m */,
@ -555,6 +579,7 @@
1929B15B7EDC9B0F40E5E95C /* Logging.h */,
1929B5C3F2F1CA4113DABFFD /* CocoaCategories.m */,
1929BE69CF9AB1A10D0DD4F2 /* CocoaCategories.h */,
1929BFC86BF38D341F2DDCBD /* NeoVim Objects */,
);
path = NeoVimServer;
sourceTree = "<group>";
@ -716,7 +741,9 @@
4B2A2C091D0352CB0074CE9A /* NeoVimUiBridgeProtocol.h in Headers */,
4B570DC21D303CAF006EDC21 /* NeoVimAgent.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 */,
4B2A2BFA1D0351810074CE9A /* SwiftNeoVim.h in Headers */,
4B0BCC941D70320C00D3CE65 /* Logger.h in Headers */,
@ -971,17 +998,20 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4BDD05891DBBC50000D1B405 /* NeoVimTab.m in Sources */,
4BEE79171D16D3800012EDAA /* CellAttributes.swift in Sources */,
4BDD05861DBBC50000D1B405 /* NeoVimBuffer.m in Sources */,
4BF6E29C1D34153C0053FA76 /* KeyUtils.swift in Sources */,
4BCADE081D11ED12004DAD0F /* CocoaExtensions.swift in Sources */,
4B401B1A1D046E0600D99EDC /* NeoVimViewDelegate.swift in Sources */,
1929B728262BAA14FC93F6AC /* NeoVimView.swift in Sources */,
4B0E22591D5DF62E00C072E6 /* NeoVimBuffer.m in Sources */,
4B570DC31D303CAF006EDC21 /* NeoVimAgent.m in Sources */,
4BEE79151D16D2100012EDAA /* DispatchUtils.swift in Sources */,
4BDF641D1D0887C100D47E1D /* TextDrawer.m in Sources */,
4BDF64251D08CAB000D47E1D /* MMCoreTextView.m in Sources */,
4BDD058C1DBBC50000D1B405 /* NeoVimWindow.m in Sources */,
1929BEB90DCDAF7A2B68C886 /* ColorUtils.swift in Sources */,
4B8AC0441DBCB3A2007CCC9B /* NeoVimObjectsExtensions.swift in Sources */,
4B4192181D0C52D700A0BEB2 /* Grid.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -1012,9 +1042,11 @@
buildActionMask = 2147483647;
files = (
4BDCFACB1D31449700F62670 /* NeoVimServer.m in Sources */,
4BDD058A1DBBC50000D1B405 /* NeoVimTab.m in Sources */,
4B854A1D1D31447C00E08DE1 /* main.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 */,
);
runOnlyForDeploymentPostprocessing = 0;