command-t 1.6 → 1.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.txt +43 -10
- data/Rakefile +2 -2
- data/doc/command-t.txt +43 -10
- data/ruby/command-t/Makefile +1 -1
- data/ruby/command-t/controller.rb +6 -1
- data/ruby/command-t/ext.bundle +0 -0
- data/ruby/command-t/extconf.rb +0 -60
- data/ruby/command-t/matcher.c +2 -3
- data/ruby/command-t/util.rb +112 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64b588caab585d019ca8114678e3fa6f7f3642c5
|
4
|
+
data.tar.gz: 26625225d34e10161297f8722d282dfcd0f7541c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18c544603a39fd969fa1abcb81d8e42d9508fea862d32c5788b87a818aa45ae8194d4e07b5a7922d537e2bb3518024f27d409833faa724253f2cf203e74d5e22
|
7
|
+
data.tar.gz: bc5e0f40d2194b9d38c1971debd033ec1462cfe4381a6ce59e9645702bbd6b003827246233fe69c9632c8082f3298ff53fdadd30be80d5bdae45a0b69058c971
|
data/README.txt
CHANGED
@@ -68,8 +68,11 @@ If your Vim lacks support you'll see an error message like this:
|
|
68
68
|
|
69
69
|
E319: Sorry, the command is not available in this version
|
70
70
|
|
71
|
-
The version of Vim distributed with
|
72
|
-
|
71
|
+
The version of Vim distributed with OS X may not include Ruby support (for
|
72
|
+
exmaple, Snow Leopard, which was the current version of OS X when Command-T
|
73
|
+
was first released, did not support Ruby in the system Vim, but the current
|
74
|
+
version of OS X at the time of writing, Mavericks, does). All recent versions
|
75
|
+
of MacVim come with Ruby support; it is available from:
|
73
76
|
|
74
77
|
http://github.com/b4winckler/macvim/downloads
|
75
78
|
|
@@ -85,8 +88,14 @@ compatible Ruby install. "Compatible" means the same version as Vim itself
|
|
85
88
|
links against. If you use a different version then Command-T is unlikely
|
86
89
|
to work (see TROUBLE-SHOOTING below).
|
87
90
|
|
88
|
-
On
|
89
|
-
versions of MacVim (the 7.2 snapshots and 7.3) are linked
|
91
|
+
On OS X Snow Leopard, Lion and Mountain Lion, the system comes with Ruby 1.8.7
|
92
|
+
and all recent versions of MacVim (the 7.2 snapshots and 7.3) are linked
|
93
|
+
against it.
|
94
|
+
|
95
|
+
On OS X Mavericks, the default system ruby is 2.0, but MacVim continues to
|
96
|
+
link against 1.8.7, which is also present on the system at:
|
97
|
+
|
98
|
+
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
|
90
99
|
|
91
100
|
On Linux and similar platforms, the linked version of Ruby will depend on
|
92
101
|
your distribution. You can usually find this out by examining the
|
@@ -112,8 +121,8 @@ it to work responsively even on directory hierarchies containing enormous
|
|
112
121
|
numbers of files. As such, a C compiler is required in order to build the
|
113
122
|
extension and complete the installation.
|
114
123
|
|
115
|
-
On
|
116
|
-
|
124
|
+
On OS X, this can be obtained by installing the Xcode Tools from the App
|
125
|
+
Store.
|
117
126
|
|
118
127
|
On Windows, the RubyInstaller Development Kit can be used to conveniently
|
119
128
|
install the necessary tool chain:
|
@@ -129,8 +138,12 @@ folder.
|
|
129
138
|
|
130
139
|
INSTALLATION *command-t-installation*
|
131
140
|
|
132
|
-
Command-T
|
133
|
-
|
141
|
+
You can install Command-T by obtaining the source files and building the C
|
142
|
+
extension. The recommended way to get the source is by using a plug-in
|
143
|
+
management system such as Pathogen (see |command-t-pathogen|).
|
144
|
+
|
145
|
+
Command-T is also distributed as a "vimball" which means that it can be
|
146
|
+
installed by opening it in Vim and then sourcing it:
|
134
147
|
|
135
148
|
:e command-t.vba
|
136
149
|
:so %
|
@@ -156,6 +169,14 @@ of the following commands:
|
|
156
169
|
rvm use system
|
157
170
|
rbenv local system
|
158
171
|
|
172
|
+
Note: If you are on OS X Mavericks and compiling against MacVim, the default
|
173
|
+
system Ruby is 2.0 but MacVim still links against the older 1.8.7 Ruby that is
|
174
|
+
also bundled with the system; in this case the build command becomes:
|
175
|
+
|
176
|
+
cd ~/.vim/ruby/command-t
|
177
|
+
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
|
178
|
+
make
|
179
|
+
|
159
180
|
Note: Make sure you compile targeting the same architecture Vim was built for.
|
160
181
|
For instance, MacVim binaries are built for i386, but sometimes GCC compiles
|
161
182
|
for x86_64. First you have to check the platform Vim was built for:
|
@@ -170,6 +191,10 @@ and make sure you use the correct ARCHFLAGS during compilation:
|
|
170
191
|
export ARCHFLAGS="-arch i386"
|
171
192
|
make
|
172
193
|
|
194
|
+
Note: If you are on Fedora 17+, you can install Command-T from the system
|
195
|
+
repository with:
|
196
|
+
|
197
|
+
su -c 'yum install vim-command-t'
|
173
198
|
|
174
199
|
MANAGING USING PATHOGEN *command-t-pathogen*
|
175
200
|
|
@@ -224,7 +249,7 @@ linked against at compile time. For example, if one is 32-bit and the other is
|
|
224
249
|
64-bit, or one is from the Ruby 1.9 series and the other is from the 1.8
|
225
250
|
series, then the plug-in is not likely to work.
|
226
251
|
|
227
|
-
As such, on
|
252
|
+
As such, on OS X, I recommend using the standard Ruby that comes with the
|
228
253
|
system (currently 1.8.7) along with the latest version of MacVim (currently
|
229
254
|
version 7.3). If you wish to use custom builds of Ruby or of MacVim (not
|
230
255
|
recommmended) then you will have to take extra care to ensure that the exact
|
@@ -652,6 +677,7 @@ Command-T is written and maintained by Wincent Colaiuta <win@wincent.com>.
|
|
652
677
|
Other contributors that have submitted patches include (in alphabetical
|
653
678
|
order):
|
654
679
|
|
680
|
+
Andy Waite Matthew Todd Steven Moazami
|
655
681
|
Anthony Panozzo Mike Lundy Sung Pae
|
656
682
|
Daniel Hahler Nate Kane Thomas Pelletier
|
657
683
|
Felix Tjandrawibawa Nicholas Alpi Victor Hugo Borja
|
@@ -661,7 +687,6 @@ order):
|
|
661
687
|
Lucas de Vries Rainux Luo Zak Johnson
|
662
688
|
Marcus Brito Scott Bronson
|
663
689
|
Marian Schubert Seth Fowler
|
664
|
-
Matthew Todd Steven Moazami
|
665
690
|
|
666
691
|
As this was the first Vim plug-in I had ever written I was heavily influenced
|
667
692
|
by the design of the LustyExplorer plug-in by Stephen Bach, which I understand
|
@@ -764,16 +789,24 @@ POSSIBILITY OF SUCH DAMAGE.
|
|
764
789
|
|
765
790
|
HISTORY *command-t-history*
|
766
791
|
|
792
|
+
1.6.1 (22 December 2013)
|
793
|
+
|
794
|
+
- defer processor count detection until runtime (makes it possible to sensibly
|
795
|
+
build Command-T on one machine and use it on another)
|
796
|
+
|
767
797
|
1.6 (16 December 2013)
|
798
|
+
|
768
799
|
- on systems with POSIX threads (such as OS X and Linux), Command-T will use
|
769
800
|
threads to compute match results in parallel, resulting in a large speed
|
770
801
|
boost that is especially noticeable when navigating large projects
|
771
802
|
|
772
803
|
1.5.1 (23 September 2013)
|
804
|
+
|
773
805
|
- exclude large benchmark fixture file from source exports (patch from Vít
|
774
806
|
Ondruch)
|
775
807
|
|
776
808
|
1.5 (18 September 2013)
|
809
|
+
|
777
810
|
- don't scan "pathological" filesystem structures (ie. circular or
|
778
811
|
self-referential symlinks; patch from Marcus Brito)
|
779
812
|
- gracefully handle files starting with "+" (patch from Ivan Ukhov)
|
data/Rakefile
CHANGED
@@ -171,10 +171,10 @@ task :prerelease => ['make:all', 'spec:all', :vimball, :check_tag]
|
|
171
171
|
namespace :upload do
|
172
172
|
desc 'Upload current vimball to Amazon S3'
|
173
173
|
task :s3 => :vimball do
|
174
|
-
sh 'aws put ' +
|
174
|
+
sh 'aws --curl-options=--insecure put ' +
|
175
175
|
"s3.wincent.com/command-t/releases/command-t-#{version}.vba " +
|
176
176
|
"command-t-#{version}.vba"
|
177
|
-
sh 'aws put ' +
|
177
|
+
sh 'aws --curl-options=--insecure put ' +
|
178
178
|
"s3.wincent.com/command-t/releases/command-t-#{version}.vba?acl " +
|
179
179
|
'--public'
|
180
180
|
end
|
data/doc/command-t.txt
CHANGED
@@ -68,8 +68,11 @@ If your Vim lacks support you'll see an error message like this:
|
|
68
68
|
|
69
69
|
E319: Sorry, the command is not available in this version
|
70
70
|
|
71
|
-
The version of Vim distributed with
|
72
|
-
|
71
|
+
The version of Vim distributed with OS X may not include Ruby support (for
|
72
|
+
exmaple, Snow Leopard, which was the current version of OS X when Command-T
|
73
|
+
was first released, did not support Ruby in the system Vim, but the current
|
74
|
+
version of OS X at the time of writing, Mavericks, does). All recent versions
|
75
|
+
of MacVim come with Ruby support; it is available from:
|
73
76
|
|
74
77
|
http://github.com/b4winckler/macvim/downloads
|
75
78
|
|
@@ -85,8 +88,14 @@ compatible Ruby install. "Compatible" means the same version as Vim itself
|
|
85
88
|
links against. If you use a different version then Command-T is unlikely
|
86
89
|
to work (see TROUBLE-SHOOTING below).
|
87
90
|
|
88
|
-
On
|
89
|
-
versions of MacVim (the 7.2 snapshots and 7.3) are linked
|
91
|
+
On OS X Snow Leopard, Lion and Mountain Lion, the system comes with Ruby 1.8.7
|
92
|
+
and all recent versions of MacVim (the 7.2 snapshots and 7.3) are linked
|
93
|
+
against it.
|
94
|
+
|
95
|
+
On OS X Mavericks, the default system ruby is 2.0, but MacVim continues to
|
96
|
+
link against 1.8.7, which is also present on the system at:
|
97
|
+
|
98
|
+
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
|
90
99
|
|
91
100
|
On Linux and similar platforms, the linked version of Ruby will depend on
|
92
101
|
your distribution. You can usually find this out by examining the
|
@@ -112,8 +121,8 @@ it to work responsively even on directory hierarchies containing enormous
|
|
112
121
|
numbers of files. As such, a C compiler is required in order to build the
|
113
122
|
extension and complete the installation.
|
114
123
|
|
115
|
-
On
|
116
|
-
|
124
|
+
On OS X, this can be obtained by installing the Xcode Tools from the App
|
125
|
+
Store.
|
117
126
|
|
118
127
|
On Windows, the RubyInstaller Development Kit can be used to conveniently
|
119
128
|
install the necessary tool chain:
|
@@ -129,8 +138,12 @@ folder.
|
|
129
138
|
|
130
139
|
INSTALLATION *command-t-installation*
|
131
140
|
|
132
|
-
Command-T
|
133
|
-
|
141
|
+
You can install Command-T by obtaining the source files and building the C
|
142
|
+
extension. The recommended way to get the source is by using a plug-in
|
143
|
+
management system such as Pathogen (see |command-t-pathogen|).
|
144
|
+
|
145
|
+
Command-T is also distributed as a "vimball" which means that it can be
|
146
|
+
installed by opening it in Vim and then sourcing it:
|
134
147
|
|
135
148
|
:e command-t.vba
|
136
149
|
:so %
|
@@ -156,6 +169,14 @@ of the following commands:
|
|
156
169
|
rvm use system
|
157
170
|
rbenv local system
|
158
171
|
|
172
|
+
Note: If you are on OS X Mavericks and compiling against MacVim, the default
|
173
|
+
system Ruby is 2.0 but MacVim still links against the older 1.8.7 Ruby that is
|
174
|
+
also bundled with the system; in this case the build command becomes:
|
175
|
+
|
176
|
+
cd ~/.vim/ruby/command-t
|
177
|
+
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
|
178
|
+
make
|
179
|
+
|
159
180
|
Note: Make sure you compile targeting the same architecture Vim was built for.
|
160
181
|
For instance, MacVim binaries are built for i386, but sometimes GCC compiles
|
161
182
|
for x86_64. First you have to check the platform Vim was built for:
|
@@ -170,6 +191,10 @@ and make sure you use the correct ARCHFLAGS during compilation:
|
|
170
191
|
export ARCHFLAGS="-arch i386"
|
171
192
|
make
|
172
193
|
|
194
|
+
Note: If you are on Fedora 17+, you can install Command-T from the system
|
195
|
+
repository with:
|
196
|
+
|
197
|
+
su -c 'yum install vim-command-t'
|
173
198
|
|
174
199
|
MANAGING USING PATHOGEN *command-t-pathogen*
|
175
200
|
|
@@ -224,7 +249,7 @@ linked against at compile time. For example, if one is 32-bit and the other is
|
|
224
249
|
64-bit, or one is from the Ruby 1.9 series and the other is from the 1.8
|
225
250
|
series, then the plug-in is not likely to work.
|
226
251
|
|
227
|
-
As such, on
|
252
|
+
As such, on OS X, I recommend using the standard Ruby that comes with the
|
228
253
|
system (currently 1.8.7) along with the latest version of MacVim (currently
|
229
254
|
version 7.3). If you wish to use custom builds of Ruby or of MacVim (not
|
230
255
|
recommmended) then you will have to take extra care to ensure that the exact
|
@@ -652,6 +677,7 @@ Command-T is written and maintained by Wincent Colaiuta <win@wincent.com>.
|
|
652
677
|
Other contributors that have submitted patches include (in alphabetical
|
653
678
|
order):
|
654
679
|
|
680
|
+
Andy Waite Matthew Todd Steven Moazami
|
655
681
|
Anthony Panozzo Mike Lundy Sung Pae
|
656
682
|
Daniel Hahler Nate Kane Thomas Pelletier
|
657
683
|
Felix Tjandrawibawa Nicholas Alpi Victor Hugo Borja
|
@@ -661,7 +687,6 @@ order):
|
|
661
687
|
Lucas de Vries Rainux Luo Zak Johnson
|
662
688
|
Marcus Brito Scott Bronson
|
663
689
|
Marian Schubert Seth Fowler
|
664
|
-
Matthew Todd Steven Moazami
|
665
690
|
|
666
691
|
As this was the first Vim plug-in I had ever written I was heavily influenced
|
667
692
|
by the design of the LustyExplorer plug-in by Stephen Bach, which I understand
|
@@ -764,16 +789,24 @@ POSSIBILITY OF SUCH DAMAGE.
|
|
764
789
|
|
765
790
|
HISTORY *command-t-history*
|
766
791
|
|
792
|
+
1.6.1 (22 December 2013)
|
793
|
+
|
794
|
+
- defer processor count detection until runtime (makes it possible to sensibly
|
795
|
+
build Command-T on one machine and use it on another)
|
796
|
+
|
767
797
|
1.6 (16 December 2013)
|
798
|
+
|
768
799
|
- on systems with POSIX threads (such as OS X and Linux), Command-T will use
|
769
800
|
threads to compute match results in parallel, resulting in a large speed
|
770
801
|
boost that is especially noticeable when navigating large projects
|
771
802
|
|
772
803
|
1.5.1 (23 September 2013)
|
804
|
+
|
773
805
|
- exclude large benchmark fixture file from source exports (patch from Vít
|
774
806
|
Ondruch)
|
775
807
|
|
776
808
|
1.5 (18 September 2013)
|
809
|
+
|
777
810
|
- don't scan "pathological" filesystem structures (ie. circular or
|
778
811
|
self-referential symlinks; patch from Marcus Brito)
|
779
812
|
- gracefully handle files starting with "+" (patch from Ivan Ukhov)
|
data/ruby/command-t/Makefile
CHANGED
@@ -80,7 +80,7 @@ warnflags =
|
|
80
80
|
CCDLFLAGS =
|
81
81
|
CFLAGS = $(CCDLFLAGS) -g -Os -pipe $(ARCH_FLAG)
|
82
82
|
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
|
83
|
-
DEFS =
|
83
|
+
DEFS =
|
84
84
|
CPPFLAGS = -DHAVE_PTHREAD_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT $(DEFS) $(cppflags)
|
85
85
|
CXXFLAGS = $(CCDLFLAGS) -g -Os -pipe $(ARCH_FLAG)
|
86
86
|
ldflags = -L. -L/usr/local/lib
|
@@ -28,6 +28,7 @@ require 'command-t/finder/tag_finder'
|
|
28
28
|
require 'command-t/match_window'
|
29
29
|
require 'command-t/prompt'
|
30
30
|
require 'command-t/vim/path_utilities'
|
31
|
+
require 'command-t/util'
|
31
32
|
|
32
33
|
module CommandT
|
33
34
|
class Controller
|
@@ -342,7 +343,11 @@ module CommandT
|
|
342
343
|
end
|
343
344
|
|
344
345
|
def list_matches
|
345
|
-
@matches = @active_finder.sorted_matches_for
|
346
|
+
@matches = @active_finder.sorted_matches_for(
|
347
|
+
@prompt.abbrev,
|
348
|
+
:limit => match_limit,
|
349
|
+
:threads => CommandT::Util.processor_count
|
350
|
+
)
|
346
351
|
@match_window.matches = @matches
|
347
352
|
end
|
348
353
|
|
data/ruby/command-t/ext.bundle
CHANGED
Binary file
|
data/ruby/command-t/extconf.rb
CHANGED
@@ -30,61 +30,6 @@ def header(item)
|
|
30
30
|
end
|
31
31
|
end
|
32
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
33
|
# mandatory headers
|
89
34
|
header('float.h')
|
90
35
|
header('ruby.h')
|
@@ -96,9 +41,4 @@ have_header('pthread.h') # sets HAVE_PTHREAD_H if found
|
|
96
41
|
|
97
42
|
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
|
98
43
|
|
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
|
-
|
104
44
|
create_makefile('ext')
|
data/ruby/command-t/matcher.c
CHANGED
@@ -139,6 +139,7 @@ VALUE CommandTMatcher_sorted_matches_for(int argc, VALUE *argv, VALUE self)
|
|
139
139
|
|
140
140
|
// check optional options has for overrides
|
141
141
|
VALUE limit_option = CommandT_option_from_hash("limit", options);
|
142
|
+
VALUE threads_option = CommandT_option_from_hash("threads", options);
|
142
143
|
|
143
144
|
// get unsorted matches
|
144
145
|
VALUE scanner = rb_iv_get(self, "@scanner");
|
@@ -152,14 +153,12 @@ VALUE CommandTMatcher_sorted_matches_for(int argc, VALUE *argv, VALUE self)
|
|
152
153
|
rb_raise(rb_eNoMemError, "memory allocation failed");
|
153
154
|
|
154
155
|
int err;
|
155
|
-
|
156
|
+
long thread_count = NIL_P(threads_option) ? 1 : NUM2LONG(threads_option);
|
156
157
|
|
157
158
|
#ifdef HAVE_PTHREAD_H
|
158
159
|
#define THREAD_THRESHOLD 1000 /* avoid the overhead of threading when search space is small */
|
159
160
|
if (path_count < THREAD_THRESHOLD)
|
160
161
|
thread_count = 1;
|
161
|
-
else
|
162
|
-
thread_count = PROCESSOR_COUNT; // passed in as preprocessor macro
|
163
162
|
pthread_t *threads = malloc(sizeof(pthread_t) * thread_count);
|
164
163
|
if (!threads)
|
165
164
|
rb_raise(rb_eNoMemError, "memory allocation failed");
|
@@ -0,0 +1,112 @@
|
|
1
|
+
# Copyright 2013 Wincent Colaiuta. All rights reserved.
|
2
|
+
#
|
3
|
+
# Redistribution and use in source and binary forms, with or without
|
4
|
+
# modification, are permitted provided that the following conditions are met:
|
5
|
+
#
|
6
|
+
# 1. Redistributions of source code must retain the above copyright notice,
|
7
|
+
# this list of conditions and the following disclaimer.
|
8
|
+
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
9
|
+
# this list of conditions and the following disclaimer in the documentation
|
10
|
+
# and/or other materials provided with the distribution.
|
11
|
+
#
|
12
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
13
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
14
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
15
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
|
16
|
+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
17
|
+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
18
|
+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
19
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
20
|
+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
21
|
+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
22
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
23
|
+
|
24
|
+
module CommandT
|
25
|
+
module Util
|
26
|
+
class << self
|
27
|
+
def processor_count
|
28
|
+
@processor_count ||= begin
|
29
|
+
count = processor_count!
|
30
|
+
count = 1 if count < 1 # sanity check
|
31
|
+
count = 32 if count > 32 # sanity check
|
32
|
+
count
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
# This method derived from:
|
39
|
+
#
|
40
|
+
# https://github.com/grosser/parallel/blob/d11e4a3c8c1a/lib/parallel.rb
|
41
|
+
#
|
42
|
+
# Number of processors seen by the OS and used for process scheduling.
|
43
|
+
#
|
44
|
+
# * AIX: /usr/sbin/pmcycles (AIX 5+), /usr/sbin/lsdev
|
45
|
+
# * BSD: /sbin/sysctl
|
46
|
+
# * Cygwin: /proc/cpuinfo
|
47
|
+
# * Darwin: /usr/bin/hwprefs, /usr/sbin/sysctl
|
48
|
+
# * HP-UX: /usr/sbin/ioscan
|
49
|
+
# * IRIX: /usr/sbin/sysconf
|
50
|
+
# * Linux: /proc/cpuinfo
|
51
|
+
# * Minix 3+: /proc/cpuinfo
|
52
|
+
# * Solaris: /usr/sbin/psrinfo
|
53
|
+
# * Tru64 UNIX: /usr/sbin/psrinfo
|
54
|
+
# * UnixWare: /usr/sbin/psrinfo
|
55
|
+
#
|
56
|
+
# Copyright (C) 2013 Michael Grosser <michael@grosser.it>
|
57
|
+
#
|
58
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
59
|
+
# a copy of this software and associated documentation files (the
|
60
|
+
# "Software"), to deal in the Software without restriction, including
|
61
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
62
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
63
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
64
|
+
# the following conditions:
|
65
|
+
#
|
66
|
+
# The above copyright notice and this permission notice shall be
|
67
|
+
# included in all copies or substantial portions of the Software.
|
68
|
+
#
|
69
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
70
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
71
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
72
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
73
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
74
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
75
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
76
|
+
#
|
77
|
+
def processor_count!
|
78
|
+
os_name = RbConfig::CONFIG['target_os']
|
79
|
+
if os_name =~ /mingw|mswin/
|
80
|
+
require 'win32ole'
|
81
|
+
result = WIN32OLE.connect('winmgmts://').ExecQuery(
|
82
|
+
'select NumberOfLogicalProcessors from Win32_Processor')
|
83
|
+
result.to_enum.collect(&:NumberOfLogicalProcessors).reduce(:+)
|
84
|
+
elsif File.readable?('/proc/cpuinfo')
|
85
|
+
IO.read('/proc/cpuinfo').scan(/^processor/).size
|
86
|
+
elsif File.executable?('/usr/bin/hwprefs')
|
87
|
+
IO.popen(%w[/usr/bin/hwprefs thread_count]).read.to_i
|
88
|
+
elsif File.executable?('/usr/sbin/psrinfo')
|
89
|
+
IO.popen('/usr/sbin/psrinfo').read.scan(/^.*on-*line/).size
|
90
|
+
elsif File.executable?('/usr/sbin/ioscan')
|
91
|
+
IO.popen(%w[/usr/sbin/ioscan -kC processor]) do |out|
|
92
|
+
out.read.scan(/^.*processor/).size
|
93
|
+
end
|
94
|
+
elsif File.executable?('/usr/sbin/pmcycles')
|
95
|
+
IO.popen(%w[/usr/sbin/pmcycles -m]).read.count("\n")
|
96
|
+
elsif File.executable?('/usr/sbin/lsdev')
|
97
|
+
IO.popen(%w[/usr/sbin/lsdev -Cc processor -S 1]).read.count("\n")
|
98
|
+
elsif File.executable?('/usr/sbin/sysconf') and os_name =~ /irix/i
|
99
|
+
IO.popen(%w[/usr/sbin/sysconf NPROC_ONLN]).read.to_i
|
100
|
+
elsif File.executable?('/usr/sbin/sysctl')
|
101
|
+
IO.popen(%w[/usr/sbin/sysctl -n hw.ncpu]).read.to_i
|
102
|
+
elsif File.executable?('/sbin/sysctl')
|
103
|
+
IO.popen(%w[/sbin/sysctl -n hw.ncpu]).read.to_i
|
104
|
+
else # unknown platform
|
105
|
+
1
|
106
|
+
end
|
107
|
+
rescue
|
108
|
+
1
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end # module Util
|
112
|
+
end # module commandT
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: command-t
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wincent Colaiuta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
11
|
+
date: 2013-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
Command-T provides a fast, intuitive mechanism for opening files with a
|
@@ -51,6 +51,7 @@ files:
|
|
51
51
|
- ruby/command-t/scanner.rb
|
52
52
|
- ruby/command-t/settings.rb
|
53
53
|
- ruby/command-t/stub.rb
|
54
|
+
- ruby/command-t/util.rb
|
54
55
|
- ruby/command-t/vim/path_utilities.rb
|
55
56
|
- ruby/command-t/vim/screen.rb
|
56
57
|
- ruby/command-t/vim/window.rb
|