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 * See LICENSE
*/ */
#import <Foundation/Foundation.h> @import Foundation;
@interface NSObject (NeoVimServer) @interface NSObject (NeoVimServer)

View File

@ -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

View File

@ -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;
} }

View File

@ -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,

View File

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

View File

@ -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
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 * 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);
} }

View File

@ -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();

View File

@ -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);

View File

@ -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

View File

@ -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 = {

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!) { @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 {

View File

@ -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>

View File

@ -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;