Move identifier related patches to submodule
Merge branch 'master' of https://github.com/Valloric/ycmd
Merge remote-tracking branch 'origin/master'

Conflicts:
	cpp/ycm/IdentifierUtils.cpp
Remove dot as default semantic trigger for vim

Ref: https://github.com/Valloric/YouCompleteMe/issues/1031
Merge remote-tracking branch 'origin/master'
Merge remote-tracking branch 'upstream/master'
Update submodule jedi e66f2d8...54dce0e

* jedi e66f2d8...54dce0e (235):
  > fix strange issues of Python's std lib tokenizer, might be in there as well (not sure, cause I modified a lot). fixes #449
  > moved test_token to test_tokenize
  > test for #414 which doesn't seem to be failing anymore.
  > isinstance checks now also give you type hints in class contexts, fixes #241.
  > refactoring in dynamic param searching
  > comments
  > builtins shouldn't be unique if called by compiled.create
  > tests for py__mro__
  > Fix an issue with CallSignatures: If used in a longer statement, it could happen that parts of the statement was still evaluated, but the call signature is only valid at the cursor.
  > fix a few small issues that remained in the tests
  > CompiledObjects should execute everything when reading the return information from docstring (because it's always types, not values)
  > elements in tuples/lists in docstrings were not executed.
  > change tests that provided wrong instance information
  > actually start checking if the integration tests are instances on both sides of the comparison. This wasnt necessary for just autocompletion, but it's way more important now.
  > simplify a lot of the current InstanceElement behavior, because we know now, that there's either a Statement or a Function inside (or maybe some other parser objects like an Array.
  > wrap instance element creation so that it only contains functions and statements, not CompiledObject or Instance.
  > Calling an InstanceElement of an Instance of CompiledObject doesn't raise an error anymore. Yes, it's really that complicated.
  > A module shouldn't be callable.
  > Nicer usage of py_call within InstanceElement and Python 2.7 compatibility
  > remove a very old function call in FunctionExecution that had no effect
  > get rid of the evaluate_generator param
  > Executable -> Executed
  > get rid of the whole is_callable stuff, because now we can just check for hasattr(obj, 'py__call__')
  > simplify evaluator.execute, because now everything is using py__call__
  > fix most issues related to the py__call__ stuff and generalize it.
  > further progress in changing to py__call__
  > start switching to a more python similar approach of naming, start by naming execution stuff py__call__
  > always operate on class in super and not on an instance. that's the proper way.
  > Merge branch 'dev' of github.com:davidhalter/jedi into dev
  > using super() in actual executed classes wasn't possible. fixes #421
  > replace get_super_classes with py_bases
  > added a few EuroPython sprint guys to AUTHORS.txt
  > temporary SuperInstance class to eventually handle super. But need something like mro() resolution first.
  > incomplete functions shouldn't cause any trouble. fixes #429.
  > Added note about numpydoc package
  > Merge pull request #441 from davidhalter/dynamic_inheritance
  > Merge pull request #451 from davidhalter/issue436
  > Small doc fix
  > Added docs for numpydoc docstrings (fixes #450)
  > Merge branch 'add-numpydoc-support' of git://github.com/immerrr/jedi into dev
  > Merge remote-tracking branch 'origin/travis_py34' into dev
  > Merge remote-tracking branch 'origin/namedtuple' into dev
  > Merge branch 'dev' of github.com:davidhalter/jedi into dev
  > remove the scope_names_generator stuff again. We should enable it somewhere in time, but for now it just breaks tests.
  > little edge case of modules that don't have a scope_names_generator, which is unfortunately missing, but not really used in Jedi. At europython's hackathon we played with it and @scoder added a small script to cython/Cython/Compiler/JediTyper.py, which makes it possible to add Cython types to a Python script.
  > set changelog date for v0.8.1 correct
  > Merge remote-tracking branch 'origin/master' into dev
  > Don't warn on addition of an int literal plus an unknown int number.
  > check not only - but also + for numbers.
  > fix the operation test where static analysis reports additions of ints with non-ints.
  > Operator fixes. Subclass of Simple, now.
  > it should be possible to find the origin of an operation, if it's a faulty one (static analysis)
  > 1 + '1' TypeErrors are now detected, but not shown in the right place
  > renamed company-jedi to anaconda-mode, cc @proofit404
  > static analysis tests for the 1 + '1' test
  > Merge branch 'linter' of github.com:davidhalter/jedi into linter
  > change the default linter command from 'force' to 'linter'
  > unicode issues with docstrings should be gone, fixes #420
  > added a test for hex value issues in docstrings, see #427
  > use the new implementation of splitlines all over the code, fixes #424
  > new splitlines implementation to get rid of the ugly splitlines we now have as well as (partially) the issue with form feeds
  > test for #424, issues with form feeds
  > dicts should not be used to check against in get_defined_names, because they cannot contain a defined name (lists and tuples can) so just ignore them., fixes #417
  > test for #417
  > another parser issue, very much related to the last one. sometimes a None element was used as a token.fixes #418
  > def/class keywords after an opening parentheses led to empty arrays without closing brackets, tests & fixes #416
  > parentheses checks in the fast parser (tokenizer) have been improved to really cover all cases. real fix for davidhalter/jedi-vim#288
  > parentheses should be ignored when calculating the indent of a new block in the fast parser, fixes davidhalter/jedi-vim#288
  > merged dev and linter
  > fix a small issue in the alternative test runner
  > test for parser issues with parentheses indentation, see davidhalter/jedi-vim#288
  > Remove some get_defined_names methods, that are not needed anymore.
  > finally able to remove _get_defined_names_for_position
  > cleanup NameFinder.scopes, fully use scope_names_generator.
  > more consequent usage of scope_names_generator
  > also add scope_names_generator to the iterable module classes, as well as cleaning up some old scope_names_generator stuff
  > replace get_defined_names with scope_names_generator in a lot of places (the cleanup still needs to be done, though).
  > change test results, because of inserts in another test file
  > use scope_names_generator in completion api as well. hopefully the last __file__ related issue :)
  > Also update the changelog temporarily.
  > Bump release to 0.8.1-final0, because we're doing a release soon.
  > pre-alpha notice in static analysis API
  > scope_names_generator now works with modules perfectly well.
  > fix issues introduced with defined_names.
  > Fixed __file__ issues by always applying a ModuleWrapper in the global scope lookup.
  > somehow temporary solution to enable completion of __file__
  > fix a multi line issue of var_args with an error token or newline in the beginning.
  > multiple files should be scannable in the main analysis API.
  > string prefixes are now recognized by the backwards tokenizer
  > exceptions were ignored in jedis static analysis. They shouldn't be.
  > fix dict issue with **kwargs use
  > ExecutedParams should never be additionally faked, even if they are the first params. They have been legitimately created by a caller.
  > fix a ModuleWrapper with StarImports. Now all modules are wrapped.
  > types also add to completions, also for compiled objects. removed a few lines of code that complicated the process as well.
  > json.load[s] shouldn't return any results. fixed by overwriting the method
  > custom copy.copy and copy.deepcopy implementations to not confuse autocompletion (just return the first param)
  > std -> stdlib
  > fix indexing issues for multiple index options
  > make it possible to access pdb with 'python -m jedi force --pdb'
  > setdefault fix
  > Also issue warnings if setattr is used in a class instead of an error
  > Add __getattr__ checks with proper inheritance.
  > jedi issues now warnings instead of errors for AttributeErrors that happen in instances with __getattr__/__getattribute__ methods
  > preparation for warnings in static analysis
  > fix string/array (sequence) multiplications with integer.
  > change the implementation of compiled.load_module and always use the sys.modules cache after an import, because it's easier. Doesn't require any logic.
  > add a setting auto_import_modules to fix autocompletion for modules that use setattr and companions a lot. fixes #151
  > make a translation from file system paths to dotted paths possible
  > memoize sys_path modifications
  > submodules need relative imports not absolute
  > submodules are automatically indexed without actually importing them. fixes #413. However, this is not a 100% correct Python behavior. Python behavior would be to follow ALL imports in all modules (recursively) and check if the module was imported. However, that's a lot of work, that would slow down autocompletion. For now it's better to have no false positives in flaking and to ignore a few attribute errors.
  > repr improvements
  > fixed inheritance for exception checks
  > fix except: usage in analysis
  > jedi should be able to detect exceptions even in except X: statements
  > fixed for loop in exception issue combined with usage of an exception variable
  > exception elements are always instances
  > changed the way how the dynamic param function searches it's parent scope, to enable smooth list comprehension following
  > support for completions on return statements.
  > temporary solution for completions in asserts
  > introduce an is_scope function to make it easier to work with scopes
  > fix list comprehension issues in nested parentheses.
  > fix issue with list comprehensions in function calls
  > manifest was missing the fake paths, which makes the last release a bad one. This means basically that in the last (few?) release(s) the stdlib was not correctly supported.
  > replace _sre fake module literals with undefined types.
  > fix issue with reordering var_args
  > reorder var_args if named arguments are in front of *args.
  > fix function execution mutable list issue
  > function repr should only include the decorated function if it actually is one.
  > message improvement for param failure
  > *args without self but still an implicit self from a method decorator
  > further test for list comprehensions
  > fix list comprehensions. they were not implemented in a good way
  > work in progress refactoring to make ListComprehension a sublass of ForFlow
  > list comprehensions should be able to serve as an input for dynamic params as well.
  > hasattr checks working now, #408
  > hasattr test for static analysis, it's a common idiom.
  > fix issues with tokens in expression list
  > fix issues with the previous commits (broken tests)
  > fix issues with generator comprehensions used directly with a send() call or something similar
  > tests for generator to tuple assignment as well as generator comprehensions
  > make generator comprehensions work
  > fix issues with equal names before and after listcomprehension
  > get rid of is_list_comp boolean in favor of a direct check of ListComprehensionFlow
  > create a ListComprehensionFlow, to make the distinction between ForFlow and list comprehensions clearer
  > test: list comprehension name resolve should not include its own definitions
  > instance issue with param static analysis
  > fix a default argument issue
  > erroneus star arguments warning
  > cleanup
  > Wrong var_args with a star star function.
  > add a merged array class to account for array additions
  > add comments to the *args/**kwargs merge code
  > disable two failing multiple value tests. These are things jedi is not able to detect at the moment. It's not a huge problem, but it would be very nice if we could detect these as well. But there would be a need of restructuring var_args unpacking.
  > raise multiple key errors also if they are an input to kwargs
  > temporary very unfinished solution for the *args/**kwargs combination problem, if they are used in common with dynamic params. This doesn't solve the issue entirely, but it's at least a start and will probably solve all autocompletion issues. However, static analysis needs a little bit more than that.
  > fix for kwargs params
  > small update on multiple value named argument type error
  > get dicts partially working
  > fix issues with empty *args as inputs
  > handle *args arguments the right way.
  > multiple values refactoring in params
  > if there's a func listener, stop the execution of a function. This solves the issue of nested *args that were reported as having too many params in static analysis.
  > nested functions with *args should only raise an error if there's well defined input.
  > add a new static_analysis file to test star arguments separately
  > fix calling_var_args with tuples
  > detect origin of a call in case of missing params. This is important, because the user doesn't care about decorators in between.
  > add ExecutedParam instead of using copy.copy
  > use the internal api to get a param name instead of doing crazy stuff
  > add multiple values for keyword type error detection
  > small corrections in too few argument errors
  > better error reporting for static analysis
  > fix for the newly created keyword/default tests
  > keyword/default param tests
  > improved static analysis found mistakes in its own test suite
  > param.py doesn't seem to be needing some default value checks
  > some param refactorings.
  > unexpected keyword arguments detection
  > new named arguments tests for static analysis
  > move a closure out of get_params
  > first version of too few params detection
  > first version of too many arguments detection
  > remove an unimportant test case that showed strange unreproducible behavior on travis.
  > check for 'if foo is not None' checks in the NameFinder. Solves the issues with the subprocess library.
  > finder docstring and naming improvements
  > renaming of an unclear variable
  > update pickling version, because we have changed some things about the KeywordStatement a while ago
  > % operation returned both left and right side, but only the left side is really important.
  > more extensive __file__ tests, #408
  > a (temporary) solution for the __file__ access issues in imported modules, see #408
  > empty reversed issue, fixes traceback of #408
  > fix test issue with python 2.7
  > Improved error messages for AttributeErrors, however not a final version #408
  > improved import positioning errors in static analysis
  > better knowledge in the importer where the import names originate from
  > custom message capability for analysis
  > decorators should also be included in the static analysis
  > static analysis start positions are now tested
  > list comprehension static analysis test
  > test for is_nested failure
  > fix returns/flow command edge cases
  > new way of gathering statements to evaluate for static analysis
  > don't raise attribute NameErrors in all for loop name definitions.
  > linter output changes - #408
  > recursive file paths for the temporary linter api - #408
  > Using python -m jedi force <path> you can use the linter for now.
  > few NameError tests
  > static analysis is now able to tell the difference between NameError/AttributeError
  > sorting the statements for analysis. we need to be able to reproduce results.
  > Small adjustment in Interpreter completion to be compatible with static analysis
  > None issue fix for static analysis
  > except can also catch multiple exceptions in one statement
  > try/except test for static analysis (duck typing should not cause jedi to report mistakes)
  > if something catches an exception, ignore that report
  > simple generator static analysis subscript check
  > refactor general array lookup method get_index_types
  > strip_imports -> follow_imports
  > imports cleanup & documentation
  > fix static analysis for nested imports
  > move is_nested check from evaluate.imports to the parser
  > pytest -> ignore static_analysis folder
  > interpreter cleanup, use proper parents
  > statical analysis shouldn't report the exact same error twice
  > add tests for attribute errors
  > more import-error detection tests
  > static analysis import tests
  > improved static analysis test base
  > testing structure for static analysis.
  > ImportError detection
  > removed a few debug things.
  > Merge branch 'dev' into linter
  > Merge branch 'dev' into linter
  > small fixes to the analysis.Error class.
  > dive further into following imports, etc
  > static analysis prototype decription
Merge remote-tracking branch 'upstream/master'
build: use python_finder always and fix/improve it

 - prefer `python2` over `python` to get `sys.version`.
 - look for and prefer libpython*.so.
 - prefer `python2-config` over `python-config`, although
   `python-config` seems to point at Python2 anyway (with pyenv).
Merge remote-tracking branch 'upstream/master'
Merge remote-tracking branch 'upstream/master'
Revert "Remove dot as default semantic trigger for vim"

This reverts commit 9c30996aab09bbde77a460277cdcf9ad794ed07c.
Merge remote-tracking branch 'upstream/master'

Conflicts:
	cpp/ycm/IdentifierUtils.cpp
	ycmd/utils.py
Merge remote-tracking branch 'upstream/master'
build.sh: fix fallback for $python_config
Merge remote-tracking branch 'upstream/master'
No default for ft=vim in DEFAULT_FILETYPE_TRIGGERS

The defaults cannot be overwritten, and the default semantic trigger
makes no sense for ft=vim.
Re-add hack to get dash/dollar completion, including from comments

Thanks @mutewinter for the report.

Ref: https://twitter.com/mutewinter/status/509792418968137729
Update submodule jedi 76d91ba...b26f51d

* jedi 76d91ba...b26f51d (72):
  > Fix obvious UnboundLocalError.
  > Only real modules should be added in get_modules_containing_name.
  > Tests for issues with default args in dynamic param contexts.
  > get_parent_until should always have the same signature.
  > Fix alias usages in goto_assignments.
  > Care for nested imports in goto_assignments.
  > Fix issues with the os module.
  > Refactoring: Make Import.get_all_import_names return NameParts.
  > First imports are working with goto.
  > tests for goto on imports.
  > Change the behavior of eval_statement_element and follow_call_path. Arrays should only be looked at in the latter.
  > Goto on named params in class calls is now working.
  > Test for an issue with named params in class calls (instead of functions).
  > Tests for Definition.is_definition().
  > Temporarily disable a test for goto on nested imports. The positions are currently wrong. But this is a known issue.
  > Apply evaluate.representation wrappers already before they go out into the goto world.
  > Replace BaseDefinition._name.get_definition() calls with BaseDefinition._definition.
  > Remove BaseDefinition._start_pos.
  > Remove code that is not needed anymore, because the Definition/Completion import is now standardized (to NamePart).
  > Big refactoring: BaseDefinition._definnition changes to BaseDefinition._name, because it's a NamePart now.
  > Completion now also uses only NameParts as its _definition attribute.
  > Use FakeName instead of a custom KeywordName.
  > Completion now always takes a NamePart as input.
  > NamePart migration of Definition is complete. Now Completion.
  > Removed an old test from the days where it was allowed to add Keywords to Definitions.
  > Even params should be NameParts as a Definition input.
  > Fix remaining usage issues.
  > Fix some goto issues.
  > Fix all the normal issues with the NameFinder change. Now goto...
  > Trying to get the NameFinder to use only NameParts.
  > Python 2/3 compatibility issues that were not resolved in the latest commit.
  > Add a forgotten test module, test_sys_path.py and fix Python2/3 compatibility issues.
  > Typo.
  > Goto should work on named params, too.
  > Make it possible to get previous statements of Calls.
  > Fix the last remaining issues of the first part of the NamePart switch.
  > Quite a few fixes to be eventually able to use NameParts as Definition inputs.
  > Start to use NameParts only in Definition contexts.
  > Generate the expression_list of a statement in any case.
  > Add a goto_assignments test for named params
  > Add a Definition.is_definition function to be able to check if a name is a definition or not.
  > Publicize jedi.names and add a first test.
  > Create a 'jedi.names' function with the proper docstring.
  > Last fixes, because of the Name.get_definition change. The recent parser.representation changes are now fully working and we're ready to improve Evaluator.goto again.
  > Fixing most of the issues that existed, because of the recent Name.get_definition/Call.name.parent change.
  > Name parents are now Calls (once their statements have generated the Calls).
  > Use ExprStmt pretty much everywhere where it should be used.
  > Start using ExprStmt.
  > Rename Name.get_parent_stmt to Name.get_definition, because it's not always a statement. Also start using it in the NameFinder.
  > Add a Name.get_parent_stmt() function.
  > Create an ExprStatement class to replace the Statement class in the future and separate array parts of actual statements
  > Refactor a few name finder things.
  > Updated helpers.deep_ast_copy. Now the function copies statements in a better way.
  > precedence._is_string -> precedence.is_string
  > Rewrote sys_path._paths_from_assignment.
  > Forgot to add the the params in the case of a class in the previous commit.
  > Class inheritance definitions shouldn't be params. It's just statements.
  > Definitions should not be followed in Evaluator.goto.
  > Script.goto_assignments now always needs a call_path. Otherwise it raises a NotFoundError.
  > Remove search_name and search_name_part from goto returns.
  > Fix remaining issues with CompiledName.name change.
  > CompiledObject.name returns a Name now, not a string. This is more consistent with the Jedi design and doesn't lead to bugs while ducktyping.
  > By trying to get rid of search_name in usages, we had to fix an issue with imports: If used like 'follow(is_goto)', it could return a ModuleWrapper instead of a Name, which is what we actually want.
  > Remove code that is not used anymore from Script._goto
  > Script._goto improvements and documentation.
  > Clarify inner workings of Evaluator.goto
  > Fix issues with unreachable flows.
  > Make statement_elements_in_statement work with ListComprehensions, Lambdas and 'except foo as' expressions
  > Added tests for statement_elements_in_statement
  > Additional helper methods, to find all the statement elements that are needed.
  > Add a temporary api._names, to make it possible to annotate a full script with types.
  > Add a helper function to list all name parts of a given module.
Merge remote-tracking branch 'upstream/master'

Conflicts:
	ycmd/completers/completer_utils.py