Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 86f63aa

Browse files
committed
Version bump to v2.0.0-beta.35
+ Automatically try finding oop command + Fix Windows pipe mode
1 parent 2272e9a commit 86f63aa

File tree

3 files changed

+60
-9
lines changed

3 files changed

+60
-9
lines changed

‎codeintel/__init__.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.0.0-beta.34'
1+
__version__ = '2.0.0-beta.35'

‎codeintel/client.py‎

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import socket
3838
import weakref
3939
import functools
40+
from distutils.spawn import find_executable
4041

4142
try:
4243
import queue
@@ -322,7 +323,7 @@ def cleanup(self):
322323

323324

324325
if sys.platform.startswith("win"):
325-
from .win32_named_pipe import Win32Pipe
326+
from win32_named_pipe import Win32Pipe
326327

327328
class _PipeConnection(Win32Pipe):
328329
"""This is a wrapper around our Win32Pipe class to expose the expected
@@ -339,6 +340,30 @@ def get_stream(self):
339340
def cleanup(self):
340341
return
341342
del Win32Pipe
343+
344+
CODEINTEL_COMMAND = 'codeintel.exe'
345+
CODEINTEL_PATHS = (
346+
'/',
347+
'/Program Files',
348+
'/Program Files/Python',
349+
'/Program Files (x86)',
350+
'/Program Files (x86)/Python',
351+
'~/AppData/Local/Programs',
352+
'~/AppData/Local/Programs/Python',
353+
'~/AppData/Local/Programs (x86)',
354+
'~/AppData/Local/Programs (x86)/Python',
355+
)
356+
CODEINTEL_SUBPATHS = (
357+
'Python/Scripts'
358+
'Python26/Scripts',
359+
'Python27/Scripts',
360+
'Python33/Scripts',
361+
'Python34/Scripts',
362+
'Python35/Scripts',
363+
'Python36/Scripts',
364+
'Python37/Scripts',
365+
)
366+
342367
else:
343368
# posix pipe class
344369
class _PipeConnection(_Connection):
@@ -384,6 +409,13 @@ def close(self):
384409
self._read.close()
385410
self._write.close()
386411

412+
CODEINTEL_COMMAND = 'codeintel'
413+
CODEINTEL_PATHS = (
414+
'/usr',
415+
'/usr/local',
416+
)
417+
CODEINTEL_SUBPATHS = ('bin',)
418+
387419

388420
class CodeIntelManager(threading.Thread):
389421
STATE_UNINITIALIZED = ("uninitialized",) # not initialized
@@ -395,7 +427,7 @@ class CodeIntelManager(threading.Thread):
395427
STATE_DESTROYED = ("destroyed",) # connection shut down, child process dead
396428
STATE_ABORTED = ("aborted",)
397429

398-
_codeintel_command = '/usr/local/bin/codeintel'
430+
_codeintel_command = None
399431
_oop_mode = 'pipe'
400432
_log_levels = ['WARNING']
401433
_state = STATE_UNINITIALIZED
@@ -531,17 +563,36 @@ def kill(self):
531563
if self._shutdown_callback:
532564
self._shutdown_callback(self)
533565

566+
def find_command(self):
567+
codeintel_command = self._codeintel_command
568+
if codeintel_command:
569+
if os.path.exists(codeintel_command):
570+
return codeintel_command
571+
codeintel_command = find_executable(codeintel_command)
572+
if codeintel_command:
573+
return codeintel_command
574+
575+
if os.path.exists(CODEINTEL_COMMAND):
576+
return CODEINTEL_COMMAND
577+
codeintel_command = find_executable(CODEINTEL_COMMAND)
578+
if codeintel_command:
579+
return codeintel_command
580+
581+
for path in CODEINTEL_PATHS:
582+
for subpath in CODEINTEL_SUBPATHS:
583+
codeintel_command = os.path.expanduser(os.path.join(path, subpath, CODEINTEL_COMMAND))
584+
if os.path.exists(codeintel_command):
585+
return codeintel_command
586+
534587
def init_child(self):
535-
from . import process
588+
import process
536589
assert threading.current_thread().name != "MainThread", \
537590
"CodeIntelManager.init_child should run on background thread!"
538591
self.log.debug("initializing child process")
539592
conn = None
540593
try:
541-
_codeintel_command = self._codeintel_command
542-
if not os.path.exists(_codeintel_command):
543-
_codeintel_command = os.path.basename(_codeintel_command)
544-
cmd = [_codeintel_command]
594+
codeintel_command = self.find_command()
595+
cmd = [codeintel_command]
545596

546597
database_dir = os.path.expanduser('~/.codeintel')
547598
cmd += ['--log-file', os.path.join(database_dir, 'codeintel.log')]

‎codeintel/process.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def subprocess_import(attr):
117117

118118
# Check if this is Windows NT and above.
119119
if sys.platform == "win32" and sys.getwindowsversion()[3] == 2:
120-
from . import winprocess
120+
import winprocess
121121

122122
try:
123123
# These subprocess variables have moved around between Python versions.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /