Skip to content

Commit 6d1ce23

Browse files
committed
Allow selection of catalogs for languages
1 parent 2fc2ba4 commit 6d1ce23

2 files changed

Lines changed: 63 additions & 8 deletions

File tree

SublimeCodeIntel.py

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,11 @@ def codeintel_scan(view, path, content, lang, callback=None, pos=None, forms=Non
547547
vid = view.id()
548548
folders = getattr(view.window(), 'folders', lambda: [])() # FIXME: it's like this for backward compatibility (<= 2060)
549549
folders_id = str(hash(frozenset(folders)))
550-
codeintel_config = view.settings().get('codeintel_config', {})
550+
view_settings = view.settings()
551+
codeintel_config = view_settings.get('codeintel_config', {})
552+
_codeintel_max_recursive_dir_depth = view_settings.get('codeintel_max_recursive_dir_depth', 10)
553+
_codeintel_scan_files_in_project = view_settings.get('codeintel_scan_files_in_project', True)
554+
_codeintel_selected_catalogs = view_settings.get('codeintel_selected_catalogs', [])
551555

552556
def _codeintel_scan():
553557
global despair, despaired
@@ -609,16 +613,30 @@ def _codeintel_scan():
609613
codeintel_log.warning(msg)
610614
valid = False
611615

616+
codeintel_config_lang = codeintel_config.get(lang, {})
617+
codeintel_max_recursive_dir_depth = codeintel_config_lang.get('codeintel_max_recursive_dir_depth', _codeintel_max_recursive_dir_depth)
618+
codeintel_scan_files_in_project = codeintel_config_lang.get('codeintel_scan_files_in_project', _codeintel_scan_files_in_project)
619+
codeintel_selected_catalogs = codeintel_config_lang.get('codeintel_selected_catalogs', _codeintel_selected_catalogs)
620+
621+
avail_catalogs = mgr.db.get_catalogs_zone().avail_catalogs()
622+
612623
# Load configuration files:
613-
for catalog in mgr.db.get_catalogs_zone().avail_catalogs():
624+
all_catalogs = []
625+
for catalog in avail_catalogs:
626+
all_catalogs.append("%s (for %s: %s)" % (catalog['name'], catalog['lang'], catalog['description']))
614627
if catalog['lang'] == lang:
615-
catalogs.append(catalog['name'])
628+
if catalog['name'] in codeintel_selected_catalogs:
629+
catalogs.append(catalog['name'])
630+
msg = "Avaliable catalogs: %s" % ', '.join(all_catalogs) or None
631+
log.debug(msg)
632+
codeintel_log.debug(msg)
633+
616634
config = {
617-
"codeintel_selected_catalogs": catalogs,
618-
"codeintel_max_recursive_dir_depth": 10,
619-
"codeintel_scan_files_in_project": True,
635+
'codeintel_max_recursive_dir_depth': codeintel_max_recursive_dir_depth,
636+
'codeintel_scan_files_in_project': codeintel_scan_files_in_project,
637+
'codeintel_selected_catalogs': catalogs,
620638
}
621-
config.update(codeintel_config.get(lang, {}))
639+
config.update(codeintel_config_lang)
622640

623641
_config = {}
624642
try:
@@ -674,7 +692,10 @@ def _codeintel_scan():
674692
msgs.append(('info', "\n%s\n%s" % (msg, "-" * len(msg))))
675693

676694
if catalogs:
677-
msgs.append(('info', "New env with catalogs for '%s': %s" % (lang, ', '.join(catalogs) or None)))
695+
msg = "New env with catalogs for '%s': %s" % (lang, ', '.join(catalogs) or None)
696+
log.debug(msg)
697+
codeintel_log.warning(msg)
698+
msgs.append(('info', msg))
678699

679700
buf = mgr.buf_from_content(content.encode('utf-8'), lang, env, path or "<Unsaved>", 'utf-8')
680701

@@ -875,6 +896,9 @@ def get_revision(path=None):
875896
'codeintel_disabled_languages',
876897
'codeintel_live',
877898
'codeintel_live_disabled_languages',
899+
'codeintel_max_recursive_dir_depth',
900+
'codeintel_scan_files_in_project',
901+
'codeintel_selected_catalogs',
878902
'codeintel_syntax_map',
879903
'codeintel_scan_exclude_dir',
880904
'codeintel_config',

SublimeCodeIntel.sublime-settings

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,37 @@
5757
"JavaScript":["/build/", "/min/"]
5858
},
5959

60+
/* Code Scanning: Controls how the Code Intelligence system scans your source code files. */
61+
62+
/* Maximum directory depth: */
63+
"codeintel_max_recursive_dir_depth": 10,
64+
65+
/* Include all files and directories from the project base directory: */
66+
"codeintel_scan_files_in_project": true,
67+
68+
/* API Catalogs: SublimeCodeIntel uses API catalogs to provide autocomplete and calltips for 3rd-party libraies.
69+
Add te libraries that you use in your code. Note: Adding all API catalogs for a particular language can lead to confusing results.
70+
71+
Avaliable catalogs:
72+
PyWin32 (Python3) (for Python3: Python Extensions for Windows)
73+
PyWin32 (for Python: Python Extensions for Windows)
74+
Rails (for Ruby: Rails version 1.1.6)
75+
jQuery (for JavaScript: jQuery JavaScript library - version 1.9.1)
76+
Prototype (for JavaScript: JavaScript framework for web development)
77+
dojo (for JavaScript: Dojo Toolkit API - version 1.5.0)
78+
Ext_30 (for JavaScript: Ext JavaScript framework - version 3.0)
79+
HTML5 (for JavaScript: HTML5 (Canvas, Web Messaging, Microdata))
80+
MochiKit (for JavaScript: A lightweight JavaScript library - v1.4.2)
81+
Mozilla Toolkit (for JavaScript: Mozilla Toolkit API - version 1.8)
82+
XBL (for JavaScript: XBL JavaScript support - version 1.0)
83+
YUI (for JavaScript: Yahoo! User Interface Library - v2.8.1)
84+
Drupal (for PHP: A full-featured PHP content management/discussion engine -- v5.1)
85+
PECL (for PHP: A collection of PHP Extensions)
86+
*/
87+
"codeintel_selected_catalogs": [
88+
"PyWin32", "jQuery", "Rails"
89+
],
90+
6091
/*
6192
Defines a configuration for each language.
6293
*/

0 commit comments

Comments
 (0)