1
0
forked from VimPlug/jedi
Files
jedi-fork/jedi/settings.py
2013-01-02 20:09:46 +01:00

208 lines
5.3 KiB
Python

"""
Variables to hold global jedi setting.
Plugin can change the variables defined in :mod:`jedi.settings` to
modify behavior of Jedi. Plugin should expose an interface to setup
these variables by user. Example usage::
from jedi import settings
settings.case_insensitive_completion = True
* Completion output settings
- :data:`case_insensitive_completion`
- :data:`add_dot_after_module`
- :data:`add_bracket_after_function`
- :data:`no_completion_duplicates`
* Parser
- :data:`fast_parser`
- :data:`fast_parser_always_reparse`
- :data:`use_get_in_function_call_cache`
* Dynamic stuff
- :data:`dynamic_arrays_instances`
- :data:`dynamic_array_additions`
- :data:`dynamic_params`
- :data:`dynamic_params_for_other_modules`
- :data:`additional_dynamic_modules`
* Recursions
Recursion settings are important if you don't want extremly
recursive python code to go absolutely crazy. First of there is a
global limit :data:`max_executions`. This limit is important, to set
a maximum amount of time, the completion may use.
The values are based on my experimental tries, used on the jedi library. But
I don't think there's any other Python library, that uses recursion in a
similar (extreme) way. This makes the completion definitely worse in some
cases. But a completion should also be fast.
- :data:`max_until_execution_unique`
- :data:`max_function_recursion_level`
- :data:`max_executions_without_builtins`
- :data:`max_executions`
- :data:`scale_get_in_function_call`
* Various
- :data:`part_line_length`
* Caching validity (time)
- :data:`star_import_cache_validity`
- :data:`get_in_function_call_validity`
"""
# ----------------
# completion output settings
# ----------------
case_insensitive_completion = True
"""
The completion is by default case insensitive.
"""
add_dot_after_module = False
"""
Adds a dot after a module, because a module that is not accessed this way is
definitely not the normal case. However, in VIM this doesn't work, that's why
it isn't used at the moment.
"""
add_bracket_after_function = False
"""
Adds an opening bracket after a function, because that's normal behaviour.
Removed it again, because in VIM that is not very practical.
"""
no_completion_duplicates = True
"""
If set, completions with the same name don't appear in the output anymore,
but are in the `same_name_completions` attribute.
"""
# ----------------
# parser
# ----------------
fast_parser = True
"""
Use the fast parser. This means that reparsing is only being done if
something has been changed e.g. to a function. If this happens, only the
function is being reparsed.
"""
fast_parser_always_reparse = False
"""
This is just a debugging option. Always reparsing means that the fast parser
is basically useless. So don't use it.
"""
use_get_in_function_call_cache = True
"""
Use the cache (full cache) to generate get_in_function_call's. This may fail
with multiline docstrings (likely) and other complicated changes (unlikely).
The goal is to move away from it by making the rest faster.
"""
# ----------------
# dynamic stuff
# ----------------
dynamic_arrays_instances = True
"""
check for `append`, etc. on array instances like list()
"""
dynamic_array_additions = True
"""
check for `append`, etc. on arrays: [], {}, ()
"""
dynamic_params = True
"""
A dynamic param completion, finds the callees of the function, which define
the params of a function.
"""
dynamic_params_for_other_modules = True
"""
Do the same for other modules.
"""
additional_dynamic_modules = []
"""
Additional modules in which Jedi checks if statements are to be found. This
is practical for IDE's, that want to administrate their modules themselves.
"""
# ----------------
# recursions
# ----------------
max_until_execution_unique = 50
"""
The `max_until_execution_unique` limit is probably the most important one,
because if that limit is passed, functions can only be one time executed. So
new functions will be executed, complex recursions with the same functions
again and again, are ignored.
"""
max_function_recursion_level = 5
"""
`max_function_recursion_level` is more about whether the recursions are
stopped in deepth or in width. The ratio beetween this and
`max_until_execution_unique` is important here. It stops a recursion (after
the number of function calls in the recursion), if it was already used
earlier.
"""
max_executions_without_builtins = 200
"""
.. todo:: Document this.
"""
max_executions = 250
"""
A maximum amount of time, the completion may use.
"""
scale_get_in_function_call = 0.1
"""
Because get_in_function_call is normally used on every single key hit, it has
to be faster than a normal completion. This is the factor that is used to
scale `max_executions` and `max_until_execution_unique`:
"""
# ----------------
# various
# ----------------
part_line_length = 20
"""
Size of the current code part, which is used to speed up parsing.
"""
# ----------------
# caching validity (time)
# ----------------
star_import_cache_validity = 60.0
"""
In huge packages like numpy, checking all star imports on every completion
might be slow, therefore we do a star import caching, that lasts a certain
time span (in seconds).
"""
get_in_function_call_validity = 3.0
"""
Finding function calls might be slow (0.1-0.5s). This is not acceptible for
normal writing. Therefore cache it for a short time.
"""