command-t 1.5.1 → 1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.txt +5 -0
- data/doc/command-t.txt +5 -0
- data/ruby/command-t/Makefile +152 -71
- data/ruby/command-t/ext.bundle +0 -0
- data/ruby/command-t/ext.c +2 -16
- data/ruby/command-t/ext.h +1 -2
- data/ruby/command-t/extconf.rb +75 -5
- data/ruby/command-t/match.c +9 -29
- data/ruby/command-t/match.h +12 -5
- data/ruby/command-t/matcher.c +133 -76
- data/ruby/command-t/matcher.h +2 -5
- metadata +26 -40
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 65e092a4101159c349fa3add3f4654a8ea0ce323
|
4
|
+
data.tar.gz: 0da32ec23fd4db0d33aae16ae131201161872e16
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 15aee07c8cbf2e2f6d1dbf5b2da4731adb9a5f359d8a0f4a783d2e9eb998eb56cc4ae2d72d3e4ac4a4bc87a1465f99c63b1dea1f131124869475403c599cf489
|
7
|
+
data.tar.gz: 75ead8da5ba910874aa4172f4c7558e63e4cd95923a9db2daa37ea319a41d5dd8761994117ab81307d9c734085d2dbef49cbd89b1acb8fb2f1552d7a53ce9b3e
|
data/README.txt
CHANGED
@@ -764,6 +764,11 @@ POSSIBILITY OF SUCH DAMAGE.
|
|
764
764
|
|
765
765
|
HISTORY *command-t-history*
|
766
766
|
|
767
|
+
1.6 (16 December 2013)
|
768
|
+
- on systems with POSIX threads (such as OS X and Linux), Command-T will use
|
769
|
+
threads to compute match results in parallel, resulting in a large speed
|
770
|
+
boost that is especially noticeable when navigating large projects
|
771
|
+
|
767
772
|
1.5.1 (23 September 2013)
|
768
773
|
- exclude large benchmark fixture file from source exports (patch from Vít
|
769
774
|
Ondruch)
|
data/doc/command-t.txt
CHANGED
@@ -764,6 +764,11 @@ POSSIBILITY OF SUCH DAMAGE.
|
|
764
764
|
|
765
765
|
HISTORY *command-t-history*
|
766
766
|
|
767
|
+
1.6 (16 December 2013)
|
768
|
+
- on systems with POSIX threads (such as OS X and Linux), Command-T will use
|
769
|
+
threads to compute match results in parallel, resulting in a large speed
|
770
|
+
boost that is especially noticeable when navigating large projects
|
771
|
+
|
767
772
|
1.5.1 (23 September 2013)
|
768
773
|
- exclude large benchmark fixture file from source exports (patch from Vít
|
769
774
|
Ondruch)
|
data/ruby/command-t/Makefile
CHANGED
@@ -1,75 +1,120 @@
|
|
1
1
|
|
2
2
|
SHELL = /bin/sh
|
3
3
|
|
4
|
+
# V=0 quiet, V=1 verbose. other values don't work.
|
5
|
+
V = 0
|
6
|
+
Q1 = $(V:1=)
|
7
|
+
Q = $(Q1:0=@)
|
8
|
+
ECHO1 = $(V:1=@:)
|
9
|
+
ECHO = $(ECHO1:0=@echo)
|
10
|
+
|
4
11
|
#### Start of system configuration section. ####
|
5
12
|
|
6
13
|
srcdir = .
|
7
|
-
topdir = /
|
14
|
+
topdir = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0
|
8
15
|
hdrdir = $(topdir)
|
9
|
-
|
16
|
+
arch_hdrdir = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/universal-darwin13
|
17
|
+
PATH_SEPARATOR = :
|
18
|
+
VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
|
19
|
+
prefix = /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr
|
20
|
+
rubysitearchprefix = $(rubylibprefix)/$(sitearch)
|
21
|
+
rubyarchprefix = $(rubylibprefix)/$(arch)
|
22
|
+
rubylibprefix = $(libdir)/$(RUBY_BASE_NAME)
|
10
23
|
exec_prefix = $(prefix)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
bindir = $(exec_prefix)/bin
|
18
|
-
libexecdir = $(exec_prefix)/libexec
|
19
|
-
sitedir = $(libdir)/ruby/site_ruby
|
20
|
-
htmldir = $(docdir)
|
24
|
+
vendorarchhdrdir = $(vendorhdrdir)/$(sitearch)
|
25
|
+
sitearchhdrdir = $(sitehdrdir)/$(sitearch)
|
26
|
+
rubyarchhdrdir = $(rubyhdrdir)/$(arch)
|
27
|
+
vendorhdrdir = $(rubyhdrdir)/vendor_ruby
|
28
|
+
sitehdrdir = $(rubyhdrdir)/site_ruby
|
29
|
+
rubyhdrdir = $(includedir)/$(RUBY_VERSION_NAME)
|
21
30
|
vendorarchdir = $(vendorlibdir)/$(sitearch)
|
22
|
-
includedir = $(prefix)/include
|
23
|
-
infodir = $(datarootdir)/info
|
24
31
|
vendorlibdir = $(vendordir)/$(ruby_version)
|
25
|
-
|
32
|
+
vendordir = $(rubylibprefix)/vendor_ruby
|
33
|
+
sitearchdir = $(sitelibdir)/$(sitearch)
|
34
|
+
sitelibdir = $(sitedir)/$(ruby_version)
|
35
|
+
sitedir = $(DESTDIR)/Library/Ruby/Site
|
36
|
+
rubyarchdir = $(rubylibdir)/$(arch)
|
37
|
+
rubylibdir = $(rubylibprefix)/$(ruby_version)
|
38
|
+
sitearchincludedir = $(includedir)/$(sitearch)
|
39
|
+
archincludedir = $(includedir)/$(arch)
|
40
|
+
sitearchlibdir = $(libdir)/$(sitearch)
|
41
|
+
archlibdir = $(libdir)/$(arch)
|
42
|
+
ridir = $(datarootdir)/$(RI_BASE_NAME)
|
43
|
+
mandir = $(DESTDIR)/usr/share/man
|
44
|
+
localedir = $(datarootdir)/locale
|
26
45
|
libdir = $(exec_prefix)/lib
|
27
|
-
|
28
|
-
rubylibdir = $(libdir)/ruby/$(ruby_version)
|
29
|
-
docdir = $(datarootdir)/doc/$(PACKAGE)
|
30
|
-
dvidir = $(docdir)
|
31
|
-
vendordir = $(libdir)/ruby/vendor_ruby
|
32
|
-
datarootdir = $(prefix)/share
|
46
|
+
psdir = $(docdir)
|
33
47
|
pdfdir = $(docdir)
|
34
|
-
|
35
|
-
|
36
|
-
|
48
|
+
dvidir = $(docdir)
|
49
|
+
htmldir = $(docdir)
|
50
|
+
infodir = $(DESTDIR)/usr/share/info
|
51
|
+
docdir = $(datarootdir)/doc/$(PACKAGE)
|
52
|
+
oldincludedir = /usr/include
|
53
|
+
includedir = /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk$(prefix)/include
|
37
54
|
localstatedir = $(prefix)/var
|
38
|
-
|
55
|
+
sharedstatedir = $(prefix)/com
|
56
|
+
sysconfdir = $(DESTDIR)/Library/Ruby/Site
|
57
|
+
datadir = $(datarootdir)
|
58
|
+
datarootdir = $(prefix)/share
|
59
|
+
libexecdir = $(exec_prefix)/libexec
|
60
|
+
sbindir = $(exec_prefix)/sbin
|
61
|
+
bindir = $(exec_prefix)/bin
|
62
|
+
archdir = $(rubyarchdir)
|
63
|
+
|
39
64
|
|
40
|
-
CC =
|
65
|
+
CC = xcrun clang
|
66
|
+
CXX = xcrun clang++
|
41
67
|
LIBRUBY = $(LIBRUBY_SO)
|
42
68
|
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
43
69
|
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
|
44
|
-
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)
|
70
|
+
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)
|
71
|
+
empty =
|
72
|
+
OUTFLAG = -o $(empty)
|
73
|
+
COUTFLAG = -o $(empty)
|
45
74
|
|
46
75
|
RUBY_EXTCONF_H =
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
76
|
+
cflags = $(optflags) $(debugflags) $(warnflags)
|
77
|
+
optflags =
|
78
|
+
debugflags = -g
|
79
|
+
warnflags =
|
80
|
+
CCDLFLAGS =
|
81
|
+
CFLAGS = $(CCDLFLAGS) -g -Os -pipe $(ARCH_FLAG)
|
82
|
+
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
|
83
|
+
DEFS = -DPROCESSOR_COUNT=4
|
84
|
+
CPPFLAGS = -DHAVE_PTHREAD_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT $(DEFS) $(cppflags)
|
85
|
+
CXXFLAGS = $(CCDLFLAGS) -g -Os -pipe $(ARCH_FLAG)
|
86
|
+
ldflags = -L. -L/usr/local/lib
|
87
|
+
dldflags = -undefineddynamic_lookup -multiply_definedsuppress
|
88
|
+
ARCH_FLAG =
|
89
|
+
DLDFLAGS = $(ldflags) $(dldflags) $(ARCH_FLAG)
|
90
|
+
LDSHARED = $(CC) -dynamic -bundle
|
91
|
+
LDSHAREDXX = $(CXX) -dynamic -bundle
|
57
92
|
AR = ar
|
58
93
|
EXEEXT =
|
59
94
|
|
60
95
|
RUBY_INSTALL_NAME = ruby
|
61
|
-
RUBY_SO_NAME = ruby
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
96
|
+
RUBY_SO_NAME = ruby.2.0.0
|
97
|
+
RUBYW_INSTALL_NAME =
|
98
|
+
RUBY_VERSION_NAME = $(RUBY_BASE_NAME)-$(ruby_version)
|
99
|
+
RUBYW_BASE_NAME = rubyw
|
100
|
+
RUBY_BASE_NAME = ruby
|
101
|
+
|
102
|
+
arch = universal-darwin13
|
103
|
+
sitearch = $(arch)
|
104
|
+
ruby_version = 2.0.0
|
105
|
+
ruby = $(bindir)/ruby
|
66
106
|
RUBY = $(ruby)
|
107
|
+
ruby_headers = $(hdrdir)/ruby.h $(hdrdir)/ruby/defines.h $(arch_hdrdir)/ruby/config.h
|
108
|
+
|
67
109
|
RM = rm -f
|
110
|
+
RM_RF = $(RUBY) -run -e rm -- -rf
|
111
|
+
RMDIRS = rmdir -p
|
68
112
|
MAKEDIRS = mkdir -p
|
69
113
|
INSTALL = /usr/bin/install -c
|
70
114
|
INSTALL_PROG = $(INSTALL) -m 0755
|
71
115
|
INSTALL_DATA = $(INSTALL) -m 644
|
72
116
|
COPY = cp
|
117
|
+
TOUCH = exit >
|
73
118
|
|
74
119
|
#### End of system configuration section. ####
|
75
120
|
|
@@ -81,76 +126,112 @@ DEFFILE =
|
|
81
126
|
|
82
127
|
CLEANFILES = mkmf.log
|
83
128
|
DISTCLEANFILES =
|
129
|
+
DISTCLEANDIRS =
|
84
130
|
|
85
131
|
extout =
|
86
132
|
extout_prefix =
|
87
133
|
target_prefix =
|
88
134
|
LOCAL_LIBS =
|
89
|
-
LIBS = $(LIBRUBYARG_SHARED) -ldl -lobjc
|
90
|
-
|
135
|
+
LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl -lobjc
|
136
|
+
ORIG_SRCS = ext.c match.c matcher.c
|
137
|
+
SRCS = $(ORIG_SRCS)
|
91
138
|
OBJS = ext.o match.o matcher.o
|
139
|
+
HDRS = $(srcdir)/ext.h $(srcdir)/match.h $(srcdir)/matcher.h $(srcdir)/ruby_compat.h
|
92
140
|
TARGET = ext
|
141
|
+
TARGET_NAME = ext
|
142
|
+
TARGET_ENTRY = Init_$(TARGET_NAME)
|
93
143
|
DLLIB = $(TARGET).bundle
|
94
144
|
EXTSTATIC =
|
95
145
|
STATIC_LIB =
|
96
146
|
|
97
|
-
BINDIR = $(bindir)
|
98
|
-
RUBYCOMMONDIR = $(sitedir)$(target_prefix)
|
99
|
-
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
|
100
|
-
RUBYARCHDIR = $(sitearchdir)$(target_prefix)
|
147
|
+
BINDIR = $(DESTDIR)$(bindir)
|
148
|
+
RUBYCOMMONDIR = $(DESTDIR)$(sitedir)$(target_prefix)
|
149
|
+
RUBYLIBDIR = $(DESTDIR)$(sitelibdir)$(target_prefix)
|
150
|
+
RUBYARCHDIR = $(DESTDIR)$(sitearchdir)$(target_prefix)
|
151
|
+
HDRDIR = $(DESTDIR)$(rubyhdrdir)/ruby$(target_prefix)
|
152
|
+
ARCHHDRDIR = $(DESTDIR)$(rubyhdrdir)/$(arch)/ruby$(target_prefix)
|
101
153
|
|
102
154
|
TARGET_SO = $(DLLIB)
|
103
|
-
CLEANLIBS = $(TARGET).bundle
|
104
|
-
CLEANOBJS = *.o
|
155
|
+
CLEANLIBS = $(TARGET).bundle
|
156
|
+
CLEANOBJS = *.o *.bak
|
105
157
|
|
106
|
-
all:
|
107
|
-
static:
|
158
|
+
all: $(DLLIB)
|
159
|
+
static: $(STATIC_LIB)
|
160
|
+
.PHONY: all install static install-so install-rb
|
161
|
+
.PHONY: clean clean-so clean-static clean-rb
|
108
162
|
|
109
|
-
clean
|
110
|
-
|
163
|
+
clean-static::
|
164
|
+
clean-rb-default::
|
165
|
+
clean-rb::
|
166
|
+
clean-so::
|
167
|
+
clean: clean-so clean-static clean-rb-default clean-rb
|
168
|
+
-$(Q)$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES) .*.time
|
111
169
|
|
112
|
-
distclean
|
113
|
-
|
114
|
-
|
170
|
+
distclean-rb-default::
|
171
|
+
distclean-rb::
|
172
|
+
distclean-so::
|
173
|
+
distclean-static::
|
174
|
+
distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb
|
175
|
+
-$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
176
|
+
-$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
|
177
|
+
-$(Q)$(RMDIRS) $(DISTCLEANDIRS) 2> /dev/null || true
|
115
178
|
|
116
|
-
realclean:
|
179
|
+
realclean: distclean
|
117
180
|
install: install-so install-rb
|
118
181
|
|
119
|
-
install-so: $(RUBYARCHDIR
|
120
|
-
install-so: $(RUBYARCHDIR)/$(DLLIB)
|
121
|
-
$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
|
182
|
+
install-so: $(DLLIB) ./.RUBYARCHDIR.time
|
122
183
|
$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
|
184
|
+
clean-static::
|
185
|
+
-$(Q)$(RM) $(STATIC_LIB)
|
123
186
|
install-rb: pre-install-rb install-rb-default
|
124
187
|
install-rb-default: pre-install-rb-default
|
125
188
|
pre-install-rb: Makefile
|
126
189
|
pre-install-rb-default: Makefile
|
127
|
-
|
128
|
-
$(
|
190
|
+
pre-install-rb-default:
|
191
|
+
$(ECHO) installing default ext libraries
|
192
|
+
./.RUBYARCHDIR.time:
|
193
|
+
$(Q) $(MAKEDIRS) $(RUBYARCHDIR)
|
194
|
+
$(Q) $(TOUCH) $@
|
129
195
|
|
130
196
|
site-install: site-install-so site-install-rb
|
131
197
|
site-install-so: install-so
|
132
198
|
site-install-rb: install-rb
|
133
199
|
|
134
|
-
.SUFFIXES: .c .m .cc .cxx .cpp .C .o
|
200
|
+
.SUFFIXES: .c .m .cc .mm .cxx .cpp .C .o
|
135
201
|
|
136
202
|
.cc.o:
|
137
|
-
$(
|
203
|
+
$(ECHO) compiling $(<)
|
204
|
+
$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
205
|
+
|
206
|
+
.mm.o:
|
207
|
+
$(ECHO) compiling $(<)
|
208
|
+
$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
138
209
|
|
139
210
|
.cxx.o:
|
140
|
-
$(
|
211
|
+
$(ECHO) compiling $(<)
|
212
|
+
$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
141
213
|
|
142
214
|
.cpp.o:
|
143
|
-
$(
|
215
|
+
$(ECHO) compiling $(<)
|
216
|
+
$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
144
217
|
|
145
218
|
.C.o:
|
146
|
-
$(
|
219
|
+
$(ECHO) compiling $(<)
|
220
|
+
$(Q) $(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
147
221
|
|
148
222
|
.c.o:
|
149
|
-
$(
|
223
|
+
$(ECHO) compiling $(<)
|
224
|
+
$(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $<
|
225
|
+
|
226
|
+
.m.o:
|
227
|
+
$(ECHO) compiling $(<)
|
228
|
+
$(Q) $(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $<
|
150
229
|
|
151
230
|
$(DLLIB): $(OBJS) Makefile
|
152
|
-
|
153
|
-
|
231
|
+
$(ECHO) linking shared-object $(DLLIB)
|
232
|
+
-$(Q)$(RM) $(@)
|
233
|
+
$(Q) $(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
|
234
|
+
$(Q) test -z '$(RUBY_CODESIGN)' || codesign -s '$(RUBY_CODESIGN)' -f $@
|
154
235
|
|
155
236
|
|
156
237
|
|
data/ruby/command-t/ext.bundle
CHANGED
Binary file
|
data/ruby/command-t/ext.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright 2010 Wincent Colaiuta. All rights reserved.
|
1
|
+
// Copyright 2010-2013 Wincent Colaiuta. All rights reserved.
|
2
2
|
//
|
3
3
|
// Redistribution and use in source and binary forms, with or without
|
4
4
|
// modification, are permitted provided that the following conditions are met:
|
@@ -21,11 +21,9 @@
|
|
21
21
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
22
|
// POSSIBILITY OF SUCH DAMAGE.
|
23
23
|
|
24
|
-
#include "match.h"
|
25
24
|
#include "matcher.h"
|
26
25
|
|
27
26
|
VALUE mCommandT = 0; // module CommandT
|
28
|
-
VALUE cCommandTMatch = 0; // class CommandT::Match
|
29
27
|
VALUE cCommandTMatcher = 0; // class CommandT::Matcher
|
30
28
|
|
31
29
|
VALUE CommandT_option_from_hash(const char *option, VALUE hash)
|
@@ -44,22 +42,10 @@ void Init_ext()
|
|
44
42
|
// module CommandT
|
45
43
|
mCommandT = rb_define_module("CommandT");
|
46
44
|
|
47
|
-
// class CommandT::Match
|
48
|
-
cCommandTMatch = rb_define_class_under(mCommandT, "Match", rb_cObject);
|
49
|
-
|
50
|
-
// methods
|
51
|
-
rb_define_method(cCommandTMatch, "initialize", CommandTMatch_initialize, -1);
|
52
|
-
rb_define_method(cCommandTMatch, "matches?", CommandTMatch_matches, 0);
|
53
|
-
rb_define_method(cCommandTMatch, "to_s", CommandTMatch_to_s, 0);
|
54
|
-
|
55
|
-
// attributes
|
56
|
-
rb_define_attr(cCommandTMatch, "score", Qtrue, Qfalse); // reader: true, writer: false
|
57
|
-
|
58
45
|
// class CommandT::Matcher
|
59
46
|
cCommandTMatcher = rb_define_class_under(mCommandT, "Matcher", rb_cObject);
|
60
47
|
|
61
48
|
// methods
|
62
49
|
rb_define_method(cCommandTMatcher, "initialize", CommandTMatcher_initialize, -1);
|
63
|
-
rb_define_method(cCommandTMatcher, "sorted_matches_for", CommandTMatcher_sorted_matches_for,
|
64
|
-
rb_define_method(cCommandTMatcher, "matches_for", CommandTMatcher_matches_for, 1);
|
50
|
+
rb_define_method(cCommandTMatcher, "sorted_matches_for", CommandTMatcher_sorted_matches_for, -1);
|
65
51
|
}
|
data/ruby/command-t/ext.h
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright 2010 Wincent Colaiuta. All rights reserved.
|
1
|
+
// Copyright 2010-2013 Wincent Colaiuta. All rights reserved.
|
2
2
|
//
|
3
3
|
// Redistribution and use in source and binary forms, with or without
|
4
4
|
// modification, are permitted provided that the following conditions are met:
|
@@ -24,7 +24,6 @@
|
|
24
24
|
#include <ruby.h>
|
25
25
|
|
26
26
|
extern VALUE mCommandT; // module CommandT
|
27
|
-
extern VALUE cCommandTMatch; // class CommandT::Match
|
28
27
|
extern VALUE cCommandTMatcher; // class CommandT::Matcher
|
29
28
|
|
30
29
|
// Encapsulates common pattern of checking for an option in an optional
|
data/ruby/command-t/extconf.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright 2010 Wincent Colaiuta. All rights reserved.
|
1
|
+
# Copyright 2010-2013 Wincent Colaiuta. All rights reserved.
|
2
2
|
#
|
3
3
|
# Redistribution and use in source and binary forms, with or without
|
4
4
|
# modification, are permitted provided that the following conditions are met:
|
@@ -23,12 +23,82 @@
|
|
23
23
|
|
24
24
|
require 'mkmf'
|
25
25
|
|
26
|
-
def
|
27
|
-
|
28
|
-
|
26
|
+
def header(item)
|
27
|
+
unless find_header(item)
|
28
|
+
puts "couldn't find #{item} (required)"
|
29
|
+
exit 1
|
30
|
+
end
|
29
31
|
end
|
30
32
|
|
33
|
+
# Stolen, with minor modifications, from:
|
34
|
+
#
|
35
|
+
# https://github.com/grosser/parallel/blob/d11e4a3c8c1a2091a0cc2896befa71a94a88d1e7/lib/parallel.rb
|
36
|
+
#
|
37
|
+
# Number of processors seen by the OS and used for process scheduling.
|
38
|
+
#
|
39
|
+
# * AIX: /usr/sbin/pmcycles (AIX 5+), /usr/sbin/lsdev
|
40
|
+
# * BSD: /sbin/sysctl
|
41
|
+
# * Cygwin: /proc/cpuinfo
|
42
|
+
# * Darwin: /usr/bin/hwprefs, /usr/sbin/sysctl
|
43
|
+
# * HP-UX: /usr/sbin/ioscan
|
44
|
+
# * IRIX: /usr/sbin/sysconf
|
45
|
+
# * Linux: /proc/cpuinfo
|
46
|
+
# * Minix 3+: /proc/cpuinfo
|
47
|
+
# * Solaris: /usr/sbin/psrinfo
|
48
|
+
# * Tru64 UNIX: /usr/sbin/psrinfo
|
49
|
+
# * UnixWare: /usr/sbin/psrinfo
|
50
|
+
#
|
51
|
+
def processor_count
|
52
|
+
os_name = RbConfig::CONFIG['target_os']
|
53
|
+
if os_name =~ /mingw|mswin/
|
54
|
+
require 'win32ole'
|
55
|
+
result = WIN32OLE.connect('winmgmts://').ExecQuery(
|
56
|
+
'select NumberOfLogicalProcessors from Win32_Processor')
|
57
|
+
result.to_enum.collect(&:NumberOfLogicalProcessors).reduce(:+)
|
58
|
+
elsif File.readable?('/proc/cpuinfo')
|
59
|
+
IO.read('/proc/cpuinfo').scan(/^processor/).size
|
60
|
+
elsif File.executable?('/usr/bin/hwprefs')
|
61
|
+
IO.popen(%w[/usr/bin/hwprefs thread_count]).read.to_i
|
62
|
+
elsif File.executable?('/usr/sbin/psrinfo')
|
63
|
+
IO.popen('/usr/sbin/psrinfo').read.scan(/^.*on-*line/).size
|
64
|
+
elsif File.executable?('/usr/sbin/ioscan')
|
65
|
+
IO.popen(%w[/usr/sbin/ioscan -kC processor]) do |out|
|
66
|
+
out.read.scan(/^.*processor/).size
|
67
|
+
end
|
68
|
+
elsif File.executable?('/usr/sbin/pmcycles')
|
69
|
+
IO.popen(%w[/usr/sbin/pmcycles -m]).read.count("\n")
|
70
|
+
elsif File.executable?('/usr/sbin/lsdev')
|
71
|
+
IO.popen(%w[/usr/sbin/lsdev -Cc processor -S 1]).read.count("\n")
|
72
|
+
elsif File.executable?('/usr/sbin/sysconf') and os_name =~ /irix/i
|
73
|
+
IO.popen(%w[/usr/sbin/sysconf NPROC_ONLN]).read.to_i
|
74
|
+
elsif File.executable?('/usr/sbin/sysctl')
|
75
|
+
IO.popen(%w[/usr/sbin/sysctl -n hw.ncpu]).read.to_i
|
76
|
+
elsif File.executable?('/sbin/sysctl')
|
77
|
+
IO.popen(%w[/sbin/sysctl -n hw.ncpu]).read.to_i
|
78
|
+
else
|
79
|
+
puts 'Unknown platform: ' + RbConfig::CONFIG['target_os']
|
80
|
+
puts 'Assuming 1 processor.'
|
81
|
+
1
|
82
|
+
end
|
83
|
+
rescue => e
|
84
|
+
puts "#{e}: assuming 1 processor."
|
85
|
+
1
|
86
|
+
end
|
87
|
+
|
88
|
+
# mandatory headers
|
89
|
+
header('float.h')
|
90
|
+
header('ruby.h')
|
91
|
+
header('stdlib.h')
|
92
|
+
header('string.h')
|
93
|
+
|
94
|
+
# optional headers
|
95
|
+
have_header('pthread.h') # sets HAVE_PTHREAD_H if found
|
96
|
+
|
31
97
|
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
|
32
98
|
|
33
|
-
|
99
|
+
count = processor_count
|
100
|
+
count = 1 if count < 0 # sanity check
|
101
|
+
count = 32 if count > 32 # sanity check
|
102
|
+
RbConfig::MAKEFILE_CONFIG['DEFS'] += "-DPROCESSOR_COUNT=#{count}"
|
103
|
+
|
34
104
|
create_makefile('ext')
|
data/ruby/command-t/match.c
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
22
|
// POSSIBILITY OF SUCH DAMAGE.
|
23
23
|
|
24
|
-
#include
|
24
|
+
#include <float.h> /* for DBL_MAX */
|
25
25
|
#include "match.h"
|
26
26
|
#include "ext.h"
|
27
27
|
#include "ruby_compat.h"
|
@@ -146,20 +146,12 @@ memoize:
|
|
146
146
|
return score;
|
147
147
|
}
|
148
148
|
|
149
|
-
|
150
|
-
VALUE
|
149
|
+
void calculate_match(VALUE str,
|
150
|
+
VALUE needle,
|
151
|
+
VALUE always_show_dot_files,
|
152
|
+
VALUE never_show_dot_files,
|
153
|
+
match_t *out)
|
151
154
|
{
|
152
|
-
// process arguments: 2 mandatory, 1 optional
|
153
|
-
VALUE str, needle, options;
|
154
|
-
if (rb_scan_args(argc, argv, "21", &str, &needle, &options) == 2)
|
155
|
-
options = Qnil;
|
156
|
-
str = StringValue(str);
|
157
|
-
needle = StringValue(needle); // already downcased by caller
|
158
|
-
|
159
|
-
// check optional options hash for overrides
|
160
|
-
VALUE always_show_dot_files = CommandT_option_from_hash("always_show_dot_files", options);
|
161
|
-
VALUE never_show_dot_files = CommandT_option_from_hash("never_show_dot_files", options);
|
162
|
-
|
163
155
|
matchinfo_t m;
|
164
156
|
m.haystack_p = RSTRING_PTR(str);
|
165
157
|
m.haystack_len = RSTRING_LEN(str);
|
@@ -198,19 +190,7 @@ VALUE CommandTMatch_initialize(int argc, VALUE *argv, VALUE self)
|
|
198
190
|
score = recursive_match(&m, 0, 0, 0, 0.0);
|
199
191
|
}
|
200
192
|
|
201
|
-
//
|
202
|
-
|
203
|
-
|
204
|
-
return Qnil;
|
205
|
-
}
|
206
|
-
|
207
|
-
VALUE CommandTMatch_matches(VALUE self)
|
208
|
-
{
|
209
|
-
double score = NUM2DBL(rb_iv_get(self, "@score"));
|
210
|
-
return score > 0 ? Qtrue : Qfalse;
|
211
|
-
}
|
212
|
-
|
213
|
-
VALUE CommandTMatch_to_s(VALUE self)
|
214
|
-
{
|
215
|
-
return rb_iv_get(self, "@str");
|
193
|
+
// final book-keeping
|
194
|
+
out->path = str;
|
195
|
+
out->score = score;
|
216
196
|
}
|
data/ruby/command-t/match.h
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright 2010 Wincent Colaiuta. All rights reserved.
|
1
|
+
// Copyright 2010-2013 Wincent Colaiuta. All rights reserved.
|
2
2
|
//
|
3
3
|
// Redistribution and use in source and binary forms, with or without
|
4
4
|
// modification, are permitted provided that the following conditions are met:
|
@@ -23,7 +23,14 @@
|
|
23
23
|
|
24
24
|
#include <ruby.h>
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
// struct for representing an individual match
|
27
|
+
typedef struct {
|
28
|
+
VALUE path;
|
29
|
+
double score;
|
30
|
+
} match_t;
|
31
|
+
|
32
|
+
extern void calculate_match(VALUE str,
|
33
|
+
VALUE needle,
|
34
|
+
VALUE always_show_dot_files,
|
35
|
+
VALUE never_show_dot_files,
|
36
|
+
match_t *out);
|
data/ruby/command-t/matcher.c
CHANGED
@@ -21,25 +21,30 @@
|
|
21
21
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
22
|
// POSSIBILITY OF SUCH DAMAGE.
|
23
23
|
|
24
|
-
#include <stdlib.h>
|
25
|
-
#include <string.h>
|
24
|
+
#include <stdlib.h> /* for qsort() */
|
25
|
+
#include <string.h> /* for strncmp() */
|
26
26
|
#include "matcher.h"
|
27
|
+
#include "match.h"
|
27
28
|
#include "ext.h"
|
28
29
|
#include "ruby_compat.h"
|
29
30
|
|
31
|
+
// order matters; we want this to be evaluated only after ruby.h
|
32
|
+
#ifdef HAVE_PTHREAD_H
|
33
|
+
#include <pthread.h> /* for pthread_create, pthread_join etc */
|
34
|
+
#endif
|
35
|
+
|
30
36
|
// comparison function for use with qsort
|
31
|
-
int
|
37
|
+
int cmp_alpha(const void *a, const void *b)
|
32
38
|
{
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
VALUE
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
int order = 0;
|
39
|
+
match_t a_match = *(match_t *)a;
|
40
|
+
match_t b_match = *(match_t *)b;
|
41
|
+
VALUE a_str = a_match.path;
|
42
|
+
VALUE b_str = b_match.path;
|
43
|
+
char *a_p = RSTRING_PTR(a_str);
|
44
|
+
long a_len = RSTRING_LEN(a_str);
|
45
|
+
char *b_p = RSTRING_PTR(b_str);
|
46
|
+
long b_len = RSTRING_LEN(b_str);
|
47
|
+
int order = 0;
|
43
48
|
|
44
49
|
if (a_len > b_len) {
|
45
50
|
order = strncmp(a_p, b_p, b_len);
|
@@ -57,20 +62,17 @@ int comp_alpha(const void *a, const void *b)
|
|
57
62
|
}
|
58
63
|
|
59
64
|
// comparison function for use with qsort
|
60
|
-
int
|
65
|
+
int cmp_score(const void *a, const void *b)
|
61
66
|
{
|
62
|
-
|
63
|
-
|
64
|
-
ID score = rb_intern("score");
|
65
|
-
double a_score = RFLOAT_VALUE(rb_funcall(a_val, score, 0));
|
66
|
-
double b_score = RFLOAT_VALUE(rb_funcall(b_val, score, 0));
|
67
|
+
match_t a_match = *(match_t *)a;
|
68
|
+
match_t b_match = *(match_t *)b;
|
67
69
|
|
68
|
-
if (
|
70
|
+
if (a_match.score > b_match.score)
|
69
71
|
return -1; // a scores higher, a should appear sooner
|
70
|
-
else if (
|
72
|
+
else if (a_match.score < b_match.score)
|
71
73
|
return 1; // b scores higher, a should appear later
|
72
74
|
else
|
73
|
-
return
|
75
|
+
return cmp_alpha(a, b);
|
74
76
|
}
|
75
77
|
|
76
78
|
VALUE CommandTMatcher_initialize(int argc, VALUE *argv, VALUE self)
|
@@ -87,12 +89,7 @@ VALUE CommandTMatcher_initialize(int argc, VALUE *argv, VALUE self)
|
|
87
89
|
|
88
90
|
// check optional options hash for overrides
|
89
91
|
VALUE always_show_dot_files = CommandT_option_from_hash("always_show_dot_files", options);
|
90
|
-
if (always_show_dot_files != Qtrue)
|
91
|
-
always_show_dot_files = Qfalse;
|
92
|
-
|
93
92
|
VALUE never_show_dot_files = CommandT_option_from_hash("never_show_dot_files", options);
|
94
|
-
if (never_show_dot_files != Qtrue)
|
95
|
-
never_show_dot_files = Qfalse;
|
96
93
|
|
97
94
|
rb_iv_set(self, "@always_show_dot_files", always_show_dot_files);
|
98
95
|
rb_iv_set(self, "@never_show_dot_files", never_show_dot_files);
|
@@ -100,70 +97,130 @@ VALUE CommandTMatcher_initialize(int argc, VALUE *argv, VALUE self)
|
|
100
97
|
return Qnil;
|
101
98
|
}
|
102
99
|
|
103
|
-
|
100
|
+
typedef struct {
|
101
|
+
int thread_count;
|
102
|
+
int thread_index;
|
103
|
+
match_t *matches;
|
104
|
+
long path_count;
|
105
|
+
VALUE paths;
|
106
|
+
VALUE abbrev;
|
107
|
+
VALUE always_show_dot_files;
|
108
|
+
VALUE never_show_dot_files;
|
109
|
+
} thread_args_t;
|
110
|
+
|
111
|
+
void *match_thread(void *thread_args)
|
104
112
|
{
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
(RSTRING_LEN(abbrev) == 1 && RSTRING_PTR(abbrev)[0] == '.'))
|
114
|
-
// alphabetic order if search string is only "" or "."
|
115
|
-
qsort(RARRAY_PTR(matches), RARRAY_LEN(matches), sizeof(VALUE), comp_alpha);
|
116
|
-
else
|
117
|
-
// for all other non-empty search strings, sort by score
|
118
|
-
qsort(RARRAY_PTR(matches), RARRAY_LEN(matches), sizeof(VALUE), comp_score);
|
119
|
-
|
120
|
-
// apply optional limit option
|
121
|
-
long limit = NIL_P(limit_option) ? 0 : NUM2LONG(limit_option);
|
122
|
-
if (limit == 0 || RARRAY_LEN(matches) < limit)
|
123
|
-
limit = RARRAY_LEN(matches);
|
124
|
-
|
125
|
-
// will return an array of strings, not an array of Match objects
|
126
|
-
for (long i = 0; i < limit; i++) {
|
127
|
-
VALUE str = rb_funcall(RARRAY_PTR(matches)[i], rb_intern("to_s"), 0);
|
128
|
-
RARRAY_PTR(matches)[i] = str;
|
113
|
+
thread_args_t *args = (thread_args_t *)thread_args;
|
114
|
+
for (long i = args->thread_index; i < args->path_count; i += args->thread_count) {
|
115
|
+
VALUE path = RARRAY_PTR(args->paths)[i];
|
116
|
+
calculate_match(path,
|
117
|
+
args->abbrev,
|
118
|
+
args->always_show_dot_files,
|
119
|
+
args->never_show_dot_files,
|
120
|
+
&args->matches[i]);
|
129
121
|
}
|
130
122
|
|
131
|
-
|
132
|
-
if (limit < RARRAY_LEN(matches))
|
133
|
-
(void)rb_funcall(matches, rb_intern("slice!"), 2, LONG2NUM(limit),
|
134
|
-
LONG2NUM(RARRAY_LEN(matches) - limit));
|
135
|
-
|
136
|
-
return matches;
|
123
|
+
return NULL;
|
137
124
|
}
|
138
125
|
|
139
|
-
|
126
|
+
|
127
|
+
VALUE CommandTMatcher_sorted_matches_for(int argc, VALUE *argv, VALUE self)
|
140
128
|
{
|
129
|
+
// process arguments: 1 mandatory, 1 optional
|
130
|
+
VALUE abbrev, options;
|
131
|
+
|
132
|
+
if (rb_scan_args(argc, argv, "11", &abbrev, &options) == 1)
|
133
|
+
options = Qnil;
|
141
134
|
if (NIL_P(abbrev))
|
142
135
|
rb_raise(rb_eArgError, "nil abbrev");
|
143
136
|
|
144
|
-
|
137
|
+
abbrev = StringValue(abbrev);
|
138
|
+
abbrev = rb_funcall(abbrev, rb_intern("downcase"), 0);
|
139
|
+
|
140
|
+
// check optional options has for overrides
|
141
|
+
VALUE limit_option = CommandT_option_from_hash("limit", options);
|
142
|
+
|
143
|
+
// get unsorted matches
|
145
144
|
VALUE scanner = rb_iv_get(self, "@scanner");
|
145
|
+
VALUE paths = rb_funcall(scanner, rb_intern("paths"), 0);
|
146
146
|
VALUE always_show_dot_files = rb_iv_get(self, "@always_show_dot_files");
|
147
147
|
VALUE never_show_dot_files = rb_iv_get(self, "@never_show_dot_files");
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
148
|
+
|
149
|
+
long path_count = RARRAY_LEN(paths);
|
150
|
+
match_t *matches = malloc(path_count * sizeof(match_t));
|
151
|
+
if (!matches)
|
152
|
+
rb_raise(rb_eNoMemError, "memory allocation failed");
|
153
|
+
|
154
|
+
int err;
|
155
|
+
int thread_count = 1;
|
156
|
+
|
157
|
+
#ifdef HAVE_PTHREAD_H
|
158
|
+
#define THREAD_THRESHOLD 1000 /* avoid the overhead of threading when search space is small */
|
159
|
+
if (path_count < THREAD_THRESHOLD)
|
160
|
+
thread_count = 1;
|
161
|
+
else
|
162
|
+
thread_count = PROCESSOR_COUNT; // passed in as preprocessor macro
|
163
|
+
pthread_t *threads = malloc(sizeof(pthread_t) * thread_count);
|
164
|
+
if (!threads)
|
165
|
+
rb_raise(rb_eNoMemError, "memory allocation failed");
|
166
|
+
#endif
|
167
|
+
|
168
|
+
thread_args_t *thread_args = malloc(sizeof(thread_args_t) * thread_count);
|
169
|
+
if (!thread_args)
|
170
|
+
rb_raise(rb_eNoMemError, "memory allocation failed");
|
171
|
+
for (int i = 0; i < thread_count; i++) {
|
172
|
+
thread_args[i].thread_count = thread_count;
|
173
|
+
thread_args[i].thread_index = i;
|
174
|
+
thread_args[i].matches = matches;
|
175
|
+
thread_args[i].path_count = path_count;
|
176
|
+
thread_args[i].paths = paths;
|
177
|
+
thread_args[i].abbrev = abbrev;
|
178
|
+
thread_args[i].always_show_dot_files = always_show_dot_files;
|
179
|
+
thread_args[i].never_show_dot_files = never_show_dot_files;
|
180
|
+
|
181
|
+
#ifdef HAVE_PTHREAD_H
|
182
|
+
if (i == thread_count - 1) {
|
183
|
+
#endif
|
184
|
+
// for the last "worker", we'll just use the main thread
|
185
|
+
(void)match_thread(&thread_args[i]);
|
186
|
+
#ifdef HAVE_PTHREAD_H
|
187
|
+
} else {
|
188
|
+
err = pthread_create(&threads[i], NULL, match_thread, (void *)&thread_args[i]);
|
189
|
+
if (err != 0)
|
190
|
+
rb_raise(rb_eSystemCallError, "pthread_create() failure (%d)", err);
|
191
|
+
}
|
192
|
+
#endif
|
156
193
|
}
|
157
194
|
|
158
|
-
|
159
|
-
|
195
|
+
#ifdef HAVE_PTHREAD_H
|
196
|
+
for (int i = 0; i < thread_count - 1; i++) {
|
197
|
+
err = pthread_join(threads[i], NULL);
|
198
|
+
if (err != 0)
|
199
|
+
rb_raise(rb_eSystemCallError, "pthread_join() failure (%d)", err);
|
200
|
+
}
|
201
|
+
free(threads);
|
202
|
+
#endif
|
203
|
+
|
204
|
+
if (RSTRING_LEN(abbrev) == 0 ||
|
205
|
+
(RSTRING_LEN(abbrev) == 1 && RSTRING_PTR(abbrev)[0] == '.'))
|
206
|
+
// alphabetic order if search string is only "" or "."
|
207
|
+
qsort(matches, path_count, sizeof(match_t), cmp_alpha);
|
208
|
+
else
|
209
|
+
// for all other non-empty search strings, sort by score
|
210
|
+
qsort(matches, path_count, sizeof(match_t), cmp_score);
|
160
211
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
212
|
+
VALUE results = rb_ary_new();
|
213
|
+
|
214
|
+
long limit = NIL_P(limit_option) ? 0 : NUM2LONG(limit_option);
|
215
|
+
if (limit == 0)
|
216
|
+
limit = path_count;
|
217
|
+
for (long i = 0; i < path_count && limit > 0; i++) {
|
218
|
+
if (matches[i].score > 0.0) {
|
219
|
+
rb_funcall(results, rb_intern("push"), 1, matches[i].path);
|
220
|
+
limit--;
|
221
|
+
}
|
166
222
|
}
|
167
223
|
|
168
|
-
|
224
|
+
free(matches);
|
225
|
+
return results;
|
169
226
|
}
|
data/ruby/command-t/matcher.h
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
// Copyright 2010 Wincent Colaiuta. All rights reserved.
|
1
|
+
// Copyright 2010-2013 Wincent Colaiuta. All rights reserved.
|
2
2
|
//
|
3
3
|
// Redistribution and use in source and binary forms, with or without
|
4
4
|
// modification, are permitted provided that the following conditions are met:
|
@@ -24,7 +24,4 @@
|
|
24
24
|
#include <ruby.h>
|
25
25
|
|
26
26
|
extern VALUE CommandTMatcher_initialize(int argc, VALUE *argv, VALUE self);
|
27
|
-
extern VALUE CommandTMatcher_sorted_matches_for(
|
28
|
-
|
29
|
-
// most likely the function will be subsumed by the sorted_matcher_for function
|
30
|
-
extern VALUE CommandTMatcher_matches_for(VALUE self, VALUE abbrev);
|
27
|
+
extern VALUE CommandTMatcher_sorted_matches_for(int argc, VALUE *argv, VALUE self);
|
metadata
CHANGED
@@ -1,32 +1,26 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: command-t
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 1
|
7
|
-
- 5
|
8
|
-
- 1
|
9
|
-
version: 1.5.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.6'
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
6
|
+
authors:
|
12
7
|
- Wincent Colaiuta
|
13
8
|
autorequire:
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
|
-
|
17
|
-
date: 2011-01-05 00:00:00 -08:00
|
18
|
-
default_executable:
|
11
|
+
date: 2013-12-16 00:00:00.000000000 Z
|
19
12
|
dependencies: []
|
20
|
-
|
21
|
-
|
13
|
+
description: |2
|
14
|
+
Command-T provides a fast, intuitive mechanism for opening files with a
|
15
|
+
minimal number of keystrokes. Its full functionality is only available when
|
16
|
+
installed as a Vim plug-in, but it is also made available as a RubyGem so
|
17
|
+
that other applications can make use of its searching algorithm.
|
22
18
|
email: win@wincent.com
|
23
19
|
executables: []
|
24
|
-
|
25
|
-
extensions:
|
20
|
+
extensions:
|
26
21
|
- ruby/command-t/extconf.rb
|
27
22
|
extra_rdoc_files: []
|
28
|
-
|
29
|
-
files:
|
23
|
+
files:
|
30
24
|
- README.txt
|
31
25
|
- LICENSE
|
32
26
|
- Gemfile
|
@@ -63,35 +57,27 @@ files:
|
|
63
57
|
- ruby/command-t/vim.rb
|
64
58
|
- doc/command-t.txt
|
65
59
|
- plugin/command-t.vim
|
66
|
-
has_rdoc: true
|
67
60
|
homepage: https://wincent.com/products/command-t
|
68
61
|
licenses: []
|
69
|
-
|
62
|
+
metadata: {}
|
70
63
|
post_install_message:
|
71
64
|
rdoc_options: []
|
72
|
-
|
73
|
-
require_paths:
|
65
|
+
require_paths:
|
74
66
|
- ruby
|
75
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
segments:
|
87
|
-
- 0
|
88
|
-
version: "0"
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
89
77
|
requirements: []
|
90
|
-
|
91
78
|
rubyforge_project:
|
92
|
-
rubygems_version:
|
79
|
+
rubygems_version: 2.0.3
|
93
80
|
signing_key:
|
94
|
-
specification_version:
|
81
|
+
specification_version: 4
|
95
82
|
summary: The Command-T plug-in for VIM.
|
96
83
|
test_files: []
|
97
|
-
|