]>
Commit | Line | Data |
---|---|---|
1 | """ | |
2 | This module contains variables with global |jedi| settings. To change the | |
3 | behavior of |jedi|, change the variables defined in :mod:`jedi.settings`. | |
4 | ||
5 | Plugins should expose an interface so that the user can adjust the | |
6 | configuration. | |
7 | ||
8 | ||
9 | Example usage:: | |
10 | ||
11 | from jedi import settings | |
12 | settings.case_insensitive_completion = True | |
13 | ||
14 | ||
15 | Completion output | |
16 | ~~~~~~~~~~~~~~~~~ | |
17 | ||
18 | .. autodata:: case_insensitive_completion | |
19 | .. autodata:: add_bracket_after_function | |
20 | ||
21 | ||
22 | Filesystem cache | |
23 | ~~~~~~~~~~~~~~~~ | |
24 | ||
25 | .. autodata:: cache_directory | |
26 | ||
27 | ||
28 | Parser | |
29 | ~~~~~~ | |
30 | ||
31 | .. autodata:: fast_parser | |
32 | ||
33 | ||
34 | Dynamic stuff | |
35 | ~~~~~~~~~~~~~ | |
36 | ||
37 | .. autodata:: dynamic_array_additions | |
38 | .. autodata:: dynamic_params | |
39 | .. autodata:: dynamic_params_for_other_modules | |
40 | .. autodata:: auto_import_modules | |
41 | ||
42 | ||
43 | Caching | |
44 | ~~~~~~~ | |
45 | ||
46 | .. autodata:: call_signatures_validity | |
47 | ||
48 | ||
49 | """ | |
50 | import os | |
51 | import platform | |
52 | ||
53 | # ---------------- | |
54 | # Completion Output Settings | |
55 | # ---------------- | |
56 | ||
57 | case_insensitive_completion = True | |
58 | """ | |
59 | Completions are by default case insensitive. | |
60 | """ | |
61 | ||
62 | add_bracket_after_function = False | |
63 | """ | |
64 | Adds an opening bracket after a function for completions. | |
65 | """ | |
66 | ||
67 | # ---------------- | |
68 | # Filesystem Cache | |
69 | # ---------------- | |
70 | ||
71 | if platform.system().lower() == 'windows': | |
72 | _cache_directory = os.path.join( | |
73 | os.getenv('LOCALAPPDATA') or os.path.expanduser('~'), | |
74 | 'Jedi', | |
75 | 'Jedi', | |
76 | ) | |
77 | elif platform.system().lower() == 'darwin': | |
78 | _cache_directory = os.path.join('~', 'Library', 'Caches', 'Jedi') | |
79 | else: | |
80 | _cache_directory = os.path.join(os.getenv('XDG_CACHE_HOME') or '~/.cache', | |
81 | 'jedi') | |
82 | cache_directory = os.path.expanduser(_cache_directory) | |
83 | """ | |
84 | The path where the cache is stored. | |
85 | ||
86 | On Linux, this defaults to ``~/.cache/jedi/``, on OS X to | |
87 | ``~/Library/Caches/Jedi/`` and on Windows to ``%LOCALAPPDATA%\\Jedi\\Jedi\\``. | |
88 | On Linux, if the environment variable ``$XDG_CACHE_HOME`` is set, | |
89 | ``$XDG_CACHE_HOME/jedi`` is used instead of the default one. | |
90 | """ | |
91 | ||
92 | # ---------------- | |
93 | # Parser | |
94 | # ---------------- | |
95 | ||
96 | fast_parser = True | |
97 | """ | |
98 | Uses Parso's diff parser. If it is enabled, this might cause issues, please | |
99 | read the warning on :class:`.Script`. This feature makes it possible to only | |
100 | parse the parts again that have changed, while reusing the rest of the syntax | |
101 | tree. | |
102 | """ | |
103 | ||
104 | _cropped_file_size = int(10e6) # 1 Megabyte | |
105 | """ | |
106 | Jedi gets extremely slow if the file size exceed a few thousand lines. | |
107 | To avoid getting stuck completely Jedi crops the file at some point. | |
108 | ||
109 | One megabyte of typical Python code equals about 20'000 lines of code. | |
110 | """ | |
111 | ||
112 | # ---------------- | |
113 | # Dynamic Stuff | |
114 | # ---------------- | |
115 | ||
116 | dynamic_array_additions = True | |
117 | """ | |
118 | check for `append`, etc. on arrays: [], {}, () as well as list/set calls. | |
119 | """ | |
120 | ||
121 | dynamic_params = True | |
122 | """ | |
123 | A dynamic param completion, finds the callees of the function, which define | |
124 | the params of a function. | |
125 | """ | |
126 | ||
127 | dynamic_params_for_other_modules = True | |
128 | """ | |
129 | Do the same for other modules. | |
130 | """ | |
131 | ||
132 | dynamic_flow_information = True | |
133 | """ | |
134 | Check for `isinstance` and other information to infer a type. | |
135 | """ | |
136 | ||
137 | auto_import_modules = [ | |
138 | 'gi', # This third-party repository (GTK stuff) doesn't really work with jedi | |
139 | ] | |
140 | """ | |
141 | Modules that will not be analyzed but imported, if they contain Python code. | |
142 | This improves autocompletion for libraries that use ``setattr`` or | |
143 | ``globals()`` modifications a lot. | |
144 | """ | |
145 | ||
146 | allow_unsafe_interpreter_executions = True | |
147 | """ | |
148 | Controls whether descriptors are evaluated when using an Interpreter. This is | |
149 | something you might want to control when using Jedi from a Repl (e.g. IPython) | |
150 | ||
151 | Generally this setting allows Jedi to execute __getitem__ and descriptors like | |
152 | `property`. | |
153 | """ | |
154 | ||
155 | # ---------------- | |
156 | # Caching Validity | |
157 | # ---------------- | |
158 | ||
159 | call_signatures_validity = 3.0 | |
160 | """ | |
161 | Finding function calls might be slow (0.1-0.5s). This is not acceptible for | |
162 | normal writing. Therefore cache it for a short time. | |
163 | """ |