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
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@import Foundation;
|
||||
|
||||
|
||||
@interface NSObject (NeoVimServer)
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -3,7 +3,8 @@
|
||||
* See LICENSE
|
||||
*/
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
@import Foundation;
|
||||
|
||||
#import "NeoVimMsgIds.h"
|
||||
|
||||
|
||||
|
@ -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
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
|
||||
*/
|
||||
|
||||
#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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 = {
|
||||
|
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!) {
|
||||
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 {
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user