|
28 | 28 | """ |
29 | 29 | from __future__ import absolute_import, unicode_literals, print_function |
30 | 30 |
|
31 | | -VERSION = "3.0.0" |
32 | | - |
33 | | -codeintel_syntax_map = { |
34 | | - "Python Django": "Python", |
35 | | -} |
36 | | - |
37 | | - |
38 | 31 | import os |
39 | 32 | import sys |
40 | 33 |
|
41 | 34 | __file__ = os.path.normpath(os.path.abspath(__file__)) |
42 | 35 | __path__ = os.path.dirname(__file__) |
43 | 36 |
|
44 | | -python_sitelib_path = os.path.normpath(__path__) |
| 37 | +python_sitelib_path = os.path.join(os.path.normpath(__path__), 'libs') |
45 | 38 | if python_sitelib_path not in sys.path: |
46 | 39 | sys.path.insert(0, python_sitelib_path) |
47 | 40 |
|
| 41 | + |
| 42 | +VERSION = "3.0.0" |
| 43 | + |
| 44 | +DEFAULT_SETTINGS = { |
| 45 | + 'codeintel_live': True, |
| 46 | + 'codeintel_disabled_languages': [], |
| 47 | + 'codeintel_oop_command': '/usr/local/bin/codeintel', |
| 48 | + 'codeintel_log_levels': ['WARNING'], |
| 49 | + 'codeintel_prefs': { |
| 50 | + 'codeintel_max_recursive_dir_depth': 10, |
| 51 | + 'codeintel_scan_files_in_project': True, |
| 52 | + 'codeintel_selected_catalogs': [], |
| 53 | + 'defaultHTML5Decl': '-//W3C//DTD HTML 5//EN', |
| 54 | + 'defaultHTMLDecl': '-//W3C//DTD HTML 5//EN', |
| 55 | + 'javascriptExtraPaths': '', |
| 56 | + 'nodejsDefaultInterpreter': '', |
| 57 | + 'nodejsExtraPaths': '', |
| 58 | + 'perl': '', |
| 59 | + 'perlExtraPaths': '', |
| 60 | + 'php': '', |
| 61 | + 'phpConfigFile': '', |
| 62 | + 'phpExtraPaths': '', |
| 63 | + 'python': '', |
| 64 | + 'python3': '', |
| 65 | + 'python3ExtraPaths': '', |
| 66 | + 'pythonExtraPaths': '', |
| 67 | + 'ruby': '', |
| 68 | + 'rubyExtraPaths': '', |
| 69 | + }, |
| 70 | + 'codeintel_env': dict(os.environ), |
| 71 | +} |
| 72 | + |
| 73 | +codeintel_syntax_map = { |
| 74 | + "Python Django": "Python", |
| 75 | +} |
| 76 | + |
| 77 | + |
48 | 78 | import re |
49 | 79 | import logging |
50 | 80 | import textwrap |
|
56 | 86 |
|
57 | 87 | from codeintel import CodeIntel, CodeIntelBuffer |
58 | 88 |
|
| 89 | +settings = None |
59 | 90 | logger_name = 'CodeIntel' |
60 | 91 | logger = logging.getLogger(logger_name) |
61 | | -logger.setLevel(logging.INFO) # INFO |
62 | | - |
63 | | -handler = logging.StreamHandler(sys.stderr) |
64 | | -handler.setFormatter(logging.Formatter("%(name)s: %(levelname)s: %(message)s")) |
65 | | -logger.handlers = [handler] |
| 92 | +logger.setLevel(logging.WARNING) # WARNING |
66 | 93 |
|
67 | 94 |
|
68 | 95 | class CodeIntelHandler(object): |
@@ -175,6 +202,8 @@ def pos2bytes(self, content, pos): |
175 | 202 | def guess_language(self, view, path): |
176 | 203 | lang = os.path.splitext(os.path.basename(view.settings().get('syntax')))[0] |
177 | 204 | lang = codeintel_syntax_map.get(lang, lang) |
| 205 | + if lang in settings.get('codeintel_disabled_languages'): |
| 206 | + return None |
178 | 207 | return lang |
179 | 208 |
|
180 | 209 | def buf_from_view(self, view): |
@@ -231,24 +260,12 @@ def buf_from_view(self, view): |
231 | 260 | rubyExtraPaths = extra_paths |
232 | 261 |
|
233 | 262 | buf.prefs = { |
234 | | - 'codeintel_max_recursive_dir_depth': 10, |
235 | | - 'codeintel_scan_files_in_project': True, |
236 | | - 'codeintel_selected_catalogs': [], |
237 | | - 'defaultHTML5Decl': '-//W3C//DTD HTML 5//EN', |
238 | | - 'defaultHTMLDecl': '-//W3C//DTD HTML 5//EN', |
239 | 263 | 'javascriptExtraPaths': javascriptExtraPaths, |
240 | | - 'nodejsDefaultInterpreter': '', |
241 | 264 | 'nodejsExtraPaths': nodejsExtraPaths, |
242 | | - 'perl': '', |
243 | 265 | 'perlExtraPaths': perlExtraPaths, |
244 | | - 'php': '', |
245 | | - 'phpConfigFile': '', |
246 | 266 | 'phpExtraPaths': phpExtraPaths, |
247 | | - 'python': '', |
248 | | - 'python3': '', |
249 | 267 | 'python3ExtraPaths': python3ExtraPaths, |
250 | 268 | 'pythonExtraPaths': pythonExtraPaths, |
251 | | - 'ruby': '', |
252 | 269 | 'rubyExtraPaths': rubyExtraPaths, |
253 | 270 | } |
254 | 271 |
|
@@ -473,6 +490,9 @@ def on_modified(self, view): |
473 | 490 | if not view_sel: |
474 | 491 | return |
475 | 492 |
|
| 493 | + if not settings.get('codeintel_live'): |
| 494 | + return |
| 495 | + |
476 | 496 | sel = view_sel[0] |
477 | 497 | pos = sel.end() |
478 | 498 | current_char = view.substr(sublime.Region(pos - 1, pos)) |
@@ -545,5 +565,48 @@ def run(self, edit, block=False): |
545 | 565 | window.open_file(previous_location, sublime.ENCODED_POSITION) |
546 | 566 |
|
547 | 567 |
|
| 568 | +def plugin_loaded(): |
| 569 | + """Restores user settings.""" |
| 570 | + global ci, settings |
| 571 | + |
| 572 | + settings_name = 'SublimeCodeIntel' |
| 573 | + settings = sublime.load_settings(settings_name + '.sublime-settings') |
| 574 | + settings.clear_on_change(settings_name) |
| 575 | + settings.add_on_change(settings_name, plugin_loaded) |
| 576 | + |
| 577 | + for setting, default in DEFAULT_SETTINGS.items(): |
| 578 | + value = settings.get(setting) |
| 579 | + if isinstance(default, dict): |
| 580 | + new_value = default.copy() |
| 581 | + if value and isinstance(value, dict): |
| 582 | + new_value.update(value) |
| 583 | + elif value is not None: |
| 584 | + new_value = value |
| 585 | + else: |
| 586 | + new_value = default |
| 587 | + if value != new_value: |
| 588 | + settings.set(setting, new_value) |
| 589 | + |
| 590 | + if ci.mgr and ci.mgr.is_alive(): |
| 591 | + ci.mgr.set_global_environment( |
| 592 | + env=settings.get('codeintel_env'), |
| 593 | + prefs=settings.get('codeintel_prefs'), |
| 594 | + ) |
| 595 | + else: |
| 596 | + ci.activate( |
| 597 | + reset_db_as_necessary=False, |
| 598 | + oop_command=settings.get('codeintel_oop_command'), |
| 599 | + log_levels=settings.get('codeintel_log_levels'), |
| 600 | + env=settings.get('codeintel_env'), |
| 601 | + prefs=settings.get('codeintel_prefs'), |
| 602 | + ) |
| 603 | + |
| 604 | + |
548 | 605 | ci = CodeIntel() |
549 | | -ci.activate() |
| 606 | + |
| 607 | +# ST3 features a plugin_loaded hook which is called when ST's API is ready. |
| 608 | +# |
| 609 | +# We must therefore call our init callback manually on ST2. It must be the last |
| 610 | +# thing in this plugin (thanks, beloved contributors!). |
| 611 | +if not int(sublime.version()) > 3000: |
| 612 | + plugin_loaded() |
0 commit comments